Merge pull request #3 from minetest/master

Merge pull request #3 from minetest/master
This commit is contained in:
johndc 2013-12-18 14:23:10 -08:00
commit d202ac144b
257 changed files with 19550 additions and 9896 deletions

1
.gitignore vendored
View File

@ -31,6 +31,7 @@ CMakeFiles/*
src/CMakeFiles/* src/CMakeFiles/*
src/Makefile src/Makefile
src/cmake_config.h src/cmake_config.h
src/cmake_config_githash.h
src/cmake_install.cmake src/cmake_install.cmake
src/script/CMakeFiles/* src/script/CMakeFiles/*
src/script/common/CMakeFiles/* src/script/common/CMakeFiles/*

View File

@ -12,9 +12,12 @@ set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string")
# Also remember to set PROTOCOL_VERSION in clientserver.h when releasing # Also remember to set PROTOCOL_VERSION in clientserver.h when releasing
set(VERSION_MAJOR 0) set(VERSION_MAJOR 0)
set(VERSION_MINOR 4) set(VERSION_MINOR 4)
set(VERSION_PATCH 7) set(VERSION_PATCH 8)
if(VERSION_EXTRA) if(VERSION_EXTRA)
set(VERSION_PATCH ${VERSION_PATCH}-${VERSION_EXTRA}) set(VERSION_PATCH ${VERSION_PATCH}-${VERSION_EXTRA})
else()
# Comment the following line during release
set(VERSION_PATCH ${VERSION_PATCH}-dev)
endif() endif()
set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")

19
builtin/async_env.lua Normal file
View File

@ -0,0 +1,19 @@
engine.log("info","Initializing Asynchronous environment")
dofile(SCRIPTDIR .. DIR_DELIM .. "misc_helpers.lua")
function engine.job_processor(serialized_function, serialized_data)
local fct = marshal.decode(serialized_function)
local params = marshal.decode(serialized_data)
local retval = marshal.encode(nil)
if fct ~= nil and type(fct) == "function" then
local result = fct(params)
retval = marshal.encode(result)
else
engine.log("error","ASYNC WORKER: unable to deserialize function")
end
return retval,retval:len()
end

59
builtin/async_event.lua Normal file
View File

@ -0,0 +1,59 @@
local tbl = engine or minetest
tbl.async_jobs = {}
if engine ~= nil then
function tbl.async_event_handler(jobid, serialized_retval)
local retval = nil
if serialized_retval ~= "ERROR" then
retval= marshal.decode(serialized_retval)
else
tbl.log("error","Error fetching async result")
end
assert(type(tbl.async_jobs[jobid]) == "function")
tbl.async_jobs[jobid](retval)
tbl.async_jobs[jobid] = nil
end
else
minetest.register_globalstep(
function(dtime)
local list = tbl.get_finished_jobs()
for i=1,#list,1 do
local retval = marshal.decode(list[i].retval)
assert(type(tbl.async_jobs[jobid]) == "function")
tbl.async_jobs[list[i].jobid](retval)
tbl.async_jobs[list[i].jobid] = nil
end
end)
end
function tbl.handle_async(fct, parameters, callback)
--serialize fct
local serialized_fct = marshal.encode(fct)
assert(marshal.decode(serialized_fct) ~= nil)
--serialize parameters
local serialized_params = marshal.encode(parameters)
if serialized_fct == nil or
serialized_params == nil or
serialized_fct:len() == 0 or
serialized_params:len() == 0 then
return false
end
local jobid = tbl.do_async_callback( serialized_fct,
serialized_fct:len(),
serialized_params,
serialized_params:len())
tbl.async_jobs[jobid] = callback
return true
end

View File

@ -471,10 +471,10 @@ minetest.register_chatcommand("spawnentity", {
minetest.chat_send_player(name, "entityname required") minetest.chat_send_player(name, "entityname required")
return return
end end
print('/spawnentity invoked, entityname="'..entityname..'"') minetest.log("action", '/spawnentity invoked, entityname="'..entityname..'"')
local player = minetest.get_player_by_name(name) local player = minetest.get_player_by_name(name)
if player == nil then if player == nil then
print("Unable to spawn entity, player is nil") minetest.log("error", "Unable to spawn entity, player is nil")
return true -- Handled chat message return true -- Handled chat message
end end
local p = player:getpos() local p = player:getpos()
@ -491,7 +491,7 @@ minetest.register_chatcommand("pulverize", {
func = function(name, param) func = function(name, param)
local player = minetest.get_player_by_name(name) local player = minetest.get_player_by_name(name)
if player == nil then if player == nil then
print("Unable to pulverize, player is nil") minetest.log("error", "Unable to pulverize, player is nil")
return true -- Handled chat message return true -- Handled chat message
end end
if player:get_wielded_item():is_empty() then if player:get_wielded_item():is_empty() then
@ -515,34 +515,45 @@ minetest.register_on_punchnode(function(pos, node, puncher)
end) end)
minetest.register_chatcommand("rollback_check", { minetest.register_chatcommand("rollback_check", {
params = "[<range>] [<seconds>]", params = "[<range>] [<seconds>] [limit]",
description = "check who has last touched a node or near it, ".. description = "check who has last touched a node or near it, "..
"max. <seconds> ago (default range=0, seconds=86400=24h)", "max. <seconds> ago (default range=0, seconds=86400=24h, limit=5)",
privs = {rollback=true}, privs = {rollback=true},
func = function(name, param) func = function(name, param)
local range, seconds = string.match(param, "(%d+) *(%d*)") local range, seconds, limit =
param:match("(%d+) *(%d*) *(%d*)")
range = tonumber(range) or 0 range = tonumber(range) or 0
seconds = tonumber(seconds) or 86400 seconds = tonumber(seconds) or 86400
minetest.chat_send_player(name, "Punch a node (limits set: range=".. limit = tonumber(limit) or 5
dump(range).." seconds="..dump(seconds).."s)") if limit > 100 then
minetest.chat_send_player(name, "That limit is too high!")
return
end
minetest.chat_send_player(name, "Punch a node (range="..
range..", seconds="..seconds.."s, limit="..limit..")")
minetest.rollback_punch_callbacks[name] = function(pos, node, puncher) minetest.rollback_punch_callbacks[name] = function(pos, node, puncher)
local name = puncher:get_player_name() local name = puncher:get_player_name()
minetest.chat_send_player(name, "Checking...") minetest.chat_send_player(name, "Checking "..minetest.pos_to_string(pos).."...")
local actor, act_p, act_seconds = local actions = minetest.rollback_get_node_actions(pos, range, seconds, limit)
minetest.rollback_get_last_node_actor(pos, range, seconds) local num_actions = #actions
if actor == "" then if num_actions == 0 then
minetest.chat_send_player(name, "Nobody has touched the ".. minetest.chat_send_player(name, "Nobody has touched the "..
"specified location in "..dump(seconds).." seconds") "specified location in "..seconds.." seconds")
return return
end end
local nodedesc = "this node" local time = os.time()
if act_p.x ~= pos.x or act_p.y ~= pos.y or act_p.z ~= pos.z then for i = num_actions, 1, -1 do
nodedesc = minetest.pos_to_string(act_p) local action = actions[i]
minetest.chat_send_player(name,
("%s %s %s -> %s %d seconds ago.")
:format(
minetest.pos_to_string(action.pos),
action.actor,
action.oldnode.name,
action.newnode.name,
time - action.time))
end end
local nodename = minetest.get_node(act_p).name
minetest.chat_send_player(name, "Last actor on "..nodedesc..
" was "..actor..", "..dump(act_seconds)..
"s ago (node is now "..nodename..")")
end end
end, end,
}) })
@ -554,7 +565,7 @@ minetest.register_chatcommand("rollback", {
func = function(name, param) func = function(name, param)
local target_name, seconds = string.match(param, ":([^ ]+) *(%d*)") local target_name, seconds = string.match(param, ":([^ ]+) *(%d*)")
if not target_name then if not target_name then
local player_name = nil; local player_name = nil
player_name, seconds = string.match(param, "([^ ]+) *(%d*)") player_name, seconds = string.match(param, "([^ ]+) *(%d*)")
if not player_name then if not player_name then
minetest.chat_send_player(name, "Invalid parameters. See /help rollback and /help rollback_check") minetest.chat_send_player(name, "Invalid parameters. See /help rollback and /help rollback_check")
@ -564,13 +575,13 @@ minetest.register_chatcommand("rollback", {
end end
seconds = tonumber(seconds) or 60 seconds = tonumber(seconds) or 60
minetest.chat_send_player(name, "Reverting actions of ".. minetest.chat_send_player(name, "Reverting actions of "..
dump(target_name).." since "..dump(seconds).." seconds.") target_name.." since "..seconds.." seconds.")
local success, log = minetest.rollback_revert_actions_by( local success, log = minetest.rollback_revert_actions_by(
target_name, seconds) target_name, seconds)
if #log > 10 then if #log > 100 then
minetest.chat_send_player(name, "(log is too long to show)") minetest.chat_send_player(name, "(log is too long to show)")
else else
for _,line in ipairs(log) do for _, line in pairs(log) do
minetest.chat_send_player(name, line) minetest.chat_send_player(name, line)
end end
end end

View File

@ -46,3 +46,8 @@ setmetatable(minetest.env, {
return rawget(table, key) return rawget(table, key)
end end
}) })
function minetest.rollback_get_last_node_actor(pos, range, seconds)
return minetest.rollback_get_node_actions(pos, range, seconds, 1)[1]
end

View File

@ -54,19 +54,25 @@ minetest.register_entity("__builtin:falling_node", {
local pos = self.object:getpos() local pos = self.object:getpos()
local bcp = {x=pos.x, y=pos.y-0.7, z=pos.z} -- Position of bottom center point local bcp = {x=pos.x, y=pos.y-0.7, z=pos.z} -- Position of bottom center point
local bcn = minetest.get_node(bcp) local bcn = minetest.get_node(bcp)
local bcd = minetest.registered_nodes[bcn.name]
-- Note: walkable is in the node definition, not in item groups -- Note: walkable is in the node definition, not in item groups
if minetest.registered_nodes[bcn.name] and if not bcd or
minetest.registered_nodes[bcn.name].walkable or (bcd.walkable or
(minetest.get_node_group(self.node.name, "float") ~= 0 and minetest.registered_nodes[bcn.name].liquidtype ~= "none") (minetest.get_node_group(self.node.name, "float") ~= 0 and
then bcd.liquidtype ~= "none")) then
if minetest.registered_nodes[bcn.name].leveled and bcn.name == self.node.name then if bcd and bcd.leveled and
bcn.name == self.node.name then
local addlevel = self.node.level local addlevel = self.node.level
if addlevel == nil or addlevel <= 0 then addlevel = minetest.registered_nodes[bcn.name].leveled end if addlevel == nil or addlevel <= 0 then
if minetest.env:add_node_level(bcp, addlevel) == 0 then addlevel = bcd.leveled
end
if minetest.add_node_level(bcp, addlevel) == 0 then
self.object:remove() self.object:remove()
return return
end end
elseif minetest.registered_nodes[bcn.name].buildable_to and (minetest.get_node_group(self.node.name, "float") == 0 or minetest.registered_nodes[bcn.name].liquidtype == "none") then elseif bcd and bcd.buildable_to and
(minetest.get_node_group(self.node.name, "float") == 0 or
bcd.liquidtype == "none") then
minetest.remove_node(bcp) minetest.remove_node(bcp)
return return
end end

View File

@ -6,6 +6,7 @@ minetest.features = {
chat_send_player_param3 = true, chat_send_player_param3 = true,
get_all_craft_recipes_works = true, get_all_craft_recipes_works = true,
use_texture_alpha = true, use_texture_alpha = true,
no_legacy_abms = true,
} }
function minetest.has_feature(arg) function minetest.has_feature(arg)

View File

@ -17,6 +17,20 @@
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Generic implementation of a filter/sortable list -- -- Generic implementation of a filter/sortable list --
-- Usage: --
-- Filterlist needs to be initialized on creation. To achieve this you need to --
-- pass following functions: --
-- raw_fct() (mandatory): --
-- function returning a table containing the elements to be filtered --
-- compare_fct(element1,element2) (mandatory): --
-- function returning true/false if element1 is same element as element2 --
-- uid_match_fct(element1,uid) (optional) --
-- function telling if uid is attached to element1 --
-- filter_fct(element,filtercriteria) (optional) --
-- function returning true/false if filtercriteria met to element --
-- fetch_param (optional) --
-- parameter passed to raw_fct to aquire correct raw data --
-- --
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
filterlist = {} filterlist = {}
@ -157,7 +171,7 @@ function filterlist.process(this)
this.m_processed_list = {} this.m_processed_list = {}
for k,v in pairs(this.m_raw_list) do for k,v in pairs(this.m_raw_list) do
if this.m_filtercriteria == nil or if this.m_filtercriteria == nil or
this.m_filter_fct(v,this.m_filtercriteria) then this.m_filter_fct(v,this.m_filtercriteria) then
table.insert(this.m_processed_list,v) table.insert(this.m_processed_list,v)
end end
@ -167,7 +181,7 @@ function filterlist.process(this)
return return
end end
if this.m_sort_list[this.m_sortmode] ~= nil and if this.m_sort_list[this.m_sortmode] ~= nil and
type(this.m_sort_list[this.m_sortmode]) == "function" then type(this.m_sort_list[this.m_sortmode]) == "function" then
this.m_sort_list[this.m_sortmode](this) this.m_sort_list[this.m_sortmode](this)
@ -237,7 +251,7 @@ function compare_worlds(world1,world2)
end end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
function sort_worlds_alphabetic(this) function sort_worlds_alphabetic(this)
table.sort(this.m_processed_list, function(a, b) table.sort(this.m_processed_list, function(a, b)
--fixes issue #857 (crash due to sorting nil in worldlist) --fixes issue #857 (crash due to sorting nil in worldlist)

View File

@ -98,7 +98,7 @@ function minetest.facedir_to_dir(facedir)
--indexed into by a table of correlating facedirs --indexed into by a table of correlating facedirs
[({[0]=1, 2, 3, 4, [({[0]=1, 2, 3, 4,
5, 2, 6, 4, 5, 4, 6, 2,
6, 2, 5, 4, 6, 2, 5, 4,
1, 5, 3, 6, 1, 5, 3, 6,
1, 6, 3, 5, 1, 6, 3, 5,
@ -179,11 +179,11 @@ function minetest.get_node_drops(nodename, toolname)
return got_items return got_items
end end
function minetest.item_place_node(itemstack, placer, pointed_thing) function minetest.item_place_node(itemstack, placer, pointed_thing, param2)
local item = itemstack:peek_item() local item = itemstack:peek_item()
local def = itemstack:get_definition() local def = itemstack:get_definition()
if def.type ~= "node" or pointed_thing.type ~= "node" then if def.type ~= "node" or pointed_thing.type ~= "node" then
return itemstack return itemstack, false
end end
local under = pointed_thing.under local under = pointed_thing.under
@ -194,7 +194,7 @@ function minetest.item_place_node(itemstack, placer, pointed_thing)
if not oldnode_under or not oldnode_above then if not oldnode_under or not oldnode_above then
minetest.log("info", placer:get_player_name() .. " tried to place" minetest.log("info", placer:get_player_name() .. " tried to place"
.. " node in unloaded position " .. minetest.pos_to_string(above)) .. " node in unloaded position " .. minetest.pos_to_string(above))
return itemstack return itemstack, false
end end
local olddef_under = ItemStack({name=oldnode_under.name}):get_definition() local olddef_under = ItemStack({name=oldnode_under.name}):get_definition()
@ -206,7 +206,7 @@ function minetest.item_place_node(itemstack, placer, pointed_thing)
minetest.log("info", placer:get_player_name() .. " tried to place" minetest.log("info", placer:get_player_name() .. " tried to place"
.. " node in invalid position " .. minetest.pos_to_string(above) .. " node in invalid position " .. minetest.pos_to_string(above)
.. ", replacing " .. oldnode_above.name) .. ", replacing " .. oldnode_above.name)
return itemstack return itemstack, false
end end
-- Place above pointed node -- Place above pointed node
@ -218,14 +218,23 @@ function minetest.item_place_node(itemstack, placer, pointed_thing)
place_to = {x = under.x, y = under.y, z = under.z} place_to = {x = under.x, y = under.y, z = under.z}
end end
if minetest.is_protected(place_to, placer:get_player_name()) then
minetest.log("action", placer:get_player_name()
.. " tried to place " .. def.name
.. " at protected position "
.. minetest.pos_to_string(place_to))
minetest.record_protection_violation(place_to, placer:get_player_name())
return itemstack
end
minetest.log("action", placer:get_player_name() .. " places node " minetest.log("action", placer:get_player_name() .. " places node "
.. def.name .. " at " .. minetest.pos_to_string(place_to)) .. def.name .. " at " .. minetest.pos_to_string(place_to))
local oldnode = minetest.get_node(place_to) local oldnode = minetest.get_node(place_to)
local newnode = {name = def.name, param1 = 0, param2 = 0} local newnode = {name = def.name, param1 = 0, param2 = param2}
-- Calculate direction for wall mounted stuff like torches and signs -- Calculate direction for wall mounted stuff like torches and signs
if def.paramtype2 == 'wallmounted' then if def.paramtype2 == 'wallmounted' and not param2 then
local dir = { local dir = {
x = under.x - above.x, x = under.x - above.x,
y = under.y - above.y, y = under.y - above.y,
@ -233,7 +242,7 @@ function minetest.item_place_node(itemstack, placer, pointed_thing)
} }
newnode.param2 = minetest.dir_to_wallmounted(dir) newnode.param2 = minetest.dir_to_wallmounted(dir)
-- Calculate the direction for furnaces and chests and stuff -- Calculate the direction for furnaces and chests and stuff
elseif def.paramtype2 == 'facedir' then elseif def.paramtype2 == 'facedir' and not param2 then
local placer_pos = placer:getpos() local placer_pos = placer:getpos()
if placer_pos then if placer_pos then
local dir = { local dir = {
@ -251,7 +260,7 @@ function minetest.item_place_node(itemstack, placer, pointed_thing)
not check_attached_node(place_to, newnode) then not check_attached_node(place_to, newnode) then
minetest.log("action", "attached node " .. def.name .. minetest.log("action", "attached node " .. def.name ..
" can not be placed at " .. minetest.pos_to_string(place_to)) " can not be placed at " .. minetest.pos_to_string(place_to))
return itemstack return itemstack, false
end end
-- Add node and update -- Add node and update
@ -283,7 +292,7 @@ function minetest.item_place_node(itemstack, placer, pointed_thing)
if take_item then if take_item then
itemstack:take_item() itemstack:take_item()
end end
return itemstack return itemstack, true
end end
function minetest.item_place_object(itemstack, placer, pointed_thing) function minetest.item_place_object(itemstack, placer, pointed_thing)
@ -295,19 +304,19 @@ function minetest.item_place_object(itemstack, placer, pointed_thing)
return itemstack return itemstack
end end
function minetest.item_place(itemstack, placer, pointed_thing) function minetest.item_place(itemstack, placer, pointed_thing, param2)
-- Call on_rightclick if the pointed node defines it -- Call on_rightclick if the pointed node defines it
if pointed_thing.type == "node" and placer and if pointed_thing.type == "node" and placer and
not placer:get_player_control().sneak then not placer:get_player_control().sneak then
local n = minetest.get_node(pointed_thing.under) local n = minetest.get_node(pointed_thing.under)
local nn = n.name local nn = n.name
if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then
return minetest.registered_nodes[nn].on_rightclick(pointed_thing.under, n, placer, itemstack) or itemstack return minetest.registered_nodes[nn].on_rightclick(pointed_thing.under, n, placer, itemstack) or itemstack, false
end end
end end
if itemstack:get_definition().type == "node" then if itemstack:get_definition().type == "node" then
return minetest.item_place_node(itemstack, placer, pointed_thing) return minetest.item_place_node(itemstack, placer, pointed_thing, param2)
end end
return itemstack return itemstack
end end
@ -370,27 +379,40 @@ end
function minetest.node_dig(pos, node, digger) function minetest.node_dig(pos, node, digger)
local def = ItemStack({name=node.name}):get_definition() local def = ItemStack({name=node.name}):get_definition()
-- Check if def ~= 0 because we always want to be able to remove unknown nodes if not def.diggable or (def.can_dig and not def.can_dig(pos,digger)) then
if #def ~= 0 and not def.diggable or (def.can_dig and not def.can_dig(pos,digger)) then
minetest.log("info", digger:get_player_name() .. " tried to dig " minetest.log("info", digger:get_player_name() .. " tried to dig "
.. node.name .. " which is not diggable " .. node.name .. " which is not diggable "
.. minetest.pos_to_string(pos)) .. minetest.pos_to_string(pos))
return return
end end
if minetest.is_protected(pos, digger:get_player_name()) then
minetest.log("action", digger:get_player_name()
.. " tried to dig " .. node.name
.. " at protected position "
.. minetest.pos_to_string(pos))
minetest.record_protection_violation(pos, digger:get_player_name())
return
end
minetest.log('action', digger:get_player_name() .. " digs " minetest.log('action', digger:get_player_name() .. " digs "
.. node.name .. " at " .. minetest.pos_to_string(pos)) .. node.name .. " at " .. minetest.pos_to_string(pos))
local wielded = digger:get_wielded_item() local wielded = digger:get_wielded_item()
local drops = minetest.get_node_drops(node.name, wielded:get_name()) local drops = minetest.get_node_drops(node.name, wielded:get_name())
-- Wear out tool local wdef = wielded:get_definition()
if not minetest.setting_getbool("creative_mode") then local tp = wielded:get_tool_capabilities()
local tp = wielded:get_tool_capabilities() local dp = minetest.get_dig_params(def.groups, tp)
local dp = minetest.get_dig_params(def.groups, tp) if wdef and wdef.after_use then
wielded:add_wear(dp.wear) wielded = wdef.after_use(wielded, digger, node, dp) or wielded
digger:set_wielded_item(wielded) else
-- Wear out tool
if not minetest.setting_getbool("creative_mode") then
wielded:add_wear(dp.wear)
end
end end
digger:set_wielded_item(wielded)
-- Handle drops -- Handle drops
minetest.handle_node_drops(pos, drops, digger) minetest.handle_node_drops(pos, drops, digger)
@ -479,7 +501,7 @@ minetest.nodedef_default = {
post_effect_color = {a=0, r=0, g=0, b=0}, post_effect_color = {a=0, r=0, g=0, b=0},
paramtype = "none", paramtype = "none",
paramtype2 = "none", paramtype2 = "none",
is_ground_content = false, is_ground_content = true,
sunlight_propagates = false, sunlight_propagates = false,
walkable = true, walkable = true,
pointable = true, pointable = true,

File diff suppressed because it is too large Load Diff

View File

@ -40,15 +40,24 @@ function minetest.check_player_privs(name, privs)
return true, "" return true, ""
end end
local player_list = {}
minetest.register_on_joinplayer(function(player)
player_list[player:get_player_name()] = player
end)
minetest.register_on_leaveplayer(function(player)
player_list[player:get_player_name()] = nil
end)
function minetest.get_connected_players() function minetest.get_connected_players()
-- This could be optimized a bit, but leave that for later local temp_table = {}
local list = {} for index, value in pairs(player_list) do
for _, obj in pairs(minetest.get_objects_inside_radius({x=0,y=0,z=0}, 1000000)) do if value:is_player_connected() then
if obj:is_player() then table.insert(temp_table, value)
table.insert(list, obj)
end end
end end
return list return temp_table
end end
function minetest.hash_node_position(pos) function minetest.hash_node_position(pos)
@ -99,3 +108,14 @@ function minetest.setting_get_pos(name)
return minetest.string_to_pos(value) return minetest.string_to_pos(value)
end end
-- To be overriden by protection mods
function minetest.is_protected(pos, name)
return false
end
function minetest.record_protection_violation(pos, name)
for _, func in pairs(minetest.registered_on_protection_violation) do
func(pos, name)
end
end

View File

@ -205,6 +205,155 @@ function tbl.formspec_escape(text)
return text return text
end end
function tbl.splittext(text,charlimit)
local retval = {}
local current_idx = 1
local start,stop = string.find(text," ",current_idx)
local nl_start,nl_stop = string.find(text,"\n",current_idx)
local gotnewline = false
if nl_start ~= nil and (start == nil or nl_start < start) then
start = nl_start
stop = nl_stop
gotnewline = true
end
local last_line = ""
while start ~= nil do
if string.len(last_line) + (stop-start) > charlimit then
table.insert(retval,last_line)
last_line = ""
end
if last_line ~= "" then
last_line = last_line .. " "
end
last_line = last_line .. string.sub(text,current_idx,stop -1)
if gotnewline then
table.insert(retval,last_line)
last_line = ""
gotnewline = false
end
current_idx = stop+1
start,stop = string.find(text," ",current_idx)
nl_start,nl_stop = string.find(text,"\n",current_idx)
if nl_start ~= nil and (start == nil or nl_start < start) then
start = nl_start
stop = nl_stop
gotnewline = true
end
end
--add last part of text
if string.len(last_line) + (string.len(text) - current_idx) > charlimit then
table.insert(retval,last_line)
table.insert(retval,string.sub(text,current_idx))
else
last_line = last_line .. " " .. string.sub(text,current_idx)
table.insert(retval,last_line)
end
return retval
end
--------------------------------------------------------------------------------
if minetest then
local dirs1 = { 9, 18, 7, 12 }
local dirs2 = { 20, 23, 22, 21 }
function minetest.rotate_and_place(itemstack, placer, pointed_thing, infinitestacks, orient_flags)
orient_flags = orient_flags or {}
local node = minetest.get_node(pointed_thing.under)
if not minetest.registered_nodes[node.name]
or not minetest.registered_nodes[node.name].on_rightclick then
local above = pointed_thing.above
local under = pointed_thing.under
local pitch = placer:get_look_pitch()
local pname = minetest.get_node(under).name
local node = minetest.get_node(above)
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
local wield_name = itemstack:get_name()
local reg_node = minetest.registered_nodes[pname]
if not reg_node or not reg_node.on_rightclick then
local iswall = (above.x ~= under.x) or (above.z ~= under.z)
local isceiling = (above.x == under.x) and (above.z == under.z)
and (pitch > 0)
local pos1 = above
if reg_node and reg_node.buildable_to then
pos1 = under
iswall = false
end
reg_node = minetest.registered_nodes[minetest.get_node(pos1).name]
if not reg_node or not reg_node.buildable_to then
return
end
if orient_flags.force_floor then
iswall = false
isceiling = false
elseif orient_flags.force_ceiling then
iswall = false
isceiling = true
elseif orient_flags.force_wall then
iswall = true
isceiling = false
elseif orient_flags.invert_wall then
iswall = not iswall
end
if iswall then
minetest.add_node(pos1, {name = wield_name, param2 = dirs1[fdir+1] })
elseif isceiling then
if orient_flags.force_facedir then
minetest.add_node(pos1, {name = wield_name, param2 = 20 })
else
minetest.add_node(pos1, {name = wield_name, param2 = dirs2[fdir+1] })
end
else -- place right side up
if orient_flags.force_facedir then
minetest.add_node(pos1, {name = wield_name, param2 = 0 })
else
minetest.add_node(pos1, {name = wield_name, param2 = fdir })
end
end
if not infinitestacks then
itemstack:take_item()
return itemstack
end
end
else
minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack)
end
end
--------------------------------------------------------------------------------
--Wrapper for rotate_and_place() to check for sneak and assume Creative mode
--implies infinite stacks when performing a 6d rotation.
--------------------------------------------------------------------------------
minetest.rotate_node = function(itemstack, placer, pointed_thing)
minetest.rotate_and_place(itemstack, placer, pointed_thing,
minetest.setting_getbool("creative_mode"),
{invert_wall = placer:get_player_control().sneak})
return itemstack
end
end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- mainmenu only functions -- mainmenu only functions
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------

View File

@ -24,17 +24,15 @@ minetest.registered_aliases = {}
-- For tables that are indexed by item name: -- For tables that are indexed by item name:
-- If table[X] does not exist, default to table[minetest.registered_aliases[X]] -- If table[X] does not exist, default to table[minetest.registered_aliases[X]]
local function set_alias_metatable(table) local alias_metatable = {
setmetatable(table, { __index = function(t, name)
__index = function(name) return rawget(t, minetest.registered_aliases[name])
return rawget(table, minetest.registered_aliases[name]) end
end }
}) setmetatable(minetest.registered_items, alias_metatable)
end setmetatable(minetest.registered_nodes, alias_metatable)
set_alias_metatable(minetest.registered_items) setmetatable(minetest.registered_craftitems, alias_metatable)
set_alias_metatable(minetest.registered_nodes) setmetatable(minetest.registered_tools, alias_metatable)
set_alias_metatable(minetest.registered_craftitems)
set_alias_metatable(minetest.registered_tools)
-- These item names may not be used because they would interfere -- These item names may not be used because they would interfere
-- with legacy itemstrings -- with legacy itemstrings
@ -106,6 +104,11 @@ function minetest.register_item(name, itemdef)
-- Use the nodebox as selection box if it's not set manually -- Use the nodebox as selection box if it's not set manually
if itemdef.drawtype == "nodebox" and not itemdef.selection_box then if itemdef.drawtype == "nodebox" and not itemdef.selection_box then
itemdef.selection_box = itemdef.node_box itemdef.selection_box = itemdef.node_box
elseif itemdef.drawtype == "fencelike" and not itemdef.selection_box then
itemdef.selection_box = {
type = "fixed",
fixed = {-1/8, -1/2, -1/8, 1/8, 1/2, 1/8},
}
end end
setmetatable(itemdef, {__index = minetest.nodedef_default}) setmetatable(itemdef, {__index = minetest.nodedef_default})
minetest.registered_nodes[itemdef.name] = itemdef minetest.registered_nodes[itemdef.name] = itemdef
@ -230,6 +233,20 @@ function minetest.register_biome(biome)
register_biome_raw(biome) register_biome_raw(biome)
end end
function minetest.on_craft(itemstack, player, old_craft_list, craft_inv)
for _, func in ipairs(minetest.registered_on_crafts) do
itemstack = func(itemstack, player, old_craft_list, craft_inv) or itemstack
end
return itemstack
end
function minetest.craft_predict(itemstack, player, old_craft_list, craft_inv)
for _, func in ipairs(minetest.registered_craft_predicts) do
itemstack = func(itemstack, player, old_craft_list, craft_inv) or itemstack
end
return itemstack
end
-- Alias the forbidden item names to "" so they can't be -- Alias the forbidden item names to "" so they can't be
-- created via itemstrings (e.g. /give) -- created via itemstrings (e.g. /give)
local name local name
@ -256,6 +273,7 @@ minetest.register_item(":unknown", {
on_place = minetest.item_place, on_place = minetest.item_place,
on_drop = minetest.item_drop, on_drop = minetest.item_drop,
groups = {not_in_creative_inventory=1}, groups = {not_in_creative_inventory=1},
diggable = true,
}) })
minetest.register_node(":air", { minetest.register_node(":air", {
@ -296,6 +314,45 @@ minetest.register_item(":", {
groups = {not_in_creative_inventory=1}, groups = {not_in_creative_inventory=1},
}) })
function minetest.run_callbacks(callbacks, mode, ...)
assert(type(callbacks) == "table")
local cb_len = #callbacks
if cb_len == 0 then
if mode == 2 or mode == 3 then
return true
elseif mode == 4 or mode == 5 then
return false
end
end
local ret = nil
for i = 1, cb_len do
local cb_ret = callbacks[i](...)
if mode == 0 and i == 1 then
ret = cb_ret
elseif mode == 1 and i == cb_len then
ret = cb_ret
elseif mode == 2 then
if not cb_ret or i == 1 then
ret = cb_ret
end
elseif mode == 3 then
if cb_ret then
return cb_ret
end
ret = cb_ret
elseif mode == 4 then
if (cb_ret and not ret) or i == 1 then
ret = cb_ret
end
elseif mode == 5 and cb_ret then
return cb_ret
end
end
return ret
end
-- --
-- Callback registration -- Callback registration
-- --
@ -323,8 +380,12 @@ minetest.registered_on_generateds, minetest.register_on_generated = make_registr
minetest.registered_on_newplayers, minetest.register_on_newplayer = make_registration() minetest.registered_on_newplayers, minetest.register_on_newplayer = make_registration()
minetest.registered_on_dieplayers, minetest.register_on_dieplayer = make_registration() minetest.registered_on_dieplayers, minetest.register_on_dieplayer = make_registration()
minetest.registered_on_respawnplayers, minetest.register_on_respawnplayer = make_registration() minetest.registered_on_respawnplayers, minetest.register_on_respawnplayer = make_registration()
minetest.registered_on_prejoinplayers, minetest.register_on_prejoinplayer = make_registration()
minetest.registered_on_joinplayers, minetest.register_on_joinplayer = make_registration() minetest.registered_on_joinplayers, minetest.register_on_joinplayer = make_registration()
minetest.registered_on_leaveplayers, minetest.register_on_leaveplayer = make_registration() minetest.registered_on_leaveplayers, minetest.register_on_leaveplayer = make_registration()
minetest.registered_on_player_receive_fields, minetest.register_on_player_receive_fields = make_registration_reverse() minetest.registered_on_player_receive_fields, minetest.register_on_player_receive_fields = make_registration_reverse()
minetest.registered_on_cheats, minetest.register_on_cheat = make_registration() minetest.registered_on_cheats, minetest.register_on_cheat = make_registration()
minetest.registered_on_crafts, minetest.register_on_craft = make_registration()
minetest.registered_craft_predicts, minetest.register_craft_predict = make_registration()
minetest.registered_on_protection_violation, minetest.register_on_protection_violation = make_registration()

View File

@ -30,27 +30,28 @@ end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
function menubar.refresh() function menubar.refresh()
menubar.formspec = "box[-0.3,5.625;12.4,1.3;000000]" ..
"box[-0.3,5.6;12.4,0.05;FFFFFF]" menubar.formspec = "box[-0.3,5.625;12.4,1.2;#000000]" ..
"box[-0.3,5.6;12.4,0.05;#FFFFFF]"
menubar.buttons = {} menubar.buttons = {}
local button_base = -0.25 local button_base = -0.08
local maxbuttons = #gamemgr.games local maxbuttons = #gamemgr.games
if maxbuttons > 10 then if maxbuttons > 11 then
maxbuttons = 10 maxbuttons = 11
end end
for i=1,maxbuttons,1 do for i=1,maxbuttons,1 do
local btn_name = "menubar_btn_" .. gamemgr.games[i].id local btn_name = "menubar_btn_" .. gamemgr.games[i].id
local buttonpos = button_base + (i-1) * 1.245 local buttonpos = button_base + (i-1) * 1.1
if gamemgr.games[i].menuicon_path ~= nil and if gamemgr.games[i].menuicon_path ~= nil and
gamemgr.games[i].menuicon_path ~= "" then gamemgr.games[i].menuicon_path ~= "" then
menubar.formspec = menubar.formspec .. menubar.formspec = menubar.formspec ..
"image_button[" .. buttonpos .. ",5.7;1.3,1.3;" .. "image_button[" .. buttonpos .. ",5.72;1.165,1.175;" ..
engine.formspec_escape(gamemgr.games[i].menuicon_path) .. ";" .. engine.formspec_escape(gamemgr.games[i].menuicon_path) .. ";" ..
btn_name .. ";;true;false]" btn_name .. ";;true;false]"
else else
@ -65,7 +66,7 @@ function menubar.refresh()
text = text .. "\n" .. part3 text = text .. "\n" .. part3
end end
menubar.formspec = menubar.formspec .. menubar.formspec = menubar.formspec ..
"image_button[" .. buttonpos .. ",5.7;1.3,1.3;;" ..btn_name .. "image_button[" .. buttonpos .. ",5.72;1.165,1.175;;" ..btn_name ..
";" .. text .. ";true;true]" ";" .. text .. ";true;true]"
end end

File diff suppressed because it is too large Load Diff

View File

@ -21,22 +21,68 @@
modstore = {} modstore = {}
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- @function [parent=#modstore] init
function modstore.init() function modstore.init()
modstore.tabnames = {} modstore.tabnames = {}
table.insert(modstore.tabnames,"dialog_modstore_unsorted") table.insert(modstore.tabnames,"dialog_modstore_unsorted")
table.insert(modstore.tabnames,"dialog_modstore_search") table.insert(modstore.tabnames,"dialog_modstore_search")
modstore.modsperpage = 5 modstore.modsperpage = 5
modstore.basetexturedir = engine.get_texturepath() .. DIR_DELIM .. "base" .. modstore.basetexturedir = engine.get_texturepath() .. DIR_DELIM .. "base" ..
DIR_DELIM .. "pack" .. DIR_DELIM DIR_DELIM .. "pack" .. DIR_DELIM
modstore.lastmodtitle = ""
modstore.last_search = ""
modstore.searchlist = filterlist.create(
function()
if modstore.modlist_unsorted ~= nil and
modstore.modlist_unsorted.data ~= nil then
return modstore.modlist_unsorted.data
end
return {}
end,
function(element,modid)
if element.id == modid then
return true
end
return false
end, --compare fct
nil, --uid match fct
function(element,substring)
if substring == nil or
substring == "" then
return false
end
substring = substring:upper()
if element.title ~= nil and
element.title:upper():find(substring) ~= nil then
return true
end
if element.details ~= nil and
element.details.author ~= nil and
element.details.author:upper():find(substring) ~= nil then
return true
end
if element.details ~= nil and
element.details.description ~= nil and
element.details.description:upper():find(substring) ~= nil then
return true
end
return false
end --filter fct
)
modstore.current_list = nil modstore.current_list = nil
modstore.details_cache = {}
end end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- @function [parent=#modstore] nametoindex
function modstore.nametoindex(name) function modstore.nametoindex(name)
for i=1,#modstore.tabnames,1 do for i=1,#modstore.tabnames,1 do
@ -49,55 +95,94 @@ function modstore.nametoindex(name)
end end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
function modstore.gettab(tabname) -- @function [parent=#modstore] getsuccessfuldialog
function modstore.getsuccessfuldialog()
local retval = "" local retval = ""
retval = retval .. "size[6,2]"
if modstore.lastmodentry ~= nil then
retval = retval .. "label[0,0.25;" .. fgettext("Successfully installed:") .. "]"
retval = retval .. "label[3,0.25;" .. modstore.lastmodentry.moddetails.title .. "]"
local is_modstore_tab = false
retval = retval .. "label[0,0.75;" .. fgettext("Shortname:") .. "]"
if tabname == "dialog_modstore_unsorted" then retval = retval .. "label[3,0.75;" .. engine.formspec_escape(modstore.lastmodentry.moddetails.basename) .. "]"
retval = modstore.getmodlist(modstore.modlist_unsorted)
is_modstore_tab = true
end
if tabname == "dialog_modstore_search" then
is_modstore_tab = true
end
if is_modstore_tab then
return modstore.tabheader(tabname) .. retval
end
if tabname == "modstore_mod_installed" then
return "size[6,2]label[0.25,0.25;Mod: " .. modstore.lastmodtitle ..
" installed successfully]" ..
"button[2.5,1.5;1,0.5;btn_confirm_mod_successfull;ok]"
end
return ""
end
-------------------------------------------------------------------------------- end
function modstore.tabheader(tabname) retval = retval .. "button[2.5,1.5;1,0.5;btn_confirm_mod_successfull;" .. fgettext("ok") .. "]"
local retval = "size[12,9.25]"
retval = retval .. "tabheader[-0.3,-0.99;modstore_tab;" ..
"Unsorted,Search;" ..
modstore.nametoindex(tabname) .. ";true;false]"
return retval return retval
end end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- @function [parent=#modstore] gettab
function modstore.gettab(tabname)
local retval = ""
local is_modstore_tab = false
if tabname == "dialog_modstore_unsorted" then
modstore.modsperpage = 5
retval = modstore.getmodlist(modstore.modlist_unsorted)
is_modstore_tab = true
end
if tabname == "dialog_modstore_search" then
retval = modstore.getsearchpage()
is_modstore_tab = true
end
if is_modstore_tab then
return modstore.tabheader(tabname) .. retval
end
if tabname == "modstore_mod_installed" then
return modstore.getsuccessfuldialog()
end
if tabname == "modstore_downloading" then
return "size[6,2]label[0.25,0.75;" .. fgettext("Downloading") ..
" " .. modstore.lastmodtitle .. " " ..
fgettext("please wait...") .. "]"
end
return ""
end
--------------------------------------------------------------------------------
-- @function [parent=#modstore] tabheader
function modstore.tabheader(tabname)
local retval = "size[12,10.25]"
retval = retval .. "tabheader[-0.3,-0.99;modstore_tab;" ..
"Unsorted,Search;" ..
modstore.nametoindex(tabname) .. ";true;false]" ..
"button[4,9.9;4,0.5;btn_modstore_close;" ..
fgettext("Close modstore") .. "]"
return retval
end
--------------------------------------------------------------------------------
-- @function [parent=#modstore] handle_buttons
function modstore.handle_buttons(current_tab,fields) function modstore.handle_buttons(current_tab,fields)
modstore.lastmodtitle = ""
if fields["modstore_tab"] then if fields["modstore_tab"] then
local index = tonumber(fields["modstore_tab"]) local index = tonumber(fields["modstore_tab"])
if index > 0 and if index > 0 and
index <= #modstore.tabnames then index <= #modstore.tabnames then
if modstore.tabnames[index] == "dialog_modstore_search" then
filterlist.set_filtercriteria(modstore.searchlist,modstore.last_search)
filterlist.refresh(modstore.searchlist)
modstore.modsperpage = 4
modstore.currentlist = {
page = 0,
pagecount =
math.ceil(filterlist.size(modstore.searchlist) / modstore.modsperpage),
data = filterlist.get_list(modstore.searchlist),
}
end
return { return {
current_tab = modstore.tabnames[index], current_tab = modstore.tabnames[index],
is_dialog = true, is_dialog = true,
@ -105,170 +190,426 @@ function modstore.handle_buttons(current_tab,fields)
} }
end end
modstore.modlist_page = 0
end end
if fields["btn_modstore_page_up"] then if fields["btn_modstore_page_up"] then
if modstore.current_list ~= nil and modstore.current_list.page > 0 then if modstore.current_list ~= nil and modstore.current_list.page > 0 then
modstore.current_list.page = modstore.current_list.page - 1 modstore.current_list.page = modstore.current_list.page - 1
end end
end end
if fields["btn_modstore_page_down"] then if fields["btn_modstore_page_down"] then
if modstore.current_list ~= nil and if modstore.current_list ~= nil and
modstore.current_list.page <modstore.current_list.pagecount-1 then modstore.current_list.page <modstore.current_list.pagecount-1 then
modstore.current_list.page = modstore.current_list.page +1 modstore.current_list.page = modstore.current_list.page +1
end end
end end
if fields["btn_hidden_close_download"] ~= nil then
if fields["btn_hidden_close_download"].successfull then
modstore.lastmodentry = fields["btn_hidden_close_download"]
return {
current_tab = "modstore_mod_installed",
is_dialog = true,
show_buttons = false
}
else
modstore.lastmodtitle = ""
return {
current_tab = modstore.tabnames[1],
is_dialog = true,
show_buttons = false
}
end
end
if fields["btn_confirm_mod_successfull"] then if fields["btn_confirm_mod_successfull"] then
modstore.lastmodentry = nil
modstore.lastmodtitle = ""
return { return {
current_tab = modstore.tabnames[1], current_tab = modstore.tabnames[1],
is_dialog = true, is_dialog = true,
show_buttons = false show_buttons = false
} }
end end
if fields["btn_modstore_search"] or
(fields["key_enter"] and fields["te_modstore_search"] ~= nil) then
modstore.last_search = fields["te_modstore_search"]
filterlist.set_filtercriteria(modstore.searchlist,fields["te_modstore_search"])
filterlist.refresh(modstore.searchlist)
modstore.currentlist = {
page = 0,
pagecount = math.ceil(filterlist.size(modstore.searchlist) / modstore.modsperpage),
data = filterlist.get_list(modstore.searchlist),
}
end
for i=1, modstore.modsperpage, 1 do
local installbtn = "btn_install_mod_" .. i if fields["btn_modstore_close"] then
return {
if fields[installbtn] then is_dialog = false,
local modlistentry = show_buttons = true,
modstore.current_list.page * modstore.modsperpage + i current_tab = engine.setting_get("main_menu_tab")
}
local moddetails = modstore.get_details(modstore.current_list.data[modlistentry].id) end
local fullurl = engine.setting_get("modstore_download_url") .. for key,value in pairs(fields) do
moddetails.download_url local foundat = key:find("btn_install_mod_")
local modfilename = os.tempfolder() .. ".zip" if ( foundat == 1) then
local modid = tonumber(key:sub(17))
if engine.download_file(fullurl,modfilename) then for i=1,#modstore.modlist_unsorted.data,1 do
if modstore.modlist_unsorted.data[i].id == modid then
modmgr.installmod(modfilename,moddetails.basename) local moddetails = modstore.modlist_unsorted.data[i].details
os.remove(modfilename) if modstore.lastmodtitle ~= "" then
modstore.lastmodtitle = modstore.current_list.data[modlistentry].title modstore.lastmodtitle = modstore.lastmodtitle .. ", "
end
return {
current_tab = "modstore_mod_installed", modstore.lastmodtitle = modstore.lastmodtitle .. moddetails.title
is_dialog = true,
show_buttons = false engine.handle_async(
} function(param)
else
gamedata.errormessage = "Unable to download " .. local fullurl = engine.setting_get("modstore_download_url") ..
moddetails.download_url .. " (internet connection?)" param.moddetails.download_url
if param.version ~= nil then
local found = false
for i=1,#param.moddetails.versions, 1 do
if param.moddetails.versions[i].date:sub(1,10) == param.version then
fullurl = engine.setting_get("modstore_download_url") ..
param.moddetails.versions[i].download_url
found = true
end
end
if not found then
return {
moddetails = param.moddetails,
successfull = false
}
end
end
if engine.download_file(fullurl,param.filename) then
return {
texturename = param.texturename,
moddetails = param.moddetails,
filename = param.filename,
successfull = true
}
else
return {
modtitle = param.title,
successfull = false
}
end
end,
{
moddetails = moddetails,
version = fields["dd_version" .. modid],
filename = os.tempfolder() .. "_MODNAME_" .. moddetails.basename .. ".zip",
texturename = modstore.modlist_unsorted.data[i].texturename
},
function(result)
if result.successfull then
modmgr.installmod(result.filename,result.moddetails.basename)
os.remove(result.filename)
else
gamedata.errormessage = "Failed to download " .. result.moddetails.title
end
if gamedata.errormessage == nil then
engine.button_handler({btn_hidden_close_download=result})
else
engine.button_handler({btn_hidden_close_download={successfull=false}})
end
end
)
return {
current_tab = "modstore_downloading",
is_dialog = true,
show_buttons = false,
ignore_menu_quit = true
}
end
end end
break
end end
end end
end end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- @function [parent=#modstore] update_modlist
function modstore.update_modlist() function modstore.update_modlist()
modstore.modlist_unsorted = {} modstore.modlist_unsorted = {}
modstore.modlist_unsorted.data = engine.get_modstore_list() modstore.modlist_unsorted.data = {}
modstore.modlist_unsorted.pagecount = 1
if modstore.modlist_unsorted.data ~= nil then
modstore.modlist_unsorted.pagecount =
math.ceil((#modstore.modlist_unsorted.data / modstore.modsperpage))
else
modstore.modlist_unsorted.data = {}
modstore.modlist_unsorted.pagecount = 1
end
modstore.modlist_unsorted.page = 0 modstore.modlist_unsorted.page = 0
engine.handle_async(
function(param)
return engine.get_modstore_list()
end,
nil,
function(result)
if result ~= nil then
modstore.modlist_unsorted = {}
modstore.modlist_unsorted.data = result
if modstore.modlist_unsorted.data ~= nil then
modstore.modlist_unsorted.pagecount =
math.ceil((#modstore.modlist_unsorted.data / modstore.modsperpage))
else
modstore.modlist_unsorted.data = {}
modstore.modlist_unsorted.pagecount = 1
end
modstore.modlist_unsorted.page = 0
modstore.fetchdetails()
engine.event_handler("Refresh")
end
end
)
end end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
function modstore.getmodlist(list) -- @function [parent=#modstore] fetchdetails
local retval = "" function modstore.fetchdetails()
retval = retval .. "label[10,-0.4;" .. fgettext("Page $1 of $2", list.page+1, list.pagecount) .. "]"
for i=1,#modstore.modlist_unsorted.data,1 do
retval = retval .. "button[11.6,-0.1;0.5,0.5;btn_modstore_page_up;^]" engine.handle_async(
retval = retval .. "box[11.6,0.35;0.28,8.6;000000]" function(param)
local scrollbarpos = 0.35 + (8.1/(list.pagecount-1)) * list.page param.details = engine.get_modstore_details(tostring(param.modid))
retval = retval .. "box[11.6," ..scrollbarpos .. ";0.28,0.5;32CD32]" return param
retval = retval .. "button[11.6,9.0;0.5,0.5;btn_modstore_page_down;v]" end,
{
modid=modstore.modlist_unsorted.data[i].id,
if #list.data < (list.page * modstore.modsperpage) then listindex=i
return retval },
function(result)
if result ~= nil and
modstore.modlist_unsorted ~= nil
and modstore.modlist_unsorted.data ~= nil and
modstore.modlist_unsorted.data[result.listindex] ~= nil and
modstore.modlist_unsorted.data[result.listindex].id ~= nil then
modstore.modlist_unsorted.data[result.listindex].details = result.details
engine.event_handler("Refresh")
end
end
)
end
end
--------------------------------------------------------------------------------
-- @function [parent=#modstore] getscreenshot
function modstore.getscreenshot(ypos,listentry)
if listentry.details ~= nil and
(listentry.details.screenshot_url == nil or
listentry.details.screenshot_url == "") then
if listentry.texturename == nil then
listentry.texturename = modstore.basetexturedir .. "no_screenshot.png"
end
return "image[0,".. ypos .. ";3,2;" ..
engine.formspec_escape(listentry.texturename) .. "]"
end end
local endmod = (list.page * modstore.modsperpage) + modstore.modsperpage if listentry.details ~= nil and
listentry.texturename == nil then
--make sure we don't download multiple times
listentry.texturename = "in progress"
--prepare url and filename
local fullurl = engine.setting_get("modstore_download_url") ..
listentry.details.screenshot_url
local filename = os.tempfolder() .. "_MID_" .. listentry.id
--trigger download
engine.handle_async(
--first param is downloadfct
function(param)
param.successfull = engine.download_file(param.fullurl,param.filename)
return param
end,
--second parameter is data passed to async job
{
fullurl = fullurl,
filename = filename,
modid = listentry.id
},
--integrate result to raw list
function(result)
if result.successfull then
local found = false
for i=1,#modstore.modlist_unsorted.data,1 do
if modstore.modlist_unsorted.data[i].id == result.modid then
found = true
modstore.modlist_unsorted.data[i].texturename = result.filename
break
end
end
if found then
engine.event_handler("Refresh")
else
engine.log("error","got screenshot but didn't find matching mod: " .. result.modid)
end
end
end
)
end
if listentry.texturename ~= nil and
listentry.texturename ~= "in progress" then
return "image[0,".. ypos .. ";3,2;" ..
engine.formspec_escape(listentry.texturename) .. "]"
end
return ""
end
--------------------------------------------------------------------------------
--@function [parent=#modstore] getshortmodinfo
function modstore.getshortmodinfo(ypos,listentry,details)
local retval = ""
retval = retval .. "box[0," .. ypos .. ";11.4,1.75;#FFFFFF]"
--screenshot
retval = retval .. modstore.getscreenshot(ypos,listentry)
--title + author
retval = retval .."label[2.75," .. ypos .. ";" ..
engine.formspec_escape(details.title) .. " (" .. details.author .. ")]"
--description
local descriptiony = ypos + 0.5
retval = retval .. "textarea[3," .. descriptiony .. ";6.5,1.55;;" ..
engine.formspec_escape(details.description) .. ";]"
--rating
local ratingy = ypos
retval = retval .."label[7," .. ratingy .. ";" ..
fgettext("Rating") .. ":]"
retval = retval .. "label[8.7," .. ratingy .. ";" .. details.rating .."]"
--versions (IMPORTANT has to be defined AFTER rating)
if details.versions ~= nil and
#details.versions > 1 then
local versiony = ypos + 0.05
retval = retval .. "dropdown[9.1," .. versiony .. ";2.48,0.25;dd_version" .. details.id .. ";"
local versions = ""
for i=1,#details.versions , 1 do
if versions ~= "" then
versions = versions .. ","
end
versions = versions .. details.versions[i].date:sub(1,10)
end
retval = retval .. versions .. ";1]"
end
if details.basename then
--install button
local buttony = ypos + 1.2
retval = retval .."button[9.1," .. buttony .. ";2.5,0.5;btn_install_mod_" .. details.id .. ";"
if modmgr.mod_exists(details.basename) then
retval = retval .. fgettext("re-Install") .."]"
else
retval = retval .. fgettext("Install") .."]"
end
end
return retval
end
--------------------------------------------------------------------------------
--@function [parent=#modstore] getmodlist
function modstore.getmodlist(list,yoffset)
modstore.current_list = list
if #list.data == 0 then
return ""
end
if yoffset == nil then
yoffset = 0
end
local scrollbar = ""
scrollbar = scrollbar .. "label[0.1,9.5;"
.. fgettext("Page $1 of $2", list.page+1, list.pagecount) .. "]"
scrollbar = scrollbar .. "box[11.6," .. (yoffset + 0.35) .. ";0.28,"
.. (8.6 - yoffset) .. ";#000000]"
local scrollbarpos = (yoffset + 0.75) +
((7.7 -yoffset)/(list.pagecount-1)) * list.page
scrollbar = scrollbar .. "box[11.6," ..scrollbarpos .. ";0.28,0.5;#32CD32]"
scrollbar = scrollbar .. "button[11.6," .. (yoffset + (0.3))
.. ";0.5,0.5;btn_modstore_page_up;^]"
scrollbar = scrollbar .. "button[11.6," .. 9.0
.. ";0.5,0.5;btn_modstore_page_down;v]"
local retval = ""
local endmod = (list.page * modstore.modsperpage) + modstore.modsperpage
if (endmod > #list.data) then if (endmod > #list.data) then
endmod = #list.data endmod = #list.data
end end
for i=(list.page * modstore.modsperpage) +1, endmod, 1 do for i=(list.page * modstore.modsperpage) +1, endmod, 1 do
--getmoddetails --getmoddetails
local details = modstore.get_details(list.data[i].id) local details = list.data[i].details
if details == nil then
details = {}
details.title = list.data[i].title
details.author = ""
details.rating = -1
details.description = ""
end
if details ~= nil then if details ~= nil then
local screenshot_ypos = (i-1 - (list.page * modstore.modsperpage))*1.9 +0.2 local screenshot_ypos =
yoffset +(i-1 - (list.page * modstore.modsperpage))*1.9 +0.2
retval = retval .. "box[0," .. screenshot_ypos .. ";11.4,1.75;FFFFFF]"
retval = retval .. modstore.getshortmodinfo(screenshot_ypos,
--screenshot list.data[i],
if details.screenshot_url ~= nil and details)
details.screenshot_url ~= "" then
if list.data[i].texturename == nil then
local fullurl = engine.setting_get("modstore_download_url") ..
details.screenshot_url
local filename = os.tempfolder()
if engine.download_file(fullurl,filename) then
list.data[i].texturename = filename
end
end
end
if list.data[i].texturename == nil then
list.data[i].texturename = modstore.basetexturedir .. "no_screenshot.png"
end
retval = retval .. "image[0,".. screenshot_ypos .. ";3,2;" ..
engine.formspec_escape(list.data[i].texturename) .. "]"
--title + author
retval = retval .."label[2.75," .. screenshot_ypos .. ";" ..
engine.formspec_escape(details.title) .. " (" .. details.author .. ")]"
--description
local descriptiony = screenshot_ypos + 0.5
retval = retval .. "textarea[3," .. descriptiony .. ";6.5,1.55;;" ..
engine.formspec_escape(details.description) .. ";]"
--rating
local ratingy = screenshot_ypos + 0.6
retval = retval .."label[10.1," .. ratingy .. ";" ..
fgettext("Rating") .. ": " .. details.rating .."]"
--install button
local buttony = screenshot_ypos + 1.2
local buttonnumber = (i - (list.page * modstore.modsperpage))
retval = retval .."button[9.6," .. buttony .. ";2,0.5;btn_install_mod_" .. buttonnumber .. ";"
if modmgr.mod_exists(details.basename) then
retval = retval .. fgettext("re-Install") .."]"
else
retval = retval .. fgettext("Install") .."]"
end
end end
end end
modstore.current_list = list return retval .. scrollbar
return retval
end end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
function modstore.get_details(modid) --@function [parent=#modstore] getsearchpage
function modstore.getsearchpage()
if modstore.details_cache[modid] ~= nil then local retval = ""
return modstore.details_cache[modid] local search = ""
end
local retval = engine.get_modstore_details(tostring(modid)) if modstore.last_search ~= nil then
modstore.details_cache[modid] = retval search = modstore.last_search
return retval end
retval = retval ..
"button[9.5,0.2;2.5,0.5;btn_modstore_search;".. fgettext("Search") .. "]" ..
"field[0.5,0.5;9,0.5;te_modstore_search;;" .. search .. "]"
--show 4 mods only
modstore.modsperpage = 4
retval = retval ..
modstore.getmodlist(
modstore.currentlist,
1.75)
return retval;
end end

View File

@ -178,7 +178,7 @@ function minetest.deserialize(sdata)
if okay then if okay then
return results return results
end end
print('error:'.. results) minetest.log('error', 'minetest.deserialize(): '.. results)
return nil return nil
end end

View File

@ -1,45 +1,46 @@
vector = {} vector = {}
local function assert_vector(v)
assert(type(v) == "table" and v.x and v.y and v.z, "Invalid vector")
end
function vector.new(a, b, c) function vector.new(a, b, c)
v = {x=0, y=0, z=0}
if type(a) == "table" then if type(a) == "table" then
v = {x=a.x, y=a.y, z=a.z} assert(a.x and a.y and a.z, "Invalid vector passed to vector.new()")
elseif a and b and c then return {x=a.x, y=a.y, z=a.z}
v = {x=a, y=b, z=c} elseif a then
assert(b and c, "Invalid arguments for vector.new()")
return {x=a, y=b, z=c}
end end
setmetatable(v, { return {x=0, y=0, z=0}
__add = vector.add,
__sub = vector.subtract,
__mul = vector.multiply,
__div = vector.divide,
__umn = function(v) return vector.multiply(v, -1) end,
__len = vector.length,
__eq = vector.equals,
})
return v
end end
function vector.equals(a, b) function vector.equals(a, b)
assert_vector(a)
assert_vector(b)
return a.x == b.x and return a.x == b.x and
a.y == b.y and a.y == b.y and
a.z == b.z a.z == b.z
end end
function vector.length(v) function vector.length(v)
assert_vector(v)
return math.hypot(v.x, math.hypot(v.y, v.z)) return math.hypot(v.x, math.hypot(v.y, v.z))
end end
function vector.normalize(v) function vector.normalize(v)
assert_vector(v)
local len = vector.length(v) local len = vector.length(v)
if len == 0 then if len == 0 then
return vector.new() return {x=0, y=0, z=0}
else else
return vector.divide(v, len) return vector.divide(v, len)
end end
end end
function vector.round(v) function vector.round(v)
assert_vector(v)
return { return {
x = math.floor(v.x + 0.5), x = math.floor(v.x + 0.5),
y = math.floor(v.y + 0.5), y = math.floor(v.y + 0.5),
@ -48,6 +49,8 @@ function vector.round(v)
end end
function vector.distance(a, b) function vector.distance(a, b)
assert_vector(a)
assert_vector(b)
local x = a.x - b.x local x = a.x - b.x
local y = a.y - b.y local y = a.y - b.y
local z = a.z - b.z local z = a.z - b.z
@ -55,6 +58,8 @@ function vector.distance(a, b)
end end
function vector.direction(pos1, pos2) function vector.direction(pos1, pos2)
assert_vector(pos1)
assert_vector(pos2)
local x_raw = pos2.x - pos1.x local x_raw = pos2.x - pos1.x
local y_raw = pos2.y - pos1.y local y_raw = pos2.y - pos1.y
local z_raw = pos2.z - pos1.z local z_raw = pos2.z - pos1.z
@ -84,58 +89,58 @@ end
function vector.add(a, b) function vector.add(a, b)
assert_vector(a)
if type(b) == "table" then if type(b) == "table" then
return vector.new( assert_vector(b)
a.x + b.x, return {x = a.x + b.x,
a.y + b.y, y = a.y + b.y,
a.z + b.z) z = a.z + b.z}
else else
return vector.new( return {x = a.x + b,
a.x + b, y = a.y + b,
a.y + b, z = a.z + b}
a.z + b)
end end
end end
function vector.subtract(a, b) function vector.subtract(a, b)
assert_vector(a)
if type(b) == "table" then if type(b) == "table" then
return vector.new( assert_vector(b)
a.x - b.x, return {x = a.x - b.x,
a.y - b.y, y = a.y - b.y,
a.z - b.z) z = a.z - b.z}
else else
return vector.new( return {x = a.x - b,
a.x - b, y = a.y - b,
a.y - b, z = a.z - b}
a.z - b)
end end
end end
function vector.multiply(a, b) function vector.multiply(a, b)
assert_vector(a)
if type(b) == "table" then if type(b) == "table" then
return vector.new( assert_vector(b)
a.x * b.x, return {x = a.x * b.x,
a.y * b.y, y = a.y * b.y,
a.z * b.z) z = a.z * b.z}
else else
return vector.new( return {x = a.x * b,
a.x * b, y = a.y * b,
a.y * b, z = a.z * b}
a.z * b)
end end
end end
function vector.divide(a, b) function vector.divide(a, b)
assert_vector(a)
if type(b) == "table" then if type(b) == "table" then
return vector.new( assert_vector(b)
a.x / b.x, return {x = a.x / b.x,
a.y / b.y, y = a.y / b.y,
a.z / b.z) z = a.z / b.z}
else else
return vector.new( return {x = a.x / b,
a.x / b, y = a.y / b,
a.y / b, z = a.z / b}
a.z / b)
end end
end end

View File

@ -0,0 +1,71 @@
uniform sampler2D baseTexture;
uniform sampler2D normalTexture;
uniform sampler2D useNormalmap;
uniform vec4 skyBgColor;
uniform float fogDistance;
uniform vec3 eyePosition;
varying vec3 vPosition;
varying vec3 eyeVec;
#ifdef ENABLE_PARALLAX_OCCLUSION
varying vec3 tsEyeVec;
#endif
const float e = 2.718281828459;
void main (void)
{
vec3 color;
vec2 uv = gl_TexCoord[0].st;
#ifdef USE_NORMALMAPS
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
#endif
#ifdef ENABLE_PARALLAX_OCCLUSION
float height;
vec2 tsEye = vec2(tsEyeVec.x,-tsEyeVec.y);
if (use_normalmap > 0.0) {
float map_height = texture2D(normalTexture, uv).a;
if (map_height < 1.0){
float height = PARALLAX_OCCLUSION_SCALE * map_height - PARALLAX_OCCLUSION_BIAS;
uv = uv + height * tsEye;
}
}
#endif
#ifdef ENABLE_BUMPMAPPING
if (use_normalmap > 0.0) {
vec3 base = texture2D(baseTexture, uv).rgb;
vec3 vVec = normalize(eyeVec);
vec3 bump = normalize(texture2D(normalTexture, uv).xyz * 2.0 - 1.0);
vec3 R = reflect(-vVec, bump);
vec3 lVec = normalize(vVec);
float diffuse = max(dot(lVec, bump), 0.0);
float specular = pow(clamp(dot(R, lVec), 0.0, 1.0),1.0);
color = mix (base,diffuse*base,1.0) + 0.1 * specular * diffuse;
} else {
color = texture2D(baseTexture, uv).rgb;
}
#else
color = texture2D(baseTexture, uv).rgb;
#endif
float alpha = texture2D(baseTexture, uv).a;
vec4 col = vec4(color.r, color.g, color.b, alpha);
col *= gl_Color;
col = col * col; // SRGB -> Linear
col *= 1.8;
col.r = 1.0 - exp(1.0 - col.r) / e;
col.g = 1.0 - exp(1.0 - col.g) / e;
col.b = 1.0 - exp(1.0 - col.b) / e;
col = sqrt(col); // Linear -> SRGB
if(fogDistance != 0.0){
float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));
col = mix(col, skyBgColor, d);
}
gl_FragColor = vec4(col.r, col.g, col.b, alpha);
}

View File

@ -0,0 +1,102 @@
uniform mat4 mWorldViewProj;
uniform mat4 mInvWorld;
uniform mat4 mTransWorld;
uniform float dayNightRatio;
uniform vec3 eyePosition;
varying vec3 vPosition;
varying vec3 eyeVec;
#ifdef ENABLE_PARALLAX_OCCLUSION
varying vec3 tsEyeVec;
#endif
void main(void)
{
gl_Position = mWorldViewProj * gl_Vertex;
vPosition = (mWorldViewProj * gl_Vertex).xyz;
eyeVec = (gl_ModelViewMatrix * gl_Vertex).xyz;
#ifdef ENABLE_PARALLAX_OCCLUSION
vec3 normal,tangent,binormal;
normal = normalize(gl_NormalMatrix * gl_Normal);
if (gl_Normal.x > 0.5) {
// 1.0, 0.0, 0.0
tangent = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, -1.0));
binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0));
} else if (gl_Normal.x < -0.5) {
// -1.0, 0.0, 0.0
tangent = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0));
binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0));
} else if (gl_Normal.y > 0.5) {
// 0.0, 1.0, 0.0
tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0));
binormal = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0));
} else if (gl_Normal.y < -0.5) {
// 0.0, -1.0, 0.0
tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0));
binormal = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0));
} else if (gl_Normal.z > 0.5) {
// 0.0, 0.0, 1.0
tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0));
binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0));
} else if (gl_Normal.z < -0.5) {
// 0.0, 0.0, -1.0
tangent = normalize(gl_NormalMatrix * vec3(-1.0, 0.0, 0.0));
binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0));
}
mat3 tbnMatrix = mat3( tangent.x, binormal.x, normal.x,
tangent.y, binormal.y, normal.y,
tangent.z, binormal.z, normal.z);
tsEyeVec = normalize(eyeVec * tbnMatrix);
#endif
vec4 color;
//color = vec4(1.0, 1.0, 1.0, 1.0);
float day = gl_Color.r;
float night = gl_Color.g;
float light_source = gl_Color.b;
/*color.r = mix(night, day, dayNightRatio);
color.g = color.r;
color.b = color.r;*/
float rg = mix(night, day, dayNightRatio);
rg += light_source * 2.5; // Make light sources brighter
float b = rg;
// Moonlight is blue
b += (day - night) / 13.0;
rg -= (day - night) / 13.0;
// Emphase blue a bit in darker places
// See C++ implementation in mapblock_mesh.cpp finalColorBlend()
b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025);
// Artificial light is yellow-ish
// See C++ implementation in mapblock_mesh.cpp finalColorBlend()
rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065);
color.r = clamp(rg,0.0,1.0);
color.g = clamp(rg,0.0,1.0);
color.b = clamp(b,0.0,1.0);
// Make sides and bottom darker than the top
color = color * color; // SRGB -> Linear
if(gl_Normal.y <= 0.5)
color *= 0.6;
//color *= 0.7;
color = sqrt(color); // Linear -> SRGB
color.a = gl_Color.a;
gl_FrontColor = gl_BackColor = color;
gl_TexCoord[0] = gl_MultiTexCoord0;
}

View File

@ -1,46 +0,0 @@
uniform sampler2D myTexture;
uniform sampler2D normalTexture;
uniform vec4 skyBgColor;
uniform float fogDistance;
varying vec3 vPosition;
varying vec3 viewVec;
void main (void)
{
vec4 col = texture2D(myTexture, vec2(gl_TexCoord[0]));
float alpha = col.a;
vec2 uv = gl_TexCoord[0].st;
vec4 base = texture2D(myTexture, uv);
vec4 final_color = vec4(0.2, 0.2, 0.2, 1.0) * base;
vec3 vVec = normalize(viewVec);
vec3 bump = normalize(texture2D(normalTexture, uv).xyz * 2.0 - 1.0);
vec3 R = reflect(-vVec, bump);
vec3 lVec = normalize(vec3(0.0, -0.4, 0.5));
float diffuse = max(dot(lVec, bump), 0.0);
vec3 color = diffuse * texture2D(myTexture, gl_TexCoord[0].st).rgb;
float specular = pow(clamp(dot(R, lVec), 0.0, 1.0),1.0);
color += vec3(0.2*specular*diffuse);
col = vec4(color.r, color.g, color.b, alpha);
col *= gl_Color;
col = col * col; // SRGB -> Linear
col *= 1.8;
col.r = 1.0 - exp(1.0 - col.r) / exp(1.0);
col.g = 1.0 - exp(1.0 - col.g) / exp(1.0);
col.b = 1.0 - exp(1.0 - col.b) / exp(1.0);
col = sqrt(col); // Linear -> SRGB
if(fogDistance != 0.0){
float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));
alpha = mix(alpha, 0.0, d);
}
gl_FragColor = vec4(col.r, col.g, col.b, alpha);
}

View File

@ -1,45 +0,0 @@
uniform sampler2D myTexture;
uniform sampler2D normalTexture;
uniform vec4 skyBgColor;
uniform float fogDistance;
varying vec3 vPosition;
varying vec3 viewVec;
void main (void)
{
vec4 col = texture2D(myTexture, vec2(gl_TexCoord[0]));
float alpha = col.a;
vec2 uv = gl_TexCoord[0].st;
vec4 base = texture2D(myTexture, uv);
vec4 final_color = vec4(0.2, 0.2, 0.2, 1.0) * base;
vec3 vVec = normalize(viewVec);
vec3 bump = normalize(texture2D(normalTexture, uv).xyz * 2.0 - 1.0);
vec3 R = reflect(-vVec, bump);
vec3 lVec = normalize(vec3(0.0, -0.4, 0.5));
float diffuse = max(dot(lVec, bump), 0.0);
vec3 color = diffuse * texture2D(myTexture, gl_TexCoord[0].st).rgb;
float specular = pow(clamp(dot(R, lVec), 0.0, 1.0),1.0);
color += vec3(0.2*specular*diffuse);
col = vec4(color.r, color.g, color.b, alpha);
col *= gl_Color;
col = col * col; // SRGB -> Linear
col *= 1.8;
col.r = 1.0 - exp(1.0 - col.r) / exp(1.0);
col.g = 1.0 - exp(1.0 - col.g) / exp(1.0);
col.b = 1.0 - exp(1.0 - col.b) / exp(1.0);
col = sqrt(col); // Linear -> SRGB
if(fogDistance != 0.0){
float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));
col = mix(col, skyBgColor, d);
}
gl_FragColor = vec4(col.r, col.g, col.b, alpha);
}

View File

@ -0,0 +1,54 @@
uniform sampler2D baseTexture;
uniform sampler2D normalTexture;
uniform sampler2D useNormalmap;
uniform vec4 skyBgColor;
uniform float fogDistance;
uniform vec3 eyePosition;
varying vec3 vPosition;
varying vec3 eyeVec;
const float e = 2.718281828459;
void main (void)
{
vec3 color;
vec2 uv = gl_TexCoord[0].st;
#ifdef USE_NORMALMAPS
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
#endif
#ifdef ENABLE_BUMPMAPPING
if (use_normalmap > 0.0) {
vec3 base = texture2D(baseTexture, uv).rgb;
vec3 vVec = normalize(eyeVec);
vec3 bump = normalize(texture2D(normalTexture, uv).xyz * 2.0 - 1.0);
vec3 R = reflect(-vVec, bump);
vec3 lVec = normalize(vVec);
float diffuse = max(dot(lVec, bump), 0.0);
float specular = pow(clamp(dot(R, lVec), 0.0, 1.0),1.0);
color = mix (base,diffuse*base,1.0) + 0.1 * specular * diffuse;
} else {
color = texture2D(baseTexture, uv).rgb;
}
#else
color = texture2D(baseTexture, uv).rgb;
#endif
float alpha = texture2D(baseTexture, uv).a;
vec4 col = vec4(color.r, color.g, color.b, alpha);
col *= gl_Color;
col = col * col; // SRGB -> Linear
col *= 1.8;
col.r = 1.0 - exp(1.0 - col.r) / e;
col.g = 1.0 - exp(1.0 - col.g) / e;
col.b = 1.0 - exp(1.0 - col.b) / e;
col = sqrt(col); // Linear -> SRGB
if(fogDistance != 0.0){
float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));
col = mix(col, skyBgColor, d);
}
gl_FragColor = vec4(col.r, col.g, col.b, alpha);
}

View File

@ -1,37 +1,44 @@
uniform mat4 mWorldViewProj; uniform mat4 mWorldViewProj;
uniform mat4 mInvWorld; uniform mat4 mInvWorld;
uniform mat4 mTransWorld; uniform mat4 mTransWorld;
uniform float dayNightRatio; uniform float dayNightRatio;
uniform float animationTimer;
uniform vec3 eyePosition;
varying vec3 vPosition; varying vec3 vPosition;
varying vec3 viewVec; varying vec3 eyeVec;
#ifdef ENABLE_WAVING_LEAVES
float smoothCurve( float x ) {
return x * x *( 3.0 - 2.0 * x );
}
float triangleWave( float x ) {
return abs( fract( x + 0.5 ) * 2.0 - 1.0 );
}
float smoothTriangleWave( float x ) {
return smoothCurve( triangleWave( x ) ) * 2.0 - 1.0;
}
#endif
void main(void) void main(void)
{ {
gl_TexCoord[0] = gl_MultiTexCoord0;
#ifdef ENABLE_WAVING_LEAVES
vec4 pos = gl_Vertex;
vec4 pos2 = mTransWorld*gl_Vertex;
pos.x += (smoothTriangleWave(animationTimer*10.0 + pos2.x * 0.01 + pos2.z * 0.01) * 2.0 - 1.0) * 0.4;
pos.y += (smoothTriangleWave(animationTimer*15.0 + pos2.x * -0.01 + pos2.z * -0.01) * 2.0 - 1.0) * 0.2;
pos.z += (smoothTriangleWave(animationTimer*10.0 + pos2.x * -0.01 + pos2.z * -0.01) * 2.0 - 1.0) * 0.4;
gl_Position = mWorldViewProj * pos;
#else
gl_Position = mWorldViewProj * gl_Vertex; gl_Position = mWorldViewProj * gl_Vertex;
#endif
vPosition = (mWorldViewProj * gl_Vertex).xyz; vPosition = (mWorldViewProj * gl_Vertex).xyz;
vec3 tangent;
vec3 binormal;
vec3 c1 = cross( gl_Normal, vec3(0.0, 0.0, 1.0) ); eyeVec = (gl_ModelViewMatrix * gl_Vertex).xyz;
vec3 c2 = cross( gl_Normal, vec3(0.0, 1.0, 0.0) );
if( length(c1)>length(c2) )
{
tangent = c1;
}
else
{
tangent = c2;
}
tangent = normalize(tangent);
//binormal = cross(gl_Normal, tangent);
//binormal = normalize(binormal);
vec4 color; vec4 color;
//color = vec4(1.0, 1.0, 1.0, 1.0); //color = vec4(1.0, 1.0, 1.0, 1.0);
@ -45,7 +52,7 @@ void main(void)
color.b = color.r;*/ color.b = color.r;*/
float rg = mix(night, day, dayNightRatio); float rg = mix(night, day, dayNightRatio);
rg += light_source * 1.5; // Make light sources brighter rg += light_source * 2.5; // Make light sources brighter
float b = rg; float b = rg;
// Moonlight is blue // Moonlight is blue
@ -60,9 +67,9 @@ void main(void)
// See C++ implementation in mapblock_mesh.cpp finalColorBlend() // See C++ implementation in mapblock_mesh.cpp finalColorBlend()
rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065); rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065);
color.r = rg; color.r = clamp(rg,0.0,1.0);
color.g = rg; color.g = clamp(rg,0.0,1.0);
color.b = b; color.b = clamp(b,0.0,1.0);
// Make sides and bottom darker than the top // Make sides and bottom darker than the top
color = color * color; // SRGB -> Linear color = color * color; // SRGB -> Linear
@ -76,23 +83,5 @@ void main(void)
gl_FrontColor = gl_BackColor = color; gl_FrontColor = gl_BackColor = color;
gl_TexCoord[0] = gl_MultiTexCoord0; gl_TexCoord[0] = gl_MultiTexCoord0;
vec3 n1 = normalize(gl_NormalMatrix * gl_Normal);
vec4 tangent1 = vec4(tangent.x, tangent.y, tangent.z, 0);
//vec3 t1 = normalize(gl_NormalMatrix * tangent1);
//vec3 b1 = cross(n1, t1);
vec3 v;
vec3 vVertex = vec3(gl_ModelViewMatrix * gl_Vertex);
vec3 vVec = -vVertex;
//v.x = dot(vVec, t1);
//v.y = dot(vVec, b1);
//v.z = dot(vVec, n1);
//viewVec = vVec;
viewVec = normalize(vec3(0.0, -0.4, 0.5));
//Vector representing the 0th texture coordinate passed to fragment shader
//gl_TexCoord[0] = vec2(gl_MultiTexCoord0);
// Transform the current vertex
//gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
} }

View File

@ -0,0 +1,54 @@
uniform sampler2D baseTexture;
uniform sampler2D normalTexture;
uniform sampler2D useNormalmap;
uniform vec4 skyBgColor;
uniform float fogDistance;
uniform vec3 eyePosition;
varying vec3 vPosition;
varying vec3 eyeVec;
const float e = 2.718281828459;
void main (void)
{
vec3 color;
vec2 uv = gl_TexCoord[0].st;
#ifdef USE_NORMALMAPS
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
#endif
#ifdef ENABLE_BUMPMAPPING
if (use_normalmap > 0.0) {
vec3 base = texture2D(baseTexture, uv).rgb;
vec3 vVec = normalize(eyeVec);
vec3 bump = normalize(texture2D(normalTexture, uv).xyz * 2.0 - 1.0);
vec3 R = reflect(-vVec, bump);
vec3 lVec = normalize(vVec);
float diffuse = max(dot(vec3(-1.0, -0.4, 0.5), bump), 0.0);
float specular = pow(clamp(dot(R, lVec), 0.0, 1.0),1.0);
color = mix (base,diffuse*base,1.0) + 0.1 * specular * diffuse;
} else {
color = texture2D(baseTexture, uv).rgb;
}
#else
color = texture2D(baseTexture, uv).rgb;
#endif
float alpha = gl_Color.a;
vec4 col = vec4(color.r, color.g, color.b, alpha);
col *= gl_Color;
col = col * col; // SRGB -> Linear
col *= 1.8;
col.r = 1.0 - exp(1.0 - col.r) / e;
col.g = 1.0 - exp(1.0 - col.g) / e;
col.b = 1.0 - exp(1.0 - col.b) / e;
col = sqrt(col); // Linear -> SRGB
if(fogDistance != 0.0){
float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));
alpha = mix(alpha, 0.0, d);
}
gl_FragColor = vec4(col.r, col.g, col.b, alpha);
}

View File

@ -1,15 +1,27 @@
uniform mat4 mWorldViewProj; uniform mat4 mWorldViewProj;
uniform mat4 mInvWorld; uniform mat4 mInvWorld;
uniform mat4 mTransWorld; uniform mat4 mTransWorld;
uniform float dayNightRatio; uniform float dayNightRatio;
uniform float animationTimer;
uniform vec3 eyePosition;
varying vec3 vPosition; varying vec3 vPosition;
varying vec3 eyeVec;
void main(void) void main(void)
{ {
#ifdef ENABLE_WAVING_WATER
vec4 pos2 = gl_Vertex;
pos2.y -= 2.0;
pos2.y -= sin (pos2.z/WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH) * WATER_WAVE_HEIGHT
+ sin ((pos2.z/WATER_WAVE_LENGTH + animationTimer * WATER_WAVE_SPEED * WATER_WAVE_LENGTH) / 7.0) * WATER_WAVE_HEIGHT;
gl_Position = mWorldViewProj * pos2;
#else
gl_Position = mWorldViewProj * gl_Vertex; gl_Position = mWorldViewProj * gl_Vertex;
#endif
eyeVec = (gl_ModelViewMatrix * gl_Vertex).xyz;
vPosition = (mWorldViewProj * gl_Vertex).xyz; vPosition = (mWorldViewProj * gl_Vertex).xyz;
vec4 color; vec4 color;
@ -24,7 +36,7 @@ void main(void)
color.b = color.r;*/ color.b = color.r;*/
float rg = mix(night, day, dayNightRatio); float rg = mix(night, day, dayNightRatio);
rg += light_source * 1.0; // Make light sources brighter rg += light_source * 2.5; // Make light sources brighter
float b = rg; float b = rg;
// Moonlight is blue // Moonlight is blue
@ -39,20 +51,13 @@ void main(void)
// See C++ implementation in mapblock_mesh.cpp finalColorBlend() // See C++ implementation in mapblock_mesh.cpp finalColorBlend()
rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065); rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065);
color.r = rg; color.r = clamp(rg,0.0,1.0);
color.g = rg; color.g = clamp(rg,0.0,1.0);
color.b = b; color.b = clamp(b,0.0,1.0);
// Make sides and bottom darker than the top
color = color * color; // SRGB -> Linear
if(gl_Normal.y <= 0.5)
color *= 0.6;
//color *= 0.7;
color = sqrt(color); // Linear -> SRGB
color.a = gl_Color.a; color.a = gl_Color.a;
gl_FrontColor = gl_BackColor = color; gl_FrontColor = gl_BackColor = color;
gl_TexCoord[0] = gl_MultiTexCoord0; gl_TexCoord[0] = gl_MultiTexCoord0;
} }

View File

@ -0,0 +1,54 @@
uniform sampler2D baseTexture;
uniform sampler2D normalTexture;
uniform sampler2D useNormalmap;
uniform vec4 skyBgColor;
uniform float fogDistance;
uniform vec3 eyePosition;
varying vec3 vPosition;
varying vec3 eyeVec;
const float e = 2.718281828459;
void main (void)
{
vec3 color;
vec2 uv = gl_TexCoord[0].st;
#ifdef USE_NORMALMAPS
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
#endif
#ifdef ENABLE_BUMPMAPPING
if (use_normalmap > 0.0) {
vec3 base = texture2D(baseTexture, uv).rgb;
vec3 vVec = normalize(eyeVec);
vec3 bump = normalize(texture2D(normalTexture, uv).xyz * 2.0 - 1.0);
vec3 R = reflect(-vVec, bump);
vec3 lVec = normalize(vVec);
float diffuse = max(dot(lVec, bump), 0.0);
float specular = pow(clamp(dot(R, lVec), 0.0, 1.0),1.0);
color = mix (base,diffuse*base,1.0) + 0.1 * specular * diffuse;
} else {
color = texture2D(baseTexture, uv).rgb;
}
#else
color = texture2D(baseTexture, uv).rgb;
#endif
float alpha = texture2D(baseTexture, uv).a;
vec4 col = vec4(color.r, color.g, color.b, alpha);
col *= gl_Color;
col = col * col; // SRGB -> Linear
col *= 1.8;
col.r = 1.0 - exp(1.0 - col.r) / e;
col.g = 1.0 - exp(1.0 - col.g) / e;
col.b = 1.0 - exp(1.0 - col.b) / e;
col = sqrt(col); // Linear -> SRGB
if(fogDistance != 0.0){
float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));
col = mix(col, skyBgColor, d);
}
gl_FragColor = vec4(col.r, col.g, col.b, alpha);
}

View File

@ -1,37 +1,45 @@
uniform mat4 mWorldViewProj; uniform mat4 mWorldViewProj;
uniform mat4 mInvWorld; uniform mat4 mInvWorld;
uniform mat4 mTransWorld; uniform mat4 mTransWorld;
uniform float dayNightRatio; uniform float dayNightRatio;
uniform float animationTimer;
uniform vec3 eyePosition;
varying vec3 vPosition; varying vec3 vPosition;
varying vec3 viewVec; varying vec3 eyeVec;
#ifdef ENABLE_WAVING_PLANTS
float smoothCurve( float x ) {
return x * x *( 3.0 - 2.0 * x );
}
float triangleWave( float x ) {
return abs( fract( x + 0.5 ) * 2.0 - 1.0 );
}
float smoothTriangleWave( float x ) {
return smoothCurve( triangleWave( x ) ) * 2.0 - 1.0;
}
#endif
void main(void) void main(void)
{ {
gl_TexCoord[0] = gl_MultiTexCoord0;
#ifdef ENABLE_WAVING_PLANTS
vec4 pos = gl_Vertex;
vec4 pos2 = mTransWorld * gl_Vertex;
if (gl_TexCoord[0].y < 0.05) {
pos.x += (smoothTriangleWave(animationTimer * 20.0 + pos2.x * 0.1 + pos2.z * 0.1) * 2.0 - 1.0) * 0.8;
pos.y -= (smoothTriangleWave(animationTimer * 10.0 + pos2.x * -0.5 + pos2.z * -0.5) * 2.0 - 1.0) * 0.4;
}
gl_Position = mWorldViewProj * pos;
#else
gl_Position = mWorldViewProj * gl_Vertex; gl_Position = mWorldViewProj * gl_Vertex;
#endif
vPosition = (mWorldViewProj * gl_Vertex).xyz; vPosition = (mWorldViewProj * gl_Vertex).xyz;
eyeVec = (gl_ModelViewMatrix * gl_Vertex).xyz;
vec3 tangent;
vec3 binormal;
vec3 c1 = cross( gl_Normal, vec3(0.0, 0.0, 1.0) );
vec3 c2 = cross( gl_Normal, vec3(0.0, 1.0, 0.0) );
if( length(c1)>length(c2) )
{
tangent = c1;
}
else
{
tangent = c2;
}
tangent = normalize(tangent);
//binormal = cross(gl_Normal, tangent);
//binormal = normalize(binormal);
vec4 color; vec4 color;
//color = vec4(1.0, 1.0, 1.0, 1.0); //color = vec4(1.0, 1.0, 1.0, 1.0);
@ -45,7 +53,7 @@ void main(void)
color.b = color.r;*/ color.b = color.r;*/
float rg = mix(night, day, dayNightRatio); float rg = mix(night, day, dayNightRatio);
rg += light_source * 1.5; // Make light sources brighter rg += light_source * 2.5; // Make light sources brighter
float b = rg; float b = rg;
// Moonlight is blue // Moonlight is blue
@ -60,9 +68,9 @@ void main(void)
// See C++ implementation in mapblock_mesh.cpp finalColorBlend() // See C++ implementation in mapblock_mesh.cpp finalColorBlend()
rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065); rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065);
color.r = rg; color.r = clamp(rg,0.0,1.0);
color.g = rg; color.g = clamp(rg,0.0,1.0);
color.b = b; color.b = clamp(b,0.0,1.0);
// Make sides and bottom darker than the top // Make sides and bottom darker than the top
color = color * color; // SRGB -> Linear color = color * color; // SRGB -> Linear
@ -75,24 +83,4 @@ void main(void)
gl_FrontColor = gl_BackColor = color; gl_FrontColor = gl_BackColor = color;
gl_TexCoord[0] = gl_MultiTexCoord0;
vec3 n1 = normalize(gl_NormalMatrix * gl_Normal);
vec4 tangent1 = vec4(tangent.x, tangent.y, tangent.z, 0);
//vec3 t1 = normalize(gl_NormalMatrix * tangent1);
//vec3 b1 = cross(n1, t1);
vec3 v;
vec3 vVertex = vec3(gl_ModelViewMatrix * gl_Vertex);
vec3 vVec = -vVertex;
//v.x = dot(vVec, t1);
//v.y = dot(vVec, b1);
//v.z = dot(vVec, n1);
//viewVec = vVec;
viewVec = normalize(vec3(0.0, -0.4, 0.5));
//Vector representing the 0th texture coordinate passed to fragment shader
//gl_TexCoord[0] = vec2(gl_MultiTexCoord0);
// Transform the current vertex
//gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
} }

View File

@ -0,0 +1 @@
trans_alphach_ref

View File

@ -0,0 +1,90 @@
uniform sampler2D baseTexture;
uniform sampler2D normalTexture;
uniform sampler2D useNormalmap;
uniform vec4 skyBgColor;
uniform float fogDistance;
uniform vec3 eyePosition;
varying vec3 vPosition;
varying vec3 eyeVec;
#ifdef ENABLE_PARALLAX_OCCLUSION
varying vec3 tsEyeVec;
#endif
const float e = 2.718281828459;
void main (void)
{
vec3 color;
vec2 uv = gl_TexCoord[0].st;
#ifdef USE_NORMALMAPS
float use_normalmap = texture2D(useNormalmap,vec2(1.0,1.0)).r;
#endif
#ifdef ENABLE_PARALLAX_OCCLUSION
float height;
vec2 tsEye = vec2(tsEyeVec.x,-tsEyeVec.y);
if (use_normalmap > 0.0) {
float map_height = texture2D(normalTexture, uv).a;
if (map_height < 1.0){
float height = PARALLAX_OCCLUSION_SCALE * map_height - PARALLAX_OCCLUSION_BIAS;
uv = uv + height * tsEye;
}
}
#endif
/* Steep parallax code, for future use
if ((parallaxMappingMode == 2.0) && (use_normalmap > 0.0)) {
const float numSteps = 40.0;
float height = 1.0;
float step = 1.0 / numSteps;
vec4 NB = texture2D(normalTexture, uv);
vec2 delta = tsEye * parallaxMappingScale / numSteps;
for (float i = 0.0; i < numSteps; i++) {
if (NB.a < height) {
height -= step;
uv += delta;
NB = texture2D(normalTexture, uv);
} else {
break;
}
}
}
*/
#ifdef ENABLE_BUMPMAPPING
if (use_normalmap > 0.0) {
vec3 base = texture2D(baseTexture, uv).rgb;
vec3 vVec = normalize(eyeVec);
vec3 bump = normalize(texture2D(normalTexture, uv).xyz * 2.0 - 1.0);
vec3 R = reflect(-vVec, bump);
vec3 lVec = normalize(vVec);
float diffuse = max(dot(lVec, bump), 0.0);
float specular = pow(clamp(dot(R, lVec), 0.0, 1.0),1.0);
color = mix (base,diffuse*base,1.0) + 0.1 * specular * diffuse;
} else {
color = texture2D(baseTexture, uv).rgb;
}
#else
color = texture2D(baseTexture, uv).rgb;
#endif
float alpha = texture2D(baseTexture, uv).a;
vec4 col = vec4(color.r, color.g, color.b, alpha);
col *= gl_Color;
col = col * col; // SRGB -> Linear
col *= 1.8;
col.r = 1.0 - exp(1.0 - col.r) / e;
col.g = 1.0 - exp(1.0 - col.g) / e;
col.b = 1.0 - exp(1.0 - col.b) / e;
col = sqrt(col); // Linear -> SRGB
if(fogDistance != 0.0){
float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));
col = mix(col, skyBgColor, d);
}
gl_FragColor = vec4(col.r, col.g, col.b, alpha);
}

View File

@ -0,0 +1,102 @@
uniform mat4 mWorldViewProj;
uniform mat4 mInvWorld;
uniform mat4 mTransWorld;
uniform float dayNightRatio;
uniform vec3 eyePosition;
varying vec3 vPosition;
varying vec3 eyeVec;
#ifdef ENABLE_PARALLAX_OCCLUSION
varying vec3 tsEyeVec;
#endif
void main(void)
{
gl_Position = mWorldViewProj * gl_Vertex;
vPosition = (mWorldViewProj * gl_Vertex).xyz;
eyeVec = (gl_ModelViewMatrix * gl_Vertex).xyz;
#ifdef ENABLE_PARALLAX_OCCLUSION
vec3 normal,tangent,binormal;
normal = normalize(gl_NormalMatrix * gl_Normal);
if (gl_Normal.x > 0.5) {
// 1.0, 0.0, 0.0
tangent = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, -1.0));
binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0));
} else if (gl_Normal.x < -0.5) {
// -1.0, 0.0, 0.0
tangent = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0));
binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0));
} else if (gl_Normal.y > 0.5) {
// 0.0, 1.0, 0.0
tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0));
binormal = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0));
} else if (gl_Normal.y < -0.5) {
// 0.0, -1.0, 0.0
tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0));
binormal = normalize(gl_NormalMatrix * vec3( 0.0, 0.0, 1.0));
} else if (gl_Normal.z > 0.5) {
// 0.0, 0.0, 1.0
tangent = normalize(gl_NormalMatrix * vec3( 1.0, 0.0, 0.0));
binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0));
} else if (gl_Normal.z < -0.5) {
// 0.0, 0.0, -1.0
tangent = normalize(gl_NormalMatrix * vec3(-1.0, 0.0, 0.0));
binormal = normalize(gl_NormalMatrix * vec3( 0.0, -1.0, 0.0));
}
mat3 tbnMatrix = mat3( tangent.x, binormal.x, normal.x,
tangent.y, binormal.y, normal.y,
tangent.z, binormal.z, normal.z);
tsEyeVec = normalize(eyeVec * tbnMatrix);
#endif
vec4 color;
//color = vec4(1.0, 1.0, 1.0, 1.0);
float day = gl_Color.r;
float night = gl_Color.g;
float light_source = gl_Color.b;
/*color.r = mix(night, day, dayNightRatio);
color.g = color.r;
color.b = color.r;*/
float rg = mix(night, day, dayNightRatio);
rg += light_source * 2.5; // Make light sources brighter
float b = rg;
// Moonlight is blue
b += (day - night) / 13.0;
rg -= (day - night) / 13.0;
// Emphase blue a bit in darker places
// See C++ implementation in mapblock_mesh.cpp finalColorBlend()
b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025);
// Artificial light is yellow-ish
// See C++ implementation in mapblock_mesh.cpp finalColorBlend()
rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065);
color.r = clamp(rg,0.0,1.0);
color.g = clamp(rg,0.0,1.0);
color.b = clamp(b,0.0,1.0);
// Make sides and bottom darker than the top
color = color * color; // SRGB -> Linear
if(gl_Normal.y <= 0.5)
color *= 0.6;
//color *= 0.7;
color = sqrt(color); // Linear -> SRGB
color.a = gl_Color.a;
gl_FrontColor = gl_BackColor = color;
gl_TexCoord[0] = gl_MultiTexCoord0;
}

View File

@ -1,25 +0,0 @@
uniform sampler2D myTexture;
uniform vec4 skyBgColor;
uniform float fogDistance;
varying vec3 vPosition;
void main (void)
{
//vec4 col = vec4(1.0, 0.0, 0.0, 1.0);
vec4 col = texture2D(myTexture, vec2(gl_TexCoord[0]));
float a = col.a;
col *= gl_Color;
col = col * col; // SRGB -> Linear
col *= 1.8;
col.r = 1.0 - exp(1.0 - col.r) / exp(1.0);
col.g = 1.0 - exp(1.0 - col.g) / exp(1.0);
col.b = 1.0 - exp(1.0 - col.b) / exp(1.0);
col = sqrt(col); // Linear -> SRGB
if(fogDistance != 0.0){
float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));
col = mix(col, skyBgColor, d);
}
gl_FragColor = vec4(col.r, col.g, col.b, a);
}

View File

@ -1,23 +0,0 @@
uniform sampler2D myTexture;
uniform float fogDistance;
varying vec3 vPosition;
void main (void)
{
vec4 col = texture2D(myTexture, vec2(gl_TexCoord[0]));
col *= gl_Color;
float a = gl_Color.a;
col = col * col; // SRGB -> Linear
col *= 1.8;
col.r = 1.0 - exp(1.0 - col.r) / exp(1.0);
col.g = 1.0 - exp(1.0 - col.g) / exp(1.0);
col.b = 1.0 - exp(1.0 - col.b) / exp(1.0);
col = sqrt(col); // Linear -> SRGB
if(fogDistance != 0.0){
float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));
a = mix(a, 0.0, d);
}
gl_FragColor = vec4(col.r, col.g, col.b, a);
}

View File

@ -1,51 +0,0 @@
uniform mat4 mWorldViewProj;
uniform mat4 mInvWorld;
uniform mat4 mTransWorld;
uniform float dayNightRatio;
varying vec3 vPosition;
void main(void)
{
gl_Position = mWorldViewProj * gl_Vertex;
vPosition = (mWorldViewProj * gl_Vertex).xyz;
vec4 color;
//color = vec4(1.0, 1.0, 1.0, 1.0);
float day = gl_Color.r;
float night = gl_Color.g;
float light_source = gl_Color.b;
/*color.r = mix(night, day, dayNightRatio);
color.g = color.r;
color.b = color.r;*/
float rg = mix(night, day, dayNightRatio);
rg += light_source * 1.0; // Make light sources brighter
float b = rg;
// Moonlight is blue
b += (day - night) / 13.0;
rg -= (day - night) / 13.0;
// Emphase blue a bit in darker places
// See C++ implementation in mapblock_mesh.cpp finalColorBlend()
b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025);
// Artificial light is yellow-ish
// See C++ implementation in mapblock_mesh.cpp finalColorBlend()
rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065);
color.r = rg;
color.g = rg;
color.b = b;
color.a = gl_Color.a;
gl_FrontColor = gl_BackColor = color;
gl_TexCoord[0] = gl_MultiTexCoord0;
}

View File

@ -1 +0,0 @@
trans_alphach

View File

@ -1,25 +0,0 @@
uniform sampler2D myTexture;
uniform float fogDistance;
varying vec3 vPosition;
void main (void)
{
vec4 col = texture2D(myTexture, vec2(gl_TexCoord[0]));
col *= gl_Color;
float a = col.a;
col = col * col; // SRGB -> Linear
col *= 1.8;
col.r = 1.0 - exp(1.0 - col.r) / exp(1.0);
col.g = 1.0 - exp(1.0 - col.g) / exp(1.0);
col.b = 1.0 - exp(1.0 - col.b) / exp(1.0);
col = sqrt(col); // Linear -> SRGB
if(fogDistance != 0.0){
float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));
a = mix(a, 0.0, d);
}
gl_FragColor = vec4(col.r, col.g, col.b, a);
}

View File

@ -1,51 +0,0 @@
uniform mat4 mWorldViewProj;
uniform mat4 mInvWorld;
uniform mat4 mTransWorld;
uniform float dayNightRatio;
varying vec3 vPosition;
void main(void)
{
gl_Position = mWorldViewProj * gl_Vertex;
vPosition = (mWorldViewProj * gl_Vertex).xyz;
vec4 color;
//color = vec4(1.0, 1.0, 1.0, 1.0);
float day = gl_Color.r;
float night = gl_Color.g;
float light_source = gl_Color.b;
/*color.r = mix(night, day, dayNightRatio);
color.g = color.r;
color.b = color.r;*/
float rg = mix(night, day, dayNightRatio);
rg += light_source * 1.0; // Make light sources brighter
float b = rg;
// Moonlight is blue
b += (day - night) / 13.0;
rg -= (day - night) / 13.0;
// Emphase blue a bit in darker places
// See C++ implementation in mapblock_mesh.cpp finalColorBlend()
b += max(0.0, (1.0 - abs(b - 0.13)/0.17) * 0.025);
// Artificial light is yellow-ish
// See C++ implementation in mapblock_mesh.cpp finalColorBlend()
rg += max(0.0, (1.0 - abs(rg - 0.85)/0.15) * 0.065);
color.r = rg;
color.g = rg;
color.b = b;
color.a = gl_Color.a;
gl_FrontColor = gl_BackColor = color;
gl_TexCoord[0] = gl_MultiTexCoord0;
}

View File

@ -20,6 +20,10 @@ if( UNIX )
else( UNIX ) else( UNIX )
FIND_PATH(CURL_INCLUDE_DIR NAMES curl/curl.h) # Look for the header file. FIND_PATH(CURL_INCLUDE_DIR NAMES curl/curl.h) # Look for the header file.
FIND_LIBRARY(CURL_LIBRARY NAMES curl) # Look for the library. FIND_LIBRARY(CURL_LIBRARY NAMES curl) # Look for the library.
FIND_FILE(CURL_DLL NAMES libcurl.dll
PATHS
"c:/windows/system32"
DOC "Path of the cURL dll (for installation)")
INCLUDE(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set CURL_FOUND to TRUE if INCLUDE(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set CURL_FOUND to TRUE if
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CURL DEFAULT_MSG CURL_LIBRARY CURL_INCLUDE_DIR) # all listed variables are TRUE FIND_PACKAGE_HANDLE_STANDARD_ARGS(CURL DEFAULT_MSG CURL_LIBRARY CURL_INCLUDE_DIR) # all listed variables are TRUE
endif( UNIX ) endif( UNIX )
@ -40,3 +44,4 @@ endif ( WIN32 )
MESSAGE(STATUS "CURL_INCLUDE_DIR = ${CURL_INCLUDE_DIR}") MESSAGE(STATUS "CURL_INCLUDE_DIR = ${CURL_INCLUDE_DIR}")
MESSAGE(STATUS "CURL_LIBRARY = ${CURL_LIBRARY}") MESSAGE(STATUS "CURL_LIBRARY = ${CURL_LIBRARY}")
MESSAGE(STATUS "CURL_DLL = ${CURL_DLL}")

View File

@ -0,0 +1,20 @@
# Always run during 'make'
if(VERSION_EXTRA)
set(VERSION_GITHASH "${VERSION_STRING}")
else(VERSION_EXTRA)
execute_process(COMMAND git describe --always --tag --dirty
WORKING_DIRECTORY "${GENERATE_VERSION_SOURCE_DIR}"
OUTPUT_VARIABLE VERSION_GITHASH OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
if(VERSION_GITHASH)
message(STATUS "*** Detected git version ${VERSION_GITHASH} ***")
else()
set(VERSION_GITHASH "${VERSION_STRING}")
endif()
endif()
configure_file(
${GENERATE_VERSION_SOURCE_DIR}/cmake_config_githash.h.in
${GENERATE_VERSION_BINARY_DIR}/cmake_config_githash.h)

View File

@ -1,339 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

502
doc/lgpl-2.1.txt Normal file
View File

@ -0,0 +1,502 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View File

@ -1,4 +1,4 @@
Minetest Lua Modding API Reference 0.4.7 Minetest Lua Modding API Reference 0.4.8
======================================== ========================================
More information at http://www.minetest.net/ More information at http://www.minetest.net/
Developer Wiki: http://dev.minetest.net/ Developer Wiki: http://dev.minetest.net/
@ -100,6 +100,8 @@ Mod directory structure
mods mods
|-- modname |-- modname
| |-- depends.txt | |-- depends.txt
| |-- screenshot.png
| |-- description.txt
| |-- init.lua | |-- init.lua
| |-- textures | |-- textures
| | |-- modname_stuff.png | | |-- modname_stuff.png
@ -121,12 +123,11 @@ depends.txt:
to a single modname. Their meaning is that if the specified mod to a single modname. Their meaning is that if the specified mod
is missing, that does not prevent this mod from being loaded. is missing, that does not prevent this mod from being loaded.
optdepends.txt: screenshot.png:
An alternative way of specifying optional dependencies. A screenshot shown in modmanager within mainmenu.
Like depends.txt, a single line contains a single modname.
NOTE: This file exists for compatibility purposes only and description.txt:
support for it will be removed from the engine by the end of 2013. File containing desctiption to be shown within mainmenu.
init.lua: init.lua:
The main Lua script. Running this script should register everything it The main Lua script. Running this script should register everything it
@ -873,6 +874,22 @@ list[<inventory location>;<list name>;<X>,<Y>;<W>,<H>;]
list[<inventory location>;<list name>;<X>,<Y>;<W>,<H>;<starting item index>] list[<inventory location>;<list name>;<X>,<Y>;<W>,<H>;<starting item index>]
^ Show an inventory list ^ Show an inventory list
listcolors[<slot_bg_normal>;<slot_bg_hover>]
^ Sets background color of slots in HEX-Color format
^ Sets background color of slots on mouse hovering
listcolors[<slot_bg_normal>;<slot_bg_hover>;<slot_border>]
^ Sets background color of slots in HEX-Color format
^ Sets background color of slots on mouse hovering
^ Sets color of slots border
listcolors[<slot_bg_normal>;<slot_bg_hover>;<slot_border>;<tooltip_bgcolor>;<tooltip_fontcolor>]
^ Sets background color of slots in HEX-Color format
^ Sets background color of slots on mouse hovering
^ Sets color of slots border
^ Sets background color of tooltips
^ Sets font color of tooltips
image[<X>,<Y>;<W>,<H>;<texture name>] image[<X>,<Y>;<W>,<H>;<texture name>]
^ Show an image ^ Show an image
^ Position and size units are inventory slots ^ Position and size units are inventory slots
@ -881,11 +898,21 @@ item_image[<X>,<Y>;<W>,<H>;<item name>]
^ Show an inventory image of registered item/node ^ Show an inventory image of registered item/node
^ Position and size units are inventory slots ^ Position and size units are inventory slots
bgcolor[<color>;<fullscreen>]
^ Sets background color of formspec in HEX-Color format
^ If true the background color is drawn fullscreen (does not effect the size of the formspec)
background[<X>,<Y>;<W>,<H>;<texture name>] background[<X>,<Y>;<W>,<H>;<texture name>]
^ Use a background. Inventory rectangles are not drawn then. ^ Use a background. Inventory rectangles are not drawn then.
^ Position and size units are inventory slots ^ Position and size units are inventory slots
^ Example for formspec 8x4 in 16x resolution: image shall be sized 8*16px x 4*16px ^ Example for formspec 8x4 in 16x resolution: image shall be sized 8*16px x 4*16px
background[<X>,<Y>;<W>,<H>;<texture name>;<auto_clip>]
^ Use a background. Inventory rectangles are not drawn then.
^ Position and size units are inventory slots
^ Example for formspec 8x4 in 16x resolution: image shall be sized 8*16px x 4*16px
^ If true the background is clipped to formspec size (x and y are used as offset values, w and h are ignored)
pwdfield[<X>,<Y>;<W>,<H>;<name>;<label>] pwdfield[<X>,<Y>;<W>,<H>;<name>;<label>]
^ Textual password style field; will be sent to server when a button is clicked ^ Textual password style field; will be sent to server when a button is clicked
^ x and y position the field relative to the top left of the menu ^ x and y position the field relative to the top left of the menu
@ -972,7 +999,7 @@ textlist[<X>,<Y>;<W>,<H>;<name>;<listelem 1>,<listelem 2>,...,<listelem n>]
^ x and y position the itemlist relative to the top left of the menu ^ x and y position the itemlist relative to the top left of the menu
^ w and h are the size of the itemlist ^ w and h are the size of the itemlist
^ name fieldname sent to server on doubleclick value is current selected element ^ name fieldname sent to server on doubleclick value is current selected element
^ listelements can be prepended by #color in hexadecimal format RRGGBB, ^ listelements can be prepended by #color in hexadecimal format RRGGBB (only),
^ if you want a listelement to start with # write ## ^ if you want a listelement to start with # write ##
textlist[<X>,<Y>;<W>,<H>;<name>;<listelem 1>,<listelem 2>,...,<listelem n>;<selected idx>;<transparent>] textlist[<X>,<Y>;<W>,<H>;<name>;<listelem 1>,<listelem 2>,...,<listelem n>;<selected idx>;<transparent>]
@ -980,7 +1007,7 @@ textlist[<X>,<Y>;<W>,<H>;<name>;<listelem 1>,<listelem 2>,...,<listelem n>;<sele
^ x and y position the itemlist relative to the top left of the menu ^ x and y position the itemlist relative to the top left of the menu
^ w and h are the size of the itemlist ^ w and h are the size of the itemlist
^ name fieldname sent to server on doubleclick value is current selected element ^ name fieldname sent to server on doubleclick value is current selected element
^ listelements can be prepended by #RRGGBB in hexadecimal format ^ listelements can be prepended by #RRGGBB (only) in hexadecimal format
^ if you want a listelement to start with # write ## ^ if you want a listelement to start with # write ##
^ index to be selected within textlist ^ index to be selected within textlist
^ true/false draw transparent background ^ true/false draw transparent background
@ -998,7 +1025,7 @@ box[<X>,<Y>;<W>,<H>;<color>]
^ simple colored semitransparent box ^ simple colored semitransparent box
^ x and y position the box relative to the top left of the menu ^ x and y position the box relative to the top left of the menu
^ w and h are the size of box ^ w and h are the size of box
^ color in hexadecimal format RRGGBB ^ color in HEX-Color format
dropdown[<X>,<Y>;<W>;<name>;<item 1>,<item 2>, ...,<item n>;<selected idx>] dropdown[<X>,<Y>;<W>;<name>;<item 1>,<item 2>, ...,<item n>;<selected idx>]
^ show a dropdown field ^ show a dropdown field
@ -1007,7 +1034,7 @@ dropdown[<X>,<Y>;<W>;<name>;<item 1>,<item 2>, ...,<item n>;<selected idx>]
^ fieldname data is transfered to lua ^ fieldname data is transfered to lua
^ items to be shown in dropdown ^ items to be shown in dropdown
^ index of currently selected dropdown item ^ index of currently selected dropdown item
^ color in hexadecimal format RRGGBB ^ color in hexadecimal format RRGGBB (only)
checkbox[<X>,<Y>;<name>;<label>;<selected>] checkbox[<X>,<Y>;<name>;<label>;<selected>]
^ show a checkbox ^ show a checkbox
@ -1027,6 +1054,17 @@ Inventory location:
- "nodemeta:<X>,<Y>,<Z>": Any node metadata - "nodemeta:<X>,<Y>,<Z>": Any node metadata
- "detached:<name>": A detached inventory - "detached:<name>": A detached inventory
HEX-Color
---------
#RGB
^ defines a color in hexadecimal format
#RGBA
^ defines a color in hexadecimal format and alpha channel
#RRGGBB
^ defines a color in hexadecimal format
#RRGGBBAA
^ defines a color in hexadecimal format and alpha channel
Vector helpers Vector helpers
--------------- ---------------
vector.new([x[, y, z]]) -> vector vector.new([x[, y, z]]) -> vector
@ -1036,23 +1074,13 @@ vector.distance(p1, p2) -> number
vector.length(v) -> number vector.length(v) -> number
vector.normalize(v) -> vector vector.normalize(v) -> vector
vector.round(v) -> vector vector.round(v) -> vector
vector.equal(v1, v2) -> bool vector.equals(v1, v2) -> bool
For the folowing x can be either a vector or a number.
vector.add(v, x) -> vector vector.add(v, x) -> vector
^ x can be annother vector or a number
vector.subtract(v, x) -> vector vector.subtract(v, x) -> vector
vector.multiply(v, x) -> vector vector.multiply(v, x) -> vector
vector.divide(v, x) -> vector vector.divide(v, x) -> vector
You can also use Lua operators on vectors.
For example:
v1 = vector.new()
v1 = v1 + 5
v2 = vector.new(v1)
v1 = v1 * v2
if v1 == v2 then
error("Math broke")
end
Helper functions Helper functions
----------------- -----------------
dump2(obj, name="_", dumped={}) dump2(obj, name="_", dumped={})
@ -1070,6 +1098,7 @@ minetest.pos_to_string({x=X,y=Y,z=Z}) -> "(X,Y,Z)"
^ Convert position to a printable string ^ Convert position to a printable string
minetest.string_to_pos(string) -> position minetest.string_to_pos(string) -> position
^ Same but in reverse ^ Same but in reverse
minetest.formspec_escape(string) -> string
^ escapes characters [ ] \ , ; that can not be used in formspecs ^ escapes characters [ ] \ , ; that can not be used in formspecs
minetest.is_yes(arg) minetest.is_yes(arg)
^ returns whether arg can be interpreted as yes ^ returns whether arg can be interpreted as yes
@ -1139,6 +1168,9 @@ minetest.register_on_respawnplayer(func(ObjectRef))
^ Called when player is to be respawned ^ Called when player is to be respawned
^ Called _before_ repositioning of player occurs ^ Called _before_ repositioning of player occurs
^ return true in func to disable regular player placement ^ return true in func to disable regular player placement
minetest.register_on_prejoinplayer(func(name, ip))
^ Called before a player joins the game
^ If it returns a string, the player is disconnected with that string as reason
minetest.register_on_joinplayer(func(ObjectRef)) minetest.register_on_joinplayer(func(ObjectRef))
^ Called when a player joins the game ^ Called when a player joins the game
minetest.register_on_leaveplayer(func(ObjectRef)) minetest.register_on_leaveplayer(func(ObjectRef))
@ -1155,6 +1187,22 @@ minetest.register_on_player_receive_fields(func(player, formname, fields))
minetest.register_on_mapgen_init(func(MapgenParams)) minetest.register_on_mapgen_init(func(MapgenParams))
^ Called just before the map generator is initialized but before the environment is initialized ^ Called just before the map generator is initialized but before the environment is initialized
^ MapgenParams consists of a table with the fields mgname, seed, water_level, and flags ^ MapgenParams consists of a table with the fields mgname, seed, water_level, and flags
minetest.register_on_craft(func(itemstack, player, old_craft_grid, craft_inv))
^ Called when player crafts something
^ itemstack is the output
^ old_craft_grid contains the recipe (Note: the one in the inventory is cleared)
^ craft_inv is the inventory with the crafting grid
^ Return either an ItemStack, to replace the output, or nil, to not modify it
minetest.register_craft_predict(func(itemstack, player, old_craft_grid, craft_inv))
^ The same as before, except that it is called before the player crafts, to make
^ craft prediction, and it should not change anything.
minetest.register_on_protection_violation(func(pos, name))
^ Called by builtin and mods when a player violates protection at a position
(eg, digs a node or punches a protected entity).
^ The registered functions can be called using minetest.record_protection_violation
^ The provided function should check that the position is protected by the mod
calling this function before it prints a message, if it does, to allow for
multiple protection mods.
Other registration functions: Other registration functions:
minetest.register_chatcommand(cmd, chatcommand definition) minetest.register_chatcommand(cmd, chatcommand definition)
@ -1203,6 +1251,8 @@ Environment access:
minetest.set_node(pos, node) minetest.set_node(pos, node)
minetest.add_node(pos, node): alias set_node(pos, node) minetest.add_node(pos, node): alias set_node(pos, node)
^ Set node at position (node = {name="foo", param1=0, param2=0}) ^ Set node at position (node = {name="foo", param1=0, param2=0})
minetest.swap_node(pos, node)
^ Set node at position, but don't remove metadata
minetest.remove_node(pos) minetest.remove_node(pos)
^ Equivalent to set_node(pos, "air") ^ Equivalent to set_node(pos, "air")
minetest.get_node(pos) minetest.get_node(pos)
@ -1239,6 +1289,10 @@ minetest.get_perlin(seeddiff, octaves, persistence, scale)
^ Return world-specific perlin noise (int(worldseed)+seeddiff) ^ Return world-specific perlin noise (int(worldseed)+seeddiff)
minetest.get_voxel_manip() minetest.get_voxel_manip()
^ Return voxel manipulator object ^ Return voxel manipulator object
minetest.set_gen_notify(flags)
^ Set the types of on-generate notifications that should be collected
^ flags is a comma-delimited combination of:
^ dungeon, temple, cave_begin, cave_end, large_cave_begin, large_cave_end
minetest.get_mapgen_object(objectname) minetest.get_mapgen_object(objectname)
^ Return requested mapgen object if available (see Mapgen objects) ^ Return requested mapgen object if available (see Mapgen objects)
minetest.set_mapgen_params(MapgenParams) minetest.set_mapgen_params(MapgenParams)
@ -1251,8 +1305,9 @@ minetest.set_mapgen_params(MapgenParams)
^ flags and flagmask are in the same format and have the same options as 'mgflags' in minetest.conf ^ flags and flagmask are in the same format and have the same options as 'mgflags' in minetest.conf
minetest.clear_objects() minetest.clear_objects()
^ clear all objects in the environments ^ clear all objects in the environments
minetest.line_of_sight(pos1,pos2,stepsize) ->true/false minetest.line_of_sight(pos1, pos2, stepsize) -> true/false, pos
^ checkif there is a direct line of sight between pos1 and pos2 ^ Check if there is a direct line of sight between pos1 and pos2
^ Returns the position of the blocking node when false
^ pos1 First position ^ pos1 First position
^ pos2 Second position ^ pos2 Second position
^ stepsize smaller gives more accurate results but requires more computing ^ stepsize smaller gives more accurate results but requires more computing
@ -1351,8 +1406,8 @@ minetest.handle_node_drops(pos, drops, digger)
^ Can be overridden to get different functionality (eg. dropping items on ^ Can be overridden to get different functionality (eg. dropping items on
ground) ground)
Rollbacks: Rollback:
minetest.rollback_get_last_node_actor(p, range, seconds) -> actor, p, seconds minetest.rollback_get_node_actions(pos, range, seconds, limit) -> {{actor, pos, time, oldnode, newnode}, ...}
^ Find who has done something to a node, or near a node ^ Find who has done something to a node, or near a node
^ actor: "player:<name>", also "liquid". ^ actor: "player:<name>", also "liquid".
minetest.rollback_revert_actions_by(actor, seconds) -> bool, log messages minetest.rollback_revert_actions_by(actor, seconds) -> bool, log messages
@ -1361,14 +1416,18 @@ minetest.rollback_revert_actions_by(actor, seconds) -> bool, log messages
Defaults for the on_* item definition functions: Defaults for the on_* item definition functions:
(These return the leftover itemstack) (These return the leftover itemstack)
minetest.item_place_node(itemstack, placer, pointed_thing) minetest.item_place_node(itemstack, placer, pointed_thing, param2)
^ Place item as a node ^ Place item as a node
^ param2 overrides facedir and wallmounted param2
^ returns itemstack, success
minetest.item_place_object(itemstack, placer, pointed_thing) minetest.item_place_object(itemstack, placer, pointed_thing)
^ Place item as-is ^ Place item as-is
minetest.item_place(itemstack, placer, pointed_thing) minetest.item_place(itemstack, placer, pointed_thing, param2)
^ Use one of the above based on what the item is. ^ Use one of the above based on what the item is.
^ Calls on_rightclick of pointed_thing.under if defined instead ^ Calls on_rightclick of pointed_thing.under if defined instead
^ Note: is not called when wielded item overrides on_place ^ Note: is not called when wielded item overrides on_place
^ param2 overrides facedir and wallmounted param2
^ returns itemstack, success
minetest.item_drop(itemstack, dropper, pos) minetest.item_drop(itemstack, dropper, pos)
^ Drop the item ^ Drop the item
minetest.item_eat(hp_change, replace_with_item) minetest.item_eat(hp_change, replace_with_item)
@ -1434,7 +1493,7 @@ minetest.delete_particlespawner(id, player)
^ otherwise on all clients ^ otherwise on all clients
Schematics: Schematics:
minetest.create_schematic(p1, p2, probability_list, filename) minetest.create_schematic(p1, p2, probability_list, filename, slice_prob_list)
^ Create a schematic from the volume of map specified by the box formed by p1 and p2. ^ Create a schematic from the volume of map specified by the box formed by p1 and p2.
^ Apply the specified probability values to the specified nodes in probability_list. ^ Apply the specified probability values to the specified nodes in probability_list.
^ probability_list is an array of tables containing two fields, pos and prob. ^ probability_list is an array of tables containing two fields, pos and prob.
@ -1443,6 +1502,9 @@ minetest.create_schematic(p1, p2, probability_list, filename)
^ If there are two or more entries with the same pos value, the last occuring in the array is used. ^ If there are two or more entries with the same pos value, the last occuring in the array is used.
^ If pos is not inside the box formed by p1 and p2, it is ignored. ^ If pos is not inside the box formed by p1 and p2, it is ignored.
^ If probability_list is nil, no probabilities are applied. ^ If probability_list is nil, no probabilities are applied.
^ Slice probability works in the same manner, except takes a field called ypos instead which indicates
^ the y position of the slice with a probability applied.
^ If slice probability list is nil, no slice probabilities are applied.
^ Saves schematic in the Minetest Schematic format to filename. ^ Saves schematic in the Minetest Schematic format to filename.
minetest.place_schematic(pos, schematic, rotation, replacements) minetest.place_schematic(pos, schematic, rotation, replacements)
@ -1468,7 +1530,16 @@ minetest.parse_json(string[, nullvalue]) -> something
^ nullvalue: returned in place of the JSON null; defaults to nil ^ nullvalue: returned in place of the JSON null; defaults to nil
^ On success returns a table, a string, a number, a boolean or nullvalue ^ On success returns a table, a string, a number, a boolean or nullvalue
^ On failure outputs an error message and returns nil ^ On failure outputs an error message and returns nil
^ Example: parse_json("[10, {\"a\":false}]") -> {[1] = 10, [2] = {a = false}} ^ Example: parse_json("[10, {\"a\":false}]") -> {10, {a = false}}
minetest.write_json(data[, styled]) -> string
^ Convert a Lua table into a JSON string
^ styled: Outputs in a human-readable format if this is set, defaults to false
^ Un-serializable things like functions and userdata are saved as null.
^ Warning: JSON is more strict than the Lua table format.
1. You can only use strings and positive integers of at least one as keys.
2. You can not mix string and integer keys.
This is due to the fact that Javascript has two distinct array and object values.
^ Example: write_json({10, {a = false}}) -> "[10, {\"a\": false}]"
minetest.serialize(table) -> string minetest.serialize(table) -> string
^ Convert a table containing tables, strings, numbers, booleans and nils ^ Convert a table containing tables, strings, numbers, booleans and nils
into string form readable by minetest.deserialize into string form readable by minetest.deserialize
@ -1480,6 +1551,44 @@ minetest.deserialize(string) -> table
^ Example: deserialize('return { ["foo"] = "bar" }') -> {foo='bar'} ^ Example: deserialize('return { ["foo"] = "bar" }') -> {foo='bar'}
^ Example: deserialize('print("foo")') -> nil (function call fails) ^ Example: deserialize('print("foo")') -> nil (function call fails)
^ error:[string "print("foo")"]:1: attempt to call global 'print' (a nil value) ^ error:[string "print("foo")"]:1: attempt to call global 'print' (a nil value)
minetest.is_protected(pos, name) -> bool
^ This function should be overriden by protection mods and should be used to
check if a player can interact at a position.
^ This function should call the old version of itself if the position is not
protected by the mod.
^ Example:
local old_is_protected = minetest.is_protected
function minetest.is_protected(pos, name)
if mymod:position_protected_from(pos, name) then
return true
end
return old_is_protected(pos, name)
end
minetest.record_protection_violation(pos, name)
^ This function calls functions registered with
minetest.register_on_protection_violation.
minetest.rotate_and_place(itemstack, placer, pointed_thing, infinitestacks, orient_flags)
^ Attempt to predict the desired orientation of the facedir-capable node
defined by itemstack, and place it accordingly (on-wall, on the floor, or
hanging from the ceiling). Stacks are handled normally if the infinitestacks
field is false or omitted (else, the itemstack is not changed). orient_flags
is an optional table containing extra tweaks to the placement code:
invert_wall: if true, place wall-orientation on the ground and ground-
orientation on the wall.
force_wall: if true, always place the node in wall orientation.
force_ceiling: if true, always place on the ceiling.
force_floor: if true, always place the node on the floor.
The above four options are mutually-exclusive; the last in the list takes
precedence over the first.
force_facedir: if true, forcably reset the facedir to north when placing on
the floor or ceiling
minetest.rotate_node(itemstack, placer, pointed_thing)
^ calls rotate_and_place() with infinitestacks set according to the state of
the creative mode setting, and checks for "sneak" to set the invert_wall
parameter.
Global objects: Global objects:
minetest.env - EnvRef of the server environment and world. minetest.env - EnvRef of the server environment and world.
@ -1608,10 +1717,13 @@ Player-only: (no-op for other objects)
{jump=bool,right=bool,left=bool,LMB=bool,RMB=bool,sneak=bool,aux1=bool,down=bool,up=bool} {jump=bool,right=bool,left=bool,LMB=bool,RMB=bool,sneak=bool,aux1=bool,down=bool,up=bool}
- get_player_control_bits(): returns integer with bit packed player pressed keys - get_player_control_bits(): returns integer with bit packed player pressed keys
bit nr/meaning: 0/up ,1/down ,2/left ,3/right ,4/jump ,5/aux1 ,6/sneak ,7/LMB ,8/RMB bit nr/meaning: 0/up ,1/down ,2/left ,3/right ,4/jump ,5/aux1 ,6/sneak ,7/LMB ,8/RMB
- set_physics_override(speed, jump, gravity) - set_physics_override({
modifies per-player walking speed, jump height, and gravity. speed = 1.0, -- multiplier to default value
Values default to 1 and act as offsets to the physics settings jump = 1.0, -- multiplier to default value
in minetest.conf. nil will keep the current setting. gravity = 1.0, -- multiplier to default value
sneak = true, -- whether player can sneak
sneak_glitch = true, -- whether player can use the sneak glitch
})
- hud_add(hud definition): add a HUD element described by HUD def, returns ID number on success - hud_add(hud definition): add a HUD element described by HUD def, returns ID number on success
- hud_remove(id): remove the HUD element of the specified id - hud_remove(id): remove the HUD element of the specified id
- hud_change(id, stat, value): change a value of a previously added HUD element - hud_change(id, stat, value): change a value of a previously added HUD element
@ -1633,6 +1745,7 @@ methods:
- is_empty(listname): return true if list is empty - is_empty(listname): return true if list is empty
- get_size(listname): get size of a list - get_size(listname): get size of a list
- set_size(listname, size): set size of a list - set_size(listname, size): set size of a list
^ returns false on error (e.g. invalid listname or listsize)
- get_width(listname): get width of a list - get_width(listname): get width of a list
- set_width(listname, width): set width of list; currently used for crafting - set_width(listname, width): set width of list; currently used for crafting
- get_stack(listname, i): get a copy of stack index i in list - get_stack(listname, i): get a copy of stack index i in list
@ -1654,9 +1767,13 @@ ItemStack: A stack of items.
methods: methods:
- is_empty(): return true if stack is empty - is_empty(): return true if stack is empty
- get_name(): returns item name (e.g. "default:stone") - get_name(): returns item name (e.g. "default:stone")
- set_name(itemname)
- get_count(): returns number of items on the stack - get_count(): returns number of items on the stack
- set_count(count)
- get_wear(): returns tool wear (0-65535), 0 for non-tools - get_wear(): returns tool wear (0-65535), 0 for non-tools
- set_wear(wear)
- get_metadata(): returns metadata (a string attached to an item stack) - get_metadata(): returns metadata (a string attached to an item stack)
- set_metadata(metadata)
- clear(): removes all items from the stack, making it empty - clear(): removes all items from the stack, making it empty
- replace(item): replace the contents of this stack (item can also - replace(item): replace the contents of this stack (item can also
be an itemstring or table) be an itemstring or table)
@ -1717,11 +1834,19 @@ methods:
- update_map(): Update map after writing chunk back to map. - update_map(): Update map after writing chunk back to map.
^ To be used only by VoxelManip objects created by the mod itself; not a VoxelManip that was ^ To be used only by VoxelManip objects created by the mod itself; not a VoxelManip that was
^ retrieved from minetest.get_mapgen_object ^ retrieved from minetest.get_mapgen_object
- set_lighting(light): Set the lighting within the VoxelManip - set_lighting(light, p1, p2): Set the lighting within the VoxelManip to a uniform value
^ light is a table, {day=<0...15>, night=<0...15>} ^ light is a table, {day=<0...15>, night=<0...15>}
^ To be used only by a VoxelManip object from minetest.get_mapgen_object ^ To be used only by a VoxelManip object from minetest.get_mapgen_object
- calc_lighting(): Calculate lighting within the VoxelManip ^ (p1, p2) is the area in which lighting is set; defaults to the whole area if left out
- get_light_data(): Gets the light data read into the VoxelManip object
^ Returns an array (indicies 1 to volume) of integers ranging from 0 to 255
^ Each value is the bitwise combination of day and night light values (0..15 each)
^ light = day + (night * 16)
- set_light_data(light_data): Sets the param1 (light) contents of each node in the VoxelManip
^ expects lighting data in the same format that get_light_data() returns
- calc_lighting(p1, p2): Calculate lighting within the VoxelManip
^ To be used only by a VoxelManip object from minetest.get_mapgen_object ^ To be used only by a VoxelManip object from minetest.get_mapgen_object
^ (p1, p2) is the area in which lighting is set; defaults to the whole area if left out
- update_liquids(): Update liquid flow - update_liquids(): Update liquid flow
VoxelArea: A helper class for voxel areas VoxelArea: A helper class for voxel areas
@ -1782,6 +1907,12 @@ the current mapgen.
Returns an array containing the humidity values of nodes in the most recently generated chunk by the Returns an array containing the humidity values of nodes in the most recently generated chunk by the
current mapgen. current mapgen.
- gennotify
Returns a table mapping requested generation notification types to arrays of positions at which the
corresponding generated structures are located at within the current chunk. To set the capture of positions
of interest to be recorded on generate, use minetest.set_gen_notify().
Possible fields of the table returned are: dungeon, temple, cave_begin, cave_end, large_cave_begin, large_cave_end
Registered entities Registered entities
-------------------- --------------------
- Functions receive a "luaentity" as self: - Functions receive a "luaentity" as self:
@ -1972,6 +2103,15 @@ Item definition (register_node, register_craftitem, register_tool)
eg. itemstack:take_item(); return itemstack eg. itemstack:take_item(); return itemstack
^ Otherwise, the function is free to do what it wants. ^ Otherwise, the function is free to do what it wants.
^ The default functions handle regular use cases. ^ The default functions handle regular use cases.
after_use = func(itemstack, user, node, digparams),
^ default: nil
^ If defined, should return an itemstack and will be called instead of
wearing out the tool. If returns nil, does nothing.
If after_use doesn't exist, it is the same as:
function(itemstack, user, node, digparams)
itemstack:add_wear(digparams.wear)
return itemstack
end
} }
Tile definition: Tile definition:
@ -1991,6 +2131,10 @@ Node definition (register_node)
drawtype = "normal", -- See "Node drawtypes" drawtype = "normal", -- See "Node drawtypes"
visual_scale = 1.0, visual_scale = 1.0,
^ Supported for drawtypes "plantlike", "signlike", "torchlike".
^ For plantlike, the image will start at the bottom of the node; for the
^ other drawtypes, the image will be centered on the node.
^ Note that positioning for "torchlike" may still change.
tiles = {tile definition 1, def2, def3, def4, def5, def6}, tiles = {tile definition 1, def2, def3, def4, def5, def6},
^ Textures of node; +Y, -Y, +X, -X, +Z, -Z (old field name: tile_images) ^ Textures of node; +Y, -Y, +X, -X, +Z, -Z (old field name: tile_images)
^ List can be shortened to needed length ^ List can be shortened to needed length

View File

@ -33,9 +33,9 @@ engine.close()
Filesystem: Filesystem:
engine.get_scriptdir() engine.get_scriptdir()
^ returns directory of script ^ returns directory of script
engine.get_modpath() engine.get_modpath() (possible in async calls)
^ returns path to global modpath ^ returns path to global modpath
engine.get_modstore_details(modid) engine.get_modstore_details(modid) (possible in async calls)
^ modid numeric id of mod in modstore ^ modid numeric id of mod in modstore
^ returns { ^ returns {
id = <numeric id of mod in modstore>, id = <numeric id of mod in modstore>,
@ -47,7 +47,7 @@ engine.get_modstore_details(modid)
license = <short description of license>, license = <short description of license>,
rating = <float value of current rating> rating = <float value of current rating>
} }
engine.get_modstore_list() engine.get_modstore_list() (possible in async calls)
^ returns { ^ returns {
[1] = { [1] = {
id = <numeric id of mod in modstore>, id = <numeric id of mod in modstore>,
@ -55,19 +55,21 @@ engine.get_modstore_list()
basename = <basename for mod> basename = <basename for mod>
} }
} }
engine.get_gamepath() engine.get_gamepath() (possible in async calls)
^ returns path to global gamepath ^ returns path to global gamepath
engine.get_dirlist(path,onlydirs) engine.get_texturepath() (possible in async calls)
^ returns path to default textures
engine.get_dirlist(path,onlydirs) (possible in async calls)
^ path to get subdirs from ^ path to get subdirs from
^ onlydirs should result contain only dirs? ^ onlydirs should result contain only dirs?
^ returns list of folders within path ^ returns list of folders within path
engine.create_dir(absolute_path) engine.create_dir(absolute_path) (possible in async calls)
^ absolute_path to directory to create (needs to be absolute) ^ absolute_path to directory to create (needs to be absolute)
^ returns true/false ^ returns true/false
engine.delete_dir(absolute_path) engine.delete_dir(absolute_path) (possible in async calls)
^ absolute_path to directory to delete (needs to be absolute) ^ absolute_path to directory to delete (needs to be absolute)
^ returns true/false ^ returns true/false
engine.copy_dir(source,destination,keep_soure) engine.copy_dir(source,destination,keep_soure) (possible in async calls)
^ source folder ^ source folder
^ destination folder ^ destination folder
^ keep_source DEFAULT true --> if set to false source is deleted after copying ^ keep_source DEFAULT true --> if set to false source is deleted after copying
@ -76,11 +78,11 @@ engine.extract_zip(zipfile,destination) [unzip within path required]
^ zipfile to extract ^ zipfile to extract
^ destination folder to extract to ^ destination folder to extract to
^ returns true/false ^ returns true/false
engine.download_file(url,target) engine.download_file(url,target) (possible in async calls)
^ url to download ^ url to download
^ target to store to ^ target to store to
^ returns true/false ^ returns true/false
engine.get_version() engine.get_version() (possible in async calls)
^ returns current minetest version ^ returns current minetest version
engine.sound_play(spec, looped) -> handle engine.sound_play(spec, looped) -> handle
^ spec = SimpleSoundSpec (see lua-api.txt) ^ spec = SimpleSoundSpec (see lua-api.txt)
@ -105,10 +107,10 @@ engine.get_game(index)
DEPRECATED: DEPRECATED:
addon_mods_paths = {[1] = <path>,}, addon_mods_paths = {[1] = <path>,},
} }
engine.get_games() -> table of all games in upper format engine.get_games() -> table of all games in upper format (possible in async calls)
Favorites: Favorites:
engine.get_favorites(location) -> list of favorites engine.get_favorites(location) -> list of favorites (possible in async calls)
^ location: "local" or "online" ^ location: "local" or "online"
^ returns { ^ returns {
[1] = { [1] = {
@ -128,21 +130,21 @@ engine.get_favorites(location) -> list of favorites
engine.delete_favorite(id, location) -> success engine.delete_favorite(id, location) -> success
Logging: Logging:
engine.debug(line) engine.debug(line) (possible in async calls)
^ Always printed to stderr and logfile (print() is redirected here) ^ Always printed to stderr and logfile (print() is redirected here)
engine.log(line) engine.log(line) (possible in async calls)
engine.log(loglevel, line) engine.log(loglevel, line) (possible in async calls)
^ loglevel one of "error", "action", "info", "verbose" ^ loglevel one of "error", "action", "info", "verbose"
Settings: Settings:
engine.setting_set(name, value) engine.setting_set(name, value)
engine.setting_get(name) -> string or nil engine.setting_get(name) -> string or nil (possible in async calls)
engine.setting_setbool(name, value) engine.setting_setbool(name, value)
engine.setting_getbool(name) -> bool or nil engine.setting_getbool(name) -> bool or nil (possible in async calls)
engine.setting_save() -> nil, save all settings to config file engine.setting_save() -> nil, save all settings to config file
Worlds: Worlds:
engine.get_worlds() -> list of worlds engine.get_worlds() -> list of worlds (possible in async calls)
^ returns { ^ returns {
[1] = { [1] = {
path = <full path to world>, path = <full path to world>,
@ -174,7 +176,7 @@ engine.gettext(string) -> string
fgettext(string, ...) -> string fgettext(string, ...) -> string
^ call engine.gettext(string), replace "$1"..."$9" with the given ^ call engine.gettext(string), replace "$1"..."$9" with the given
^ extra arguments, call engine.formspec_escape and return the result ^ extra arguments, call engine.formspec_escape and return the result
engine.parse_json(string[, nullvalue]) -> something engine.parse_json(string[, nullvalue]) -> something (possible in async calls)
^ see minetest.parse_json (lua_api.txt) ^ see minetest.parse_json (lua_api.txt)
dump(obj, dumped={}) dump(obj, dumped={})
^ Return object serialized as a string ^ Return object serialized as a string
@ -182,9 +184,24 @@ string:split(separator)
^ eg. string:split("a,b", ",") == {"a","b"} ^ eg. string:split("a,b", ",") == {"a","b"}
string:trim() string:trim()
^ eg. string.trim("\n \t\tfoo bar\t ") == "foo bar" ^ eg. string.trim("\n \t\tfoo bar\t ") == "foo bar"
minetest.is_yes(arg) minetest.is_yes(arg) (possible in async calls)
^ returns whether arg can be interpreted as yes ^ returns whether arg can be interpreted as yes
Async:
engine.handle_async(async_job,parameters,finished)
^ execute a function asynchronously
^ async_job is a function receiving one parameter and returning one parameter
^ parameters parameter table passed to async_job
^ finished function to be called once async_job has finished
^ the result of async_job is passed to this function
Limitations of Async operations
-No access to global lua variables, don't even try
-Limited set of available functions
e.g. No access to functions modifying menu like engine.start,engine.close,
engine.file_open_dialog
Class reference Class reference
---------------- ----------------
Settings: see lua_api.txt Settings: see lua_api.txt

View File

@ -37,6 +37,9 @@ Disable main menu
\-\-help \-\-help
Show allowed options Show allowed options
.TP .TP
\-\-version
Show version information
.TP
\-\-logfile <value> \-\-logfile <value>
Set logfile path (debug.txt) Set logfile path (debug.txt)
.TP .TP

View File

@ -31,6 +31,9 @@ Set gameid
\-\-help \-\-help
Show allowed options Show allowed options
.TP .TP
\-\-version
Show version information
.TP
\-\-logfile <value> \-\-logfile <value>
Set logfile path (debug.txt) Set logfile path (debug.txt)
.TP .TP

View File

@ -712,7 +712,6 @@ end
minetest.register_node("default:stone", { minetest.register_node("default:stone", {
description = "Stone", description = "Stone",
tiles ={"default_stone.png"}, tiles ={"default_stone.png"},
is_ground_content = true,
groups = {cracky=3}, groups = {cracky=3},
drop = 'default:cobble', drop = 'default:cobble',
legacy_mineral = true, legacy_mineral = true,
@ -722,7 +721,6 @@ minetest.register_node("default:stone", {
minetest.register_node("default:stone_with_coal", { minetest.register_node("default:stone_with_coal", {
description = "Stone with coal", description = "Stone with coal",
tiles ={"default_stone.png^default_mineral_coal.png"}, tiles ={"default_stone.png^default_mineral_coal.png"},
is_ground_content = true,
groups = {cracky=3}, groups = {cracky=3},
drop = 'default:coal_lump', drop = 'default:coal_lump',
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
@ -731,7 +729,6 @@ minetest.register_node("default:stone_with_coal", {
minetest.register_node("default:stone_with_iron", { minetest.register_node("default:stone_with_iron", {
description = "Stone with iron", description = "Stone with iron",
tiles ={"default_stone.png^default_mineral_iron.png"}, tiles ={"default_stone.png^default_mineral_iron.png"},
is_ground_content = true,
groups = {cracky=3}, groups = {cracky=3},
drop = 'default:iron_lump', drop = 'default:iron_lump',
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
@ -740,7 +737,6 @@ minetest.register_node("default:stone_with_iron", {
minetest.register_node("default:dirt_with_grass", { minetest.register_node("default:dirt_with_grass", {
description = "Dirt with grass", description = "Dirt with grass",
tiles ={"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"}, tiles ={"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
is_ground_content = true,
groups = {crumbly=3, soil=1}, groups = {crumbly=3, soil=1},
drop = 'default:dirt', drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults({ sounds = default.node_sound_dirt_defaults({
@ -751,7 +747,6 @@ minetest.register_node("default:dirt_with_grass", {
minetest.register_node("default:dirt_with_grass_footsteps", { minetest.register_node("default:dirt_with_grass_footsteps", {
description = "Dirt with grass and footsteps", description = "Dirt with grass and footsteps",
tiles ={"default_grass_footsteps.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"}, tiles ={"default_grass_footsteps.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
is_ground_content = true,
groups = {crumbly=3, soil=1}, groups = {crumbly=3, soil=1},
drop = 'default:dirt', drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults({ sounds = default.node_sound_dirt_defaults({
@ -762,7 +757,6 @@ minetest.register_node("default:dirt_with_grass_footsteps", {
minetest.register_node("default:dirt", { minetest.register_node("default:dirt", {
description = "Dirt", description = "Dirt",
tiles ={"default_dirt.png"}, tiles ={"default_dirt.png"},
is_ground_content = true,
groups = {crumbly=3, soil=1}, groups = {crumbly=3, soil=1},
sounds = default.node_sound_dirt_defaults(), sounds = default.node_sound_dirt_defaults(),
}) })
@ -770,7 +764,6 @@ minetest.register_node("default:dirt", {
minetest.register_node("default:sand", { minetest.register_node("default:sand", {
description = "Sand", description = "Sand",
tiles ={"default_sand.png"}, tiles ={"default_sand.png"},
is_ground_content = true,
groups = {crumbly=3, falling_node=1}, groups = {crumbly=3, falling_node=1},
sounds = default.node_sound_sand_defaults(), sounds = default.node_sound_sand_defaults(),
}) })
@ -778,7 +771,6 @@ minetest.register_node("default:sand", {
minetest.register_node("default:gravel", { minetest.register_node("default:gravel", {
description = "Gravel", description = "Gravel",
tiles ={"default_gravel.png"}, tiles ={"default_gravel.png"},
is_ground_content = true,
groups = {crumbly=2, falling_node=1}, groups = {crumbly=2, falling_node=1},
sounds = default.node_sound_dirt_defaults({ sounds = default.node_sound_dirt_defaults({
footstep = {name="default_gravel_footstep", gain=0.45}, footstep = {name="default_gravel_footstep", gain=0.45},
@ -788,7 +780,6 @@ minetest.register_node("default:gravel", {
minetest.register_node("default:sandstone", { minetest.register_node("default:sandstone", {
description = "Sandstone", description = "Sandstone",
tiles ={"default_sandstone.png"}, tiles ={"default_sandstone.png"},
is_ground_content = true,
groups = {crumbly=2,cracky=2}, groups = {crumbly=2,cracky=2},
drop = 'default:sand', drop = 'default:sand',
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
@ -797,7 +788,6 @@ minetest.register_node("default:sandstone", {
minetest.register_node("default:clay", { minetest.register_node("default:clay", {
description = "Clay", description = "Clay",
tiles ={"default_clay.png"}, tiles ={"default_clay.png"},
is_ground_content = true,
groups = {crumbly=3}, groups = {crumbly=3},
drop = 'default:clay_lump 4', drop = 'default:clay_lump 4',
sounds = default.node_sound_dirt_defaults({ sounds = default.node_sound_dirt_defaults({
@ -808,7 +798,6 @@ minetest.register_node("default:clay", {
minetest.register_node("default:brick", { minetest.register_node("default:brick", {
description = "Brick", description = "Brick",
tiles ={"default_brick.png"}, tiles ={"default_brick.png"},
is_ground_content = true,
groups = {cracky=3}, groups = {cracky=3},
drop = 'default:clay_brick 4', drop = 'default:clay_brick 4',
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
@ -817,7 +806,6 @@ minetest.register_node("default:brick", {
minetest.register_node("default:tree", { minetest.register_node("default:tree", {
description = "Tree", description = "Tree",
tiles ={"default_tree_top.png", "default_tree_top.png", "default_tree.png"}, tiles ={"default_tree_top.png", "default_tree_top.png", "default_tree.png"},
is_ground_content = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=1}, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=1},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
}) })
@ -825,7 +813,6 @@ minetest.register_node("default:tree", {
minetest.register_node("default:jungletree", { minetest.register_node("default:jungletree", {
description = "Jungle Tree", description = "Jungle Tree",
tiles ={"default_jungletree_top.png", "default_jungletree_top.png", "default_jungletree.png"}, tiles ={"default_jungletree_top.png", "default_jungletree_top.png", "default_jungletree.png"},
is_ground_content = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=1}, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=1},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
}) })
@ -849,6 +836,7 @@ minetest.register_node("default:leaves", {
visual_scale = 1.3, visual_scale = 1.3,
tiles ={"default_leaves.png"}, tiles ={"default_leaves.png"},
paramtype = "light", paramtype = "light",
is_ground_content = false,
groups = {snappy=3}, groups = {snappy=3},
drop = { drop = {
max_items = 1, max_items = 1,
@ -871,7 +859,6 @@ minetest.register_node("default:leaves", {
minetest.register_node("default:cactus", { minetest.register_node("default:cactus", {
description = "Cactus", description = "Cactus",
tiles ={"default_cactus_top.png", "default_cactus_top.png", "default_cactus_side.png"}, tiles ={"default_cactus_top.png", "default_cactus_top.png", "default_cactus_side.png"},
is_ground_content = true,
groups = {snappy=2,choppy=3}, groups = {snappy=2,choppy=3},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
}) })
@ -883,7 +870,6 @@ minetest.register_node("default:papyrus", {
inventory_image = "default_papyrus.png", inventory_image = "default_papyrus.png",
wield_image = "default_papyrus.png", wield_image = "default_papyrus.png",
paramtype = "light", paramtype = "light",
is_ground_content = true,
walkable = false, walkable = false,
groups = {snappy=3}, groups = {snappy=3},
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
@ -892,7 +878,6 @@ minetest.register_node("default:papyrus", {
minetest.register_node("default:bookshelf", { minetest.register_node("default:bookshelf", {
description = "Bookshelf", description = "Bookshelf",
tiles ={"default_wood.png", "default_wood.png", "default_bookshelf.png"}, tiles ={"default_wood.png", "default_wood.png", "default_bookshelf.png"},
is_ground_content = true,
groups = {snappy=2,choppy=3,oddly_breakable_by_hand=2}, groups = {snappy=2,choppy=3,oddly_breakable_by_hand=2},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
}) })
@ -904,7 +889,6 @@ minetest.register_node("default:glass", {
inventory_image = minetest.inventorycube("default_glass.png"), inventory_image = minetest.inventorycube("default_glass.png"),
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = true,
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3}, groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
}) })
@ -916,7 +900,6 @@ minetest.register_node("default:fence_wood", {
inventory_image = "default_fence.png", inventory_image = "default_fence.png",
wield_image = "default_fence.png", wield_image = "default_fence.png",
paramtype = "light", paramtype = "light",
is_ground_content = true,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
@ -932,7 +915,6 @@ minetest.register_node("default:rail", {
inventory_image = "default_rail.png", inventory_image = "default_rail.png",
wield_image = "default_rail.png", wield_image = "default_rail.png",
paramtype = "light", paramtype = "light",
is_ground_content = true,
walkable = false, walkable = false,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
@ -949,7 +931,6 @@ minetest.register_node("default:ladder", {
wield_image = "default_ladder.png", wield_image = "default_ladder.png",
paramtype = "light", paramtype = "light",
paramtype2 = "wallmounted", paramtype2 = "wallmounted",
is_ground_content = true,
walkable = false, walkable = false,
climbable = true, climbable = true,
selection_box = { selection_box = {
@ -966,7 +947,6 @@ minetest.register_node("default:ladder", {
minetest.register_node("default:wood", { minetest.register_node("default:wood", {
description = "Wood", description = "Wood",
tiles ={"default_wood.png"}, tiles ={"default_wood.png"},
is_ground_content = true,
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
}) })
@ -974,7 +954,6 @@ minetest.register_node("default:wood", {
minetest.register_node("default:mese", { minetest.register_node("default:mese", {
description = "Mese", description = "Mese",
tiles ={"default_mese.png"}, tiles ={"default_mese.png"},
is_ground_content = true,
groups = {cracky=1,level=2}, groups = {cracky=1,level=2},
sounds = default.node_sound_defaults(), sounds = default.node_sound_defaults(),
}) })
@ -982,7 +961,6 @@ minetest.register_node("default:mese", {
minetest.register_node("default:cloud", { minetest.register_node("default:cloud", {
description = "Cloud", description = "Cloud",
tiles ={"default_cloud.png"}, tiles ={"default_cloud.png"},
is_ground_content = true,
sounds = default.node_sound_defaults(), sounds = default.node_sound_defaults(),
}) })
@ -1104,6 +1082,7 @@ minetest.register_node("default:torch", {
paramtype = "light", paramtype = "light",
paramtype2 = "wallmounted", paramtype2 = "wallmounted",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false,
walkable = false, walkable = false,
light_source = LIGHT_MAX-1, light_source = LIGHT_MAX-1,
selection_box = { selection_box = {
@ -1126,6 +1105,7 @@ minetest.register_node("default:sign_wall", {
paramtype = "light", paramtype = "light",
paramtype2 = "wallmounted", paramtype2 = "wallmounted",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false,
walkable = false, walkable = false,
selection_box = { selection_box = {
type = "wallmounted", type = "wallmounted",
@ -1160,6 +1140,7 @@ minetest.register_node("default:chest", {
paramtype2 = "facedir", paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true, legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
@ -1192,6 +1173,7 @@ minetest.register_node("default:chest_locked", {
paramtype2 = "facedir", paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
legacy_facedir_simple = true, legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_wood_defaults(), sounds = default.node_sound_wood_defaults(),
after_place_node = function(pos, placer) after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
@ -1277,6 +1259,7 @@ minetest.register_node("default:furnace", {
paramtype2 = "facedir", paramtype2 = "facedir",
groups = {cracky=2}, groups = {cracky=2},
legacy_facedir_simple = true, legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
@ -1310,6 +1293,7 @@ minetest.register_node("default:furnace_active", {
drop = "default:furnace", drop = "default:furnace",
groups = {cracky=2}, groups = {cracky=2},
legacy_facedir_simple = true, legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
@ -1334,18 +1318,13 @@ minetest.register_node("default:furnace_active", {
end, end,
}) })
function hacky_swap_node(pos,name) function swap_node(pos,name)
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
local meta0 = meta:to_table()
if node.name == name then if node.name == name then
return return
end end
node.name = name node.name = name
local meta0 = meta:to_table() minetest.swap_node(pos, node)
minetest.set_node(pos,node)
meta = minetest.get_meta(pos)
meta:from_table(meta0)
end end
minetest.register_abm({ minetest.register_abm({
@ -1400,7 +1379,7 @@ minetest.register_abm({
local percent = math.floor(meta:get_float("fuel_time") / local percent = math.floor(meta:get_float("fuel_time") /
meta:get_float("fuel_totaltime") * 100) meta:get_float("fuel_totaltime") * 100)
meta:set_string("infotext","Furnace active: "..percent.."%") meta:set_string("infotext","Furnace active: "..percent.."%")
hacky_swap_node(pos,"default:furnace_active") swap_node(pos,"default:furnace_active")
meta:set_string("formspec", meta:set_string("formspec",
"size[8,9]".. "size[8,9]"..
"image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:".. "image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:"..
@ -1426,7 +1405,7 @@ minetest.register_abm({
if fuel.time <= 0 then if fuel.time <= 0 then
meta:set_string("infotext","Furnace out of fuel") meta:set_string("infotext","Furnace out of fuel")
hacky_swap_node(pos,"default:furnace") swap_node(pos,"default:furnace")
meta:set_string("formspec", default.furnace_inactive_formspec) meta:set_string("formspec", default.furnace_inactive_formspec)
return return
end end
@ -1434,7 +1413,7 @@ minetest.register_abm({
if cooked.item:is_empty() then if cooked.item:is_empty() then
if was_active then if was_active then
meta:set_string("infotext","Furnace is empty") meta:set_string("infotext","Furnace is empty")
hacky_swap_node(pos,"default:furnace") swap_node(pos,"default:furnace")
meta:set_string("formspec", default.furnace_inactive_formspec) meta:set_string("formspec", default.furnace_inactive_formspec)
end end
return return
@ -1452,7 +1431,6 @@ minetest.register_abm({
minetest.register_node("default:cobble", { minetest.register_node("default:cobble", {
description = "Cobble", description = "Cobble",
tiles ={"default_cobble.png"}, tiles ={"default_cobble.png"},
is_ground_content = true,
groups = {cracky=3}, groups = {cracky=3},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
}) })
@ -1460,7 +1438,6 @@ minetest.register_node("default:cobble", {
minetest.register_node("default:mossycobble", { minetest.register_node("default:mossycobble", {
description = "Mossy Cobble", description = "Mossy Cobble",
tiles ={"default_mossycobble.png"}, tiles ={"default_mossycobble.png"},
is_ground_content = true,
groups = {cracky=3}, groups = {cracky=3},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
}) })
@ -1468,7 +1445,6 @@ minetest.register_node("default:mossycobble", {
minetest.register_node("default:steelblock", { minetest.register_node("default:steelblock", {
description = "Steel Block", description = "Steel Block",
tiles ={"default_steel_block.png"}, tiles ={"default_steel_block.png"},
is_ground_content = true,
groups = {snappy=1,bendy=2}, groups = {snappy=1,bendy=2},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
}) })
@ -1481,6 +1457,7 @@ minetest.register_node("default:nyancat", {
paramtype2 = "facedir", paramtype2 = "facedir",
groups = {cracky=2}, groups = {cracky=2},
legacy_facedir_simple = true, legacy_facedir_simple = true,
is_ground_content = false,
sounds = default.node_sound_defaults(), sounds = default.node_sound_defaults(),
}) })
@ -1488,6 +1465,7 @@ minetest.register_node("default:nyancat_rainbow", {
description = "Nyancat Rainbow", description = "Nyancat Rainbow",
tiles ={"default_nc_rb.png"}, tiles ={"default_nc_rb.png"},
inventory_image = "default_nc_rb.png", inventory_image = "default_nc_rb.png",
is_ground_content = false,
groups = {cracky=2}, groups = {cracky=2},
sounds = default.node_sound_defaults(), sounds = default.node_sound_defaults(),
}) })
@ -1519,6 +1497,133 @@ minetest.register_node("default:apple", {
sounds = default.node_sound_defaults(), sounds = default.node_sound_defaults(),
}) })
local c_air = minetest.get_content_id("air")
local c_ignore = minetest.get_content_id("ignore")
local c_tree = minetest.get_content_id("default:tree")
local c_leaves = minetest.get_content_id("default:leaves")
local c_apple = minetest.get_content_id("default:apple")
function default.grow_tree(data, a, pos, is_apple_tree, seed)
--[[
NOTE: Tree-placing code is currently duplicated in the engine
and in games that have saplings; both are deprecated but not
replaced yet
]]--
local pr = PseudoRandom(seed)
local th = pr:next(4, 5)
local x, y, z = pos.x, pos.y, pos.z
for yy = y, y+th-1 do
local vi = a:index(x, yy, z)
if a:contains(x, yy, z) and (data[vi] == c_air or yy == y) then
data[vi] = c_tree
end
end
y = y+th-1 -- (x, y, z) is now last piece of trunk
local leaves_a = VoxelArea:new{MinEdge={x=-2, y=-1, z=-2}, MaxEdge={x=2, y=2, z=2}}
local leaves_buffer = {}
-- Force leaves near the trunk
local d = 1
for xi = -d, d do
for yi = -d, d do
for zi = -d, d do
leaves_buffer[leaves_a:index(xi, yi, zi)] = true
end
end
end
-- Add leaves randomly
for iii = 1, 8 do
local d = 1
local xx = pr:next(leaves_a.MinEdge.x, leaves_a.MaxEdge.x - d)
local yy = pr:next(leaves_a.MinEdge.y, leaves_a.MaxEdge.y - d)
local zz = pr:next(leaves_a.MinEdge.z, leaves_a.MaxEdge.z - d)
for xi = 0, d do
for yi = 0, d do
for zi = 0, d do
leaves_buffer[leaves_a:index(xx+xi, yy+yi, zz+zi)] = true
end
end
end
end
-- Add the leaves
for xi = leaves_a.MinEdge.x, leaves_a.MaxEdge.x do
for yi = leaves_a.MinEdge.y, leaves_a.MaxEdge.y do
for zi = leaves_a.MinEdge.z, leaves_a.MaxEdge.z do
if a:contains(x+xi, y+yi, z+zi) then
local vi = a:index(x+xi, y+yi, z+zi)
if data[vi] == c_air or data[vi] == c_ignore then
if leaves_buffer[leaves_a:index(xi, yi, zi)] then
if is_apple_tree and pr:next(1, 100) <= 10 then
data[vi] = c_apple
else
data[vi] = c_leaves
end
end
end
end
end
end
end
end
minetest.register_abm({
nodenames = {"default:sapling"},
interval = 10,
chance = 50,
action = function(pos, node)
local is_soil = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name].groups.soil
if is_soil == nil or is_soil == 0 then return end
print("A sapling grows into a tree at "..minetest.pos_to_string(pos))
local vm = minetest.get_voxel_manip()
local minp, maxp = vm:read_from_map({x=pos.x-16, y=pos.y, z=pos.z-16}, {x=pos.x+16, y=pos.y+16, z=pos.z+16})
local a = VoxelArea:new{MinEdge=minp, MaxEdge=maxp}
local data = vm:get_data()
default.grow_tree(data, a, pos, math.random(1, 4) == 1, math.random(1,100000))
vm:set_data(data)
vm:write_to_map(data)
vm:update_map()
end
})
minetest.register_abm({
nodenames = {"default:dirt"},
interval = 2,
chance = 200,
action = function(pos, node)
local above = {x=pos.x, y=pos.y+1, z=pos.z}
local name = minetest.get_node(above).name
local nodedef = minetest.registered_nodes[name]
if nodedef and (nodedef.sunlight_propagates or nodedef.paramtype == "light")
and nodedef.liquidtype == "none"
and (minetest.get_node_light(above) or 0) >= 13 then
if name == "default:snow" or name == "default:snowblock" then
minetest.set_node(pos, {name = "default:dirt_with_snow"})
else
minetest.set_node(pos, {name = "default:dirt_with_grass"})
end
end
end
})
minetest.register_abm({
nodenames = {"default:dirt_with_grass"},
interval = 2,
chance = 20,
action = function(pos, node)
local above = {x=pos.x, y=pos.y+1, z=pos.z}
local name = minetest.get_node(above).name
local nodedef = minetest.registered_nodes[name]
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"})
end
end
})
-- --
-- Crafting items -- Crafting items
-- --

View File

@ -4,7 +4,6 @@
-- Aliases for map generator outputs -- Aliases for map generator outputs
-- --
minetest.register_alias("mapgen_air", "air")
minetest.register_alias("mapgen_stone", "default:stone") minetest.register_alias("mapgen_stone", "default:stone")
minetest.register_alias("mapgen_tree", "default:tree") minetest.register_alias("mapgen_tree", "default:tree")
minetest.register_alias("mapgen_leaves", "default:leaves") minetest.register_alias("mapgen_leaves", "default:leaves")

View File

@ -22,15 +22,15 @@
# Client and server # Client and server
# #
# Network port (UDP)
#port =
# Name of player; on a server this is the main admin # Name of player; on a server this is the main admin
#name = #name =
# #
# Client stuff # Client stuff
# #
# Port to connect to (UDP)
#remote_port =
# Key mappings # Key mappings
# See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3 # See http://irrlicht.sourceforge.net/docu/namespaceirr.html#a54da2a0e231901735e3da1b0edf72eb3
#keymap_forward = KEY_KEY_W #keymap_forward = KEY_KEY_W
@ -82,7 +82,7 @@
#vsync = false #vsync = false
#fov = 72 #fov = 72
# Address to connect to (#blank = start local server) # Address to connect to (#blank = start local server)
#address = #address =
# Enable random user input, for testing # Enable random user input, for testing
#random_input = false #random_input = false
# Timeout for client to remove unused map data from memory # Timeout for client to remove unused map data from memory
@ -94,7 +94,7 @@
# Constant volume liquids # Constant volume liquids
#liquid_finite = false #liquid_finite = false
# Max liquids processed per step # Max liquids processed per step
#liquid_loop_max = 1000 #liquid_loop_max = 10000
# Update liquids every .. recommend for finite: 0.2 # Update liquids every .. recommend for finite: 0.2
#liquid_update = 1.0 #liquid_update = 1.0
# Relax flowing blocks to source if level near max and N nearby # Relax flowing blocks to source if level near max and N nearby
@ -115,7 +115,7 @@
# disable for speed or for different looks. # disable for speed or for different looks.
#smooth_lighting = true #smooth_lighting = true
# Path to texture directory. All textures are first searched from here. # Path to texture directory. All textures are first searched from here.
#texture_path = #texture_path =
# Video back-end. # Video back-end.
# Possible values: null, software, burningsvideo, direct3d8, direct3d9, opengl # Possible values: null, software, burningsvideo, direct3d8, direct3d9, opengl
#video_driver = opengl #video_driver = opengl
@ -170,13 +170,37 @@
#enable_shaders = true #enable_shaders = true
# Set to true to enable textures bumpmapping. Requires shaders enabled. # Set to true to enable textures bumpmapping. Requires shaders enabled.
#enable_bumpmapping = false #enable_bumpmapping = false
# Set to true enables parallax occlusion mapping. Requires shaders enabled.
#enable_parallax_occlusion = false
# Scale of parallax occlusion effect
#parallax_mapping_scale = 0.08
# Bias of parallax occlusion effect, usually scale/2
#parallax_mapping_scale = 0.04
# Set to true enables waving water. Requires shaders enabled.
#enable_waving_water = false
# Parameters for waving water:
#water_wave_height = 1.0
#water_wave_length = 20.0
#water_wave_speed = 5.0
# Set to true enables waving leaves. Requires shaders enabled.
#enable_waving_leaves = false
# Set to true enables waving plants. Requires shaders enabled.
#enable_waving_plants = false
# The time in seconds it takes between repeated # The time in seconds it takes between repeated
# right clicks when holding the right mouse button # right clicks when holding the right mouse button
#repeat_rightclick_time = 0.25 #repeat_rightclick_time = 0.25
# Make fog and sky colors depend on daytime (dawn/sunset) and view direction
#directional_colored_fog = true
# will only work for servers which use remote_media setting # Default timeout for cURL, in milliseconds
# and only for clients compiled with cURL # Only has an effect if compiled with cURL
#media_fetch_threads = 8 #curl_timeout = 5000
# Limits number of parallel HTTP requests. Affects:
# - Media fetch if server uses remote_media setting
# - Serverlist download and server announcement
# - Downloads performed by main menu (e.g. mod manager)
# Only has an effect if compiled with cURL
#curl_parallel_limit = 8
# Url to the server list displayed in the Multiplayer Tab # Url to the server list displayed in the Multiplayer Tab
#serverlist_url = servers.minetest.net #serverlist_url = servers.minetest.net
@ -188,17 +212,24 @@
# Path to TrueTypeFont or bitmap # Path to TrueTypeFont or bitmap
#font_path = fonts/liberationsans.ttf #font_path = fonts/liberationsans.ttf
#font_size = 13 #font_size = 13
# Font shadow offset, if 0 then shadow will not be drawn.
#font_shadow = 1
# Font shadow alpha (opaqueness, between 0 and 255)
#font_shadow_alpha = 128
#mono_font_path = fonts/liberationmono.ttf #mono_font_path = fonts/liberationmono.ttf
#mono_font_size = 13 #mono_font_size = 13
# This font will be used for certain languages # This font will be used for certain languages
#fallback_font_path = fonts/DroidSansFallbackFull.ttf #fallback_font_path = fonts/DroidSansFallbackFull.ttf
#fallback_font_size = 13 #fallback_font_size = 13
#fallback_font_shadow = 1
#fallback_font_shadow_alpha = 128
# #
# Server stuff # Server stuff
# #
# Network port to listen (UDP)
#port =
# Name of server # Name of server
#server_name = Minetest server #server_name = Minetest server
# Description of server # Description of server
@ -218,7 +249,7 @@
# Message of the Day # Message of the Day
#motd = Welcome to this awesome Minetest server! #motd = Welcome to this awesome Minetest server!
# Maximum number of players connected simultaneously # Maximum number of players connected simultaneously
#max_users = 100 #max_users = 15
# Set to true to disallow old clients from connecting # Set to true to disallow old clients from connecting
#strict_protocol_version_checking = false #strict_protocol_version_checking = false
# Set to true to enable creative mode (unlimited inventory) # Set to true to enable creative mode (unlimited inventory)
@ -232,7 +263,7 @@
# Gives some stuff to players at the beginning # Gives some stuff to players at the beginning
#give_initial_stuff = false #give_initial_stuff = false
# New users need to input this password # New users need to input this password
#default_password = #default_password =
# Available privileges: interact, shout, teleport, settime, privs, ... # Available privileges: interact, shout, teleport, settime, privs, ...
# See /privs in game for a full list on your server and mod configuration. # See /privs in game for a full list on your server and mod configuration.
#default_privs = interact, shout #default_privs = interact, shout
@ -248,6 +279,10 @@
#disable_anticheat = false #disable_anticheat = false
# If true, actions are recorded for rollback # If true, actions are recorded for rollback
#enable_rollback_recording = false #enable_rollback_recording = false
# If true, blocks are cached (and generated if not before) before a player is spawned.
#cache_block_before_spawn = true
# Defines the maximum height a player can spawn in a map, above water level
#max_spawn_height = 50
# Profiler data print interval. #0 = disable. # Profiler data print interval. #0 = disable.
#profiler_print_interval = 0 #profiler_print_interval = 0
@ -308,7 +343,7 @@
#emergequeue_limit_diskonly = #emergequeue_limit_diskonly =
# Maximum number of blocks to be queued that are to be generated. # Maximum number of blocks to be queued that are to be generated.
# Leave blank for an appropriate amount to be chosen automatically. # Leave blank for an appropriate amount to be chosen automatically.
#emergequeue_limit_generate = #emergequeue_limit_generate =
# Number of emerge threads to use. Make this field blank, or increase this number, to use multiple threads. # Number of emerge threads to use. Make this field blank, or increase this number, to use multiple threads.
# On multiprocessor systems, this will improve mapgen speed greatly, at the cost of slightly buggy caves. # On multiprocessor systems, this will improve mapgen speed greatly, at the cost of slightly buggy caves.
#num_emerge_threads = 1 #num_emerge_threads = 1

999
po/cs/minetest.po Normal file
View File

@ -0,0 +1,999 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: 2013-10-30 15:04+0200\n"
"Last-Translator: Jakub Vaněk <vanek.jakub4@seznam.cz>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 1.7-dev\n"
#: builtin/gamemgr.lua:23
msgid "Game Name"
msgstr "Název hry"
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create"
msgstr "Vytvořit"
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel"
msgstr "Zrušit"
#: builtin/gamemgr.lua:118
msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\""
msgstr "Gamemgr: Nepovedlo se zkopírovat mod \"$1\" do hry\"$2\""
#: builtin/gamemgr.lua:216
msgid "GAMES"
msgstr "HRY"
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
msgid "Games"
msgstr "Hry"
#: builtin/gamemgr.lua:234
msgid "Mods:"
msgstr "Mody:"
#: builtin/gamemgr.lua:235
msgid "edit game"
msgstr "upravit hru"
#: builtin/gamemgr.lua:238
msgid "new game"
msgstr "nová hra"
#: builtin/gamemgr.lua:248
msgid "EDIT GAME"
msgstr "UPRAVIT HRU"
#: builtin/gamemgr.lua:269
msgid "Remove selected mod"
msgstr "Odstranit vybraný mod"
#: builtin/gamemgr.lua:272
msgid "<<-- Add mod"
msgstr "<<-- Přidat mod"
#: builtin/mainmenu.lua:158
msgid "Ok"
msgstr "Ok"
#: builtin/mainmenu.lua:297
msgid "World name"
msgstr "Název světa"
#: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen"
msgstr "Generátor světa"
#: builtin/mainmenu.lua:306
msgid "Game"
msgstr "Hra"
#: builtin/mainmenu.lua:319
msgid "Delete World \"$1\"?"
msgstr "Doopravdy chcete smazat svět \"$1\"?"
#: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes"
msgstr "Ano"
#: builtin/mainmenu.lua:321
msgid "No"
msgstr "Ne"
#: builtin/mainmenu.lua:364
msgid "A world named \"$1\" already exists"
msgstr "Svět s názvem \"$1\" už existuje"
#: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected"
msgstr "Nebyla vybrána žádná hra"
#: builtin/mainmenu.lua:650
msgid "To enable shaders the OpenGL driver needs to be used."
msgstr ""
#: builtin/mainmenu.lua:818
msgid "CLIENT"
msgstr "CLIENT"
#: builtin/mainmenu.lua:819
msgid "Favorites:"
msgstr "Oblíbené:"
#: builtin/mainmenu.lua:820
msgid "Address/Port"
msgstr "Adresa/port"
#: builtin/mainmenu.lua:821
msgid "Name/Password"
msgstr "Jméno/Heslo"
#: builtin/mainmenu.lua:824
msgid "Public Serverlist"
msgstr "Veřejný seznam serverů"
#: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: src/keycode.cpp:229
msgid "Delete"
msgstr "Vymazat"
#: builtin/mainmenu.lua:833
msgid "Connect"
msgstr "Připojit"
#: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New"
msgstr "Nový"
#: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure"
msgstr "Nastavit"
#: builtin/mainmenu.lua:877
msgid "Start Game"
msgstr "Začít hru"
#: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:"
msgstr "Vyber svět:"
#: builtin/mainmenu.lua:879
msgid "START SERVER"
msgstr "MÍSTNÍ SERVER"
#: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode"
msgstr "Kreativní mód"
#: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage"
msgstr "Povolit poškození"
#: builtin/mainmenu.lua:884
msgid "Public"
msgstr "Veřejný"
#: builtin/mainmenu.lua:886
msgid "Name"
msgstr "Jméno"
#: builtin/mainmenu.lua:888
msgid "Password"
msgstr "Heslo"
#: builtin/mainmenu.lua:889
msgid "Server Port"
msgstr "Port serveru"
#: builtin/mainmenu.lua:899
msgid "SETTINGS"
msgstr "NASTAVENÍ"
#: builtin/mainmenu.lua:900
msgid "Fancy trees"
msgstr "Pěkné stromy"
#: builtin/mainmenu.lua:902
msgid "Smooth Lighting"
msgstr "Hladké osvětlení"
#: builtin/mainmenu.lua:904
msgid "3D Clouds"
msgstr "3D Mraky"
#: builtin/mainmenu.lua:906
msgid "Opaque Water"
msgstr "Neprůhledná voda"
#: builtin/mainmenu.lua:909
msgid "Mip-Mapping"
msgstr "Mip-Mapování"
#: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering"
msgstr "Anizotropní filtrování"
#: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering"
msgstr "Bilineární filtrování"
#: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering"
msgstr "Trilineární filtrování"
#: builtin/mainmenu.lua:918
msgid "Shaders"
msgstr "Shadery"
#: builtin/mainmenu.lua:920
msgid "Preload item visuals"
msgstr "Přednačtené textury itemů"
#: builtin/mainmenu.lua:922
msgid "Enable Particles"
msgstr "Povolit Částice"
#: builtin/mainmenu.lua:924
msgid "Finite Liquid"
msgstr "Konečná voda"
#: builtin/mainmenu.lua:927
msgid "Change keys"
msgstr "Změnit nastavení klávesy"
#: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play"
msgstr "Hrát"
#: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER"
msgstr "HRA JEDNOHO HRÁČE"
#: builtin/mainmenu.lua:955
msgid "Select texture pack:"
msgstr "Vyberte balíček textur:"
#: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS"
msgstr "BALÍČKY TEXTUR"
#: builtin/mainmenu.lua:976
msgid "No information available"
msgstr "Žádné informace dostupné"
#: builtin/mainmenu.lua:1005
msgid "Core Developers"
msgstr "Vývojáři jádra"
#: builtin/mainmenu.lua:1020
msgid "Active Contributors"
msgstr "Aktivní přispěvatelé"
#: builtin/mainmenu.lua:1028
msgid "Previous Contributors"
msgstr "Bývalí přispěvatelé"
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr "Hra jednoho hráče"
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr "Hra více hráčů"
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr "Místní server"
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr "Nastavení"
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr "Balíčky textur"
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr "Mody"
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr "Autoři"
#: builtin/modmgr.lua:236
msgid "MODS"
msgstr "MODY"
#: builtin/modmgr.lua:237
msgid "Installed Mods:"
msgstr "Instalované Mody:"
#: builtin/modmgr.lua:243
#, fuzzy
msgid "Add mod:"
msgstr "<<-- Přidat mod"
#: builtin/modmgr.lua:244
#, fuzzy
msgid "Local install"
msgstr "Instalovat"
#: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
#, fuzzy
msgid "No mod description available"
msgstr "Žádné informace dostupné"
#: builtin/modmgr.lua:288
#, fuzzy
msgid "Mod information:"
msgstr "Žádné informace dostupné"
#: builtin/modmgr.lua:299
msgid "Rename"
msgstr "Přejmenovat"
#: builtin/modmgr.lua:301
msgid "Uninstall selected modpack"
msgstr ""
#: builtin/modmgr.lua:312
#, fuzzy
msgid "Uninstall selected mod"
msgstr "Odstranit vybraný mod"
#: builtin/modmgr.lua:324
msgid "Rename Modpack:"
msgstr "Přejmenovat Modpack:"
#: builtin/modmgr.lua:329 src/keycode.cpp:227
msgid "Accept"
msgstr "Přijmout"
#: builtin/modmgr.lua:423
msgid "World:"
msgstr "Svět:"
#: builtin/modmgr.lua:427 builtin/modmgr.lua:429
msgid "Hide Game"
msgstr "Skrýt Hru"
#: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content"
msgstr "Skrýt obsah mp"
#: builtin/modmgr.lua:442
msgid "Mod:"
msgstr "Mody:"
#: builtin/modmgr.lua:444
msgid "Depends:"
msgstr "Závislosti:"
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save"
msgstr "Uložit"
#: builtin/modmgr.lua:464
msgid "Enable MP"
msgstr "Povolit Hru více hráčů"
#: builtin/modmgr.lua:466
msgid "Disable MP"
msgstr "Zakázat Hru více hráčů"
#: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled"
msgstr "povoleno"
#: builtin/modmgr.lua:478
msgid "Enable all"
msgstr "Povolit vše"
#: builtin/modmgr.lua:577
msgid "Select Mod File:"
msgstr "Vybrat Soubor s Modem:"
#: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\""
msgstr "Instalace Modu: ze souboru: \"$1\""
#: builtin/modmgr.lua:617
msgid ""
"\n"
"Install Mod: unsupported filetype \"$1\""
msgstr ""
"\n"
"Instalace Modu: nepodporovaný typ souboru \"$1\""
#: builtin/modmgr.lua:638
msgid "Failed to install $1 to $2"
msgstr "Selhala instalace $1 do $2"
#: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "Install Mod: nenalezen adresář s příslušným názvem pro balíček modu $1"
#: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1"
msgstr "Install Mod: Nenašel jsem skutečné jméno modu: $1"
#: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\""
msgstr "Modmgr: Nepodařilo se odstranit \"$1\""
#: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\""
msgstr "Modmgr: Neplatná cesta k modu \"$1\""
#: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?"
msgstr "Skutečně chcete odstranit \"$1\"?"
#: builtin/modmgr.lua:878
msgid "No of course not!"
msgstr "Jistě, že ne!"
#: builtin/modstore.lua:183
msgid "Page $1 of $2"
msgstr "Strana $1 z $2"
#: builtin/modstore.lua:243
msgid "Rating"
msgstr "Hodnocení"
#: builtin/modstore.lua:251
msgid "re-Install"
msgstr "přeinstalovat"
#: builtin/modstore.lua:253
msgid "Install"
msgstr "Instalovat"
#: src/client.cpp:2917
msgid "Item textures..."
msgstr "Textury předmětů..."
#: src/game.cpp:940
msgid "Loading..."
msgstr "Nahrávám..."
#: src/game.cpp:1000
msgid "Creating server...."
msgstr "Vytvářím server..."
#: src/game.cpp:1016
msgid "Creating client..."
msgstr "Vytvářím klienta..."
#: src/game.cpp:1025
msgid "Resolving address..."
msgstr "Překládám adresu..."
#: src/game.cpp:1122
msgid "Connecting to server..."
msgstr "Připojuji se k serveru..."
#: src/game.cpp:1219
msgid "Item definitions..."
msgstr "Definice předmětů..."
#: src/game.cpp:1226
msgid "Node definitions..."
msgstr "Definice uzlů..."
#: src/game.cpp:1233
msgid "Media..."
msgstr "Média..."
#: src/game.cpp:3409
msgid "Shutting down stuff..."
msgstr "Vypínám to..."
#: src/game.cpp:3439
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
"\n"
"Pro detaily se podívej do debug.txt."
#: src/guiDeathScreen.cpp:96
msgid "You died."
msgstr "Zemřel jsi."
#: src/guiDeathScreen.cpp:104
msgid "Respawn"
msgstr "Oživení"
#: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:139
msgid "Proceed"
msgstr "Pokračovat"
#: src/guiKeyChangeMenu.cpp:121
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
msgstr ""
"Nastavení kláves. (Pokud tohle menu nebude v pořádku, odstraňte nastavení z "
"minetest.conf)"
#: src/guiKeyChangeMenu.cpp:161
msgid "\"Use\" = climb down"
msgstr "\"Použít\" = slézt dolů"
#: src/guiKeyChangeMenu.cpp:176
msgid "Double tap \"jump\" to toggle fly"
msgstr "Dvakrát zmáčkněte \"skok\" pro zapnutí létání"
#: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use"
msgstr "Klávesa je již používána"
#: src/guiKeyChangeMenu.cpp:363
msgid "press key"
msgstr "stiskni klávesu"
#: src/guiKeyChangeMenu.cpp:389
msgid "Forward"
msgstr "Vpřed"
#: src/guiKeyChangeMenu.cpp:390
msgid "Backward"
msgstr "Vzad"
#: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left"
msgstr "Vlevo"
#: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right"
msgstr "Vpravo"
#: src/guiKeyChangeMenu.cpp:393
msgid "Use"
msgstr "Použít"
#: src/guiKeyChangeMenu.cpp:394
msgid "Jump"
msgstr "Skočit"
#: src/guiKeyChangeMenu.cpp:395
msgid "Sneak"
msgstr "Plížení"
#: src/guiKeyChangeMenu.cpp:396
msgid "Drop"
msgstr "Zahodit"
#: src/guiKeyChangeMenu.cpp:397
msgid "Inventory"
msgstr "Inventář"
#: src/guiKeyChangeMenu.cpp:398
msgid "Chat"
msgstr "Chat"
#: src/guiKeyChangeMenu.cpp:399
msgid "Command"
msgstr "Příkaz"
#: src/guiKeyChangeMenu.cpp:400
msgid "Console"
msgstr "Konzole"
#: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly"
msgstr "Přepnout létání"
#: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast"
msgstr "Přepnout rychlý pohyb"
#: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip"
msgstr "Zapnout noclip"
#: src/guiKeyChangeMenu.cpp:404
msgid "Range select"
msgstr "Vybrat rozmezí"
#: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks"
msgstr "Vytisknout zásobníky"
#: src/guiPasswordChange.cpp:106
msgid "Old Password"
msgstr "Staré heslo"
#: src/guiPasswordChange.cpp:122
msgid "New Password"
msgstr "Nové heslo"
#: src/guiPasswordChange.cpp:137
msgid "Confirm Password"
msgstr "Potvrdit heslo"
#: src/guiPasswordChange.cpp:153
msgid "Change"
msgstr "Změnit"
#: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!"
msgstr "Hesla si neodpovídají!"
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr "Pokračovat"
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr "Změnit heslo"
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr "Hlasitost"
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr "Odejít do Nabídky"
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr "Ukončit hru"
#: src/guiPauseMenu.cpp:170
msgid ""
"Default Controls:\n"
"- WASD: move\n"
"- Space: jump/climb\n"
"- Shift: sneak/go down\n"
"- Q: drop item\n"
"- I: inventory\n"
"- Mouse: turn/look\n"
"- Mouse left: dig/punch\n"
"- Mouse right: place/use\n"
"- Mouse wheel: select item\n"
"- T: chat\n"
msgstr ""
"Výchozí ovládání:\n"
"- WASD: pohyb\n"
"- Mezera: skákání/šplhání\n"
"- Shift: plížení\n"
"- Q: zahodit\n"
"- I: inventář\n"
"- Myš: otáčení,rozhlížení\n"
"- Myš(levé tl.): kopat, štípat\n"
"- Myš(pravé tl.): položit, použít\n"
"- Myš(kolečko): vybrat předmět\n"
"- T: chat\n"
#: src/guiVolumeChange.cpp:107
msgid "Sound Volume: "
msgstr "Hlasitost: "
#: src/guiVolumeChange.cpp:121
msgid "Exit"
msgstr "Odejít"
#: src/keycode.cpp:223
msgid "Left Button"
msgstr "Levé tlačítko myši"
#: src/keycode.cpp:223
msgid "Middle Button"
msgstr "Prostřední tlačítko myši"
#: src/keycode.cpp:223
msgid "Right Button"
msgstr "Pravé tlačítko myši"
#: src/keycode.cpp:223
msgid "X Button 1"
msgstr "X Tlačítko 1"
#: src/keycode.cpp:224
msgid "Back"
msgstr "Zpět"
#: src/keycode.cpp:224
msgid "Clear"
msgstr "Vyčistit"
#: src/keycode.cpp:224
msgid "Return"
msgstr "Vrátit"
#: src/keycode.cpp:224
msgid "Tab"
msgstr "Tabulátor"
#: src/keycode.cpp:224
msgid "X Button 2"
msgstr "X Tlačítko 2"
#: src/keycode.cpp:225
msgid "Capital"
msgstr "Klávesa velkého písmene"
#: src/keycode.cpp:225
msgid "Control"
msgstr "Control"
#: src/keycode.cpp:225
msgid "Kana"
msgstr "Kana"
#: src/keycode.cpp:225
msgid "Menu"
msgstr "Nabídka"
#: src/keycode.cpp:225
msgid "Pause"
msgstr "Pauza"
#: src/keycode.cpp:225
msgid "Shift"
msgstr "Shift"
#: src/keycode.cpp:226
msgid "Convert"
msgstr "Převádět"
#: src/keycode.cpp:226
msgid "Escape"
msgstr "Esc"
#: src/keycode.cpp:226
msgid "Final"
msgstr "Konečný"
#: src/keycode.cpp:226
msgid "Junja"
msgstr "Junja"
#: src/keycode.cpp:226
msgid "Kanji"
msgstr "Kanji"
#: src/keycode.cpp:226
msgid "Nonconvert"
msgstr "Nepřevádět"
#: src/keycode.cpp:227
msgid "End"
msgstr "End"
#: src/keycode.cpp:227
msgid "Home"
msgstr "Home"
#: src/keycode.cpp:227
msgid "Mode Change"
msgstr "Změna modu"
#: src/keycode.cpp:227
msgid "Next"
msgstr "Další"
#: src/keycode.cpp:227
msgid "Prior"
msgstr "Předchozí"
#: src/keycode.cpp:227
msgid "Space"
msgstr "Mezerník"
#: src/keycode.cpp:228
msgid "Down"
msgstr "Dolů"
#: src/keycode.cpp:228
msgid "Execute"
msgstr "Spustit"
#: src/keycode.cpp:228
msgid "Print"
msgstr "Print Screen"
#: src/keycode.cpp:228
msgid "Select"
msgstr "Vybrat"
#: src/keycode.cpp:228
msgid "Up"
msgstr "Nahoru"
#: src/keycode.cpp:229
msgid "Help"
msgstr "Pomoc"
#: src/keycode.cpp:229
msgid "Insert"
msgstr "Vložit"
#: src/keycode.cpp:229
msgid "Snapshot"
msgstr "Momentka"
#: src/keycode.cpp:232
msgid "Left Windows"
msgstr "Levá klávesa Windows"
#: src/keycode.cpp:233
msgid "Apps"
msgstr "Aplikace"
#: src/keycode.cpp:233
msgid "Numpad 0"
msgstr "Numerická klávesnice: 0"
#: src/keycode.cpp:233
msgid "Numpad 1"
msgstr "Numerická klávesnice: 1"
#: src/keycode.cpp:233
msgid "Right Windows"
msgstr "Pravá klávesa Windows"
#: src/keycode.cpp:233
msgid "Sleep"
msgstr "Spát"
#: src/keycode.cpp:234
msgid "Numpad 2"
msgstr "Numerická klávesnice: 2"
#: src/keycode.cpp:234
msgid "Numpad 3"
msgstr "Numerická klávesnice: 3"
#: src/keycode.cpp:234
msgid "Numpad 4"
msgstr "Numerická klávesnice: 4"
#: src/keycode.cpp:234
msgid "Numpad 5"
msgstr "Numerická klávesnice: 5"
#: src/keycode.cpp:234
msgid "Numpad 6"
msgstr "Numerická klávesnice: 6"
#: src/keycode.cpp:234
msgid "Numpad 7"
msgstr "Numerická klávesnice: 7"
#: src/keycode.cpp:235
msgid "Numpad *"
msgstr "Numerická klávesnice: *"
#: src/keycode.cpp:235
msgid "Numpad +"
msgstr "Numerická klávesnice: +"
#: src/keycode.cpp:235
msgid "Numpad -"
msgstr "Numerická klávesnice: -"
#: src/keycode.cpp:235
msgid "Numpad /"
msgstr "Numerická klávesnice: /"
#: src/keycode.cpp:235
msgid "Numpad 8"
msgstr "Numerická klávesnice: 8"
#: src/keycode.cpp:235
msgid "Numpad 9"
msgstr "Numerická klávesnice: 9"
#: src/keycode.cpp:239
msgid "Num Lock"
msgstr "Num Lock"
#: src/keycode.cpp:239
msgid "Scroll Lock"
msgstr "Scroll Lock"
#: src/keycode.cpp:240
msgid "Left Shift"
msgstr "Levý Shift"
#: src/keycode.cpp:240
msgid "Right Shift"
msgstr "Pravý Shift"
#: src/keycode.cpp:241
msgid "Left Control"
msgstr "Levý Control"
#: src/keycode.cpp:241
msgid "Left Menu"
msgstr "Levá klávesa Menu"
#: src/keycode.cpp:241
msgid "Right Control"
msgstr "Pravý Control"
#: src/keycode.cpp:241
msgid "Right Menu"
msgstr "Pravá klávesa Menu"
#: src/keycode.cpp:243
msgid "Comma"
msgstr "Čárka"
#: src/keycode.cpp:243
msgid "Minus"
msgstr "Mínus"
#: src/keycode.cpp:243
msgid "Period"
msgstr "Tečka"
#: src/keycode.cpp:243
msgid "Plus"
msgstr "Plus"
#: src/keycode.cpp:247
msgid "Attn"
msgstr "Attn"
#: src/keycode.cpp:247
msgid "CrSel"
msgstr "CrSel"
#: src/keycode.cpp:248
msgid "Erase OEF"
msgstr "Smazat EOF"
#: src/keycode.cpp:248
msgid "ExSel"
msgstr "ExSel"
#: src/keycode.cpp:248
msgid "OEM Clear"
msgstr "OEM Clear"
#: src/keycode.cpp:248
msgid "PA1"
msgstr "PA1"
#: src/keycode.cpp:248
msgid "Zoom"
msgstr "Přiblížení"
#: src/main.cpp:1472
msgid "needs_fallback_font"
msgstr "vyžaduje_fallback_font"
#: src/main.cpp:1547
msgid "Main Menu"
msgstr "Hlavní nabídka"
#: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do."
msgstr ""
"Nebyl vybrán žádný svět a nebyla poskytnuta žádná adresa. Nemám co dělat."
#: src/main.cpp:1731
msgid "Could not find or load game \""
msgstr "Hru nebylo možné najít nebo nahrát \""
#: src/main.cpp:1745
msgid "Invalid gamespec."
msgstr "Neplatná specifikace hry."
#: src/main.cpp:1790
msgid "Connection error (timed out?)"
msgstr "Chyba spojení (vypršel čas?)"
#~ msgid "Left click: Move all items, Right click: Move single item"
#~ msgstr ""
#~ "Levý klik: Přesunout všechny předměty, Pravý klik: Přesunout jeden předmět"
#~ msgid "Download"
#~ msgstr "Stáhnout"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 0.0.0\n" "Project-Id-Version: 0.0.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-07 22:01+0400\n" "POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: 2013-02-17 00:41+0200\n" "PO-Revision-Date: 2013-02-17 00:41+0200\n"
"Last-Translator: Rune Biskopstö Christensen <lakersforce@gmail.com>\n" "Last-Translator: Rune Biskopstö Christensen <lakersforce@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -23,12 +23,12 @@ msgstr ""
msgid "Game Name" msgid "Game Name"
msgstr "Spil" msgstr "Spil"
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:301 #: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create" msgid "Create"
msgstr "Skab" msgstr "Skab"
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:302 builtin/modmgr.lua:289 #: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:406 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223 #: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel" msgid "Cancel"
msgstr "Anuller" msgstr "Anuller"
@ -40,36 +40,36 @@ msgstr ""
msgid "GAMES" msgid "GAMES"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:859 #: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
#, fuzzy #, fuzzy
msgid "Games" msgid "Games"
msgstr "Spil" msgstr "Spil"
#: builtin/gamemgr.lua:233 #: builtin/gamemgr.lua:234
msgid "Mods:" msgid "Mods:"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:234 #: builtin/gamemgr.lua:235
msgid "edit game" msgid "edit game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:237 #: builtin/gamemgr.lua:238
msgid "new game" msgid "new game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:247 #: builtin/gamemgr.lua:248
msgid "EDIT GAME" msgid "EDIT GAME"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:267 #: builtin/gamemgr.lua:269
msgid "Remove selected mod" msgid "Remove selected mod"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:270 #: builtin/gamemgr.lua:272
msgid "<<-- Add mod" msgid "<<-- Add mod"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:159 #: builtin/mainmenu.lua:158
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
@ -77,230 +77,238 @@ msgstr ""
msgid "World name" msgid "World name"
msgstr "Verdens navn" msgstr "Verdens navn"
#: builtin/mainmenu.lua:298 #: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen" msgid "Mapgen"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:300 #: builtin/mainmenu.lua:306
msgid "Game" msgid "Game"
msgstr "Spil" msgstr "Spil"
#: builtin/mainmenu.lua:314 #: builtin/mainmenu.lua:319
#, fuzzy #, fuzzy
msgid "Delete World \"$1\"?" msgid "Delete World \"$1\"?"
msgstr "Slet verden" msgstr "Slet verden"
#: builtin/mainmenu.lua:315 builtin/modmgr.lua:846 #: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes" msgid "Yes"
msgstr "Ja" msgstr "Ja"
#: builtin/mainmenu.lua:316 #: builtin/mainmenu.lua:321
msgid "No" msgid "No"
msgstr "Nej" msgstr "Nej"
#: builtin/mainmenu.lua:384 #: builtin/mainmenu.lua:364
#, fuzzy #, fuzzy
msgid "A world named \"$1\" already exists" msgid "A world named \"$1\" already exists"
msgstr "Kan ikke skabe verden: en verden med dette navn eksisterer allerede" msgstr "Kan ikke skabe verden: en verden med dette navn eksisterer allerede"
#: builtin/mainmenu.lua:399 #: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected" msgid "No worldname given or no game selected"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:852 #: builtin/mainmenu.lua:650
msgid "Singleplayer" msgid "To enable shaders the OpenGL driver needs to be used."
msgstr "Enligspiller"
#: builtin/mainmenu.lua:853
msgid "Client"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:854 #: builtin/mainmenu.lua:818
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:855
msgid "Settings"
msgstr "Indstillinger"
#: builtin/mainmenu.lua:856
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:863
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:865
msgid "Credits"
msgstr "Skabt af"
#: builtin/mainmenu.lua:885
msgid "CLIENT" msgid "CLIENT"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:886 #: builtin/mainmenu.lua:819
#, fuzzy #, fuzzy
msgid "Favorites:" msgid "Favorites:"
msgstr "Vis favoritter" msgstr "Vis favoritter"
#: builtin/mainmenu.lua:887 #: builtin/mainmenu.lua:820
msgid "Address/Port" msgid "Address/Port"
msgstr "Adresse/port" msgstr "Adresse/port"
#: builtin/mainmenu.lua:888 #: builtin/mainmenu.lua:821
msgid "Name/Password" msgid "Name/Password"
msgstr "Navn/kodeord" msgstr "Navn/kodeord"
#: builtin/mainmenu.lua:891 #: builtin/mainmenu.lua:824
msgid "Public Serverlist" msgid "Public Serverlist"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:896 builtin/mainmenu.lua:941 builtin/mainmenu.lua:1004 #: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: builtin/modmgr.lua:271 src/keycode.cpp:229 #: src/keycode.cpp:229
msgid "Delete" msgid "Delete"
msgstr "Slet" msgstr "Slet"
#: builtin/mainmenu.lua:900 #: builtin/mainmenu.lua:833
msgid "Connect" msgid "Connect"
msgstr "Forbind" msgstr "Forbind"
#: builtin/mainmenu.lua:942 builtin/mainmenu.lua:1005 #: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New" msgid "New"
msgstr "Ny" msgstr "Ny"
#: builtin/mainmenu.lua:943 builtin/mainmenu.lua:1006 #: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure" msgid "Configure"
msgstr "Konfigurér" msgstr "Konfigurér"
#: builtin/mainmenu.lua:944 #: builtin/mainmenu.lua:877
#, fuzzy #, fuzzy
msgid "Start Game" msgid "Start Game"
msgstr "Start spil / Forbind" msgstr "Start spil / Forbind"
#: builtin/mainmenu.lua:945 builtin/mainmenu.lua:1008 #: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:" msgid "Select World:"
msgstr "Vælg verden:" msgstr "Vælg verden:"
#: builtin/mainmenu.lua:946 #: builtin/mainmenu.lua:879
msgid "START SERVER" msgid "START SERVER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:947 builtin/mainmenu.lua:1010 #: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode" msgid "Creative Mode"
msgstr "Kreativ tilstand" msgstr "Kreativ tilstand"
#: builtin/mainmenu.lua:949 builtin/mainmenu.lua:1012 #: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage" msgid "Enable Damage"
msgstr "Aktivér skade" msgstr "Aktivér skade"
#: builtin/mainmenu.lua:951 #: builtin/mainmenu.lua:884
#, fuzzy #, fuzzy
msgid "Public" msgid "Public"
msgstr "Vis offentlig" msgstr "Vis offentlig"
#: builtin/mainmenu.lua:953 #: builtin/mainmenu.lua:886
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:955 #: builtin/mainmenu.lua:888
#, fuzzy #, fuzzy
msgid "Password" msgid "Password"
msgstr "Gammelt kodeord" msgstr "Gammelt kodeord"
#: builtin/mainmenu.lua:956 #: builtin/mainmenu.lua:889
msgid "Server Port" msgid "Server Port"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:966 #: builtin/mainmenu.lua:899
msgid "SETTINGS" msgid "SETTINGS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:967 #: builtin/mainmenu.lua:900
msgid "Fancy trees" msgid "Fancy trees"
msgstr "\"Smarte\" træer" msgstr "\"Smarte\" træer"
#: builtin/mainmenu.lua:969 #: builtin/mainmenu.lua:902
msgid "Smooth Lighting" msgid "Smooth Lighting"
msgstr "Glat belysning" msgstr "Glat belysning"
#: builtin/mainmenu.lua:971 #: builtin/mainmenu.lua:904
msgid "3D Clouds" msgid "3D Clouds"
msgstr "3D skyer" msgstr "3D skyer"
#: builtin/mainmenu.lua:973 #: builtin/mainmenu.lua:906
#, fuzzy #, fuzzy
msgid "Opaque Water" msgid "Opaque Water"
msgstr "Opakt (uigennemsigtigt) vand" msgstr "Opakt (uigennemsigtigt) vand"
#: builtin/mainmenu.lua:976 #: builtin/mainmenu.lua:909
msgid "Mip-Mapping" msgid "Mip-Mapping"
msgstr "Mip-mapping" msgstr "Mip-mapping"
#: builtin/mainmenu.lua:978 #: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering" msgid "Anisotropic Filtering"
msgstr "Anisotropisk filtréring" msgstr "Anisotropisk filtréring"
#: builtin/mainmenu.lua:980 #: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering" msgid "Bi-Linear Filtering"
msgstr "Bi-lineær filtréring" msgstr "Bi-lineær filtréring"
#: builtin/mainmenu.lua:982 #: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering" msgid "Tri-Linear Filtering"
msgstr "Tri-lineær filtréring" msgstr "Tri-lineær filtréring"
#: builtin/mainmenu.lua:985 #: builtin/mainmenu.lua:918
msgid "Shaders" msgid "Shaders"
msgstr "Shadere" msgstr "Shadere"
#: builtin/mainmenu.lua:987 #: builtin/mainmenu.lua:920
msgid "Preload item visuals" msgid "Preload item visuals"
msgstr "For-indlæs elementernes grafik" msgstr "For-indlæs elementernes grafik"
#: builtin/mainmenu.lua:989 #: builtin/mainmenu.lua:922
msgid "Enable Particles" msgid "Enable Particles"
msgstr "Aktivér partikler" msgstr "Aktivér partikler"
#: builtin/mainmenu.lua:991 #: builtin/mainmenu.lua:924
msgid "Finite Liquid" msgid "Finite Liquid"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:994 #: builtin/mainmenu.lua:927
msgid "Change keys" msgid "Change keys"
msgstr "Skift bindinger" msgstr "Skift bindinger"
#: builtin/mainmenu.lua:1007 src/keycode.cpp:248 #: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play" msgid "Play"
msgstr "Afspil" msgstr "Afspil"
#: builtin/mainmenu.lua:1009 #: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER" msgid "SINGLE PLAYER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1022 #: builtin/mainmenu.lua:955
msgid "Select texture pack:" msgid "Select texture pack:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1023 #: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS" msgid "TEXTURE PACKS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1043 #: builtin/mainmenu.lua:976
msgid "No information available" msgid "No information available"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1071 #: builtin/mainmenu.lua:1005
msgid "Core Developers" msgid "Core Developers"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1082 #: builtin/mainmenu.lua:1020
msgid "Active Contributors" msgid "Active Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1092 #: builtin/mainmenu.lua:1028
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr "Enligspiller"
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr ""
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr "Indstillinger"
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr "Skabt af"
#: builtin/modmgr.lua:236 #: builtin/modmgr.lua:236
msgid "MODS" msgid "MODS"
msgstr "" msgstr ""
@ -309,114 +317,133 @@ msgstr ""
msgid "Installed Mods:" msgid "Installed Mods:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:243 builtin/modstore.lua:253 #: builtin/modmgr.lua:243
msgid "Install" msgid "Add mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:244 #: builtin/modmgr.lua:244
#, fuzzy msgid "Local install"
msgid "Download" msgstr ""
msgstr "Ned"
#: builtin/modmgr.lua:256 #: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
msgid "No mod description available"
msgstr ""
#: builtin/modmgr.lua:288
msgid "Mod information:"
msgstr ""
#: builtin/modmgr.lua:299
msgid "Rename" msgid "Rename"
msgstr "" msgstr ""
#: builtin/modmgr.lua:260 builtin/modmgr.lua:402 #: builtin/modmgr.lua:301
#, fuzzy msgid "Uninstall selected modpack"
msgid "Depends:" msgstr ""
msgstr "afhænger af:"
#: builtin/modmgr.lua:282 #: builtin/modmgr.lua:312
msgid "Uninstall selected mod"
msgstr ""
#: builtin/modmgr.lua:324
msgid "Rename Modpack:" msgid "Rename Modpack:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:287 src/keycode.cpp:227 #: builtin/modmgr.lua:329 src/keycode.cpp:227
msgid "Accept" msgid "Accept"
msgstr "Accepter" msgstr "Accepter"
#: builtin/modmgr.lua:381 #: builtin/modmgr.lua:423
#, fuzzy #, fuzzy
msgid "World:" msgid "World:"
msgstr "Vælg verden:" msgstr "Vælg verden:"
#: builtin/modmgr.lua:385 builtin/modmgr.lua:387 #: builtin/modmgr.lua:427 builtin/modmgr.lua:429
#, fuzzy #, fuzzy
msgid "Hide Game" msgid "Hide Game"
msgstr "Spil" msgstr "Spil"
#: builtin/modmgr.lua:391 builtin/modmgr.lua:393 #: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content" msgid "Hide mp content"
msgstr "" msgstr ""
#: builtin/modmgr.lua:400 #: builtin/modmgr.lua:442
msgid "Mod:" msgid "Mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:405 src/guiKeyChangeMenu.cpp:187 #: builtin/modmgr.lua:444
#, fuzzy
msgid "Depends:"
msgstr "afhænger af:"
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save" msgid "Save"
msgstr "Gem" msgstr "Gem"
#: builtin/modmgr.lua:422 #: builtin/modmgr.lua:464
#, fuzzy #, fuzzy
msgid "Enable MP" msgid "Enable MP"
msgstr "Aktivér alle" msgstr "Aktivér alle"
#: builtin/modmgr.lua:424 #: builtin/modmgr.lua:466
#, fuzzy #, fuzzy
msgid "Disable MP" msgid "Disable MP"
msgstr "Deaktivér alle" msgstr "Deaktivér alle"
#: builtin/modmgr.lua:428 builtin/modmgr.lua:430 #: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled" msgid "enabled"
msgstr "aktiveret" msgstr "aktiveret"
#: builtin/modmgr.lua:436 #: builtin/modmgr.lua:478
#, fuzzy #, fuzzy
msgid "Enable all" msgid "Enable all"
msgstr "Aktivér alle" msgstr "Aktivér alle"
#: builtin/modmgr.lua:551 #: builtin/modmgr.lua:577
#, fuzzy #, fuzzy
msgid "Select Mod File:" msgid "Select Mod File:"
msgstr "Vælg verden:" msgstr "Vælg verden:"
#: builtin/modmgr.lua:590 #: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\"" msgid "Install Mod: file: \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:591 #: builtin/modmgr.lua:617
msgid "" msgid ""
"\n" "\n"
"Install Mod: unsupported filetype \"$1\"" "Install Mod: unsupported filetype \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:612 #: builtin/modmgr.lua:638
#, fuzzy #, fuzzy
msgid "Failed to install $1 to $2" msgid "Failed to install $1 to $2"
msgstr "Mislykkedes i at initialisere verden" msgstr "Mislykkedes i at initialisere verden"
#: builtin/modmgr.lua:615 #: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1" msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:635 #: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1" msgid "Install Mod: unable to find real modname for: $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:824 #: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\"" msgid "Modmgr: failed to delete \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:828 #: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\"" msgid "Modmgr: invalid modpath \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:845 #: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?" msgid "Are you sure you want to delete \"$1\"?"
msgstr "" msgstr ""
#: builtin/modmgr.lua:847 #: builtin/modmgr.lua:878
msgid "No of course not!" msgid "No of course not!"
msgstr "" msgstr ""
@ -432,47 +459,51 @@ msgstr ""
msgid "re-Install" msgid "re-Install"
msgstr "" msgstr ""
#: src/client.cpp:2915 #: builtin/modstore.lua:253
msgid "Install"
msgstr ""
#: src/client.cpp:2917
msgid "Item textures..." msgid "Item textures..."
msgstr "" msgstr ""
#: src/game.cpp:939 #: src/game.cpp:940
msgid "Loading..." msgid "Loading..."
msgstr "" msgstr ""
#: src/game.cpp:999 #: src/game.cpp:1000
msgid "Creating server...." msgid "Creating server...."
msgstr "" msgstr ""
#: src/game.cpp:1015 #: src/game.cpp:1016
msgid "Creating client..." msgid "Creating client..."
msgstr "" msgstr ""
#: src/game.cpp:1024 #: src/game.cpp:1025
msgid "Resolving address..." msgid "Resolving address..."
msgstr "" msgstr ""
#: src/game.cpp:1121 #: src/game.cpp:1122
msgid "Connecting to server..." msgid "Connecting to server..."
msgstr "" msgstr ""
#: src/game.cpp:1218 #: src/game.cpp:1219
msgid "Item definitions..." msgid "Item definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1225 #: src/game.cpp:1226
msgid "Node definitions..." msgid "Node definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1232 #: src/game.cpp:1233
msgid "Media..." msgid "Media..."
msgstr "" msgstr ""
#: src/game.cpp:3405 #: src/game.cpp:3409
msgid "Shutting down stuff..." msgid "Shutting down stuff..."
msgstr "" msgstr ""
#: src/game.cpp:3435 #: src/game.cpp:3439
msgid "" msgid ""
"\n" "\n"
"Check debug.txt for details." "Check debug.txt for details."
@ -488,12 +519,8 @@ msgstr "Du døde."
msgid "Respawn" msgid "Respawn"
msgstr "Genopstå" msgstr "Genopstå"
#: src/guiFormSpecMenu.cpp:1569 #: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
msgid "Left click: Move all items, Right click: Move single item" #: src/guiTextInputMenu.cpp:139
msgstr "Venstre klik: flyt alle enheder. Højre klik: flyt en enkelt enhed"
#: src/guiFormSpecMenu.cpp:1595 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:140
msgid "Proceed" msgid "Proceed"
msgstr "Fortsæt" msgstr "Fortsæt"
@ -513,99 +540,99 @@ msgstr ""
"Tryk på \"hop\" hurtigt to gange for at skifte frem og tilbage mellem flyve-" "Tryk på \"hop\" hurtigt to gange for at skifte frem og tilbage mellem flyve-"
"tilstand" "tilstand"
#: src/guiKeyChangeMenu.cpp:290 #: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use" msgid "Key already in use"
msgstr "Tast allerede i brug" msgstr "Tast allerede i brug"
#: src/guiKeyChangeMenu.cpp:372 #: src/guiKeyChangeMenu.cpp:363
msgid "press key" msgid "press key"
msgstr "Tryk på en tast" msgstr "Tryk på en tast"
#: src/guiKeyChangeMenu.cpp:400 #: src/guiKeyChangeMenu.cpp:389
msgid "Forward" msgid "Forward"
msgstr "Fremad" msgstr "Fremad"
#: src/guiKeyChangeMenu.cpp:401 #: src/guiKeyChangeMenu.cpp:390
msgid "Backward" msgid "Backward"
msgstr "Baglæns" msgstr "Baglæns"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left" msgid "Left"
msgstr "Venstre" msgstr "Venstre"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right" msgid "Right"
msgstr "Højre" msgstr "Højre"
#: src/guiKeyChangeMenu.cpp:404 #: src/guiKeyChangeMenu.cpp:393
msgid "Use" msgid "Use"
msgstr "Brug" msgstr "Brug"
#: src/guiKeyChangeMenu.cpp:405 #: src/guiKeyChangeMenu.cpp:394
msgid "Jump" msgid "Jump"
msgstr "Hop" msgstr "Hop"
#: src/guiKeyChangeMenu.cpp:406 #: src/guiKeyChangeMenu.cpp:395
msgid "Sneak" msgid "Sneak"
msgstr "Snige" msgstr "Snige"
#: src/guiKeyChangeMenu.cpp:407 #: src/guiKeyChangeMenu.cpp:396
msgid "Drop" msgid "Drop"
msgstr "Slip" msgstr "Slip"
#: src/guiKeyChangeMenu.cpp:408 #: src/guiKeyChangeMenu.cpp:397
msgid "Inventory" msgid "Inventory"
msgstr "Beholdning" msgstr "Beholdning"
#: src/guiKeyChangeMenu.cpp:409 #: src/guiKeyChangeMenu.cpp:398
msgid "Chat" msgid "Chat"
msgstr "Snak" msgstr "Snak"
#: src/guiKeyChangeMenu.cpp:410 #: src/guiKeyChangeMenu.cpp:399
msgid "Command" msgid "Command"
msgstr "Kommando" msgstr "Kommando"
#: src/guiKeyChangeMenu.cpp:411 #: src/guiKeyChangeMenu.cpp:400
msgid "Console" msgid "Console"
msgstr "Konsol" msgstr "Konsol"
#: src/guiKeyChangeMenu.cpp:412 #: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly" msgid "Toggle fly"
msgstr "Omstil flyvning" msgstr "Omstil flyvning"
#: src/guiKeyChangeMenu.cpp:413 #: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast" msgid "Toggle fast"
msgstr "Omstil hurtig" msgstr "Omstil hurtig"
#: src/guiKeyChangeMenu.cpp:414 #: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip" msgid "Toggle noclip"
msgstr "Omstil fylde" msgstr "Omstil fylde"
#: src/guiKeyChangeMenu.cpp:415 #: src/guiKeyChangeMenu.cpp:404
msgid "Range select" msgid "Range select"
msgstr "Afstands vælg" msgstr "Afstands vælg"
#: src/guiKeyChangeMenu.cpp:416 #: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks" msgid "Print stacks"
msgstr "Udskriv stakke" msgstr "Udskriv stakke"
#: src/guiPasswordChange.cpp:107 #: src/guiPasswordChange.cpp:106
msgid "Old Password" msgid "Old Password"
msgstr "Gammelt kodeord" msgstr "Gammelt kodeord"
#: src/guiPasswordChange.cpp:125 #: src/guiPasswordChange.cpp:122
msgid "New Password" msgid "New Password"
msgstr "Nyt kodeord" msgstr "Nyt kodeord"
#: src/guiPasswordChange.cpp:142 #: src/guiPasswordChange.cpp:137
msgid "Confirm Password" msgid "Confirm Password"
msgstr "Bekræft kodeord" msgstr "Bekræft kodeord"
#: src/guiPasswordChange.cpp:160 #: src/guiPasswordChange.cpp:153
msgid "Change" msgid "Change"
msgstr "Skift" msgstr "Skift"
#: src/guiPasswordChange.cpp:169 #: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "Kodeordene er ikke ens!" msgstr "Kodeordene er ikke ens!"
@ -644,11 +671,11 @@ msgid ""
"- T: chat\n" "- T: chat\n"
msgstr "" msgstr ""
#: src/guiVolumeChange.cpp:108 #: src/guiVolumeChange.cpp:107
msgid "Sound Volume: " msgid "Sound Volume: "
msgstr "" msgstr ""
#: src/guiVolumeChange.cpp:122 #: src/guiVolumeChange.cpp:121
msgid "Exit" msgid "Exit"
msgstr "" msgstr ""
@ -943,77 +970,46 @@ msgstr "PA1"
msgid "Zoom" msgid "Zoom"
msgstr "Zoom" msgstr "Zoom"
#: src/main.cpp:1411 #: src/main.cpp:1472
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "" msgstr ""
#: src/main.cpp:1486 #: src/main.cpp:1547
msgid "Main Menu" msgid "Main Menu"
msgstr "Hovedmenu" msgstr "Hovedmenu"
#: src/main.cpp:1662 #: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do." msgid "No world selected and no address provided. Nothing to do."
msgstr "Ingen verden valgt og ingen adresse angivet. Ingen opgave at lave." msgstr "Ingen verden valgt og ingen adresse angivet. Ingen opgave at lave."
#: src/main.cpp:1670 #: src/main.cpp:1731
msgid "Could not find or load game \"" msgid "Could not find or load game \""
msgstr "Kunne ikke finde eller indlæse spil \"" msgstr "Kunne ikke finde eller indlæse spil \""
#: src/main.cpp:1684 #: src/main.cpp:1745
msgid "Invalid gamespec." msgid "Invalid gamespec."
msgstr "Ugyldig spilspecifikationer." msgstr "Ugyldig spilspecifikationer."
#: src/main.cpp:1729 #: src/main.cpp:1790
msgid "Connection error (timed out?)" msgid "Connection error (timed out?)"
msgstr "Forbindelses fejl (udløbelse af tidsfrist?)" msgstr "Forbindelses fejl (udløbelse af tidsfrist?)"
#~ msgid "is required by:" #~ msgid ""
#~ msgstr "er påkrævet af:" #~ "Warning: Some mods are not configured yet.\n"
#~ "They will be enabled by default when you save the configuration. "
#~ msgstr ""
#~ "Advarsel: nogle modifikationer er endnu ikke konfigureret.\n"
#~ "De vil blive aktiveret som standard når du gemmer konfigurationen. "
#~ msgid "Configuration saved. " #~ msgid ""
#~ msgstr "Konfiguration gemt. " #~ "Warning: Some configured mods are missing.\n"
#~ "Their setting will be removed when you save the configuration. "
#~ msgstr ""
#~ "Advarsel: nogle konfigurerede modifikationer mangler.\n"
#~ "Deres indstillinger vil blive fjernet når du gemmer konfigurationen. "
#~ msgid "Warning: Configuration not consistent. " #~ msgid "Delete map"
#~ msgstr "Advarsel: konfigurationen er ikke sammenhængende. " #~ msgstr "Slet mappen"
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Kan ikke skabe verden: navnet indeholder ugyldige bogstaver"
#~ msgid "Multiplayer"
#~ msgstr "Flerspiller"
#~ msgid "Advanced"
#~ msgstr "Avanceret"
#~ msgid "Show Public"
#~ msgstr "Vis offentlig"
#~ msgid "Show Favorites"
#~ msgstr "Vis favoritter"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Lad adresse-feltet være tomt for at starte en lokal server."
#~ msgid "Create world"
#~ msgstr "Skab verden"
#~ msgid "Address required."
#~ msgstr "Adresse påkrævet."
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Kan ikke slette verden: ingenting valgt"
#~ msgid "Files to be deleted"
#~ msgstr "Filer som slettes"
#~ msgid "Cannot create world: No games found"
#~ msgstr "Kan ikke skabe verden: ingen spil fundet"
#~ msgid "Cannot configure world: Nothing selected"
#~ msgstr "Kan ikke konfigurere verden: ingenting valgt"
#~ msgid "Failed to delete all world files"
#~ msgstr "Mislykkedes i at slette alle verdenens filer"
#~ msgid "" #~ msgid ""
#~ "Default Controls:\n" #~ "Default Controls:\n"
@ -1040,19 +1036,57 @@ msgstr "Forbindelses fejl (udløbelse af tidsfrist?)"
#~ "- ESC: denne menu\n" #~ "- ESC: denne menu\n"
#~ "- T: snak\n" #~ "- T: snak\n"
#~ msgid "Delete map" #~ msgid "Failed to delete all world files"
#~ msgstr "Slet mappen" #~ msgstr "Mislykkedes i at slette alle verdenens filer"
#~ msgid "" #~ msgid "Cannot configure world: Nothing selected"
#~ "Warning: Some configured mods are missing.\n" #~ msgstr "Kan ikke konfigurere verden: ingenting valgt"
#~ "Their setting will be removed when you save the configuration. "
#~ msgstr ""
#~ "Advarsel: nogle konfigurerede modifikationer mangler.\n"
#~ "Deres indstillinger vil blive fjernet når du gemmer konfigurationen. "
#~ msgid "" #~ msgid "Cannot create world: No games found"
#~ "Warning: Some mods are not configured yet.\n" #~ msgstr "Kan ikke skabe verden: ingen spil fundet"
#~ "They will be enabled by default when you save the configuration. "
#~ msgstr "" #~ msgid "Files to be deleted"
#~ "Advarsel: nogle modifikationer er endnu ikke konfigureret.\n" #~ msgstr "Filer som slettes"
#~ "De vil blive aktiveret som standard når du gemmer konfigurationen. "
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Kan ikke slette verden: ingenting valgt"
#~ msgid "Address required."
#~ msgstr "Adresse påkrævet."
#~ msgid "Create world"
#~ msgstr "Skab verden"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Lad adresse-feltet være tomt for at starte en lokal server."
#~ msgid "Show Favorites"
#~ msgstr "Vis favoritter"
#~ msgid "Show Public"
#~ msgstr "Vis offentlig"
#~ msgid "Advanced"
#~ msgstr "Avanceret"
#~ msgid "Multiplayer"
#~ msgstr "Flerspiller"
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Kan ikke skabe verden: navnet indeholder ugyldige bogstaver"
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "Advarsel: konfigurationen er ikke sammenhængende. "
#~ msgid "Configuration saved. "
#~ msgstr "Konfiguration gemt. "
#~ msgid "is required by:"
#~ msgstr "er påkrævet af:"
#~ msgid "Left click: Move all items, Right click: Move single item"
#~ msgstr "Venstre klik: flyt alle enheder. Højre klik: flyt en enkelt enhed"
#, fuzzy
#~ msgid "Download"
#~ msgstr "Ned"

View File

@ -7,9 +7,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 0.0.0\n" "Project-Id-Version: 0.0.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-07 22:01+0400\n" "POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: 2013-09-06 21:24+0200\n" "PO-Revision-Date: 2013-09-09 18:31+0200\n"
"Last-Translator: Block Men <nmuelll@web.de>\n" "Last-Translator: Pilz Adam <PilzAdam@gmx.de>\n"
"Language-Team: Deutsch <>\n" "Language-Team: Deutsch <>\n"
"Language: de\n" "Language: de\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -22,12 +22,12 @@ msgstr ""
msgid "Game Name" msgid "Game Name"
msgstr "Spielname" msgstr "Spielname"
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:301 #: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create" msgid "Create"
msgstr "Erstellen" msgstr "Erstellen"
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:302 builtin/modmgr.lua:289 #: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:406 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223 #: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
@ -39,35 +39,35 @@ msgstr "Gamemgr: Kann mod \"$1\" nicht in Spiel \"$2\" kopieren"
msgid "GAMES" msgid "GAMES"
msgstr "SPIELE" msgstr "SPIELE"
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:859 #: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
msgid "Games" msgid "Games"
msgstr "Spiele" msgstr "Spiele"
#: builtin/gamemgr.lua:233 #: builtin/gamemgr.lua:234
msgid "Mods:" msgid "Mods:"
msgstr "Mods:" msgstr "Mods:"
#: builtin/gamemgr.lua:234 #: builtin/gamemgr.lua:235
msgid "edit game" msgid "edit game"
msgstr "Spiel ändern" msgstr "Spiel ändern"
#: builtin/gamemgr.lua:237 #: builtin/gamemgr.lua:238
msgid "new game" msgid "new game"
msgstr "neues Spiel" msgstr "neues Spiel"
#: builtin/gamemgr.lua:247 #: builtin/gamemgr.lua:248
msgid "EDIT GAME" msgid "EDIT GAME"
msgstr "SPIEL ÄNDERN" msgstr "SPIEL ÄNDERN"
#: builtin/gamemgr.lua:267 #: builtin/gamemgr.lua:269
msgid "Remove selected mod" msgid "Remove selected mod"
msgstr "Ausgewählte Mod löschen" msgstr "Ausgewählte Mod löschen"
#: builtin/gamemgr.lua:270 #: builtin/gamemgr.lua:272
msgid "<<-- Add mod" msgid "<<-- Add mod"
msgstr "<<-- Mod hinzufügen" msgstr "<<-- Mod hinzufügen"
#: builtin/mainmenu.lua:159 #: builtin/mainmenu.lua:158
msgid "Ok" msgid "Ok"
msgstr "Ok" msgstr "Ok"
@ -75,223 +75,231 @@ msgstr "Ok"
msgid "World name" msgid "World name"
msgstr "Weltname" msgstr "Weltname"
#: builtin/mainmenu.lua:298 #: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen" msgid "Mapgen"
msgstr "Weltgenerator" msgstr "Weltgenerator"
#: builtin/mainmenu.lua:300 #: builtin/mainmenu.lua:306
msgid "Game" msgid "Game"
msgstr "Spiel" msgstr "Spiel"
#: builtin/mainmenu.lua:314 #: builtin/mainmenu.lua:319
msgid "Delete World \"$1\"?" msgid "Delete World \"$1\"?"
msgstr "Welt \"$1\" löschen?" msgstr "Welt \"$1\" löschen?"
#: builtin/mainmenu.lua:315 builtin/modmgr.lua:846 #: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes" msgid "Yes"
msgstr "Ja" msgstr "Ja"
#: builtin/mainmenu.lua:316 #: builtin/mainmenu.lua:321
msgid "No" msgid "No"
msgstr "Nein" msgstr "Nein"
#: builtin/mainmenu.lua:384 #: builtin/mainmenu.lua:364
msgid "A world named \"$1\" already exists" msgid "A world named \"$1\" already exists"
msgstr "Eine Welt namens \"$1\" existiert bereits" msgstr "Eine Welt namens \"$1\" existiert bereits"
#: builtin/mainmenu.lua:399 #: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected" msgid "No worldname given or no game selected"
msgstr "Keine Weltname gegeben oder kein Spiel ausgewählt" msgstr "Keine Weltname gegeben oder kein Spiel ausgewählt"
#: builtin/mainmenu.lua:852 #: builtin/mainmenu.lua:650
msgid "Singleplayer" msgid "To enable shaders the OpenGL driver needs to be used."
msgstr "Einzelspieler" msgstr ""
#: builtin/mainmenu.lua:853 #: builtin/mainmenu.lua:818
msgid "Client"
msgstr "Client"
#: builtin/mainmenu.lua:854
msgid "Server"
msgstr "Server"
#: builtin/mainmenu.lua:855
msgid "Settings"
msgstr "Einstellungen"
#: builtin/mainmenu.lua:856
msgid "Texture Packs"
msgstr "Texturen Pakete"
#: builtin/mainmenu.lua:863
msgid "Mods"
msgstr "Mods"
#: builtin/mainmenu.lua:865
msgid "Credits"
msgstr "Credits"
#: builtin/mainmenu.lua:885
msgid "CLIENT" msgid "CLIENT"
msgstr "CLIENT" msgstr "CLIENT"
#: builtin/mainmenu.lua:886 #: builtin/mainmenu.lua:819
msgid "Favorites:" msgid "Favorites:"
msgstr "Favoriten:" msgstr "Favoriten:"
#: builtin/mainmenu.lua:887 #: builtin/mainmenu.lua:820
msgid "Address/Port" msgid "Address/Port"
msgstr "Adresse / Port" msgstr "Adresse / Port"
#: builtin/mainmenu.lua:888 #: builtin/mainmenu.lua:821
msgid "Name/Password" msgid "Name/Password"
msgstr "Name/Passwort" msgstr "Name/Passwort"
#: builtin/mainmenu.lua:891 #: builtin/mainmenu.lua:824
msgid "Public Serverlist" msgid "Public Serverlist"
msgstr "Öffentliche Serverliste" msgstr "Öffentliche Serverliste"
#: builtin/mainmenu.lua:896 builtin/mainmenu.lua:941 builtin/mainmenu.lua:1004 #: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: builtin/modmgr.lua:271 src/keycode.cpp:229 #: src/keycode.cpp:229
msgid "Delete" msgid "Delete"
msgstr "Entfernen" msgstr "Entfernen"
#: builtin/mainmenu.lua:900 #: builtin/mainmenu.lua:833
msgid "Connect" msgid "Connect"
msgstr "Verbinden" msgstr "Verbinden"
#: builtin/mainmenu.lua:942 builtin/mainmenu.lua:1005 #: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New" msgid "New"
msgstr "Neu" msgstr "Neu"
#: builtin/mainmenu.lua:943 builtin/mainmenu.lua:1006 #: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure" msgid "Configure"
msgstr "Konfigurieren" msgstr "Konfigurieren"
#: builtin/mainmenu.lua:944 #: builtin/mainmenu.lua:877
msgid "Start Game" msgid "Start Game"
msgstr "Spiel starten" msgstr "Spiel starten"
#: builtin/mainmenu.lua:945 builtin/mainmenu.lua:1008 #: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:" msgid "Select World:"
msgstr "Welt wählen:" msgstr "Welt wählen:"
#: builtin/mainmenu.lua:946 #: builtin/mainmenu.lua:879
msgid "START SERVER" msgid "START SERVER"
msgstr "SERVER STARTEN" msgstr "SERVER STARTEN"
#: builtin/mainmenu.lua:947 builtin/mainmenu.lua:1010 #: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode" msgid "Creative Mode"
msgstr "Kreativitätsmodus" msgstr "Kreativitätsmodus"
#: builtin/mainmenu.lua:949 builtin/mainmenu.lua:1012 #: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage" msgid "Enable Damage"
msgstr "Schaden einschalten" msgstr "Schaden einschalten"
#: builtin/mainmenu.lua:951 #: builtin/mainmenu.lua:884
msgid "Public" msgid "Public"
msgstr "Öffentlich" msgstr "Öffentlich"
#: builtin/mainmenu.lua:953 #: builtin/mainmenu.lua:886
msgid "Name" msgid "Name"
msgstr "Name" msgstr "Name"
#: builtin/mainmenu.lua:955 #: builtin/mainmenu.lua:888
msgid "Password" msgid "Password"
msgstr "Passwort" msgstr "Passwort"
#: builtin/mainmenu.lua:956 #: builtin/mainmenu.lua:889
msgid "Server Port" msgid "Server Port"
msgstr "Server Port" msgstr "Server Port"
#: builtin/mainmenu.lua:966 #: builtin/mainmenu.lua:899
msgid "SETTINGS" msgid "SETTINGS"
msgstr "EINSTELLUNGEN" msgstr "EINSTELLUNGEN"
#: builtin/mainmenu.lua:967 #: builtin/mainmenu.lua:900
msgid "Fancy trees" msgid "Fancy trees"
msgstr "Schöne Bäume" msgstr "Schöne Bäume"
#: builtin/mainmenu.lua:969 #: builtin/mainmenu.lua:902
msgid "Smooth Lighting" msgid "Smooth Lighting"
msgstr "Besseres Licht" msgstr "Besseres Licht"
#: builtin/mainmenu.lua:971 #: builtin/mainmenu.lua:904
msgid "3D Clouds" msgid "3D Clouds"
msgstr "3D Wolken" msgstr "3D Wolken"
#: builtin/mainmenu.lua:973 #: builtin/mainmenu.lua:906
msgid "Opaque Water" msgid "Opaque Water"
msgstr "Undurchs. Wasser" msgstr "Undurchs. Wasser"
#: builtin/mainmenu.lua:976 #: builtin/mainmenu.lua:909
msgid "Mip-Mapping" msgid "Mip-Mapping"
msgstr "Mip-Mapping" msgstr "Mip-Mapping"
#: builtin/mainmenu.lua:978 #: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering" msgid "Anisotropic Filtering"
msgstr "Anisotroper Filter" msgstr "Anisotroper Filter"
#: builtin/mainmenu.lua:980 #: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering" msgid "Bi-Linear Filtering"
msgstr "Bi-Linearer Filter" msgstr "Bi-Linearer Filter"
#: builtin/mainmenu.lua:982 #: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering" msgid "Tri-Linear Filtering"
msgstr "Tri-Linearer Filter" msgstr "Tri-Linearer Filter"
#: builtin/mainmenu.lua:985 #: builtin/mainmenu.lua:918
msgid "Shaders" msgid "Shaders"
msgstr "Shader" msgstr "Shader"
#: builtin/mainmenu.lua:987 #: builtin/mainmenu.lua:920
msgid "Preload item visuals" msgid "Preload item visuals"
msgstr "Lade Inventarbilder vor" msgstr "Lade Inventarbilder vor"
#: builtin/mainmenu.lua:989 #: builtin/mainmenu.lua:922
msgid "Enable Particles" msgid "Enable Particles"
msgstr "Aktiviere Partikel" msgstr "Aktiviere Partikel"
#: builtin/mainmenu.lua:991 #: builtin/mainmenu.lua:924
msgid "Finite Liquid" msgid "Finite Liquid"
msgstr "Endliches Wasser" msgstr "Endliches Wasser"
#: builtin/mainmenu.lua:994 #: builtin/mainmenu.lua:927
msgid "Change keys" msgid "Change keys"
msgstr "Tasten ändern" msgstr "Tasten ändern"
#: builtin/mainmenu.lua:1007 src/keycode.cpp:248 #: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play" msgid "Play"
msgstr "Spielen" msgstr "Spielen"
#: builtin/mainmenu.lua:1009 #: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER" msgid "SINGLE PLAYER"
msgstr "EINZELSPIELER" msgstr "EINZELSPIELER"
#: builtin/mainmenu.lua:1022 #: builtin/mainmenu.lua:955
msgid "Select texture pack:" msgid "Select texture pack:"
msgstr "Texturen Paket auswählen:" msgstr "Texturen Paket auswählen:"
#: builtin/mainmenu.lua:1023 #: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS" msgid "TEXTURE PACKS"
msgstr "TEXTUREN PAKETE" msgstr "TEXTUREN PAKETE"
#: builtin/mainmenu.lua:1043 #: builtin/mainmenu.lua:976
msgid "No information available" msgid "No information available"
msgstr "Keine Informationen vorhanden" msgstr "Keine Informationen vorhanden"
#: builtin/mainmenu.lua:1071 #: builtin/mainmenu.lua:1005
msgid "Core Developers" msgid "Core Developers"
msgstr "Core Entwickler" msgstr "Core Entwickler"
#: builtin/mainmenu.lua:1082 #: builtin/mainmenu.lua:1020
msgid "Active Contributors" msgid "Active Contributors"
msgstr "Aktive Mitwirkende" msgstr "Aktive Mitwirkende"
#: builtin/mainmenu.lua:1092 #: builtin/mainmenu.lua:1028
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "Frühere Mitwirkende" msgstr "Frühere Mitwirkende"
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr "Einzelspieler"
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr "Client"
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr "Server"
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr "Einstellungen"
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr "Texturen Pakete"
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr "Mods"
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr "Credits"
#: builtin/modmgr.lua:236 #: builtin/modmgr.lua:236
msgid "MODS" msgid "MODS"
msgstr "MODS" msgstr "MODS"
@ -300,75 +308,100 @@ msgstr "MODS"
msgid "Installed Mods:" msgid "Installed Mods:"
msgstr "Installierte Mods:" msgstr "Installierte Mods:"
#: builtin/modmgr.lua:243 builtin/modstore.lua:253 #: builtin/modmgr.lua:243
msgid "Install" #, fuzzy
msgstr "Installieren" msgid "Add mod:"
msgstr "<<-- Mod hinzufügen"
#: builtin/modmgr.lua:244 #: builtin/modmgr.lua:244
msgid "Download" #, fuzzy
msgstr "Runterladen" msgid "Local install"
msgstr "Installieren"
#: builtin/modmgr.lua:256 #: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
#, fuzzy
msgid "No mod description available"
msgstr "Keine Informationen vorhanden"
#: builtin/modmgr.lua:288
#, fuzzy
msgid "Mod information:"
msgstr "Keine Informationen vorhanden"
#: builtin/modmgr.lua:299
msgid "Rename" msgid "Rename"
msgstr "Umbenennen" msgstr "Umbenennen"
#: builtin/modmgr.lua:260 builtin/modmgr.lua:402 #: builtin/modmgr.lua:301
msgid "Depends:" msgid "Uninstall selected modpack"
msgstr "Abhängig von:" msgstr ""
#: builtin/modmgr.lua:282 #: builtin/modmgr.lua:312
#, fuzzy
msgid "Uninstall selected mod"
msgstr "Ausgewählte Mod löschen"
#: builtin/modmgr.lua:324
msgid "Rename Modpack:" msgid "Rename Modpack:"
msgstr "Modpack umbenennen:" msgstr "Modpack umbenennen:"
#: builtin/modmgr.lua:287 src/keycode.cpp:227 #: builtin/modmgr.lua:329 src/keycode.cpp:227
msgid "Accept" msgid "Accept"
msgstr "Annehmen" msgstr "Annehmen"
#: builtin/modmgr.lua:381 #: builtin/modmgr.lua:423
msgid "World:" msgid "World:"
msgstr "Welt:" msgstr "Welt:"
#: builtin/modmgr.lua:385 builtin/modmgr.lua:387 #: builtin/modmgr.lua:427 builtin/modmgr.lua:429
msgid "Hide Game" msgid "Hide Game"
msgstr "Spiel verstecken" msgstr "Spiel verstecken"
#: builtin/modmgr.lua:391 builtin/modmgr.lua:393 #: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content" msgid "Hide mp content"
msgstr "MP mods verstecken" msgstr "MP mods verstecken"
#: builtin/modmgr.lua:400 #: builtin/modmgr.lua:442
msgid "Mod:" msgid "Mod:"
msgstr "Mod:" msgstr "Mod:"
#: builtin/modmgr.lua:405 src/guiKeyChangeMenu.cpp:187 #: builtin/modmgr.lua:444
msgid "Depends:"
msgstr "Abhängig von:"
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save" msgid "Save"
msgstr "Speichern" msgstr "Speichern"
#: builtin/modmgr.lua:422 #: builtin/modmgr.lua:464
msgid "Enable MP" msgid "Enable MP"
msgstr "MP aktivieren" msgstr "MP aktivieren"
#: builtin/modmgr.lua:424 #: builtin/modmgr.lua:466
msgid "Disable MP" msgid "Disable MP"
msgstr "MP deaktivieren" msgstr "MP deaktivieren"
#: builtin/modmgr.lua:428 builtin/modmgr.lua:430 #: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled" msgid "enabled"
msgstr "Aktiviert" msgstr "Aktiviert"
#: builtin/modmgr.lua:436 #: builtin/modmgr.lua:478
msgid "Enable all" msgid "Enable all"
msgstr "Alle an" msgstr "Alle an"
#: builtin/modmgr.lua:551 #: builtin/modmgr.lua:577
msgid "Select Mod File:" msgid "Select Mod File:"
msgstr "Mod Datei auswählen:" msgstr "Mod Datei auswählen:"
#: builtin/modmgr.lua:590 #: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\"" msgid "Install Mod: file: \"$1\""
msgstr "Mod installieren: Datei: \"$1\"" msgstr "Mod installieren: Datei: \"$1\""
#: builtin/modmgr.lua:591 #: builtin/modmgr.lua:617
msgid "" msgid ""
"\n" "\n"
"Install Mod: unsupported filetype \"$1\"" "Install Mod: unsupported filetype \"$1\""
@ -376,31 +409,31 @@ msgstr ""
"\n" "\n"
"Mod installieren: Nicht unterstützter Dateityp \"$1\"" "Mod installieren: Nicht unterstützter Dateityp \"$1\""
#: builtin/modmgr.lua:612 #: builtin/modmgr.lua:638
msgid "Failed to install $1 to $2" msgid "Failed to install $1 to $2"
msgstr "Fehler beim installieren von $1 zu $2" msgstr "Fehler beim installieren von $1 zu $2"
#: builtin/modmgr.lua:615 #: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1" msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "Mod installieren: Kann keinen Ordnernamen für Modpack $1 finden" msgstr "Mod installieren: Kann keinen Ordnernamen für Modpack $1 finden"
#: builtin/modmgr.lua:635 #: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1" msgid "Install Mod: unable to find real modname for: $1"
msgstr "Mod installieren: Kann echten Namen für $1 nicht finden" msgstr "Mod installieren: Kann echten Namen für $1 nicht finden"
#: builtin/modmgr.lua:824 #: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\"" msgid "Modmgr: failed to delete \"$1\""
msgstr "Modmgr: Fehler beim löschen von \"$1\"" msgstr "Modmgr: Fehler beim löschen von \"$1\""
#: builtin/modmgr.lua:828 #: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\"" msgid "Modmgr: invalid modpath \"$1\""
msgstr "Modmgr: Unzulässiger Modpfad \"$1\"" msgstr "Modmgr: Unzulässiger Modpfad \"$1\""
#: builtin/modmgr.lua:845 #: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?" msgid "Are you sure you want to delete \"$1\"?"
msgstr "\"$1\" wirklich löschen?" msgstr "\"$1\" wirklich löschen?"
#: builtin/modmgr.lua:847 #: builtin/modmgr.lua:878
msgid "No of course not!" msgid "No of course not!"
msgstr "Nein, natürlich nicht!" msgstr "Nein, natürlich nicht!"
@ -416,47 +449,51 @@ msgstr "Bewertung"
msgid "re-Install" msgid "re-Install"
msgstr "erneut installieren" msgstr "erneut installieren"
#: src/client.cpp:2915 #: builtin/modstore.lua:253
msgid "Install"
msgstr "Installieren"
#: src/client.cpp:2917
msgid "Item textures..." msgid "Item textures..."
msgstr "Inventarbilder..." msgstr "Inventarbilder..."
#: src/game.cpp:939 #: src/game.cpp:940
msgid "Loading..." msgid "Loading..."
msgstr "Lädt..." msgstr "Lädt..."
#: src/game.cpp:999 #: src/game.cpp:1000
msgid "Creating server...." msgid "Creating server...."
msgstr "Erstelle Server..." msgstr "Erstelle Server..."
#: src/game.cpp:1015 #: src/game.cpp:1016
msgid "Creating client..." msgid "Creating client..."
msgstr "Erstelle Client..." msgstr "Erstelle Client..."
#: src/game.cpp:1024 #: src/game.cpp:1025
msgid "Resolving address..." msgid "Resolving address..."
msgstr "Löse Adresse auf..." msgstr "Löse Adresse auf..."
#: src/game.cpp:1121 #: src/game.cpp:1122
msgid "Connecting to server..." msgid "Connecting to server..."
msgstr "Verbinde zum Server..." msgstr "Verbinde zum Server..."
#: src/game.cpp:1218 #: src/game.cpp:1219
msgid "Item definitions..." msgid "Item definitions..."
msgstr "Item Definitionen..." msgstr "Item Definitionen..."
#: src/game.cpp:1225 #: src/game.cpp:1226
msgid "Node definitions..." msgid "Node definitions..."
msgstr "Node Definitionen..." msgstr "Node Definitionen..."
#: src/game.cpp:1232 #: src/game.cpp:1233
msgid "Media..." msgid "Media..."
msgstr "Medien..." msgstr "Medien..."
#: src/game.cpp:3405 #: src/game.cpp:3409
msgid "Shutting down stuff..." msgid "Shutting down stuff..."
msgstr "Herunterfahren..." msgstr "Herunterfahren..."
#: src/game.cpp:3435 #: src/game.cpp:3439
msgid "" msgid ""
"\n" "\n"
"Check debug.txt for details." "Check debug.txt for details."
@ -472,12 +509,8 @@ msgstr "Sie sind gestorben."
msgid "Respawn" msgid "Respawn"
msgstr "Wiederbeleben" msgstr "Wiederbeleben"
#: src/guiFormSpecMenu.cpp:1569 #: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
msgid "Left click: Move all items, Right click: Move single item" #: src/guiTextInputMenu.cpp:139
msgstr "Linksklick: Alle Items bewegen, Rechtsklick: Einzelnes Item bewegen"
#: src/guiFormSpecMenu.cpp:1595 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:140
msgid "Proceed" msgid "Proceed"
msgstr "Fortsetzen" msgstr "Fortsetzen"
@ -493,99 +526,99 @@ msgstr "\"Benutzen\" = herunterklettern"
msgid "Double tap \"jump\" to toggle fly" msgid "Double tap \"jump\" to toggle fly"
msgstr "Doppelt \"springen\" zum fliegen" msgstr "Doppelt \"springen\" zum fliegen"
#: src/guiKeyChangeMenu.cpp:290 #: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use" msgid "Key already in use"
msgstr "Taste bereits in Benutzung" msgstr "Taste bereits in Benutzung"
#: src/guiKeyChangeMenu.cpp:372 #: src/guiKeyChangeMenu.cpp:363
msgid "press key" msgid "press key"
msgstr "Taste drücken" msgstr "Taste drücken"
#: src/guiKeyChangeMenu.cpp:400 #: src/guiKeyChangeMenu.cpp:389
msgid "Forward" msgid "Forward"
msgstr "Vorwärts" msgstr "Vorwärts"
#: src/guiKeyChangeMenu.cpp:401 #: src/guiKeyChangeMenu.cpp:390
msgid "Backward" msgid "Backward"
msgstr "Rückwärts" msgstr "Rückwärts"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left" msgid "Left"
msgstr "Links" msgstr "Links"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right" msgid "Right"
msgstr "Rechts" msgstr "Rechts"
#: src/guiKeyChangeMenu.cpp:404 #: src/guiKeyChangeMenu.cpp:393
msgid "Use" msgid "Use"
msgstr "Benutzen" msgstr "Benutzen"
#: src/guiKeyChangeMenu.cpp:405 #: src/guiKeyChangeMenu.cpp:394
msgid "Jump" msgid "Jump"
msgstr "Springen" msgstr "Springen"
#: src/guiKeyChangeMenu.cpp:406 #: src/guiKeyChangeMenu.cpp:395
msgid "Sneak" msgid "Sneak"
msgstr "Schleichen" msgstr "Schleichen"
#: src/guiKeyChangeMenu.cpp:407 #: src/guiKeyChangeMenu.cpp:396
msgid "Drop" msgid "Drop"
msgstr "Wegwerfen" msgstr "Wegwerfen"
#: src/guiKeyChangeMenu.cpp:408 #: src/guiKeyChangeMenu.cpp:397
msgid "Inventory" msgid "Inventory"
msgstr "Inventar" msgstr "Inventar"
#: src/guiKeyChangeMenu.cpp:409 #: src/guiKeyChangeMenu.cpp:398
msgid "Chat" msgid "Chat"
msgstr "Chat" msgstr "Chat"
#: src/guiKeyChangeMenu.cpp:410 #: src/guiKeyChangeMenu.cpp:399
msgid "Command" msgid "Command"
msgstr "Befehl" msgstr "Befehl"
#: src/guiKeyChangeMenu.cpp:411 #: src/guiKeyChangeMenu.cpp:400
msgid "Console" msgid "Console"
msgstr "Konsole" msgstr "Konsole"
#: src/guiKeyChangeMenu.cpp:412 #: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly" msgid "Toggle fly"
msgstr "Fliegen umsch." msgstr "Fliegen umsch."
#: src/guiKeyChangeMenu.cpp:413 #: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast" msgid "Toggle fast"
msgstr "Speed umsch." msgstr "Speed umsch."
#: src/guiKeyChangeMenu.cpp:414 #: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip" msgid "Toggle noclip"
msgstr "Noclip umsch." msgstr "Noclip umsch."
#: src/guiKeyChangeMenu.cpp:415 #: src/guiKeyChangeMenu.cpp:404
msgid "Range select" msgid "Range select"
msgstr "Entfernung wählen" msgstr "Entfernung wählen"
#: src/guiKeyChangeMenu.cpp:416 #: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks" msgid "Print stacks"
msgstr "Stack ausgeben" msgstr "Stack ausgeben"
#: src/guiPasswordChange.cpp:107 #: src/guiPasswordChange.cpp:106
msgid "Old Password" msgid "Old Password"
msgstr "Altes Passwort" msgstr "Altes Passwort"
#: src/guiPasswordChange.cpp:125 #: src/guiPasswordChange.cpp:122
msgid "New Password" msgid "New Password"
msgstr "Neues Passwort" msgstr "Neues Passwort"
#: src/guiPasswordChange.cpp:142 #: src/guiPasswordChange.cpp:137
msgid "Confirm Password" msgid "Confirm Password"
msgstr "Passwort wiederholen" msgstr "Passwort wiederholen"
#: src/guiPasswordChange.cpp:160 #: src/guiPasswordChange.cpp:153
msgid "Change" msgid "Change"
msgstr "Ändern" msgstr "Ändern"
#: src/guiPasswordChange.cpp:169 #: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "Passwörter passen nicht zusammen!" msgstr "Passwörter passen nicht zusammen!"
@ -635,11 +668,11 @@ msgstr ""
"- Mausrad: Item auswählen\n" "- Mausrad: Item auswählen\n"
"- T: Chat\n" "- T: Chat\n"
#: src/guiVolumeChange.cpp:108 #: src/guiVolumeChange.cpp:107
msgid "Sound Volume: " msgid "Sound Volume: "
msgstr "Sound Lautstärke: " msgstr "Sound Lautstärke: "
#: src/guiVolumeChange.cpp:122 #: src/guiVolumeChange.cpp:121
msgid "Exit" msgid "Exit"
msgstr "Zurück" msgstr "Zurück"
@ -931,77 +964,50 @@ msgstr "PA1"
msgid "Zoom" msgid "Zoom"
msgstr "Zoom" msgstr "Zoom"
#: src/main.cpp:1411 #: src/main.cpp:1472
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "" msgstr "no"
#: src/main.cpp:1486 #: src/main.cpp:1547
msgid "Main Menu" msgid "Main Menu"
msgstr "Hauptmenü" msgstr "Hauptmenü"
#: src/main.cpp:1662 #: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do." msgid "No world selected and no address provided. Nothing to do."
msgstr "Keine Welt ausgewählt und keine Adresse angegeben. Nichts zu tun." msgstr "Keine Welt ausgewählt und keine Adresse angegeben. Nichts zu tun."
#: src/main.cpp:1670 #: src/main.cpp:1731
msgid "Could not find or load game \"" msgid "Could not find or load game \""
msgstr "Kann Spiel nicht finden/laden \"" msgstr "Kann Spiel nicht finden/laden \""
#: src/main.cpp:1684 #: src/main.cpp:1745
msgid "Invalid gamespec." msgid "Invalid gamespec."
msgstr "Invalide Spielspezif." msgstr "Invalide Spielspezif."
#: src/main.cpp:1729 #: src/main.cpp:1790
msgid "Connection error (timed out?)" msgid "Connection error (timed out?)"
msgstr "Verbindungsfehler (Zeitüberschreitung?)" msgstr "Verbindungsfehler (Zeitüberschreitung?)"
#~ msgid "is required by:" #~ msgid ""
#~ msgstr "wird benötigt von:" #~ "Warning: Some mods are not configured yet.\n"
#~ "They will be enabled by default when you save the configuration. "
#~ msgstr ""
#~ "Warnung: Einige Mods sind noch nicht konfiguriert.\n"
#~ "Sie werden aktiviert wenn die Konfiguration gespeichert wird. "
#~ msgid "Configuration saved. " #~ msgid ""
#~ msgstr "Konfiguration gespeichert. " #~ "Warning: Some configured mods are missing.\n"
#~ "Their setting will be removed when you save the configuration. "
#~ msgstr ""
#~ "Warnung: Einige konfigurierte Mods fehlen.\n"
#~ "Mod Einstellungen werden gelöscht wenn die Konfiguration gespeichert "
#~ "wird. "
#~ msgid "Warning: Configuration not consistent. " #~ msgid "KEYBINDINGS"
#~ msgstr "Warnung: Konfiguration nicht konsistent. " #~ msgstr "TASTEN EINST."
#~ msgid "Cannot create world: Name contains invalid characters" #~ msgid "Delete map"
#~ msgstr "Kann Welt nicht erstellen: Name enthält ungültige Zeichen" #~ msgstr "Karte löschen"
#~ msgid "Multiplayer"
#~ msgstr "Mehrspieler"
#~ msgid "Advanced"
#~ msgstr "Erweitert"
#~ msgid "Show Public"
#~ msgstr "Zeige öffentliche"
#~ msgid "Show Favorites"
#~ msgstr "Zeige Favoriten"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Lasse die Adresse frei um einen eigenen Server zu starten."
#~ msgid "Create world"
#~ msgstr "Welt erstellen"
#~ msgid "Address required."
#~ msgstr "Adresse benötigt."
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Kann Welt nicht löchen: Nichts ausgewählt"
#~ msgid "Files to be deleted"
#~ msgstr "Zu löschende Dateien"
#~ msgid "Cannot create world: No games found"
#~ msgstr "Kann Welt nicht erstellen: Keine Spiele gefunden"
#~ msgid "Cannot configure world: Nothing selected"
#~ msgstr "Kann Welt nicht konfigurieren: Nichts ausgewählt"
#~ msgid "Failed to delete all world files"
#~ msgstr "Es konnten nicht alle Welt Dateien gelöscht werden"
#~ msgid "" #~ msgid ""
#~ "Default Controls:\n" #~ "Default Controls:\n"
@ -1027,23 +1033,56 @@ msgstr "Verbindungsfehler (Zeitüberschreitung?)"
#~ "- I: Inventar\n" #~ "- I: Inventar\n"
#~ "- T: Chat\n" #~ "- T: Chat\n"
#~ msgid "Delete map" #~ msgid "Failed to delete all world files"
#~ msgstr "Karte löschen" #~ msgstr "Es konnten nicht alle Welt Dateien gelöscht werden"
#~ msgid "KEYBINDINGS" #~ msgid "Cannot configure world: Nothing selected"
#~ msgstr "TASTEN EINST." #~ msgstr "Kann Welt nicht konfigurieren: Nichts ausgewählt"
#~ msgid "" #~ msgid "Cannot create world: No games found"
#~ "Warning: Some configured mods are missing.\n" #~ msgstr "Kann Welt nicht erstellen: Keine Spiele gefunden"
#~ "Their setting will be removed when you save the configuration. "
#~ msgstr ""
#~ "Warnung: Einige konfigurierte Mods fehlen.\n"
#~ "Mod Einstellungen werden gelöscht wenn die Konfiguration gespeichert "
#~ "wird. "
#~ msgid "" #~ msgid "Files to be deleted"
#~ "Warning: Some mods are not configured yet.\n" #~ msgstr "Zu löschende Dateien"
#~ "They will be enabled by default when you save the configuration. "
#~ msgstr "" #~ msgid "Cannot delete world: Nothing selected"
#~ "Warnung: Einige Mods sind noch nicht konfiguriert.\n" #~ msgstr "Kann Welt nicht löchen: Nichts ausgewählt"
#~ "Sie werden aktiviert wenn die Konfiguration gespeichert wird. "
#~ msgid "Address required."
#~ msgstr "Adresse benötigt."
#~ msgid "Create world"
#~ msgstr "Welt erstellen"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Lasse die Adresse frei um einen eigenen Server zu starten."
#~ msgid "Show Favorites"
#~ msgstr "Zeige Favoriten"
#~ msgid "Show Public"
#~ msgstr "Zeige öffentliche"
#~ msgid "Advanced"
#~ msgstr "Erweitert"
#~ msgid "Multiplayer"
#~ msgstr "Mehrspieler"
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Kann Welt nicht erstellen: Name enthält ungültige Zeichen"
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "Warnung: Konfiguration nicht konsistent. "
#~ msgid "Configuration saved. "
#~ msgstr "Konfiguration gespeichert. "
#~ msgid "is required by:"
#~ msgstr "wird benötigt von:"
#~ msgid "Left click: Move all items, Right click: Move single item"
#~ msgstr "Linksklick: Alle Items bewegen, Rechtsklick: Einzelnes Item bewegen"
#~ msgid "Download"
#~ msgstr "Runterladen"

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: minetest\n" "Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-07 22:01+0400\n" "POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: 2013-06-21 15:47+0200\n" "PO-Revision-Date: 2013-06-21 15:47+0200\n"
"Last-Translator: sfan5 <sfan5@live.de>\n" "Last-Translator: sfan5 <sfan5@live.de>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -23,12 +23,12 @@ msgstr ""
msgid "Game Name" msgid "Game Name"
msgstr "Mäng" msgstr "Mäng"
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:301 #: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create" msgid "Create"
msgstr "Loo" msgstr "Loo"
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:302 builtin/modmgr.lua:289 #: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:406 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223 #: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel" msgid "Cancel"
msgstr "Tühista" msgstr "Tühista"
@ -40,36 +40,36 @@ msgstr ""
msgid "GAMES" msgid "GAMES"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:859 #: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
#, fuzzy #, fuzzy
msgid "Games" msgid "Games"
msgstr "Mäng" msgstr "Mäng"
#: builtin/gamemgr.lua:233 #: builtin/gamemgr.lua:234
msgid "Mods:" msgid "Mods:"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:234 #: builtin/gamemgr.lua:235
msgid "edit game" msgid "edit game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:237 #: builtin/gamemgr.lua:238
msgid "new game" msgid "new game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:247 #: builtin/gamemgr.lua:248
msgid "EDIT GAME" msgid "EDIT GAME"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:267 #: builtin/gamemgr.lua:269
msgid "Remove selected mod" msgid "Remove selected mod"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:270 #: builtin/gamemgr.lua:272
msgid "<<-- Add mod" msgid "<<-- Add mod"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:159 #: builtin/mainmenu.lua:158
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
@ -77,230 +77,238 @@ msgstr ""
msgid "World name" msgid "World name"
msgstr "Maailma nimi" msgstr "Maailma nimi"
#: builtin/mainmenu.lua:298 #: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen" msgid "Mapgen"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:300 #: builtin/mainmenu.lua:306
msgid "Game" msgid "Game"
msgstr "Mäng" msgstr "Mäng"
#: builtin/mainmenu.lua:314 #: builtin/mainmenu.lua:319
#, fuzzy #, fuzzy
msgid "Delete World \"$1\"?" msgid "Delete World \"$1\"?"
msgstr "Kustuta maailm" msgstr "Kustuta maailm"
#: builtin/mainmenu.lua:315 builtin/modmgr.lua:846 #: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes" msgid "Yes"
msgstr "Jah" msgstr "Jah"
#: builtin/mainmenu.lua:316 #: builtin/mainmenu.lua:321
msgid "No" msgid "No"
msgstr "Ei" msgstr "Ei"
#: builtin/mainmenu.lua:384 #: builtin/mainmenu.lua:364
#, fuzzy #, fuzzy
msgid "A world named \"$1\" already exists" msgid "A world named \"$1\" already exists"
msgstr "Maailma loomine ebaõnnestus: Samanimeline maailm on juba olemas" msgstr "Maailma loomine ebaõnnestus: Samanimeline maailm on juba olemas"
#: builtin/mainmenu.lua:399 #: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected" msgid "No worldname given or no game selected"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:852 #: builtin/mainmenu.lua:650
msgid "Singleplayer" msgid "To enable shaders the OpenGL driver needs to be used."
msgstr "Üksikmäng"
#: builtin/mainmenu.lua:853
msgid "Client"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:854 #: builtin/mainmenu.lua:818
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:855
msgid "Settings"
msgstr "Sätted"
#: builtin/mainmenu.lua:856
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:863
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:865
msgid "Credits"
msgstr "Tänuavaldused"
#: builtin/mainmenu.lua:885
msgid "CLIENT" msgid "CLIENT"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:886 #: builtin/mainmenu.lua:819
msgid "Favorites:" msgid "Favorites:"
msgstr "Lemmikud:" msgstr "Lemmikud:"
#: builtin/mainmenu.lua:887 #: builtin/mainmenu.lua:820
msgid "Address/Port" msgid "Address/Port"
msgstr "IP/Port" msgstr "IP/Port"
#: builtin/mainmenu.lua:888 #: builtin/mainmenu.lua:821
msgid "Name/Password" msgid "Name/Password"
msgstr "Nimi/Parool" msgstr "Nimi/Parool"
#: builtin/mainmenu.lua:891 #: builtin/mainmenu.lua:824
#, fuzzy #, fuzzy
msgid "Public Serverlist" msgid "Public Serverlist"
msgstr "Avatud serverite nimekiri:" msgstr "Avatud serverite nimekiri:"
#: builtin/mainmenu.lua:896 builtin/mainmenu.lua:941 builtin/mainmenu.lua:1004 #: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: builtin/modmgr.lua:271 src/keycode.cpp:229 #: src/keycode.cpp:229
msgid "Delete" msgid "Delete"
msgstr "Kustuta" msgstr "Kustuta"
#: builtin/mainmenu.lua:900 #: builtin/mainmenu.lua:833
msgid "Connect" msgid "Connect"
msgstr "Liitu" msgstr "Liitu"
#: builtin/mainmenu.lua:942 builtin/mainmenu.lua:1005 #: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New" msgid "New"
msgstr "Uus" msgstr "Uus"
#: builtin/mainmenu.lua:943 builtin/mainmenu.lua:1006 #: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure" msgid "Configure"
msgstr "Konfigureeri" msgstr "Konfigureeri"
#: builtin/mainmenu.lua:944 #: builtin/mainmenu.lua:877
#, fuzzy #, fuzzy
msgid "Start Game" msgid "Start Game"
msgstr "Alusta mängu / Liitu" msgstr "Alusta mängu / Liitu"
#: builtin/mainmenu.lua:945 builtin/mainmenu.lua:1008 #: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:" msgid "Select World:"
msgstr "Vali maailm:" msgstr "Vali maailm:"
#: builtin/mainmenu.lua:946 #: builtin/mainmenu.lua:879
msgid "START SERVER" msgid "START SERVER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:947 builtin/mainmenu.lua:1010 #: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode" msgid "Creative Mode"
msgstr "Kujunduslik mängumood" msgstr "Kujunduslik mängumood"
#: builtin/mainmenu.lua:949 builtin/mainmenu.lua:1012 #: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage" msgid "Enable Damage"
msgstr "Lülita valu sisse" msgstr "Lülita valu sisse"
#: builtin/mainmenu.lua:951 #: builtin/mainmenu.lua:884
msgid "Public" msgid "Public"
msgstr "Avalik" msgstr "Avalik"
#: builtin/mainmenu.lua:953 #: builtin/mainmenu.lua:886
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:955 #: builtin/mainmenu.lua:888
#, fuzzy #, fuzzy
msgid "Password" msgid "Password"
msgstr "Vana parool" msgstr "Vana parool"
#: builtin/mainmenu.lua:956 #: builtin/mainmenu.lua:889
msgid "Server Port" msgid "Server Port"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:966 #: builtin/mainmenu.lua:899
msgid "SETTINGS" msgid "SETTINGS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:967 #: builtin/mainmenu.lua:900
msgid "Fancy trees" msgid "Fancy trees"
msgstr "Uhked puud" msgstr "Uhked puud"
#: builtin/mainmenu.lua:969 #: builtin/mainmenu.lua:902
msgid "Smooth Lighting" msgid "Smooth Lighting"
msgstr "Ilus valgustus" msgstr "Ilus valgustus"
#: builtin/mainmenu.lua:971 #: builtin/mainmenu.lua:904
msgid "3D Clouds" msgid "3D Clouds"
msgstr "3D pilved" msgstr "3D pilved"
#: builtin/mainmenu.lua:973 #: builtin/mainmenu.lua:906
#, fuzzy #, fuzzy
msgid "Opaque Water" msgid "Opaque Water"
msgstr "Läbipaistmatu vesi" msgstr "Läbipaistmatu vesi"
#: builtin/mainmenu.lua:976 #: builtin/mainmenu.lua:909
msgid "Mip-Mapping" msgid "Mip-Mapping"
msgstr "Väga hea kvaliteet" msgstr "Väga hea kvaliteet"
#: builtin/mainmenu.lua:978 #: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering" msgid "Anisotropic Filtering"
msgstr "Anisotroopne Filtreerimine" msgstr "Anisotroopne Filtreerimine"
#: builtin/mainmenu.lua:980 #: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering" msgid "Bi-Linear Filtering"
msgstr "Bi-lineaarsed Filtreerimine" msgstr "Bi-lineaarsed Filtreerimine"
#: builtin/mainmenu.lua:982 #: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering" msgid "Tri-Linear Filtering"
msgstr "Tri-Linear Filtreerimine" msgstr "Tri-Linear Filtreerimine"
#: builtin/mainmenu.lua:985 #: builtin/mainmenu.lua:918
msgid "Shaders" msgid "Shaders"
msgstr "Varjutajad" msgstr "Varjutajad"
#: builtin/mainmenu.lua:987 #: builtin/mainmenu.lua:920
msgid "Preload item visuals" msgid "Preload item visuals"
msgstr "Lae asjade visuaale" msgstr "Lae asjade visuaale"
#: builtin/mainmenu.lua:989 #: builtin/mainmenu.lua:922
msgid "Enable Particles" msgid "Enable Particles"
msgstr "Lülita osakesed sisse" msgstr "Lülita osakesed sisse"
#: builtin/mainmenu.lua:991 #: builtin/mainmenu.lua:924
#, fuzzy #, fuzzy
msgid "Finite Liquid" msgid "Finite Liquid"
msgstr "Löppev vedelik" msgstr "Löppev vedelik"
#: builtin/mainmenu.lua:994 #: builtin/mainmenu.lua:927
msgid "Change keys" msgid "Change keys"
msgstr "Vaheta nuppe" msgstr "Vaheta nuppe"
#: builtin/mainmenu.lua:1007 src/keycode.cpp:248 #: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play" msgid "Play"
msgstr "Mängi" msgstr "Mängi"
#: builtin/mainmenu.lua:1009 #: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER" msgid "SINGLE PLAYER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1022 #: builtin/mainmenu.lua:955
msgid "Select texture pack:" msgid "Select texture pack:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1023 #: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS" msgid "TEXTURE PACKS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1043 #: builtin/mainmenu.lua:976
msgid "No information available" msgid "No information available"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1071 #: builtin/mainmenu.lua:1005
msgid "Core Developers" msgid "Core Developers"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1082 #: builtin/mainmenu.lua:1020
msgid "Active Contributors" msgid "Active Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1092 #: builtin/mainmenu.lua:1028
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr "Üksikmäng"
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr ""
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr "Sätted"
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr "Tänuavaldused"
#: builtin/modmgr.lua:236 #: builtin/modmgr.lua:236
msgid "MODS" msgid "MODS"
msgstr "" msgstr ""
@ -309,114 +317,133 @@ msgstr ""
msgid "Installed Mods:" msgid "Installed Mods:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:243 builtin/modstore.lua:253 #: builtin/modmgr.lua:243
msgid "Install" msgid "Add mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:244 #: builtin/modmgr.lua:244
#, fuzzy msgid "Local install"
msgid "Download" msgstr ""
msgstr "Alla"
#: builtin/modmgr.lua:256 #: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
msgid "No mod description available"
msgstr ""
#: builtin/modmgr.lua:288
msgid "Mod information:"
msgstr ""
#: builtin/modmgr.lua:299
msgid "Rename" msgid "Rename"
msgstr "" msgstr ""
#: builtin/modmgr.lua:260 builtin/modmgr.lua:402 #: builtin/modmgr.lua:301
#, fuzzy msgid "Uninstall selected modpack"
msgid "Depends:" msgstr ""
msgstr "Vajab:"
#: builtin/modmgr.lua:282 #: builtin/modmgr.lua:312
msgid "Uninstall selected mod"
msgstr ""
#: builtin/modmgr.lua:324
msgid "Rename Modpack:" msgid "Rename Modpack:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:287 src/keycode.cpp:227 #: builtin/modmgr.lua:329 src/keycode.cpp:227
msgid "Accept" msgid "Accept"
msgstr "Nõustu" msgstr "Nõustu"
#: builtin/modmgr.lua:381 #: builtin/modmgr.lua:423
#, fuzzy #, fuzzy
msgid "World:" msgid "World:"
msgstr "Vali maailm:" msgstr "Vali maailm:"
#: builtin/modmgr.lua:385 builtin/modmgr.lua:387 #: builtin/modmgr.lua:427 builtin/modmgr.lua:429
#, fuzzy #, fuzzy
msgid "Hide Game" msgid "Hide Game"
msgstr "Mäng" msgstr "Mäng"
#: builtin/modmgr.lua:391 builtin/modmgr.lua:393 #: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content" msgid "Hide mp content"
msgstr "" msgstr ""
#: builtin/modmgr.lua:400 #: builtin/modmgr.lua:442
msgid "Mod:" msgid "Mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:405 src/guiKeyChangeMenu.cpp:187 #: builtin/modmgr.lua:444
#, fuzzy
msgid "Depends:"
msgstr "Vajab:"
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save" msgid "Save"
msgstr "Salvesta" msgstr "Salvesta"
#: builtin/modmgr.lua:422 #: builtin/modmgr.lua:464
#, fuzzy #, fuzzy
msgid "Enable MP" msgid "Enable MP"
msgstr "Lülita kõik sisse" msgstr "Lülita kõik sisse"
#: builtin/modmgr.lua:424 #: builtin/modmgr.lua:466
#, fuzzy #, fuzzy
msgid "Disable MP" msgid "Disable MP"
msgstr "Lülita kõik välja" msgstr "Lülita kõik välja"
#: builtin/modmgr.lua:428 builtin/modmgr.lua:430 #: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled" msgid "enabled"
msgstr "Sisse lülitatud" msgstr "Sisse lülitatud"
#: builtin/modmgr.lua:436 #: builtin/modmgr.lua:478
#, fuzzy #, fuzzy
msgid "Enable all" msgid "Enable all"
msgstr "Lülita kõik sisse" msgstr "Lülita kõik sisse"
#: builtin/modmgr.lua:551 #: builtin/modmgr.lua:577
#, fuzzy #, fuzzy
msgid "Select Mod File:" msgid "Select Mod File:"
msgstr "Vali maailm:" msgstr "Vali maailm:"
#: builtin/modmgr.lua:590 #: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\"" msgid "Install Mod: file: \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:591 #: builtin/modmgr.lua:617
msgid "" msgid ""
"\n" "\n"
"Install Mod: unsupported filetype \"$1\"" "Install Mod: unsupported filetype \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:612 #: builtin/modmgr.lua:638
#, fuzzy #, fuzzy
msgid "Failed to install $1 to $2" msgid "Failed to install $1 to $2"
msgstr "Maailma initsialiseerimine ebaõnnestus" msgstr "Maailma initsialiseerimine ebaõnnestus"
#: builtin/modmgr.lua:615 #: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1" msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:635 #: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1" msgid "Install Mod: unable to find real modname for: $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:824 #: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\"" msgid "Modmgr: failed to delete \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:828 #: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\"" msgid "Modmgr: invalid modpath \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:845 #: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?" msgid "Are you sure you want to delete \"$1\"?"
msgstr "" msgstr ""
#: builtin/modmgr.lua:847 #: builtin/modmgr.lua:878
msgid "No of course not!" msgid "No of course not!"
msgstr "" msgstr ""
@ -432,47 +459,51 @@ msgstr ""
msgid "re-Install" msgid "re-Install"
msgstr "" msgstr ""
#: src/client.cpp:2915 #: builtin/modstore.lua:253
msgid "Install"
msgstr ""
#: src/client.cpp:2917
msgid "Item textures..." msgid "Item textures..."
msgstr "" msgstr ""
#: src/game.cpp:939 #: src/game.cpp:940
msgid "Loading..." msgid "Loading..."
msgstr "" msgstr ""
#: src/game.cpp:999 #: src/game.cpp:1000
msgid "Creating server...." msgid "Creating server...."
msgstr "" msgstr ""
#: src/game.cpp:1015 #: src/game.cpp:1016
msgid "Creating client..." msgid "Creating client..."
msgstr "" msgstr ""
#: src/game.cpp:1024 #: src/game.cpp:1025
msgid "Resolving address..." msgid "Resolving address..."
msgstr "" msgstr ""
#: src/game.cpp:1121 #: src/game.cpp:1122
msgid "Connecting to server..." msgid "Connecting to server..."
msgstr "" msgstr ""
#: src/game.cpp:1218 #: src/game.cpp:1219
msgid "Item definitions..." msgid "Item definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1225 #: src/game.cpp:1226
msgid "Node definitions..." msgid "Node definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1232 #: src/game.cpp:1233
msgid "Media..." msgid "Media..."
msgstr "" msgstr ""
#: src/game.cpp:3405 #: src/game.cpp:3409
msgid "Shutting down stuff..." msgid "Shutting down stuff..."
msgstr "" msgstr ""
#: src/game.cpp:3435 #: src/game.cpp:3439
msgid "" msgid ""
"\n" "\n"
"Check debug.txt for details." "Check debug.txt for details."
@ -488,13 +519,8 @@ msgstr "Sa surid."
msgid "Respawn" msgid "Respawn"
msgstr "Ärka ellu" msgstr "Ärka ellu"
#: src/guiFormSpecMenu.cpp:1569 #: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
msgid "Left click: Move all items, Right click: Move single item" #: src/guiTextInputMenu.cpp:139
msgstr ""
"Vasak hiireklõps: Liiguta kõiki asju, Parem hiireklõps: Liiguta üksikut asja"
#: src/guiFormSpecMenu.cpp:1595 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:140
msgid "Proceed" msgid "Proceed"
msgstr "Jätka" msgstr "Jätka"
@ -512,99 +538,99 @@ msgstr "\"Tegevus\" = Roni alla"
msgid "Double tap \"jump\" to toggle fly" msgid "Double tap \"jump\" to toggle fly"
msgstr "Topeltklõpsa \"Hüppamist\" et sisse lülitada lendamine" msgstr "Topeltklõpsa \"Hüppamist\" et sisse lülitada lendamine"
#: src/guiKeyChangeMenu.cpp:290 #: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use" msgid "Key already in use"
msgstr "Nupp juba kasutuses" msgstr "Nupp juba kasutuses"
#: src/guiKeyChangeMenu.cpp:372 #: src/guiKeyChangeMenu.cpp:363
msgid "press key" msgid "press key"
msgstr "Vajuta nuppu" msgstr "Vajuta nuppu"
#: src/guiKeyChangeMenu.cpp:400 #: src/guiKeyChangeMenu.cpp:389
msgid "Forward" msgid "Forward"
msgstr "Edasi" msgstr "Edasi"
#: src/guiKeyChangeMenu.cpp:401 #: src/guiKeyChangeMenu.cpp:390
msgid "Backward" msgid "Backward"
msgstr "Tagasi" msgstr "Tagasi"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left" msgid "Left"
msgstr "Vasakule" msgstr "Vasakule"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right" msgid "Right"
msgstr "Paremale" msgstr "Paremale"
#: src/guiKeyChangeMenu.cpp:404 #: src/guiKeyChangeMenu.cpp:393
msgid "Use" msgid "Use"
msgstr "Tegevus" msgstr "Tegevus"
#: src/guiKeyChangeMenu.cpp:405 #: src/guiKeyChangeMenu.cpp:394
msgid "Jump" msgid "Jump"
msgstr "Hüppamine" msgstr "Hüppamine"
#: src/guiKeyChangeMenu.cpp:406 #: src/guiKeyChangeMenu.cpp:395
msgid "Sneak" msgid "Sneak"
msgstr "Hiilimine" msgstr "Hiilimine"
#: src/guiKeyChangeMenu.cpp:407 #: src/guiKeyChangeMenu.cpp:396
msgid "Drop" msgid "Drop"
msgstr "Viska maha" msgstr "Viska maha"
#: src/guiKeyChangeMenu.cpp:408 #: src/guiKeyChangeMenu.cpp:397
msgid "Inventory" msgid "Inventory"
msgstr "Seljakott" msgstr "Seljakott"
#: src/guiKeyChangeMenu.cpp:409 #: src/guiKeyChangeMenu.cpp:398
msgid "Chat" msgid "Chat"
msgstr "Jututuba" msgstr "Jututuba"
#: src/guiKeyChangeMenu.cpp:410 #: src/guiKeyChangeMenu.cpp:399
msgid "Command" msgid "Command"
msgstr "Käsklus" msgstr "Käsklus"
#: src/guiKeyChangeMenu.cpp:411 #: src/guiKeyChangeMenu.cpp:400
msgid "Console" msgid "Console"
msgstr "Konsool" msgstr "Konsool"
#: src/guiKeyChangeMenu.cpp:412 #: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly" msgid "Toggle fly"
msgstr "Lülita lendamine sisse" msgstr "Lülita lendamine sisse"
#: src/guiKeyChangeMenu.cpp:413 #: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast" msgid "Toggle fast"
msgstr "Lülita kiirus sisse" msgstr "Lülita kiirus sisse"
#: src/guiKeyChangeMenu.cpp:414 #: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip" msgid "Toggle noclip"
msgstr "Lülita läbi seinte minek sisse" msgstr "Lülita läbi seinte minek sisse"
#: src/guiKeyChangeMenu.cpp:415 #: src/guiKeyChangeMenu.cpp:404
msgid "Range select" msgid "Range select"
msgstr "Kauguse valik" msgstr "Kauguse valik"
#: src/guiKeyChangeMenu.cpp:416 #: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks" msgid "Print stacks"
msgstr "Prindi kogused" msgstr "Prindi kogused"
#: src/guiPasswordChange.cpp:107 #: src/guiPasswordChange.cpp:106
msgid "Old Password" msgid "Old Password"
msgstr "Vana parool" msgstr "Vana parool"
#: src/guiPasswordChange.cpp:125 #: src/guiPasswordChange.cpp:122
msgid "New Password" msgid "New Password"
msgstr "Uus parool" msgstr "Uus parool"
#: src/guiPasswordChange.cpp:142 #: src/guiPasswordChange.cpp:137
msgid "Confirm Password" msgid "Confirm Password"
msgstr "Kinnita parooli" msgstr "Kinnita parooli"
#: src/guiPasswordChange.cpp:160 #: src/guiPasswordChange.cpp:153
msgid "Change" msgid "Change"
msgstr "Muuda" msgstr "Muuda"
#: src/guiPasswordChange.cpp:169 #: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "Paroolid ei ole samad!" msgstr "Paroolid ei ole samad!"
@ -643,11 +669,11 @@ msgid ""
"- T: chat\n" "- T: chat\n"
msgstr "" msgstr ""
#: src/guiVolumeChange.cpp:108 #: src/guiVolumeChange.cpp:107
msgid "Sound Volume: " msgid "Sound Volume: "
msgstr "Hääle Volüüm: " msgstr "Hääle Volüüm: "
#: src/guiVolumeChange.cpp:122 #: src/guiVolumeChange.cpp:121
msgid "Exit" msgid "Exit"
msgstr "Välju" msgstr "Välju"
@ -939,77 +965,43 @@ msgstr "PA1"
msgid "Zoom" msgid "Zoom"
msgstr "Suumi" msgstr "Suumi"
#: src/main.cpp:1411 #: src/main.cpp:1472
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "" msgstr ""
#: src/main.cpp:1486 #: src/main.cpp:1547
msgid "Main Menu" msgid "Main Menu"
msgstr "Menüü" msgstr "Menüü"
#: src/main.cpp:1662 #: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do." msgid "No world selected and no address provided. Nothing to do."
msgstr "Pole valitud ei maailma ega IP aadressi. Pole midagi teha." msgstr "Pole valitud ei maailma ega IP aadressi. Pole midagi teha."
#: src/main.cpp:1670 #: src/main.cpp:1731
msgid "Could not find or load game \"" msgid "Could not find or load game \""
msgstr "Ei leia ega suuda jätkata mängu \"" msgstr "Ei leia ega suuda jätkata mängu \""
#: src/main.cpp:1684 #: src/main.cpp:1745
msgid "Invalid gamespec." msgid "Invalid gamespec."
msgstr "Vale mängu ID." msgstr "Vale mängu ID."
#: src/main.cpp:1729 #: src/main.cpp:1790
msgid "Connection error (timed out?)" msgid "Connection error (timed out?)"
msgstr "Ühenduse viga (Aeg otsas?)" msgstr "Ühenduse viga (Aeg otsas?)"
#~ msgid "is required by:" #~ msgid ""
#~ msgstr "Seda vajavad:" #~ "Warning: Some mods are not configured yet.\n"
#~ "They will be enabled by default when you save the configuration. "
#~ msgstr ""
#~ "Hoiatus: Mõned modifikatsioonid pole sätitud veel.\n"
#~ "Need lülitatakse sisse kohe pärast sätete salvestamist."
#~ msgid "Configuration saved. " #~ msgid ""
#~ msgstr "Konfiguratsioon salvestatud. " #~ "Warning: Some configured mods are missing.\n"
#~ "Their setting will be removed when you save the configuration. "
#~ msgid "Warning: Configuration not consistent. " #~ msgstr ""
#~ msgstr "Hoiatus: Konfiguratsioon pole kindel." #~ "Hoiatus: Mõned konfigureeritud modifikatsioonid on kaotsi läinud.\n"
#~ "Nende sätted kustutatakse kui salvestada konfiguratsioon."
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Maailma loomine ebaõnnestus: Nimes esineb keelatud tähti"
#~ msgid "Multiplayer"
#~ msgstr "Mitmikmäng"
#~ msgid "Advanced"
#~ msgstr "Arenenud sätted"
#~ msgid "Show Public"
#~ msgstr "Näita avalikke"
#~ msgid "Show Favorites"
#~ msgstr "Näita lemmikuid"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Jäta IP lahter tühjaks et alustada LAN serverit."
#~ msgid "Create world"
#~ msgstr "Loo maailm"
#~ msgid "Address required."
#~ msgstr "IP on vajalkik."
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Maailma kustutamine ebaõnnestus: Maailma pole valitud"
#~ msgid "Files to be deleted"
#~ msgstr "Failid mida kustutada"
#~ msgid "Cannot create world: No games found"
#~ msgstr "Maailma loomine ebaõnnestus: Mängu ei leitud"
#~ msgid "Cannot configure world: Nothing selected"
#~ msgstr "Maailma konfigureerimine ebaõnnestus: Pole midagi valitud"
#~ msgid "Failed to delete all world files"
#~ msgstr "Kõigi maailma failide kustutamine ebaõnnestus"
#~ msgid "" #~ msgid ""
#~ "Default Controls:\n" #~ "Default Controls:\n"
@ -1036,16 +1028,59 @@ msgstr "Ühenduse viga (Aeg otsas?)"
#~ "- ESC: Menüü\n" #~ "- ESC: Menüü\n"
#~ "- T: Jututupa\n" #~ "- T: Jututupa\n"
#~ msgid "" #~ msgid "Failed to delete all world files"
#~ "Warning: Some configured mods are missing.\n" #~ msgstr "Kõigi maailma failide kustutamine ebaõnnestus"
#~ "Their setting will be removed when you save the configuration. "
#~ msgstr ""
#~ "Hoiatus: Mõned konfigureeritud modifikatsioonid on kaotsi läinud.\n"
#~ "Nende sätted kustutatakse kui salvestada konfiguratsioon."
#~ msgid "" #~ msgid "Cannot configure world: Nothing selected"
#~ "Warning: Some mods are not configured yet.\n" #~ msgstr "Maailma konfigureerimine ebaõnnestus: Pole midagi valitud"
#~ "They will be enabled by default when you save the configuration. "
#~ msgid "Cannot create world: No games found"
#~ msgstr "Maailma loomine ebaõnnestus: Mängu ei leitud"
#~ msgid "Files to be deleted"
#~ msgstr "Failid mida kustutada"
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Maailma kustutamine ebaõnnestus: Maailma pole valitud"
#~ msgid "Address required."
#~ msgstr "IP on vajalkik."
#~ msgid "Create world"
#~ msgstr "Loo maailm"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Jäta IP lahter tühjaks et alustada LAN serverit."
#~ msgid "Show Favorites"
#~ msgstr "Näita lemmikuid"
#~ msgid "Show Public"
#~ msgstr "Näita avalikke"
#~ msgid "Advanced"
#~ msgstr "Arenenud sätted"
#~ msgid "Multiplayer"
#~ msgstr "Mitmikmäng"
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Maailma loomine ebaõnnestus: Nimes esineb keelatud tähti"
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "Hoiatus: Konfiguratsioon pole kindel."
#~ msgid "Configuration saved. "
#~ msgstr "Konfiguratsioon salvestatud. "
#~ msgid "is required by:"
#~ msgstr "Seda vajavad:"
#~ msgid "Left click: Move all items, Right click: Move single item"
#~ msgstr "" #~ msgstr ""
#~ "Hoiatus: Mõned modifikatsioonid pole sätitud veel.\n" #~ "Vasak hiireklõps: Liiguta kõiki asju, Parem hiireklõps: Liiguta üksikut "
#~ "Need lülitatakse sisse kohe pärast sätete salvestamist." #~ "asja"
#, fuzzy
#~ msgid "Download"
#~ msgstr "Alla"

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: minetest\n" "Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-07 22:01+0400\n" "POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: 2013-08-11 03:05+0200\n" "PO-Revision-Date: 2013-08-11 03:05+0200\n"
"Last-Translator: Sasikaa Lacikaa <sasikaa@gmail.com>\n" "Last-Translator: Sasikaa Lacikaa <sasikaa@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -23,12 +23,12 @@ msgstr ""
msgid "Game Name" msgid "Game Name"
msgstr "Játék" msgstr "Játék"
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:301 #: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create" msgid "Create"
msgstr "Létrehozás" msgstr "Létrehozás"
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:302 builtin/modmgr.lua:289 #: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:406 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223 #: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel" msgid "Cancel"
msgstr "Mégse" msgstr "Mégse"
@ -40,36 +40,36 @@ msgstr ""
msgid "GAMES" msgid "GAMES"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:859 #: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
#, fuzzy #, fuzzy
msgid "Games" msgid "Games"
msgstr "Játék" msgstr "Játék"
#: builtin/gamemgr.lua:233 #: builtin/gamemgr.lua:234
msgid "Mods:" msgid "Mods:"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:234 #: builtin/gamemgr.lua:235
msgid "edit game" msgid "edit game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:237 #: builtin/gamemgr.lua:238
msgid "new game" msgid "new game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:247 #: builtin/gamemgr.lua:248
msgid "EDIT GAME" msgid "EDIT GAME"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:267 #: builtin/gamemgr.lua:269
msgid "Remove selected mod" msgid "Remove selected mod"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:270 #: builtin/gamemgr.lua:272
msgid "<<-- Add mod" msgid "<<-- Add mod"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:159 #: builtin/mainmenu.lua:158
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
@ -77,230 +77,238 @@ msgstr ""
msgid "World name" msgid "World name"
msgstr "Világ neve" msgstr "Világ neve"
#: builtin/mainmenu.lua:298 #: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen" msgid "Mapgen"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:300 #: builtin/mainmenu.lua:306
msgid "Game" msgid "Game"
msgstr "Játék" msgstr "Játék"
#: builtin/mainmenu.lua:314 #: builtin/mainmenu.lua:319
#, fuzzy #, fuzzy
msgid "Delete World \"$1\"?" msgid "Delete World \"$1\"?"
msgstr "Világ törlése" msgstr "Világ törlése"
#: builtin/mainmenu.lua:315 builtin/modmgr.lua:846 #: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes" msgid "Yes"
msgstr "Igen" msgstr "Igen"
#: builtin/mainmenu.lua:316 #: builtin/mainmenu.lua:321
msgid "No" msgid "No"
msgstr "Nem" msgstr "Nem"
#: builtin/mainmenu.lua:384 #: builtin/mainmenu.lua:364
#, fuzzy #, fuzzy
msgid "A world named \"$1\" already exists" msgid "A world named \"$1\" already exists"
msgstr "Nem sikerült a viág létrehozása: A világ neve már használva van" msgstr "Nem sikerült a viág létrehozása: A világ neve már használva van"
#: builtin/mainmenu.lua:399 #: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected" msgid "No worldname given or no game selected"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:852 #: builtin/mainmenu.lua:650
msgid "Singleplayer" msgid "To enable shaders the OpenGL driver needs to be used."
msgstr "Egyjátékos mód"
#: builtin/mainmenu.lua:853
msgid "Client"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:854 #: builtin/mainmenu.lua:818
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:855
msgid "Settings"
msgstr "Beállítások"
#: builtin/mainmenu.lua:856
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:863
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:865
msgid "Credits"
msgstr "Stáblista"
#: builtin/mainmenu.lua:885
msgid "CLIENT" msgid "CLIENT"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:886 #: builtin/mainmenu.lua:819
msgid "Favorites:" msgid "Favorites:"
msgstr "Kedvencek:" msgstr "Kedvencek:"
#: builtin/mainmenu.lua:887 #: builtin/mainmenu.lua:820
msgid "Address/Port" msgid "Address/Port"
msgstr "Cím/Port" msgstr "Cím/Port"
#: builtin/mainmenu.lua:888 #: builtin/mainmenu.lua:821
msgid "Name/Password" msgid "Name/Password"
msgstr "Név/jelszó" msgstr "Név/jelszó"
#: builtin/mainmenu.lua:891 #: builtin/mainmenu.lua:824
#, fuzzy #, fuzzy
msgid "Public Serverlist" msgid "Public Serverlist"
msgstr "Publikus Szerver Lista:" msgstr "Publikus Szerver Lista:"
#: builtin/mainmenu.lua:896 builtin/mainmenu.lua:941 builtin/mainmenu.lua:1004 #: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: builtin/modmgr.lua:271 src/keycode.cpp:229 #: src/keycode.cpp:229
msgid "Delete" msgid "Delete"
msgstr "Törlés" msgstr "Törlés"
#: builtin/mainmenu.lua:900 #: builtin/mainmenu.lua:833
msgid "Connect" msgid "Connect"
msgstr "Csatlakozás" msgstr "Csatlakozás"
#: builtin/mainmenu.lua:942 builtin/mainmenu.lua:1005 #: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New" msgid "New"
msgstr "Új" msgstr "Új"
#: builtin/mainmenu.lua:943 builtin/mainmenu.lua:1006 #: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure" msgid "Configure"
msgstr "Beállítás" msgstr "Beállítás"
#: builtin/mainmenu.lua:944 #: builtin/mainmenu.lua:877
#, fuzzy #, fuzzy
msgid "Start Game" msgid "Start Game"
msgstr "Játék indítása / Csatlakozás" msgstr "Játék indítása / Csatlakozás"
#: builtin/mainmenu.lua:945 builtin/mainmenu.lua:1008 #: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:" msgid "Select World:"
msgstr "Világ kiválasztása:" msgstr "Világ kiválasztása:"
#: builtin/mainmenu.lua:946 #: builtin/mainmenu.lua:879
msgid "START SERVER" msgid "START SERVER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:947 builtin/mainmenu.lua:1010 #: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode" msgid "Creative Mode"
msgstr "Kreatív mód" msgstr "Kreatív mód"
#: builtin/mainmenu.lua:949 builtin/mainmenu.lua:1012 #: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage" msgid "Enable Damage"
msgstr "Sérülés engedélyezése" msgstr "Sérülés engedélyezése"
#: builtin/mainmenu.lua:951 #: builtin/mainmenu.lua:884
msgid "Public" msgid "Public"
msgstr "Publikus" msgstr "Publikus"
#: builtin/mainmenu.lua:953 #: builtin/mainmenu.lua:886
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:955 #: builtin/mainmenu.lua:888
#, fuzzy #, fuzzy
msgid "Password" msgid "Password"
msgstr "Régi jelszó" msgstr "Régi jelszó"
#: builtin/mainmenu.lua:956 #: builtin/mainmenu.lua:889
msgid "Server Port" msgid "Server Port"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:966 #: builtin/mainmenu.lua:899
msgid "SETTINGS" msgid "SETTINGS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:967 #: builtin/mainmenu.lua:900
msgid "Fancy trees" msgid "Fancy trees"
msgstr "Szép fák" msgstr "Szép fák"
#: builtin/mainmenu.lua:969 #: builtin/mainmenu.lua:902
msgid "Smooth Lighting" msgid "Smooth Lighting"
msgstr "Simított megvilágítás" msgstr "Simított megvilágítás"
#: builtin/mainmenu.lua:971 #: builtin/mainmenu.lua:904
msgid "3D Clouds" msgid "3D Clouds"
msgstr "3D Felhők" msgstr "3D Felhők"
#: builtin/mainmenu.lua:973 #: builtin/mainmenu.lua:906
#, fuzzy #, fuzzy
msgid "Opaque Water" msgid "Opaque Water"
msgstr "Átlátszó víz" msgstr "Átlátszó víz"
#: builtin/mainmenu.lua:976 #: builtin/mainmenu.lua:909
msgid "Mip-Mapping" msgid "Mip-Mapping"
msgstr "Mip-mapping" msgstr "Mip-mapping"
#: builtin/mainmenu.lua:978 #: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering" msgid "Anisotropic Filtering"
msgstr "Anzisztrópikus szűrés" msgstr "Anzisztrópikus szűrés"
#: builtin/mainmenu.lua:980 #: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering" msgid "Bi-Linear Filtering"
msgstr "Bi-Linear Szűrés" msgstr "Bi-Linear Szűrés"
#: builtin/mainmenu.lua:982 #: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering" msgid "Tri-Linear Filtering"
msgstr "Tri-Linear Szűrés" msgstr "Tri-Linear Szűrés"
#: builtin/mainmenu.lua:985 #: builtin/mainmenu.lua:918
msgid "Shaders" msgid "Shaders"
msgstr "Shaderek" msgstr "Shaderek"
#: builtin/mainmenu.lua:987 #: builtin/mainmenu.lua:920
msgid "Preload item visuals" msgid "Preload item visuals"
msgstr "Előretöltött tárgy láthatóság" msgstr "Előretöltött tárgy láthatóság"
#: builtin/mainmenu.lua:989 #: builtin/mainmenu.lua:922
msgid "Enable Particles" msgid "Enable Particles"
msgstr "Részecskék engedélyezése" msgstr "Részecskék engedélyezése"
#: builtin/mainmenu.lua:991 #: builtin/mainmenu.lua:924
#, fuzzy #, fuzzy
msgid "Finite Liquid" msgid "Finite Liquid"
msgstr "Végtelen folyadék" msgstr "Végtelen folyadék"
#: builtin/mainmenu.lua:994 #: builtin/mainmenu.lua:927
msgid "Change keys" msgid "Change keys"
msgstr "Gomb választása" msgstr "Gomb választása"
#: builtin/mainmenu.lua:1007 src/keycode.cpp:248 #: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play" msgid "Play"
msgstr "Játék" msgstr "Játék"
#: builtin/mainmenu.lua:1009 #: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER" msgid "SINGLE PLAYER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1022 #: builtin/mainmenu.lua:955
msgid "Select texture pack:" msgid "Select texture pack:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1023 #: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS" msgid "TEXTURE PACKS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1043 #: builtin/mainmenu.lua:976
msgid "No information available" msgid "No information available"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1071 #: builtin/mainmenu.lua:1005
msgid "Core Developers" msgid "Core Developers"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1082 #: builtin/mainmenu.lua:1020
msgid "Active Contributors" msgid "Active Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1092 #: builtin/mainmenu.lua:1028
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr "Egyjátékos mód"
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr ""
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr "Beállítások"
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr "Stáblista"
#: builtin/modmgr.lua:236 #: builtin/modmgr.lua:236
msgid "MODS" msgid "MODS"
msgstr "" msgstr ""
@ -309,114 +317,133 @@ msgstr ""
msgid "Installed Mods:" msgid "Installed Mods:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:243 builtin/modstore.lua:253 #: builtin/modmgr.lua:243
msgid "Install" msgid "Add mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:244 #: builtin/modmgr.lua:244
#, fuzzy msgid "Local install"
msgid "Download" msgstr ""
msgstr "Le"
#: builtin/modmgr.lua:256 #: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
msgid "No mod description available"
msgstr ""
#: builtin/modmgr.lua:288
msgid "Mod information:"
msgstr ""
#: builtin/modmgr.lua:299
msgid "Rename" msgid "Rename"
msgstr "" msgstr ""
#: builtin/modmgr.lua:260 builtin/modmgr.lua:402 #: builtin/modmgr.lua:301
#, fuzzy msgid "Uninstall selected modpack"
msgid "Depends:" msgstr ""
msgstr "Attól függ:"
#: builtin/modmgr.lua:282 #: builtin/modmgr.lua:312
msgid "Uninstall selected mod"
msgstr ""
#: builtin/modmgr.lua:324
msgid "Rename Modpack:" msgid "Rename Modpack:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:287 src/keycode.cpp:227 #: builtin/modmgr.lua:329 src/keycode.cpp:227
msgid "Accept" msgid "Accept"
msgstr "Elfogadva" msgstr "Elfogadva"
#: builtin/modmgr.lua:381 #: builtin/modmgr.lua:423
#, fuzzy #, fuzzy
msgid "World:" msgid "World:"
msgstr "Világ kiválasztása:" msgstr "Világ kiválasztása:"
#: builtin/modmgr.lua:385 builtin/modmgr.lua:387 #: builtin/modmgr.lua:427 builtin/modmgr.lua:429
#, fuzzy #, fuzzy
msgid "Hide Game" msgid "Hide Game"
msgstr "Játék" msgstr "Játék"
#: builtin/modmgr.lua:391 builtin/modmgr.lua:393 #: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content" msgid "Hide mp content"
msgstr "" msgstr ""
#: builtin/modmgr.lua:400 #: builtin/modmgr.lua:442
msgid "Mod:" msgid "Mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:405 src/guiKeyChangeMenu.cpp:187 #: builtin/modmgr.lua:444
#, fuzzy
msgid "Depends:"
msgstr "Attól függ:"
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save" msgid "Save"
msgstr "Mentés" msgstr "Mentés"
#: builtin/modmgr.lua:422 #: builtin/modmgr.lua:464
#, fuzzy #, fuzzy
msgid "Enable MP" msgid "Enable MP"
msgstr "Összes engedélyezve" msgstr "Összes engedélyezve"
#: builtin/modmgr.lua:424 #: builtin/modmgr.lua:466
#, fuzzy #, fuzzy
msgid "Disable MP" msgid "Disable MP"
msgstr "Összes tiltva" msgstr "Összes tiltva"
#: builtin/modmgr.lua:428 builtin/modmgr.lua:430 #: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled" msgid "enabled"
msgstr "Engedélyezve" msgstr "Engedélyezve"
#: builtin/modmgr.lua:436 #: builtin/modmgr.lua:478
#, fuzzy #, fuzzy
msgid "Enable all" msgid "Enable all"
msgstr "Összes engedélyezve" msgstr "Összes engedélyezve"
#: builtin/modmgr.lua:551 #: builtin/modmgr.lua:577
#, fuzzy #, fuzzy
msgid "Select Mod File:" msgid "Select Mod File:"
msgstr "Világ kiválasztása:" msgstr "Világ kiválasztása:"
#: builtin/modmgr.lua:590 #: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\"" msgid "Install Mod: file: \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:591 #: builtin/modmgr.lua:617
msgid "" msgid ""
"\n" "\n"
"Install Mod: unsupported filetype \"$1\"" "Install Mod: unsupported filetype \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:612 #: builtin/modmgr.lua:638
#, fuzzy #, fuzzy
msgid "Failed to install $1 to $2" msgid "Failed to install $1 to $2"
msgstr "A világ betöltése közben hiba" msgstr "A világ betöltése közben hiba"
#: builtin/modmgr.lua:615 #: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1" msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:635 #: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1" msgid "Install Mod: unable to find real modname for: $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:824 #: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\"" msgid "Modmgr: failed to delete \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:828 #: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\"" msgid "Modmgr: invalid modpath \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:845 #: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?" msgid "Are you sure you want to delete \"$1\"?"
msgstr "" msgstr ""
#: builtin/modmgr.lua:847 #: builtin/modmgr.lua:878
msgid "No of course not!" msgid "No of course not!"
msgstr "" msgstr ""
@ -432,47 +459,51 @@ msgstr ""
msgid "re-Install" msgid "re-Install"
msgstr "" msgstr ""
#: src/client.cpp:2915 #: builtin/modstore.lua:253
msgid "Install"
msgstr ""
#: src/client.cpp:2917
msgid "Item textures..." msgid "Item textures..."
msgstr "Tárgy textúrák..." msgstr "Tárgy textúrák..."
#: src/game.cpp:939 #: src/game.cpp:940
msgid "Loading..." msgid "Loading..."
msgstr "Betöltés..." msgstr "Betöltés..."
#: src/game.cpp:999 #: src/game.cpp:1000
msgid "Creating server...." msgid "Creating server...."
msgstr "Szerver létrehozása..." msgstr "Szerver létrehozása..."
#: src/game.cpp:1015 #: src/game.cpp:1016
msgid "Creating client..." msgid "Creating client..."
msgstr "Kliens létrehozása..." msgstr "Kliens létrehozása..."
#: src/game.cpp:1024 #: src/game.cpp:1025
msgid "Resolving address..." msgid "Resolving address..."
msgstr "Cím létrehozása..." msgstr "Cím létrehozása..."
#: src/game.cpp:1121 #: src/game.cpp:1122
msgid "Connecting to server..." msgid "Connecting to server..."
msgstr "Csatlakozás a szerverhez..." msgstr "Csatlakozás a szerverhez..."
#: src/game.cpp:1218 #: src/game.cpp:1219
msgid "Item definitions..." msgid "Item definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1225 #: src/game.cpp:1226
msgid "Node definitions..." msgid "Node definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1232 #: src/game.cpp:1233
msgid "Media..." msgid "Media..."
msgstr "" msgstr ""
#: src/game.cpp:3405 #: src/game.cpp:3409
msgid "Shutting down stuff..." msgid "Shutting down stuff..."
msgstr "Dolog leállítása..." msgstr "Dolog leállítása..."
#: src/game.cpp:3435 #: src/game.cpp:3439
msgid "" msgid ""
"\n" "\n"
"Check debug.txt for details." "Check debug.txt for details."
@ -486,12 +517,8 @@ msgstr "Meghaltál."
msgid "Respawn" msgid "Respawn"
msgstr "Újra éledés" msgstr "Újra éledés"
#: src/guiFormSpecMenu.cpp:1569 #: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
msgid "Left click: Move all items, Right click: Move single item" #: src/guiTextInputMenu.cpp:139
msgstr "Ball gomb: Tárgyak mozgatása, Jobb gomb: egy tárgyat mozgat"
#: src/guiFormSpecMenu.cpp:1595 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:140
msgid "Proceed" msgid "Proceed"
msgstr "Elfogadva" msgstr "Elfogadva"
@ -509,99 +536,99 @@ msgstr "\"Használat\" = Lemászás"
msgid "Double tap \"jump\" to toggle fly" msgid "Double tap \"jump\" to toggle fly"
msgstr "Duplán nyomd meg az \"ugrás\" gombot ahhoz hogy repülj" msgstr "Duplán nyomd meg az \"ugrás\" gombot ahhoz hogy repülj"
#: src/guiKeyChangeMenu.cpp:290 #: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use" msgid "Key already in use"
msgstr "A gomb már használatban van" msgstr "A gomb már használatban van"
#: src/guiKeyChangeMenu.cpp:372 #: src/guiKeyChangeMenu.cpp:363
msgid "press key" msgid "press key"
msgstr "Nyomj meg egy gombot" msgstr "Nyomj meg egy gombot"
#: src/guiKeyChangeMenu.cpp:400 #: src/guiKeyChangeMenu.cpp:389
msgid "Forward" msgid "Forward"
msgstr "Vissza" msgstr "Vissza"
#: src/guiKeyChangeMenu.cpp:401 #: src/guiKeyChangeMenu.cpp:390
msgid "Backward" msgid "Backward"
msgstr "Előre" msgstr "Előre"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left" msgid "Left"
msgstr "Bal" msgstr "Bal"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right" msgid "Right"
msgstr "Jobb" msgstr "Jobb"
#: src/guiKeyChangeMenu.cpp:404 #: src/guiKeyChangeMenu.cpp:393
msgid "Use" msgid "Use"
msgstr "Használni" msgstr "Használni"
#: src/guiKeyChangeMenu.cpp:405 #: src/guiKeyChangeMenu.cpp:394
msgid "Jump" msgid "Jump"
msgstr "Ugrás" msgstr "Ugrás"
#: src/guiKeyChangeMenu.cpp:406 #: src/guiKeyChangeMenu.cpp:395
msgid "Sneak" msgid "Sneak"
msgstr "Lopakodás" msgstr "Lopakodás"
#: src/guiKeyChangeMenu.cpp:407 #: src/guiKeyChangeMenu.cpp:396
msgid "Drop" msgid "Drop"
msgstr "Dobás" msgstr "Dobás"
#: src/guiKeyChangeMenu.cpp:408 #: src/guiKeyChangeMenu.cpp:397
msgid "Inventory" msgid "Inventory"
msgstr "Invertory" msgstr "Invertory"
#: src/guiKeyChangeMenu.cpp:409 #: src/guiKeyChangeMenu.cpp:398
msgid "Chat" msgid "Chat"
msgstr "Beszélgetés" msgstr "Beszélgetés"
#: src/guiKeyChangeMenu.cpp:410 #: src/guiKeyChangeMenu.cpp:399
msgid "Command" msgid "Command"
msgstr "Parancs" msgstr "Parancs"
#: src/guiKeyChangeMenu.cpp:411 #: src/guiKeyChangeMenu.cpp:400
msgid "Console" msgid "Console"
msgstr "Konzol" msgstr "Konzol"
#: src/guiKeyChangeMenu.cpp:412 #: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly" msgid "Toggle fly"
msgstr "Repülés bekapcsolása" msgstr "Repülés bekapcsolása"
#: src/guiKeyChangeMenu.cpp:413 #: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast" msgid "Toggle fast"
msgstr "Gyorsaság bekapcsolása" msgstr "Gyorsaság bekapcsolása"
#: src/guiKeyChangeMenu.cpp:414 #: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip" msgid "Toggle noclip"
msgstr "váltás noclip-re" msgstr "váltás noclip-re"
#: src/guiKeyChangeMenu.cpp:415 #: src/guiKeyChangeMenu.cpp:404
msgid "Range select" msgid "Range select"
msgstr "Távolság választása" msgstr "Távolság választása"
#: src/guiKeyChangeMenu.cpp:416 #: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks" msgid "Print stacks"
msgstr "Stacks nyomtatása" msgstr "Stacks nyomtatása"
#: src/guiPasswordChange.cpp:107 #: src/guiPasswordChange.cpp:106
msgid "Old Password" msgid "Old Password"
msgstr "Régi jelszó" msgstr "Régi jelszó"
#: src/guiPasswordChange.cpp:125 #: src/guiPasswordChange.cpp:122
msgid "New Password" msgid "New Password"
msgstr "Új jelszó" msgstr "Új jelszó"
#: src/guiPasswordChange.cpp:142 #: src/guiPasswordChange.cpp:137
msgid "Confirm Password" msgid "Confirm Password"
msgstr "Jelszó visszaigazolás" msgstr "Jelszó visszaigazolás"
#: src/guiPasswordChange.cpp:160 #: src/guiPasswordChange.cpp:153
msgid "Change" msgid "Change"
msgstr "Változtat" msgstr "Változtat"
#: src/guiPasswordChange.cpp:169 #: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "Nem eggyeznek a jelszavak!" msgstr "Nem eggyeznek a jelszavak!"
@ -651,11 +678,11 @@ msgstr ""
"- Egér görgő: Tárgyak kiválasztása\n" "- Egér görgő: Tárgyak kiválasztása\n"
"- T: Beszélgetés\n" "- T: Beszélgetés\n"
#: src/guiVolumeChange.cpp:108 #: src/guiVolumeChange.cpp:107
msgid "Sound Volume: " msgid "Sound Volume: "
msgstr "Hangerő: " msgstr "Hangerő: "
#: src/guiVolumeChange.cpp:122 #: src/guiVolumeChange.cpp:121
msgid "Exit" msgid "Exit"
msgstr "Kilépés" msgstr "Kilépés"
@ -947,74 +974,81 @@ msgstr "PA11"
msgid "Zoom" msgid "Zoom"
msgstr "Nagyítás" msgstr "Nagyítás"
#: src/main.cpp:1411 #: src/main.cpp:1472
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "" msgstr ""
#: src/main.cpp:1486 #: src/main.cpp:1547
msgid "Main Menu" msgid "Main Menu"
msgstr "Fő menü" msgstr "Fő menü"
#: src/main.cpp:1662 #: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do." msgid "No world selected and no address provided. Nothing to do."
msgstr "Nincs kiválasztott világ, nincs cím. Nincs mit tenni." msgstr "Nincs kiválasztott világ, nincs cím. Nincs mit tenni."
#: src/main.cpp:1670 #: src/main.cpp:1731
msgid "Could not find or load game \"" msgid "Could not find or load game \""
msgstr "Nem található, vagy nem betöltött játék \"" msgstr "Nem található, vagy nem betöltött játék \""
#: src/main.cpp:1684 #: src/main.cpp:1745
msgid "Invalid gamespec." msgid "Invalid gamespec."
msgstr "Nem valós játék spec." msgstr "Nem valós játék spec."
#: src/main.cpp:1729 #: src/main.cpp:1790
msgid "Connection error (timed out?)" msgid "Connection error (timed out?)"
msgstr "Csatlakozási hiba (Idő lejárt?)" msgstr "Csatlakozási hiba (Idő lejárt?)"
#~ msgid "is required by:" #~ msgid "Failed to delete all world files"
#~ msgstr "kell neki:" #~ msgstr "Hiba az összes világ törlése közben"
#~ msgid "Configuration saved. "
#~ msgstr "Beállítások mentve. "
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "Figyelem: A beállítások nem egyformák. "
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Nem sikerült a világ létrehozása: A névben nem jó karakterek vannak"
#~ msgid "Multiplayer"
#~ msgstr "Többjátékos mód"
#~ msgid "Advanced"
#~ msgstr "Haladó"
#~ msgid "Show Public"
#~ msgstr "Publikus mutatása"
#~ msgid "Show Favorites"
#~ msgstr "Kedvencek mutatása"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Hagyd el a nevét, hogy helyi szervert indíts."
#~ msgid "Create world"
#~ msgstr "Világ létrehozása"
#~ msgid "Address required."
#~ msgstr "Cím szükséges."
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Nem törölhető a világ: Nincs kiválasztva"
#~ msgid "Files to be deleted"
#~ msgstr "A fájl törölve lett"
#~ msgid "Cannot create world: No games found"
#~ msgstr "Nem sikerült a világot létrehozni: Nem található a játék"
#~ msgid "Cannot configure world: Nothing selected" #~ msgid "Cannot configure world: Nothing selected"
#~ msgstr "Nem sikerült a világ beállítása: Nincs kiválasztva" #~ msgstr "Nem sikerült a világ beállítása: Nincs kiválasztva"
#~ msgid "Failed to delete all world files" #~ msgid "Cannot create world: No games found"
#~ msgstr "Hiba az összes világ törlése közben" #~ msgstr "Nem sikerült a világot létrehozni: Nem található a játék"
#~ msgid "Files to be deleted"
#~ msgstr "A fájl törölve lett"
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Nem törölhető a világ: Nincs kiválasztva"
#~ msgid "Address required."
#~ msgstr "Cím szükséges."
#~ msgid "Create world"
#~ msgstr "Világ létrehozása"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Hagyd el a nevét, hogy helyi szervert indíts."
#~ msgid "Show Favorites"
#~ msgstr "Kedvencek mutatása"
#~ msgid "Show Public"
#~ msgstr "Publikus mutatása"
#~ msgid "Advanced"
#~ msgstr "Haladó"
#~ msgid "Multiplayer"
#~ msgstr "Többjátékos mód"
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Nem sikerült a világ létrehozása: A névben nem jó karakterek vannak"
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "Figyelem: A beállítások nem egyformák. "
#~ msgid "Configuration saved. "
#~ msgstr "Beállítások mentve. "
#~ msgid "is required by:"
#~ msgstr "kell neki:"
#~ msgid "Left click: Move all items, Right click: Move single item"
#~ msgstr "Ball gomb: Tárgyak mozgatása, Jobb gomb: egy tárgyat mozgat"
#, fuzzy
#~ msgid "Download"
#~ msgstr "Le"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: minetest\n" "Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-07 22:01+0400\n" "POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: 2013-03-30 20:50+0200\n" "PO-Revision-Date: 2013-03-30 20:50+0200\n"
"Last-Translator: Fabio Luongo <e249260@rmqkr.net>\n" "Last-Translator: Fabio Luongo <e249260@rmqkr.net>\n"
"Language-Team: Italian\n" "Language-Team: Italian\n"
@ -23,12 +23,12 @@ msgstr ""
msgid "Game Name" msgid "Game Name"
msgstr "Gioco" msgstr "Gioco"
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:301 #: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create" msgid "Create"
msgstr "Crea" msgstr "Crea"
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:302 builtin/modmgr.lua:289 #: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:406 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223 #: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel" msgid "Cancel"
msgstr "Annulla" msgstr "Annulla"
@ -40,36 +40,36 @@ msgstr ""
msgid "GAMES" msgid "GAMES"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:859 #: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
#, fuzzy #, fuzzy
msgid "Games" msgid "Games"
msgstr "Gioco" msgstr "Gioco"
#: builtin/gamemgr.lua:233 #: builtin/gamemgr.lua:234
msgid "Mods:" msgid "Mods:"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:234 #: builtin/gamemgr.lua:235
msgid "edit game" msgid "edit game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:237 #: builtin/gamemgr.lua:238
msgid "new game" msgid "new game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:247 #: builtin/gamemgr.lua:248
msgid "EDIT GAME" msgid "EDIT GAME"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:267 #: builtin/gamemgr.lua:269
msgid "Remove selected mod" msgid "Remove selected mod"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:270 #: builtin/gamemgr.lua:272
msgid "<<-- Add mod" msgid "<<-- Add mod"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:159 #: builtin/mainmenu.lua:158
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
@ -77,230 +77,238 @@ msgstr ""
msgid "World name" msgid "World name"
msgstr "Nome mondo" msgstr "Nome mondo"
#: builtin/mainmenu.lua:298 #: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen" msgid "Mapgen"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:300 #: builtin/mainmenu.lua:306
msgid "Game" msgid "Game"
msgstr "Gioco" msgstr "Gioco"
#: builtin/mainmenu.lua:314 #: builtin/mainmenu.lua:319
#, fuzzy #, fuzzy
msgid "Delete World \"$1\"?" msgid "Delete World \"$1\"?"
msgstr "Cancella il mondo" msgstr "Cancella il mondo"
#: builtin/mainmenu.lua:315 builtin/modmgr.lua:846 #: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes" msgid "Yes"
msgstr "Sì" msgstr "Sì"
#: builtin/mainmenu.lua:316 #: builtin/mainmenu.lua:321
msgid "No" msgid "No"
msgstr "No" msgstr "No"
#: builtin/mainmenu.lua:384 #: builtin/mainmenu.lua:364
#, fuzzy #, fuzzy
msgid "A world named \"$1\" already exists" msgid "A world named \"$1\" already exists"
msgstr "Impossibile creare il mondo: un mondo con questo nome già esiste" msgstr "Impossibile creare il mondo: un mondo con questo nome già esiste"
#: builtin/mainmenu.lua:399 #: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected" msgid "No worldname given or no game selected"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:852 #: builtin/mainmenu.lua:650
msgid "Singleplayer" msgid "To enable shaders the OpenGL driver needs to be used."
msgstr "Giocatore singolo"
#: builtin/mainmenu.lua:853
msgid "Client"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:854 #: builtin/mainmenu.lua:818
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:855
msgid "Settings"
msgstr "Opzioni"
#: builtin/mainmenu.lua:856
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:863
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:865
msgid "Credits"
msgstr "Crediti"
#: builtin/mainmenu.lua:885
msgid "CLIENT" msgid "CLIENT"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:886 #: builtin/mainmenu.lua:819
#, fuzzy #, fuzzy
msgid "Favorites:" msgid "Favorites:"
msgstr "Mostra preferiti" msgstr "Mostra preferiti"
#: builtin/mainmenu.lua:887 #: builtin/mainmenu.lua:820
msgid "Address/Port" msgid "Address/Port"
msgstr "Indirizzo/Porta" msgstr "Indirizzo/Porta"
#: builtin/mainmenu.lua:888 #: builtin/mainmenu.lua:821
msgid "Name/Password" msgid "Name/Password"
msgstr "Nome/Password" msgstr "Nome/Password"
#: builtin/mainmenu.lua:891 #: builtin/mainmenu.lua:824
msgid "Public Serverlist" msgid "Public Serverlist"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:896 builtin/mainmenu.lua:941 builtin/mainmenu.lua:1004 #: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: builtin/modmgr.lua:271 src/keycode.cpp:229 #: src/keycode.cpp:229
msgid "Delete" msgid "Delete"
msgstr "Cancella" msgstr "Cancella"
#: builtin/mainmenu.lua:900 #: builtin/mainmenu.lua:833
msgid "Connect" msgid "Connect"
msgstr "Connetti" msgstr "Connetti"
#: builtin/mainmenu.lua:942 builtin/mainmenu.lua:1005 #: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New" msgid "New"
msgstr "Nuovo" msgstr "Nuovo"
#: builtin/mainmenu.lua:943 builtin/mainmenu.lua:1006 #: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure" msgid "Configure"
msgstr "Configura" msgstr "Configura"
#: builtin/mainmenu.lua:944 #: builtin/mainmenu.lua:877
#, fuzzy #, fuzzy
msgid "Start Game" msgid "Start Game"
msgstr "Avvia gioco/Connetti" msgstr "Avvia gioco/Connetti"
#: builtin/mainmenu.lua:945 builtin/mainmenu.lua:1008 #: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:" msgid "Select World:"
msgstr "Seleziona mondo:" msgstr "Seleziona mondo:"
#: builtin/mainmenu.lua:946 #: builtin/mainmenu.lua:879
msgid "START SERVER" msgid "START SERVER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:947 builtin/mainmenu.lua:1010 #: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode" msgid "Creative Mode"
msgstr "Modalità creativa" msgstr "Modalità creativa"
#: builtin/mainmenu.lua:949 builtin/mainmenu.lua:1012 #: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage" msgid "Enable Damage"
msgstr "Attiva danno" msgstr "Attiva danno"
#: builtin/mainmenu.lua:951 #: builtin/mainmenu.lua:884
#, fuzzy #, fuzzy
msgid "Public" msgid "Public"
msgstr "Lista server pubblici" msgstr "Lista server pubblici"
#: builtin/mainmenu.lua:953 #: builtin/mainmenu.lua:886
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:955 #: builtin/mainmenu.lua:888
#, fuzzy #, fuzzy
msgid "Password" msgid "Password"
msgstr "Vecchia password" msgstr "Vecchia password"
#: builtin/mainmenu.lua:956 #: builtin/mainmenu.lua:889
msgid "Server Port" msgid "Server Port"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:966 #: builtin/mainmenu.lua:899
msgid "SETTINGS" msgid "SETTINGS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:967 #: builtin/mainmenu.lua:900
msgid "Fancy trees" msgid "Fancy trees"
msgstr "Alberi migliori" msgstr "Alberi migliori"
#: builtin/mainmenu.lua:969 #: builtin/mainmenu.lua:902
msgid "Smooth Lighting" msgid "Smooth Lighting"
msgstr "Luce uniforme" msgstr "Luce uniforme"
#: builtin/mainmenu.lua:971 #: builtin/mainmenu.lua:904
msgid "3D Clouds" msgid "3D Clouds"
msgstr "Nuvole 3D" msgstr "Nuvole 3D"
#: builtin/mainmenu.lua:973 #: builtin/mainmenu.lua:906
#, fuzzy #, fuzzy
msgid "Opaque Water" msgid "Opaque Water"
msgstr "Acqua opaca" msgstr "Acqua opaca"
#: builtin/mainmenu.lua:976 #: builtin/mainmenu.lua:909
msgid "Mip-Mapping" msgid "Mip-Mapping"
msgstr "Mipmapping" msgstr "Mipmapping"
#: builtin/mainmenu.lua:978 #: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering" msgid "Anisotropic Filtering"
msgstr "Filtro anisotropico" msgstr "Filtro anisotropico"
#: builtin/mainmenu.lua:980 #: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering" msgid "Bi-Linear Filtering"
msgstr "Filtro bilineare" msgstr "Filtro bilineare"
#: builtin/mainmenu.lua:982 #: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering" msgid "Tri-Linear Filtering"
msgstr "Filtro trilineare" msgstr "Filtro trilineare"
#: builtin/mainmenu.lua:985 #: builtin/mainmenu.lua:918
msgid "Shaders" msgid "Shaders"
msgstr "Shader" msgstr "Shader"
#: builtin/mainmenu.lua:987 #: builtin/mainmenu.lua:920
msgid "Preload item visuals" msgid "Preload item visuals"
msgstr "Pre-carica le immagini degli oggetti" msgstr "Pre-carica le immagini degli oggetti"
#: builtin/mainmenu.lua:989 #: builtin/mainmenu.lua:922
msgid "Enable Particles" msgid "Enable Particles"
msgstr "Attiva particelle" msgstr "Attiva particelle"
#: builtin/mainmenu.lua:991 #: builtin/mainmenu.lua:924
msgid "Finite Liquid" msgid "Finite Liquid"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:994 #: builtin/mainmenu.lua:927
msgid "Change keys" msgid "Change keys"
msgstr "Modifica tasti" msgstr "Modifica tasti"
#: builtin/mainmenu.lua:1007 src/keycode.cpp:248 #: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play" msgid "Play"
msgstr "Gioca" msgstr "Gioca"
#: builtin/mainmenu.lua:1009 #: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER" msgid "SINGLE PLAYER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1022 #: builtin/mainmenu.lua:955
msgid "Select texture pack:" msgid "Select texture pack:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1023 #: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS" msgid "TEXTURE PACKS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1043 #: builtin/mainmenu.lua:976
msgid "No information available" msgid "No information available"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1071 #: builtin/mainmenu.lua:1005
msgid "Core Developers" msgid "Core Developers"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1082 #: builtin/mainmenu.lua:1020
msgid "Active Contributors" msgid "Active Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1092 #: builtin/mainmenu.lua:1028
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr "Giocatore singolo"
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr ""
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr "Opzioni"
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr "Crediti"
#: builtin/modmgr.lua:236 #: builtin/modmgr.lua:236
msgid "MODS" msgid "MODS"
msgstr "" msgstr ""
@ -309,114 +317,133 @@ msgstr ""
msgid "Installed Mods:" msgid "Installed Mods:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:243 builtin/modstore.lua:253 #: builtin/modmgr.lua:243
msgid "Install" msgid "Add mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:244 #: builtin/modmgr.lua:244
#, fuzzy msgid "Local install"
msgid "Download" msgstr ""
msgstr "Giù"
#: builtin/modmgr.lua:256 #: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
msgid "No mod description available"
msgstr ""
#: builtin/modmgr.lua:288
msgid "Mod information:"
msgstr ""
#: builtin/modmgr.lua:299
msgid "Rename" msgid "Rename"
msgstr "" msgstr ""
#: builtin/modmgr.lua:260 builtin/modmgr.lua:402 #: builtin/modmgr.lua:301
#, fuzzy msgid "Uninstall selected modpack"
msgid "Depends:" msgstr ""
msgstr "dipende da:"
#: builtin/modmgr.lua:282 #: builtin/modmgr.lua:312
msgid "Uninstall selected mod"
msgstr ""
#: builtin/modmgr.lua:324
msgid "Rename Modpack:" msgid "Rename Modpack:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:287 src/keycode.cpp:227 #: builtin/modmgr.lua:329 src/keycode.cpp:227
msgid "Accept" msgid "Accept"
msgstr "Accetta" msgstr "Accetta"
#: builtin/modmgr.lua:381 #: builtin/modmgr.lua:423
#, fuzzy #, fuzzy
msgid "World:" msgid "World:"
msgstr "Seleziona mondo:" msgstr "Seleziona mondo:"
#: builtin/modmgr.lua:385 builtin/modmgr.lua:387 #: builtin/modmgr.lua:427 builtin/modmgr.lua:429
#, fuzzy #, fuzzy
msgid "Hide Game" msgid "Hide Game"
msgstr "Gioco" msgstr "Gioco"
#: builtin/modmgr.lua:391 builtin/modmgr.lua:393 #: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content" msgid "Hide mp content"
msgstr "" msgstr ""
#: builtin/modmgr.lua:400 #: builtin/modmgr.lua:442
msgid "Mod:" msgid "Mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:405 src/guiKeyChangeMenu.cpp:187 #: builtin/modmgr.lua:444
#, fuzzy
msgid "Depends:"
msgstr "dipende da:"
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save" msgid "Save"
msgstr "Salva" msgstr "Salva"
#: builtin/modmgr.lua:422 #: builtin/modmgr.lua:464
#, fuzzy #, fuzzy
msgid "Enable MP" msgid "Enable MP"
msgstr "Attiva tutto" msgstr "Attiva tutto"
#: builtin/modmgr.lua:424 #: builtin/modmgr.lua:466
#, fuzzy #, fuzzy
msgid "Disable MP" msgid "Disable MP"
msgstr "Disabilita tutto" msgstr "Disabilita tutto"
#: builtin/modmgr.lua:428 builtin/modmgr.lua:430 #: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled" msgid "enabled"
msgstr "attivato" msgstr "attivato"
#: builtin/modmgr.lua:436 #: builtin/modmgr.lua:478
#, fuzzy #, fuzzy
msgid "Enable all" msgid "Enable all"
msgstr "Attiva tutto" msgstr "Attiva tutto"
#: builtin/modmgr.lua:551 #: builtin/modmgr.lua:577
#, fuzzy #, fuzzy
msgid "Select Mod File:" msgid "Select Mod File:"
msgstr "Seleziona mondo:" msgstr "Seleziona mondo:"
#: builtin/modmgr.lua:590 #: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\"" msgid "Install Mod: file: \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:591 #: builtin/modmgr.lua:617
msgid "" msgid ""
"\n" "\n"
"Install Mod: unsupported filetype \"$1\"" "Install Mod: unsupported filetype \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:612 #: builtin/modmgr.lua:638
#, fuzzy #, fuzzy
msgid "Failed to install $1 to $2" msgid "Failed to install $1 to $2"
msgstr "Fallimento nell'inizializzare il mondo" msgstr "Fallimento nell'inizializzare il mondo"
#: builtin/modmgr.lua:615 #: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1" msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:635 #: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1" msgid "Install Mod: unable to find real modname for: $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:824 #: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\"" msgid "Modmgr: failed to delete \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:828 #: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\"" msgid "Modmgr: invalid modpath \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:845 #: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?" msgid "Are you sure you want to delete \"$1\"?"
msgstr "" msgstr ""
#: builtin/modmgr.lua:847 #: builtin/modmgr.lua:878
msgid "No of course not!" msgid "No of course not!"
msgstr "" msgstr ""
@ -432,47 +459,51 @@ msgstr ""
msgid "re-Install" msgid "re-Install"
msgstr "" msgstr ""
#: src/client.cpp:2915 #: builtin/modstore.lua:253
msgid "Install"
msgstr ""
#: src/client.cpp:2917
msgid "Item textures..." msgid "Item textures..."
msgstr "" msgstr ""
#: src/game.cpp:939 #: src/game.cpp:940
msgid "Loading..." msgid "Loading..."
msgstr "" msgstr ""
#: src/game.cpp:999 #: src/game.cpp:1000
msgid "Creating server...." msgid "Creating server...."
msgstr "" msgstr ""
#: src/game.cpp:1015 #: src/game.cpp:1016
msgid "Creating client..." msgid "Creating client..."
msgstr "" msgstr ""
#: src/game.cpp:1024 #: src/game.cpp:1025
msgid "Resolving address..." msgid "Resolving address..."
msgstr "" msgstr ""
#: src/game.cpp:1121 #: src/game.cpp:1122
msgid "Connecting to server..." msgid "Connecting to server..."
msgstr "" msgstr ""
#: src/game.cpp:1218 #: src/game.cpp:1219
msgid "Item definitions..." msgid "Item definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1225 #: src/game.cpp:1226
msgid "Node definitions..." msgid "Node definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1232 #: src/game.cpp:1233
msgid "Media..." msgid "Media..."
msgstr "" msgstr ""
#: src/game.cpp:3405 #: src/game.cpp:3409
msgid "Shutting down stuff..." msgid "Shutting down stuff..."
msgstr "" msgstr ""
#: src/game.cpp:3435 #: src/game.cpp:3439
msgid "" msgid ""
"\n" "\n"
"Check debug.txt for details." "Check debug.txt for details."
@ -488,13 +519,8 @@ msgstr "Sei morto."
msgid "Respawn" msgid "Respawn"
msgstr "Ricomincia" msgstr "Ricomincia"
#: src/guiFormSpecMenu.cpp:1569 #: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
msgid "Left click: Move all items, Right click: Move single item" #: src/guiTextInputMenu.cpp:139
msgstr ""
"Click sinistro: muovi tutti gli oggetti; click destro: muovi un solo oggetto"
#: src/guiFormSpecMenu.cpp:1595 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:140
msgid "Proceed" msgid "Proceed"
msgstr "Procedi" msgstr "Procedi"
@ -512,99 +538,99 @@ msgstr "\"Usa\" = scendi sotto"
msgid "Double tap \"jump\" to toggle fly" msgid "Double tap \"jump\" to toggle fly"
msgstr "Premi due volte \"salto\" per volare" msgstr "Premi due volte \"salto\" per volare"
#: src/guiKeyChangeMenu.cpp:290 #: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use" msgid "Key already in use"
msgstr "Tasto già usato" msgstr "Tasto già usato"
#: src/guiKeyChangeMenu.cpp:372 #: src/guiKeyChangeMenu.cpp:363
msgid "press key" msgid "press key"
msgstr "premi il tasto" msgstr "premi il tasto"
#: src/guiKeyChangeMenu.cpp:400 #: src/guiKeyChangeMenu.cpp:389
msgid "Forward" msgid "Forward"
msgstr "Avanti" msgstr "Avanti"
#: src/guiKeyChangeMenu.cpp:401 #: src/guiKeyChangeMenu.cpp:390
msgid "Backward" msgid "Backward"
msgstr "Indietro" msgstr "Indietro"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left" msgid "Left"
msgstr "Sinistra" msgstr "Sinistra"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right" msgid "Right"
msgstr "Destra" msgstr "Destra"
#: src/guiKeyChangeMenu.cpp:404 #: src/guiKeyChangeMenu.cpp:393
msgid "Use" msgid "Use"
msgstr "Usa" msgstr "Usa"
#: src/guiKeyChangeMenu.cpp:405 #: src/guiKeyChangeMenu.cpp:394
msgid "Jump" msgid "Jump"
msgstr "Salta" msgstr "Salta"
#: src/guiKeyChangeMenu.cpp:406 #: src/guiKeyChangeMenu.cpp:395
msgid "Sneak" msgid "Sneak"
msgstr "Abbassati" msgstr "Abbassati"
#: src/guiKeyChangeMenu.cpp:407 #: src/guiKeyChangeMenu.cpp:396
msgid "Drop" msgid "Drop"
msgstr "Lancia" msgstr "Lancia"
#: src/guiKeyChangeMenu.cpp:408 #: src/guiKeyChangeMenu.cpp:397
msgid "Inventory" msgid "Inventory"
msgstr "Inventario" msgstr "Inventario"
#: src/guiKeyChangeMenu.cpp:409 #: src/guiKeyChangeMenu.cpp:398
msgid "Chat" msgid "Chat"
msgstr "Parla" msgstr "Parla"
#: src/guiKeyChangeMenu.cpp:410 #: src/guiKeyChangeMenu.cpp:399
msgid "Command" msgid "Command"
msgstr "Comando" msgstr "Comando"
#: src/guiKeyChangeMenu.cpp:411 #: src/guiKeyChangeMenu.cpp:400
msgid "Console" msgid "Console"
msgstr "Console" msgstr "Console"
#: src/guiKeyChangeMenu.cpp:412 #: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly" msgid "Toggle fly"
msgstr "Attiva volo" msgstr "Attiva volo"
#: src/guiKeyChangeMenu.cpp:413 #: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast" msgid "Toggle fast"
msgstr "Aumenta velocità" msgstr "Aumenta velocità"
#: src/guiKeyChangeMenu.cpp:414 #: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip" msgid "Toggle noclip"
msgstr "(Non) attraversi blocchi" msgstr "(Non) attraversi blocchi"
#: src/guiKeyChangeMenu.cpp:415 #: src/guiKeyChangeMenu.cpp:404
msgid "Range select" msgid "Range select"
msgstr "Distanza di rendering" msgstr "Distanza di rendering"
#: src/guiKeyChangeMenu.cpp:416 #: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks" msgid "Print stacks"
msgstr "Stampa stack" msgstr "Stampa stack"
#: src/guiPasswordChange.cpp:107 #: src/guiPasswordChange.cpp:106
msgid "Old Password" msgid "Old Password"
msgstr "Vecchia password" msgstr "Vecchia password"
#: src/guiPasswordChange.cpp:125 #: src/guiPasswordChange.cpp:122
msgid "New Password" msgid "New Password"
msgstr "Nuova password" msgstr "Nuova password"
#: src/guiPasswordChange.cpp:142 #: src/guiPasswordChange.cpp:137
msgid "Confirm Password" msgid "Confirm Password"
msgstr "Conferma password" msgstr "Conferma password"
#: src/guiPasswordChange.cpp:160 #: src/guiPasswordChange.cpp:153
msgid "Change" msgid "Change"
msgstr "Modifica" msgstr "Modifica"
#: src/guiPasswordChange.cpp:169 #: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "Le password non corrispondono!" msgstr "Le password non corrispondono!"
@ -643,11 +669,11 @@ msgid ""
"- T: chat\n" "- T: chat\n"
msgstr "" msgstr ""
#: src/guiVolumeChange.cpp:108 #: src/guiVolumeChange.cpp:107
msgid "Sound Volume: " msgid "Sound Volume: "
msgstr "" msgstr ""
#: src/guiVolumeChange.cpp:122 #: src/guiVolumeChange.cpp:121
msgid "Exit" msgid "Exit"
msgstr "" msgstr ""
@ -939,77 +965,47 @@ msgstr ""
msgid "Zoom" msgid "Zoom"
msgstr "" msgstr ""
#: src/main.cpp:1411 #: src/main.cpp:1472
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "" msgstr ""
#: src/main.cpp:1486 #: src/main.cpp:1547
msgid "Main Menu" msgid "Main Menu"
msgstr "Menu principale" msgstr "Menu principale"
#: src/main.cpp:1662 #: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do." msgid "No world selected and no address provided. Nothing to do."
msgstr "Nessun mondo selezionato e nessun indirizzo fornito. Niente da fare." msgstr "Nessun mondo selezionato e nessun indirizzo fornito. Niente da fare."
#: src/main.cpp:1670 #: src/main.cpp:1731
msgid "Could not find or load game \"" msgid "Could not find or load game \""
msgstr "Impossibile trovare o caricare il gioco \"" msgstr "Impossibile trovare o caricare il gioco \""
#: src/main.cpp:1684 #: src/main.cpp:1745
msgid "Invalid gamespec." msgid "Invalid gamespec."
msgstr "Specifiche di gioco non valide." msgstr "Specifiche di gioco non valide."
#: src/main.cpp:1729 #: src/main.cpp:1790
msgid "Connection error (timed out?)" msgid "Connection error (timed out?)"
msgstr "Errore connessione (tempo scaduto?)" msgstr "Errore connessione (tempo scaduto?)"
#~ msgid "is required by:" #~ msgid ""
#~ msgstr "è richiesto da:" #~ "Warning: Some mods are not configured yet.\n"
#~ "They will be enabled by default when you save the configuration. "
#~ msgstr ""
#~ "Attenzione: alcune mod non sono ancora configurate.\n"
#~ "Saranno abilitate di default quando salverai la configurazione. "
#~ msgid "Configuration saved. " #~ msgid ""
#~ msgstr "Configurazione salvata. " #~ "Warning: Some configured mods are missing.\n"
#~ "Their setting will be removed when you save the configuration. "
#~ msgstr ""
#~ "Attenzione: mancano alcune mod configurate.\n"
#~ "Le loro impostazioni saranno rimosse al salvataggio della "
#~ "configurazione. "
#~ msgid "Warning: Configuration not consistent. " #~ msgid "Delete map"
#~ msgstr "Attenzione: configurazione non corretta. " #~ msgstr "Cancella mappa"
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Impossibile creare il mondo: il nome contiene caratteri non validi"
#~ msgid "Multiplayer"
#~ msgstr "Multigiocatore"
#~ msgid "Advanced"
#~ msgstr "Avanzato"
#~ msgid "Show Public"
#~ msgstr "Lista server pubblici"
#~ msgid "Show Favorites"
#~ msgstr "Mostra preferiti"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Lascia vuoto l'indirizzo per avviare un server locale."
#~ msgid "Create world"
#~ msgstr "Crea mondo"
#~ msgid "Address required."
#~ msgstr "Indirizzo necessario."
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Impossibile eliminare il mondo: nessun mondo selezionato"
#~ msgid "Files to be deleted"
#~ msgstr "File da eliminarsi"
#~ msgid "Cannot create world: No games found"
#~ msgstr "Impossibile creare il mondo: nessun gioco trovato"
#~ msgid "Cannot configure world: Nothing selected"
#~ msgstr "Impossibile configurare il mondo: nessun mondo selezionato"
#~ msgid "Failed to delete all world files"
#~ msgstr "Eliminazione di tutti i file del mondo fallita"
#~ msgid "" #~ msgid ""
#~ "Default Controls:\n" #~ "Default Controls:\n"
@ -1036,20 +1032,59 @@ msgstr "Errore connessione (tempo scaduto?)"
#~ "- ESC: questo menu\n" #~ "- ESC: questo menu\n"
#~ "- T: chat\n" #~ "- T: chat\n"
#~ msgid "Delete map" #~ msgid "Failed to delete all world files"
#~ msgstr "Cancella mappa" #~ msgstr "Eliminazione di tutti i file del mondo fallita"
#~ msgid "" #~ msgid "Cannot configure world: Nothing selected"
#~ "Warning: Some configured mods are missing.\n" #~ msgstr "Impossibile configurare il mondo: nessun mondo selezionato"
#~ "Their setting will be removed when you save the configuration. "
#~ msgstr ""
#~ "Attenzione: mancano alcune mod configurate.\n"
#~ "Le loro impostazioni saranno rimosse al salvataggio della "
#~ "configurazione. "
#~ msgid "" #~ msgid "Cannot create world: No games found"
#~ "Warning: Some mods are not configured yet.\n" #~ msgstr "Impossibile creare il mondo: nessun gioco trovato"
#~ "They will be enabled by default when you save the configuration. "
#~ msgid "Files to be deleted"
#~ msgstr "File da eliminarsi"
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Impossibile eliminare il mondo: nessun mondo selezionato"
#~ msgid "Address required."
#~ msgstr "Indirizzo necessario."
#~ msgid "Create world"
#~ msgstr "Crea mondo"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Lascia vuoto l'indirizzo per avviare un server locale."
#~ msgid "Show Favorites"
#~ msgstr "Mostra preferiti"
#~ msgid "Show Public"
#~ msgstr "Lista server pubblici"
#~ msgid "Advanced"
#~ msgstr "Avanzato"
#~ msgid "Multiplayer"
#~ msgstr "Multigiocatore"
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Impossibile creare il mondo: il nome contiene caratteri non validi"
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "Attenzione: configurazione non corretta. "
#~ msgid "Configuration saved. "
#~ msgstr "Configurazione salvata. "
#~ msgid "is required by:"
#~ msgstr "è richiesto da:"
#~ msgid "Left click: Move all items, Right click: Move single item"
#~ msgstr "" #~ msgstr ""
#~ "Attenzione: alcune mod non sono ancora configurate.\n" #~ "Click sinistro: muovi tutti gli oggetti; click destro: muovi un solo "
#~ "Saranno abilitate di default quando salverai la configurazione. " #~ "oggetto"
#, fuzzy
#~ msgid "Download"
#~ msgstr "Giù"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: minetest\n" "Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-07 22:01+0400\n" "POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: 2013-03-07 23:06+0200\n" "PO-Revision-Date: 2013-03-07 23:06+0200\n"
"Last-Translator: Mitori Itoshiki <mito551@gmail.com>\n" "Last-Translator: Mitori Itoshiki <mito551@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -23,12 +23,12 @@ msgstr ""
msgid "Game Name" msgid "Game Name"
msgstr "ゲーム" msgstr "ゲーム"
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:301 #: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create" msgid "Create"
msgstr "作成" msgstr "作成"
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:302 builtin/modmgr.lua:289 #: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:406 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223 #: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel" msgid "Cancel"
msgstr "キャンセル" msgstr "キャンセル"
@ -40,36 +40,36 @@ msgstr ""
msgid "GAMES" msgid "GAMES"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:859 #: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
#, fuzzy #, fuzzy
msgid "Games" msgid "Games"
msgstr "ゲーム" msgstr "ゲーム"
#: builtin/gamemgr.lua:233 #: builtin/gamemgr.lua:234
msgid "Mods:" msgid "Mods:"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:234 #: builtin/gamemgr.lua:235
msgid "edit game" msgid "edit game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:237 #: builtin/gamemgr.lua:238
msgid "new game" msgid "new game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:247 #: builtin/gamemgr.lua:248
msgid "EDIT GAME" msgid "EDIT GAME"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:267 #: builtin/gamemgr.lua:269
msgid "Remove selected mod" msgid "Remove selected mod"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:270 #: builtin/gamemgr.lua:272
msgid "<<-- Add mod" msgid "<<-- Add mod"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:159 #: builtin/mainmenu.lua:158
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
@ -77,231 +77,239 @@ msgstr ""
msgid "World name" msgid "World name"
msgstr "ワールド名" msgstr "ワールド名"
#: builtin/mainmenu.lua:298 #: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen" msgid "Mapgen"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:300 #: builtin/mainmenu.lua:306
msgid "Game" msgid "Game"
msgstr "ゲーム" msgstr "ゲーム"
#: builtin/mainmenu.lua:314 #: builtin/mainmenu.lua:319
#, fuzzy #, fuzzy
msgid "Delete World \"$1\"?" msgid "Delete World \"$1\"?"
msgstr "ワールド削除" msgstr "ワールド削除"
#: builtin/mainmenu.lua:315 builtin/modmgr.lua:846 #: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes" msgid "Yes"
msgstr "はい" msgstr "はい"
#: builtin/mainmenu.lua:316 #: builtin/mainmenu.lua:321
msgid "No" msgid "No"
msgstr "いいえ" msgstr "いいえ"
#: builtin/mainmenu.lua:384 #: builtin/mainmenu.lua:364
#, fuzzy #, fuzzy
msgid "A world named \"$1\" already exists" msgid "A world named \"$1\" already exists"
msgstr "ワールドを作成できません: 同名のワールドが既に存在しています" msgstr "ワールドを作成できません: 同名のワールドが既に存在しています"
#: builtin/mainmenu.lua:399 #: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected" msgid "No worldname given or no game selected"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:852 #: builtin/mainmenu.lua:650
msgid "Singleplayer" msgid "To enable shaders the OpenGL driver needs to be used."
msgstr "シングルプレイヤー"
#: builtin/mainmenu.lua:853
msgid "Client"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:854 #: builtin/mainmenu.lua:818
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:855
msgid "Settings"
msgstr "設定"
#: builtin/mainmenu.lua:856
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:863
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:865
msgid "Credits"
msgstr "クレジット"
#: builtin/mainmenu.lua:885
msgid "CLIENT" msgid "CLIENT"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:886 #: builtin/mainmenu.lua:819
#, fuzzy #, fuzzy
msgid "Favorites:" msgid "Favorites:"
msgstr "お気に入りを見せる" msgstr "お気に入りを見せる"
#: builtin/mainmenu.lua:887 #: builtin/mainmenu.lua:820
msgid "Address/Port" msgid "Address/Port"
msgstr "アドレス/ポート" msgstr "アドレス/ポート"
#: builtin/mainmenu.lua:888 #: builtin/mainmenu.lua:821
msgid "Name/Password" msgid "Name/Password"
msgstr "名前/パスワード" msgstr "名前/パスワード"
#: builtin/mainmenu.lua:891 #: builtin/mainmenu.lua:824
msgid "Public Serverlist" msgid "Public Serverlist"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:896 builtin/mainmenu.lua:941 builtin/mainmenu.lua:1004 #: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: builtin/modmgr.lua:271 src/keycode.cpp:229 #: src/keycode.cpp:229
msgid "Delete" msgid "Delete"
msgstr "削除" msgstr "削除"
#: builtin/mainmenu.lua:900 #: builtin/mainmenu.lua:833
msgid "Connect" msgid "Connect"
msgstr "接続" msgstr "接続"
#: builtin/mainmenu.lua:942 builtin/mainmenu.lua:1005 #: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New" msgid "New"
msgstr "新規作成" msgstr "新規作成"
#: builtin/mainmenu.lua:943 builtin/mainmenu.lua:1006 #: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure" msgid "Configure"
msgstr "設定" msgstr "設定"
#: builtin/mainmenu.lua:944 #: builtin/mainmenu.lua:877
#, fuzzy #, fuzzy
msgid "Start Game" msgid "Start Game"
msgstr "ゲーム開始 / 接続" msgstr "ゲーム開始 / 接続"
#: builtin/mainmenu.lua:945 builtin/mainmenu.lua:1008 #: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:" msgid "Select World:"
msgstr "ワールド選択:" msgstr "ワールド選択:"
#: builtin/mainmenu.lua:946 #: builtin/mainmenu.lua:879
msgid "START SERVER" msgid "START SERVER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:947 builtin/mainmenu.lua:1010 #: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode" msgid "Creative Mode"
msgstr "クリエイティブモード" msgstr "クリエイティブモード"
#: builtin/mainmenu.lua:949 builtin/mainmenu.lua:1012 #: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage" msgid "Enable Damage"
msgstr "ダメージ有効" msgstr "ダメージ有効"
#: builtin/mainmenu.lua:951 #: builtin/mainmenu.lua:884
#, fuzzy #, fuzzy
msgid "Public" msgid "Public"
msgstr "公共を見せる" msgstr "公共を見せる"
#: builtin/mainmenu.lua:953 #: builtin/mainmenu.lua:886
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:955 #: builtin/mainmenu.lua:888
#, fuzzy #, fuzzy
msgid "Password" msgid "Password"
msgstr "古いパスワード" msgstr "古いパスワード"
#: builtin/mainmenu.lua:956 #: builtin/mainmenu.lua:889
msgid "Server Port" msgid "Server Port"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:966 #: builtin/mainmenu.lua:899
msgid "SETTINGS" msgid "SETTINGS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:967 #: builtin/mainmenu.lua:900
msgid "Fancy trees" msgid "Fancy trees"
msgstr "きれいな木" msgstr "きれいな木"
#: builtin/mainmenu.lua:969 #: builtin/mainmenu.lua:902
#, fuzzy #, fuzzy
msgid "Smooth Lighting" msgid "Smooth Lighting"
msgstr "自然な光表現" msgstr "自然な光表現"
#: builtin/mainmenu.lua:971 #: builtin/mainmenu.lua:904
msgid "3D Clouds" msgid "3D Clouds"
msgstr "3Dの雲" msgstr "3Dの雲"
#: builtin/mainmenu.lua:973 #: builtin/mainmenu.lua:906
#, fuzzy #, fuzzy
msgid "Opaque Water" msgid "Opaque Water"
msgstr "不透明な水面" msgstr "不透明な水面"
#: builtin/mainmenu.lua:976 #: builtin/mainmenu.lua:909
msgid "Mip-Mapping" msgid "Mip-Mapping"
msgstr "ミップマップ" msgstr "ミップマップ"
#: builtin/mainmenu.lua:978 #: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering" msgid "Anisotropic Filtering"
msgstr "異方性フィルタリング" msgstr "異方性フィルタリング"
#: builtin/mainmenu.lua:980 #: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering" msgid "Bi-Linear Filtering"
msgstr "バイリニアフィルタリング" msgstr "バイリニアフィルタリング"
#: builtin/mainmenu.lua:982 #: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering" msgid "Tri-Linear Filtering"
msgstr "トリリニアフィルタリング" msgstr "トリリニアフィルタリング"
#: builtin/mainmenu.lua:985 #: builtin/mainmenu.lua:918
msgid "Shaders" msgid "Shaders"
msgstr "シェーダー" msgstr "シェーダー"
#: builtin/mainmenu.lua:987 #: builtin/mainmenu.lua:920
msgid "Preload item visuals" msgid "Preload item visuals"
msgstr "アイテム外観のプリロード" msgstr "アイテム外観のプリロード"
#: builtin/mainmenu.lua:989 #: builtin/mainmenu.lua:922
msgid "Enable Particles" msgid "Enable Particles"
msgstr "破片表現の有効化" msgstr "破片表現の有効化"
#: builtin/mainmenu.lua:991 #: builtin/mainmenu.lua:924
msgid "Finite Liquid" msgid "Finite Liquid"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:994 #: builtin/mainmenu.lua:927
msgid "Change keys" msgid "Change keys"
msgstr "キー割当て変更" msgstr "キー割当て変更"
#: builtin/mainmenu.lua:1007 src/keycode.cpp:248 #: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play" msgid "Play"
msgstr "選択した世界に入る" msgstr "選択した世界に入る"
#: builtin/mainmenu.lua:1009 #: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER" msgid "SINGLE PLAYER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1022 #: builtin/mainmenu.lua:955
msgid "Select texture pack:" msgid "Select texture pack:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1023 #: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS" msgid "TEXTURE PACKS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1043 #: builtin/mainmenu.lua:976
msgid "No information available" msgid "No information available"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1071 #: builtin/mainmenu.lua:1005
msgid "Core Developers" msgid "Core Developers"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1082 #: builtin/mainmenu.lua:1020
msgid "Active Contributors" msgid "Active Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1092 #: builtin/mainmenu.lua:1028
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr "シングルプレイヤー"
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr ""
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr "設定"
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr "クレジット"
#: builtin/modmgr.lua:236 #: builtin/modmgr.lua:236
msgid "MODS" msgid "MODS"
msgstr "" msgstr ""
@ -310,115 +318,134 @@ msgstr ""
msgid "Installed Mods:" msgid "Installed Mods:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:243 builtin/modstore.lua:253 #: builtin/modmgr.lua:243
msgid "Install" msgid "Add mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:244 #: builtin/modmgr.lua:244
#, fuzzy msgid "Local install"
msgid "Download" msgstr ""
msgstr "Down"
#: builtin/modmgr.lua:256 #: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
msgid "No mod description available"
msgstr ""
#: builtin/modmgr.lua:288
msgid "Mod information:"
msgstr ""
#: builtin/modmgr.lua:299
msgid "Rename" msgid "Rename"
msgstr "" msgstr ""
#: builtin/modmgr.lua:260 builtin/modmgr.lua:402 #: builtin/modmgr.lua:301
#, fuzzy msgid "Uninstall selected modpack"
msgid "Depends:" msgstr ""
msgstr "この改造ファイルが必要です:"
#: builtin/modmgr.lua:282 #: builtin/modmgr.lua:312
msgid "Uninstall selected mod"
msgstr ""
#: builtin/modmgr.lua:324
msgid "Rename Modpack:" msgid "Rename Modpack:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:287 src/keycode.cpp:227 #: builtin/modmgr.lua:329 src/keycode.cpp:227
#, fuzzy #, fuzzy
msgid "Accept" msgid "Accept"
msgstr "Accept" msgstr "Accept"
#: builtin/modmgr.lua:381 #: builtin/modmgr.lua:423
#, fuzzy #, fuzzy
msgid "World:" msgid "World:"
msgstr "ワールド選択:" msgstr "ワールド選択:"
#: builtin/modmgr.lua:385 builtin/modmgr.lua:387 #: builtin/modmgr.lua:427 builtin/modmgr.lua:429
#, fuzzy #, fuzzy
msgid "Hide Game" msgid "Hide Game"
msgstr "ゲーム" msgstr "ゲーム"
#: builtin/modmgr.lua:391 builtin/modmgr.lua:393 #: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content" msgid "Hide mp content"
msgstr "" msgstr ""
#: builtin/modmgr.lua:400 #: builtin/modmgr.lua:442
msgid "Mod:" msgid "Mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:405 src/guiKeyChangeMenu.cpp:187 #: builtin/modmgr.lua:444
#, fuzzy
msgid "Depends:"
msgstr "この改造ファイルが必要です:"
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save" msgid "Save"
msgstr "保存" msgstr "保存"
#: builtin/modmgr.lua:422 #: builtin/modmgr.lua:464
#, fuzzy #, fuzzy
msgid "Enable MP" msgid "Enable MP"
msgstr "全部を有効にしました" msgstr "全部を有効にしました"
#: builtin/modmgr.lua:424 #: builtin/modmgr.lua:466
#, fuzzy #, fuzzy
msgid "Disable MP" msgid "Disable MP"
msgstr "全部を無効にしました" msgstr "全部を無効にしました"
#: builtin/modmgr.lua:428 builtin/modmgr.lua:430 #: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled" msgid "enabled"
msgstr "有効にしました" msgstr "有効にしました"
#: builtin/modmgr.lua:436 #: builtin/modmgr.lua:478
#, fuzzy #, fuzzy
msgid "Enable all" msgid "Enable all"
msgstr "全部を有効にしました" msgstr "全部を有効にしました"
#: builtin/modmgr.lua:551 #: builtin/modmgr.lua:577
#, fuzzy #, fuzzy
msgid "Select Mod File:" msgid "Select Mod File:"
msgstr "ワールド選択:" msgstr "ワールド選択:"
#: builtin/modmgr.lua:590 #: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\"" msgid "Install Mod: file: \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:591 #: builtin/modmgr.lua:617
msgid "" msgid ""
"\n" "\n"
"Install Mod: unsupported filetype \"$1\"" "Install Mod: unsupported filetype \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:612 #: builtin/modmgr.lua:638
#, fuzzy #, fuzzy
msgid "Failed to install $1 to $2" msgid "Failed to install $1 to $2"
msgstr "ワールドの初期化に失敗" msgstr "ワールドの初期化に失敗"
#: builtin/modmgr.lua:615 #: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1" msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:635 #: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1" msgid "Install Mod: unable to find real modname for: $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:824 #: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\"" msgid "Modmgr: failed to delete \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:828 #: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\"" msgid "Modmgr: invalid modpath \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:845 #: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?" msgid "Are you sure you want to delete \"$1\"?"
msgstr "" msgstr ""
#: builtin/modmgr.lua:847 #: builtin/modmgr.lua:878
msgid "No of course not!" msgid "No of course not!"
msgstr "" msgstr ""
@ -434,47 +461,51 @@ msgstr ""
msgid "re-Install" msgid "re-Install"
msgstr "" msgstr ""
#: src/client.cpp:2915 #: builtin/modstore.lua:253
msgid "Install"
msgstr ""
#: src/client.cpp:2917
msgid "Item textures..." msgid "Item textures..."
msgstr "" msgstr ""
#: src/game.cpp:939 #: src/game.cpp:940
msgid "Loading..." msgid "Loading..."
msgstr "" msgstr ""
#: src/game.cpp:999 #: src/game.cpp:1000
msgid "Creating server...." msgid "Creating server...."
msgstr "" msgstr ""
#: src/game.cpp:1015 #: src/game.cpp:1016
msgid "Creating client..." msgid "Creating client..."
msgstr "" msgstr ""
#: src/game.cpp:1024 #: src/game.cpp:1025
msgid "Resolving address..." msgid "Resolving address..."
msgstr "" msgstr ""
#: src/game.cpp:1121 #: src/game.cpp:1122
msgid "Connecting to server..." msgid "Connecting to server..."
msgstr "" msgstr ""
#: src/game.cpp:1218 #: src/game.cpp:1219
msgid "Item definitions..." msgid "Item definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1225 #: src/game.cpp:1226
msgid "Node definitions..." msgid "Node definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1232 #: src/game.cpp:1233
msgid "Media..." msgid "Media..."
msgstr "" msgstr ""
#: src/game.cpp:3405 #: src/game.cpp:3409
msgid "Shutting down stuff..." msgid "Shutting down stuff..."
msgstr "" msgstr ""
#: src/game.cpp:3435 #: src/game.cpp:3439
msgid "" msgid ""
"\n" "\n"
"Check debug.txt for details." "Check debug.txt for details."
@ -488,12 +519,8 @@ msgstr "死亡しました。"
msgid "Respawn" msgid "Respawn"
msgstr "リスポーン" msgstr "リスポーン"
#: src/guiFormSpecMenu.cpp:1569 #: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
msgid "Left click: Move all items, Right click: Move single item" #: src/guiTextInputMenu.cpp:139
msgstr "左クリックは全部のアイテムを動かす,右クリックは一つのアイテムを動かす"
#: src/guiFormSpecMenu.cpp:1595 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:140
msgid "Proceed" msgid "Proceed"
msgstr "続く" msgstr "続く"
@ -509,99 +536,99 @@ msgstr "「使う」は下りる"
msgid "Double tap \"jump\" to toggle fly" msgid "Double tap \"jump\" to toggle fly"
msgstr "「ジャンプ」を二回押すと飛べる" msgstr "「ジャンプ」を二回押すと飛べる"
#: src/guiKeyChangeMenu.cpp:290 #: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use" msgid "Key already in use"
msgstr "既に使われているキーです" msgstr "既に使われているキーです"
#: src/guiKeyChangeMenu.cpp:372 #: src/guiKeyChangeMenu.cpp:363
msgid "press key" msgid "press key"
msgstr "キー入力待ち" msgstr "キー入力待ち"
#: src/guiKeyChangeMenu.cpp:400 #: src/guiKeyChangeMenu.cpp:389
msgid "Forward" msgid "Forward"
msgstr "前進" msgstr "前進"
#: src/guiKeyChangeMenu.cpp:401 #: src/guiKeyChangeMenu.cpp:390
msgid "Backward" msgid "Backward"
msgstr "後退" msgstr "後退"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left" msgid "Left"
msgstr "左へ進む" msgstr "左へ進む"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right" msgid "Right"
msgstr "右へ進む" msgstr "右へ進む"
#: src/guiKeyChangeMenu.cpp:404 #: src/guiKeyChangeMenu.cpp:393
msgid "Use" msgid "Use"
msgstr "使う" msgstr "使う"
#: src/guiKeyChangeMenu.cpp:405 #: src/guiKeyChangeMenu.cpp:394
msgid "Jump" msgid "Jump"
msgstr "ジャンプ" msgstr "ジャンプ"
#: src/guiKeyChangeMenu.cpp:406 #: src/guiKeyChangeMenu.cpp:395
msgid "Sneak" msgid "Sneak"
msgstr "こっそり進む" msgstr "こっそり進む"
#: src/guiKeyChangeMenu.cpp:407 #: src/guiKeyChangeMenu.cpp:396
msgid "Drop" msgid "Drop"
msgstr "落とす" msgstr "落とす"
#: src/guiKeyChangeMenu.cpp:408 #: src/guiKeyChangeMenu.cpp:397
msgid "Inventory" msgid "Inventory"
msgstr "インベントリ" msgstr "インベントリ"
#: src/guiKeyChangeMenu.cpp:409 #: src/guiKeyChangeMenu.cpp:398
msgid "Chat" msgid "Chat"
msgstr "チャット" msgstr "チャット"
#: src/guiKeyChangeMenu.cpp:410 #: src/guiKeyChangeMenu.cpp:399
msgid "Command" msgid "Command"
msgstr "コマンド" msgstr "コマンド"
#: src/guiKeyChangeMenu.cpp:411 #: src/guiKeyChangeMenu.cpp:400
msgid "Console" msgid "Console"
msgstr "コンソール" msgstr "コンソール"
#: src/guiKeyChangeMenu.cpp:412 #: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly" msgid "Toggle fly"
msgstr "飛べるモードをトグル" msgstr "飛べるモードをトグル"
#: src/guiKeyChangeMenu.cpp:413 #: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast" msgid "Toggle fast"
msgstr "ファストモードをトグル" msgstr "ファストモードをトグル"
#: src/guiKeyChangeMenu.cpp:414 #: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip" msgid "Toggle noclip"
msgstr "ノクリップモードをトグル" msgstr "ノクリップモードをトグル"
#: src/guiKeyChangeMenu.cpp:415 #: src/guiKeyChangeMenu.cpp:404
msgid "Range select" msgid "Range select"
msgstr "範囲選択" msgstr "範囲選択"
#: src/guiKeyChangeMenu.cpp:416 #: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks" msgid "Print stacks"
msgstr "スタックの表示" msgstr "スタックの表示"
#: src/guiPasswordChange.cpp:107 #: src/guiPasswordChange.cpp:106
msgid "Old Password" msgid "Old Password"
msgstr "古いパスワード" msgstr "古いパスワード"
#: src/guiPasswordChange.cpp:125 #: src/guiPasswordChange.cpp:122
msgid "New Password" msgid "New Password"
msgstr "新しいパスワード" msgstr "新しいパスワード"
#: src/guiPasswordChange.cpp:142 #: src/guiPasswordChange.cpp:137
msgid "Confirm Password" msgid "Confirm Password"
msgstr "パスワードの確認" msgstr "パスワードの確認"
#: src/guiPasswordChange.cpp:160 #: src/guiPasswordChange.cpp:153
msgid "Change" msgid "Change"
msgstr "変更" msgstr "変更"
#: src/guiPasswordChange.cpp:169 #: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "新しいパスワードが一致しません!" msgstr "新しいパスワードが一致しません!"
@ -640,11 +667,11 @@ msgid ""
"- T: chat\n" "- T: chat\n"
msgstr "" msgstr ""
#: src/guiVolumeChange.cpp:108 #: src/guiVolumeChange.cpp:107
msgid "Sound Volume: " msgid "Sound Volume: "
msgstr "" msgstr ""
#: src/guiVolumeChange.cpp:122 #: src/guiVolumeChange.cpp:121
msgid "Exit" msgid "Exit"
msgstr "" msgstr ""
@ -971,77 +998,36 @@ msgstr "PA1"
msgid "Zoom" msgid "Zoom"
msgstr "ズーム" msgstr "ズーム"
#: src/main.cpp:1411 #: src/main.cpp:1472
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "yes" msgstr "yes"
#: src/main.cpp:1486 #: src/main.cpp:1547
msgid "Main Menu" msgid "Main Menu"
msgstr "メインメニュー" msgstr "メインメニュー"
#: src/main.cpp:1662 #: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do." msgid "No world selected and no address provided. Nothing to do."
msgstr "" msgstr ""
#: src/main.cpp:1670 #: src/main.cpp:1731
msgid "Could not find or load game \"" msgid "Could not find or load game \""
msgstr "ゲームをロードか見つかるのに失敗" msgstr "ゲームをロードか見つかるのに失敗"
#: src/main.cpp:1684 #: src/main.cpp:1745
msgid "Invalid gamespec." msgid "Invalid gamespec."
msgstr "" msgstr ""
#: src/main.cpp:1729 #: src/main.cpp:1790
msgid "Connection error (timed out?)" msgid "Connection error (timed out?)"
msgstr "接続エラー (タイムアウトか?)" msgstr "接続エラー (タイムアウトか?)"
#~ msgid "is required by:" #~ msgid ""
#~ msgstr "この改造に必要されます:" #~ "Warning: Some mods are not configured yet.\n"
#~ "They will be enabled by default when you save the configuration. "
#~ msgid "Configuration saved. " #~ msgstr ""
#~ msgstr "設定を保存しました. " #~ "警告: マインテストの改造がいくつか設定されていません。\n"
#~ "これらを設定を保存すると自動で有効化されます。 "
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "注意:設定が一定でわありません。"
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "ワールドを作成できません: 名前に無効な文字が含まれています"
#~ msgid "Multiplayer"
#~ msgstr "マルチプレイヤー"
#~ msgid "Advanced"
#~ msgstr "高度"
#~ msgid "Show Public"
#~ msgstr "公共を見せる"
#~ msgid "Show Favorites"
#~ msgstr "お気に入りを見せる"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "アドレスを入力しないかぎりロカルサーバーを開始。"
#~ msgid "Create world"
#~ msgstr "ワールド作成"
#~ msgid "Address required."
#~ msgstr "アドレスが必要です."
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "ワールドを削除できません: 何も選択されていません"
#~ msgid "Files to be deleted"
#~ msgstr "削除されるファイル"
#~ msgid "Cannot create world: No games found"
#~ msgstr "ワールドを作成できません: ゲームが見つかりませんでした"
#~ msgid "Cannot configure world: Nothing selected"
#~ msgstr "ワールドの設定ができません: 何も選択されていません"
#~ msgid "Failed to delete all world files"
#~ msgstr "ワールドファイルの全ての削除に失敗"
#~ msgid "" #~ msgid ""
#~ "Warning: Some configured mods are missing.\n" #~ "Warning: Some configured mods are missing.\n"
@ -1050,9 +1036,58 @@ msgstr "接続エラー (タイムアウトか?)"
#~ "警告: いくつかの設定みの改造ファイルが見つかりません.\n" #~ "警告: いくつかの設定みの改造ファイルが見つかりません.\n"
#~ "これらの情報は設定を保存すると削除されます. " #~ "これらの情報は設定を保存すると削除されます. "
#~ msgid "" #~ msgid "Failed to delete all world files"
#~ "Warning: Some mods are not configured yet.\n" #~ msgstr "ワールドファイルの全ての削除に失敗"
#~ "They will be enabled by default when you save the configuration. "
#~ msgid "Cannot configure world: Nothing selected"
#~ msgstr "ワールドの設定ができません: 何も選択されていません"
#~ msgid "Cannot create world: No games found"
#~ msgstr "ワールドを作成できません: ゲームが見つかりませんでした"
#~ msgid "Files to be deleted"
#~ msgstr "削除されるファイル"
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "ワールドを削除できません: 何も選択されていません"
#~ msgid "Address required."
#~ msgstr "アドレスが必要です."
#~ msgid "Create world"
#~ msgstr "ワールド作成"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "アドレスを入力しないかぎりロカルサーバーを開始。"
#~ msgid "Show Favorites"
#~ msgstr "お気に入りを見せる"
#~ msgid "Show Public"
#~ msgstr "公共を見せる"
#~ msgid "Advanced"
#~ msgstr "高度"
#~ msgid "Multiplayer"
#~ msgstr "マルチプレイヤー"
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "ワールドを作成できません: 名前に無効な文字が含まれています"
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "注意:設定が一定でわありません。"
#~ msgid "Configuration saved. "
#~ msgstr "設定を保存しました. "
#~ msgid "is required by:"
#~ msgstr "この改造に必要されます:"
#~ msgid "Left click: Move all items, Right click: Move single item"
#~ msgstr "" #~ msgstr ""
#~ "警告: マインテストの改造がいくつか設定されていません。\n" #~ "左クリックは全部のアイテムを動かす,右クリックは一つのアイテムを動かす"
#~ "これらを設定を保存すると自動で有効化されます。 "
#, fuzzy
#~ msgid "Download"
#~ msgstr "Down"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: minetest\n" "Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-07 22:01+0400\n" "POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -21,12 +21,12 @@ msgstr ""
msgid "Game Name" msgid "Game Name"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:301 #: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create" msgid "Create"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:302 builtin/modmgr.lua:289 #: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:406 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223 #: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
@ -38,35 +38,35 @@ msgstr ""
msgid "GAMES" msgid "GAMES"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:859 #: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
msgid "Games" msgid "Games"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:233 #: builtin/gamemgr.lua:234
msgid "Mods:" msgid "Mods:"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:234 #: builtin/gamemgr.lua:235
msgid "edit game" msgid "edit game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:237 #: builtin/gamemgr.lua:238
msgid "new game" msgid "new game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:247 #: builtin/gamemgr.lua:248
msgid "EDIT GAME" msgid "EDIT GAME"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:267 #: builtin/gamemgr.lua:269
msgid "Remove selected mod" msgid "Remove selected mod"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:270 #: builtin/gamemgr.lua:272
msgid "<<-- Add mod" msgid "<<-- Add mod"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:159 #: builtin/mainmenu.lua:158
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
@ -74,223 +74,231 @@ msgstr ""
msgid "World name" msgid "World name"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:298 #: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen" msgid "Mapgen"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:300 #: builtin/mainmenu.lua:306
msgid "Game" msgid "Game"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:314 #: builtin/mainmenu.lua:319
msgid "Delete World \"$1\"?" msgid "Delete World \"$1\"?"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:315 builtin/modmgr.lua:846 #: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:316 #: builtin/mainmenu.lua:321
msgid "No" msgid "No"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:384 #: builtin/mainmenu.lua:364
msgid "A world named \"$1\" already exists" msgid "A world named \"$1\" already exists"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:399 #: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected" msgid "No worldname given or no game selected"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:852 #: builtin/mainmenu.lua:650
msgid "Singleplayer" msgid "To enable shaders the OpenGL driver needs to be used."
msgstr "" msgstr ""
#: builtin/mainmenu.lua:853 #: builtin/mainmenu.lua:818
msgid "Client"
msgstr ""
#: builtin/mainmenu.lua:854
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:855
msgid "Settings"
msgstr ""
#: builtin/mainmenu.lua:856
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:863
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:865
msgid "Credits"
msgstr ""
#: builtin/mainmenu.lua:885
msgid "CLIENT" msgid "CLIENT"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:886 #: builtin/mainmenu.lua:819
msgid "Favorites:" msgid "Favorites:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:887 #: builtin/mainmenu.lua:820
msgid "Address/Port" msgid "Address/Port"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:888 #: builtin/mainmenu.lua:821
msgid "Name/Password" msgid "Name/Password"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:891 #: builtin/mainmenu.lua:824
msgid "Public Serverlist" msgid "Public Serverlist"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:896 builtin/mainmenu.lua:941 builtin/mainmenu.lua:1004 #: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: builtin/modmgr.lua:271 src/keycode.cpp:229 #: src/keycode.cpp:229
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:900 #: builtin/mainmenu.lua:833
msgid "Connect" msgid "Connect"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:942 builtin/mainmenu.lua:1005 #: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New" msgid "New"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:943 builtin/mainmenu.lua:1006 #: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure" msgid "Configure"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:944 #: builtin/mainmenu.lua:877
msgid "Start Game" msgid "Start Game"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:945 builtin/mainmenu.lua:1008 #: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:" msgid "Select World:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:946 #: builtin/mainmenu.lua:879
msgid "START SERVER" msgid "START SERVER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:947 builtin/mainmenu.lua:1010 #: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode" msgid "Creative Mode"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:949 builtin/mainmenu.lua:1012 #: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage" msgid "Enable Damage"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:951 #: builtin/mainmenu.lua:884
msgid "Public" msgid "Public"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:953 #: builtin/mainmenu.lua:886
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:955 #: builtin/mainmenu.lua:888
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:956 #: builtin/mainmenu.lua:889
msgid "Server Port" msgid "Server Port"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:966 #: builtin/mainmenu.lua:899
msgid "SETTINGS" msgid "SETTINGS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:967 #: builtin/mainmenu.lua:900
msgid "Fancy trees" msgid "Fancy trees"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:969 #: builtin/mainmenu.lua:902
msgid "Smooth Lighting" msgid "Smooth Lighting"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:971 #: builtin/mainmenu.lua:904
msgid "3D Clouds" msgid "3D Clouds"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:973 #: builtin/mainmenu.lua:906
msgid "Opaque Water" msgid "Opaque Water"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:976 #: builtin/mainmenu.lua:909
msgid "Mip-Mapping" msgid "Mip-Mapping"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:978 #: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering" msgid "Anisotropic Filtering"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:980 #: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering" msgid "Bi-Linear Filtering"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:982 #: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering" msgid "Tri-Linear Filtering"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:985 #: builtin/mainmenu.lua:918
msgid "Shaders" msgid "Shaders"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:987 #: builtin/mainmenu.lua:920
msgid "Preload item visuals" msgid "Preload item visuals"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:989 #: builtin/mainmenu.lua:922
msgid "Enable Particles" msgid "Enable Particles"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:991 #: builtin/mainmenu.lua:924
msgid "Finite Liquid" msgid "Finite Liquid"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:994 #: builtin/mainmenu.lua:927
msgid "Change keys" msgid "Change keys"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1007 src/keycode.cpp:248 #: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play" msgid "Play"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1009 #: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER" msgid "SINGLE PLAYER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1022 #: builtin/mainmenu.lua:955
msgid "Select texture pack:" msgid "Select texture pack:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1023 #: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS" msgid "TEXTURE PACKS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1043 #: builtin/mainmenu.lua:976
msgid "No information available" msgid "No information available"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1071 #: builtin/mainmenu.lua:1005
msgid "Core Developers" msgid "Core Developers"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1082 #: builtin/mainmenu.lua:1020
msgid "Active Contributors" msgid "Active Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1092 #: builtin/mainmenu.lua:1028
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr ""
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr ""
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr ""
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr ""
#: builtin/modmgr.lua:236 #: builtin/modmgr.lua:236
msgid "MODS" msgid "MODS"
msgstr "" msgstr ""
@ -299,105 +307,125 @@ msgstr ""
msgid "Installed Mods:" msgid "Installed Mods:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:243 builtin/modstore.lua:253 #: builtin/modmgr.lua:243
msgid "Install" msgid "Add mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:244 #: builtin/modmgr.lua:244
msgid "Download" msgid "Local install"
msgstr "" msgstr ""
#: builtin/modmgr.lua:256 #: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
msgid "No mod description available"
msgstr ""
#: builtin/modmgr.lua:288
msgid "Mod information:"
msgstr ""
#: builtin/modmgr.lua:299
msgid "Rename" msgid "Rename"
msgstr "" msgstr ""
#: builtin/modmgr.lua:260 builtin/modmgr.lua:402 #: builtin/modmgr.lua:301
msgid "Depends:" msgid "Uninstall selected modpack"
msgstr "" msgstr ""
#: builtin/modmgr.lua:282 #: builtin/modmgr.lua:312
msgid "Uninstall selected mod"
msgstr ""
#: builtin/modmgr.lua:324
msgid "Rename Modpack:" msgid "Rename Modpack:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:287 src/keycode.cpp:227 #: builtin/modmgr.lua:329 src/keycode.cpp:227
msgid "Accept" msgid "Accept"
msgstr "" msgstr ""
#: builtin/modmgr.lua:381 #: builtin/modmgr.lua:423
msgid "World:" msgid "World:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:385 builtin/modmgr.lua:387 #: builtin/modmgr.lua:427 builtin/modmgr.lua:429
msgid "Hide Game" msgid "Hide Game"
msgstr "" msgstr ""
#: builtin/modmgr.lua:391 builtin/modmgr.lua:393 #: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content" msgid "Hide mp content"
msgstr "" msgstr ""
#: builtin/modmgr.lua:400 #: builtin/modmgr.lua:442
msgid "Mod:" msgid "Mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:405 src/guiKeyChangeMenu.cpp:187 #: builtin/modmgr.lua:444
msgid "Depends:"
msgstr ""
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: builtin/modmgr.lua:422 #: builtin/modmgr.lua:464
msgid "Enable MP" msgid "Enable MP"
msgstr "" msgstr ""
#: builtin/modmgr.lua:424 #: builtin/modmgr.lua:466
msgid "Disable MP" msgid "Disable MP"
msgstr "" msgstr ""
#: builtin/modmgr.lua:428 builtin/modmgr.lua:430 #: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled" msgid "enabled"
msgstr "" msgstr ""
#: builtin/modmgr.lua:436 #: builtin/modmgr.lua:478
msgid "Enable all" msgid "Enable all"
msgstr "" msgstr ""
#: builtin/modmgr.lua:551 #: builtin/modmgr.lua:577
msgid "Select Mod File:" msgid "Select Mod File:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:590 #: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\"" msgid "Install Mod: file: \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:591 #: builtin/modmgr.lua:617
msgid "" msgid ""
"\n" "\n"
"Install Mod: unsupported filetype \"$1\"" "Install Mod: unsupported filetype \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:612 #: builtin/modmgr.lua:638
msgid "Failed to install $1 to $2" msgid "Failed to install $1 to $2"
msgstr "" msgstr ""
#: builtin/modmgr.lua:615 #: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1" msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:635 #: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1" msgid "Install Mod: unable to find real modname for: $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:824 #: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\"" msgid "Modmgr: failed to delete \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:828 #: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\"" msgid "Modmgr: invalid modpath \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:845 #: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?" msgid "Are you sure you want to delete \"$1\"?"
msgstr "" msgstr ""
#: builtin/modmgr.lua:847 #: builtin/modmgr.lua:878
msgid "No of course not!" msgid "No of course not!"
msgstr "" msgstr ""
@ -413,47 +441,51 @@ msgstr ""
msgid "re-Install" msgid "re-Install"
msgstr "" msgstr ""
#: src/client.cpp:2915 #: builtin/modstore.lua:253
msgid "Install"
msgstr ""
#: src/client.cpp:2917
msgid "Item textures..." msgid "Item textures..."
msgstr "" msgstr ""
#: src/game.cpp:939 #: src/game.cpp:940
msgid "Loading..." msgid "Loading..."
msgstr "" msgstr ""
#: src/game.cpp:999 #: src/game.cpp:1000
msgid "Creating server...." msgid "Creating server...."
msgstr "" msgstr ""
#: src/game.cpp:1015 #: src/game.cpp:1016
msgid "Creating client..." msgid "Creating client..."
msgstr "" msgstr ""
#: src/game.cpp:1024 #: src/game.cpp:1025
msgid "Resolving address..." msgid "Resolving address..."
msgstr "" msgstr ""
#: src/game.cpp:1121 #: src/game.cpp:1122
msgid "Connecting to server..." msgid "Connecting to server..."
msgstr "" msgstr ""
#: src/game.cpp:1218 #: src/game.cpp:1219
msgid "Item definitions..." msgid "Item definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1225 #: src/game.cpp:1226
msgid "Node definitions..." msgid "Node definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1232 #: src/game.cpp:1233
msgid "Media..." msgid "Media..."
msgstr "" msgstr ""
#: src/game.cpp:3405 #: src/game.cpp:3409
msgid "Shutting down stuff..." msgid "Shutting down stuff..."
msgstr "" msgstr ""
#: src/game.cpp:3435 #: src/game.cpp:3439
msgid "" msgid ""
"\n" "\n"
"Check debug.txt for details." "Check debug.txt for details."
@ -467,12 +499,8 @@ msgstr ""
msgid "Respawn" msgid "Respawn"
msgstr "" msgstr ""
#: src/guiFormSpecMenu.cpp:1569 #: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
msgid "Left click: Move all items, Right click: Move single item" #: src/guiTextInputMenu.cpp:139
msgstr ""
#: src/guiFormSpecMenu.cpp:1595 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:140
msgid "Proceed" msgid "Proceed"
msgstr "" msgstr ""
@ -488,99 +516,99 @@ msgstr ""
msgid "Double tap \"jump\" to toggle fly" msgid "Double tap \"jump\" to toggle fly"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:290 #: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use" msgid "Key already in use"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:372 #: src/guiKeyChangeMenu.cpp:363
msgid "press key" msgid "press key"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:400 #: src/guiKeyChangeMenu.cpp:389
msgid "Forward" msgid "Forward"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:401 #: src/guiKeyChangeMenu.cpp:390
msgid "Backward" msgid "Backward"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left" msgid "Left"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right" msgid "Right"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:404 #: src/guiKeyChangeMenu.cpp:393
msgid "Use" msgid "Use"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:405 #: src/guiKeyChangeMenu.cpp:394
msgid "Jump" msgid "Jump"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:406 #: src/guiKeyChangeMenu.cpp:395
msgid "Sneak" msgid "Sneak"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:407 #: src/guiKeyChangeMenu.cpp:396
msgid "Drop" msgid "Drop"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:408 #: src/guiKeyChangeMenu.cpp:397
msgid "Inventory" msgid "Inventory"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:409 #: src/guiKeyChangeMenu.cpp:398
msgid "Chat" msgid "Chat"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:410 #: src/guiKeyChangeMenu.cpp:399
msgid "Command" msgid "Command"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:411 #: src/guiKeyChangeMenu.cpp:400
msgid "Console" msgid "Console"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:412 #: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly" msgid "Toggle fly"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:413 #: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast" msgid "Toggle fast"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:414 #: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip" msgid "Toggle noclip"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:415 #: src/guiKeyChangeMenu.cpp:404
msgid "Range select" msgid "Range select"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:416 #: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks" msgid "Print stacks"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:107 #: src/guiPasswordChange.cpp:106
msgid "Old Password" msgid "Old Password"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:125 #: src/guiPasswordChange.cpp:122
msgid "New Password" msgid "New Password"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:142 #: src/guiPasswordChange.cpp:137
msgid "Confirm Password" msgid "Confirm Password"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:160 #: src/guiPasswordChange.cpp:153
msgid "Change" msgid "Change"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:169 #: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "" msgstr ""
@ -619,11 +647,11 @@ msgid ""
"- T: chat\n" "- T: chat\n"
msgstr "" msgstr ""
#: src/guiVolumeChange.cpp:108 #: src/guiVolumeChange.cpp:107
msgid "Sound Volume: " msgid "Sound Volume: "
msgstr "" msgstr ""
#: src/guiVolumeChange.cpp:122 #: src/guiVolumeChange.cpp:121
msgid "Exit" msgid "Exit"
msgstr "" msgstr ""
@ -915,26 +943,26 @@ msgstr ""
msgid "Zoom" msgid "Zoom"
msgstr "" msgstr ""
#: src/main.cpp:1411 #: src/main.cpp:1472
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "yes" msgstr "yes"
#: src/main.cpp:1486 #: src/main.cpp:1547
msgid "Main Menu" msgid "Main Menu"
msgstr "" msgstr ""
#: src/main.cpp:1662 #: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do." msgid "No world selected and no address provided. Nothing to do."
msgstr "" msgstr ""
#: src/main.cpp:1670 #: src/main.cpp:1731
msgid "Could not find or load game \"" msgid "Could not find or load game \""
msgstr "" msgstr ""
#: src/main.cpp:1684 #: src/main.cpp:1745
msgid "Invalid gamespec." msgid "Invalid gamespec."
msgstr "" msgstr ""
#: src/main.cpp:1729 #: src/main.cpp:1790
msgid "Connection error (timed out?)" msgid "Connection error (timed out?)"
msgstr "" msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: minetest\n" "Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-07 22:01+0400\n" "POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: 2013-06-01 18:09+0200\n" "PO-Revision-Date: 2013-06-01 18:09+0200\n"
"Last-Translator: Chynggyz Jumaliev <translatorky@lavabit.com>\n" "Last-Translator: Chynggyz Jumaliev <translatorky@lavabit.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -23,12 +23,12 @@ msgstr ""
msgid "Game Name" msgid "Game Name"
msgstr "Оюн" msgstr "Оюн"
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:301 #: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create" msgid "Create"
msgstr "Жаратуу" msgstr "Жаратуу"
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:302 builtin/modmgr.lua:289 #: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:406 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223 #: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel" msgid "Cancel"
msgstr "Жокко чыгаруу" msgstr "Жокко чыгаруу"
@ -40,36 +40,36 @@ msgstr ""
msgid "GAMES" msgid "GAMES"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:859 #: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
#, fuzzy #, fuzzy
msgid "Games" msgid "Games"
msgstr "Оюн" msgstr "Оюн"
#: builtin/gamemgr.lua:233 #: builtin/gamemgr.lua:234
msgid "Mods:" msgid "Mods:"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:234 #: builtin/gamemgr.lua:235
msgid "edit game" msgid "edit game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:237 #: builtin/gamemgr.lua:238
msgid "new game" msgid "new game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:247 #: builtin/gamemgr.lua:248
msgid "EDIT GAME" msgid "EDIT GAME"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:267 #: builtin/gamemgr.lua:269
msgid "Remove selected mod" msgid "Remove selected mod"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:270 #: builtin/gamemgr.lua:272
msgid "<<-- Add mod" msgid "<<-- Add mod"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:159 #: builtin/mainmenu.lua:158
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
@ -77,229 +77,237 @@ msgstr ""
msgid "World name" msgid "World name"
msgstr "Дүйнө аты" msgstr "Дүйнө аты"
#: builtin/mainmenu.lua:298 #: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen" msgid "Mapgen"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:300 #: builtin/mainmenu.lua:306
msgid "Game" msgid "Game"
msgstr "Оюн" msgstr "Оюн"
#: builtin/mainmenu.lua:314 #: builtin/mainmenu.lua:319
#, fuzzy #, fuzzy
msgid "Delete World \"$1\"?" msgid "Delete World \"$1\"?"
msgstr "Дүйнөнү өчүрүү" msgstr "Дүйнөнү өчүрүү"
#: builtin/mainmenu.lua:315 builtin/modmgr.lua:846 #: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes" msgid "Yes"
msgstr "Ооба" msgstr "Ооба"
#: builtin/mainmenu.lua:316 #: builtin/mainmenu.lua:321
msgid "No" msgid "No"
msgstr "Жок" msgstr "Жок"
#: builtin/mainmenu.lua:384 #: builtin/mainmenu.lua:364
msgid "A world named \"$1\" already exists" msgid "A world named \"$1\" already exists"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:399 #: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected" msgid "No worldname given or no game selected"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:852 #: builtin/mainmenu.lua:650
msgid "Singleplayer" msgid "To enable shaders the OpenGL driver needs to be used."
msgstr "Бир кишилик"
#: builtin/mainmenu.lua:853
msgid "Client"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:854 #: builtin/mainmenu.lua:818
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:855
msgid "Settings"
msgstr "Ырастоолор"
#: builtin/mainmenu.lua:856
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:863
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:865
msgid "Credits"
msgstr "Алкыштар"
#: builtin/mainmenu.lua:885
msgid "CLIENT" msgid "CLIENT"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:886 #: builtin/mainmenu.lua:819
msgid "Favorites:" msgid "Favorites:"
msgstr "Тандалмалар:" msgstr "Тандалмалар:"
#: builtin/mainmenu.lua:887 #: builtin/mainmenu.lua:820
msgid "Address/Port" msgid "Address/Port"
msgstr "Дареги/порту" msgstr "Дареги/порту"
#: builtin/mainmenu.lua:888 #: builtin/mainmenu.lua:821
msgid "Name/Password" msgid "Name/Password"
msgstr "Аты/сырсөзү" msgstr "Аты/сырсөзү"
#: builtin/mainmenu.lua:891 #: builtin/mainmenu.lua:824
#, fuzzy #, fuzzy
msgid "Public Serverlist" msgid "Public Serverlist"
msgstr "Жалпылык серверлердин тизмеси:" msgstr "Жалпылык серверлердин тизмеси:"
#: builtin/mainmenu.lua:896 builtin/mainmenu.lua:941 builtin/mainmenu.lua:1004 #: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: builtin/modmgr.lua:271 src/keycode.cpp:229 #: src/keycode.cpp:229
msgid "Delete" msgid "Delete"
msgstr "Өчүрүү" msgstr "Өчүрүү"
#: builtin/mainmenu.lua:900 #: builtin/mainmenu.lua:833
msgid "Connect" msgid "Connect"
msgstr "Туташуу" msgstr "Туташуу"
#: builtin/mainmenu.lua:942 builtin/mainmenu.lua:1005 #: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New" msgid "New"
msgstr "Жаңы" msgstr "Жаңы"
#: builtin/mainmenu.lua:943 builtin/mainmenu.lua:1006 #: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure" msgid "Configure"
msgstr "Ырастоо" msgstr "Ырастоо"
#: builtin/mainmenu.lua:944 #: builtin/mainmenu.lua:877
#, fuzzy #, fuzzy
msgid "Start Game" msgid "Start Game"
msgstr "Оюнду баштоо/туташуу" msgstr "Оюнду баштоо/туташуу"
#: builtin/mainmenu.lua:945 builtin/mainmenu.lua:1008 #: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:" msgid "Select World:"
msgstr "Дүйнөнү тандаңыз:" msgstr "Дүйнөнү тандаңыз:"
#: builtin/mainmenu.lua:946 #: builtin/mainmenu.lua:879
msgid "START SERVER" msgid "START SERVER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:947 builtin/mainmenu.lua:1010 #: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode" msgid "Creative Mode"
msgstr "Жаратуу режими" msgstr "Жаратуу режими"
#: builtin/mainmenu.lua:949 builtin/mainmenu.lua:1012 #: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage" msgid "Enable Damage"
msgstr "Убалды күйгүзүү" msgstr "Убалды күйгүзүү"
#: builtin/mainmenu.lua:951 #: builtin/mainmenu.lua:884
msgid "Public" msgid "Public"
msgstr "Жалпылык" msgstr "Жалпылык"
#: builtin/mainmenu.lua:953 #: builtin/mainmenu.lua:886
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:955 #: builtin/mainmenu.lua:888
#, fuzzy #, fuzzy
msgid "Password" msgid "Password"
msgstr "Эски сырсөз" msgstr "Эски сырсөз"
#: builtin/mainmenu.lua:956 #: builtin/mainmenu.lua:889
msgid "Server Port" msgid "Server Port"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:966 #: builtin/mainmenu.lua:899
msgid "SETTINGS" msgid "SETTINGS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:967 #: builtin/mainmenu.lua:900
msgid "Fancy trees" msgid "Fancy trees"
msgstr "Кооз бактар" msgstr "Кооз бактар"
#: builtin/mainmenu.lua:969 #: builtin/mainmenu.lua:902
msgid "Smooth Lighting" msgid "Smooth Lighting"
msgstr "Тегиз жарык" msgstr "Тегиз жарык"
#: builtin/mainmenu.lua:971 #: builtin/mainmenu.lua:904
msgid "3D Clouds" msgid "3D Clouds"
msgstr "3D-булуттар" msgstr "3D-булуттар"
#: builtin/mainmenu.lua:973 #: builtin/mainmenu.lua:906
#, fuzzy #, fuzzy
msgid "Opaque Water" msgid "Opaque Water"
msgstr "Күңүрт суу" msgstr "Күңүрт суу"
#: builtin/mainmenu.lua:976 #: builtin/mainmenu.lua:909
msgid "Mip-Mapping" msgid "Mip-Mapping"
msgstr "Mip-текстуралоо" msgstr "Mip-текстуралоо"
#: builtin/mainmenu.lua:978 #: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering" msgid "Anisotropic Filtering"
msgstr "Анизатропия чыпкалоосу" msgstr "Анизатропия чыпкалоосу"
#: builtin/mainmenu.lua:980 #: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering" msgid "Bi-Linear Filtering"
msgstr "Экисызык чыпкалоосу" msgstr "Экисызык чыпкалоосу"
#: builtin/mainmenu.lua:982 #: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering" msgid "Tri-Linear Filtering"
msgstr "Үчсызык чыпкалоосу" msgstr "Үчсызык чыпкалоосу"
#: builtin/mainmenu.lua:985 #: builtin/mainmenu.lua:918
msgid "Shaders" msgid "Shaders"
msgstr "Көлөкөлөгүчтөр" msgstr "Көлөкөлөгүчтөр"
#: builtin/mainmenu.lua:987 #: builtin/mainmenu.lua:920
msgid "Preload item visuals" msgid "Preload item visuals"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:989 #: builtin/mainmenu.lua:922
msgid "Enable Particles" msgid "Enable Particles"
msgstr "Бөлүкчөлөрдү күйгүзүү" msgstr "Бөлүкчөлөрдү күйгүзүү"
#: builtin/mainmenu.lua:991 #: builtin/mainmenu.lua:924
#, fuzzy #, fuzzy
msgid "Finite Liquid" msgid "Finite Liquid"
msgstr "Чектүү суюктук" msgstr "Чектүү суюктук"
#: builtin/mainmenu.lua:994 #: builtin/mainmenu.lua:927
msgid "Change keys" msgid "Change keys"
msgstr "Баскычтарды өзгөртүү" msgstr "Баскычтарды өзгөртүү"
#: builtin/mainmenu.lua:1007 src/keycode.cpp:248 #: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play" msgid "Play"
msgstr "Ойноо" msgstr "Ойноо"
#: builtin/mainmenu.lua:1009 #: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER" msgid "SINGLE PLAYER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1022 #: builtin/mainmenu.lua:955
msgid "Select texture pack:" msgid "Select texture pack:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1023 #: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS" msgid "TEXTURE PACKS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1043 #: builtin/mainmenu.lua:976
msgid "No information available" msgid "No information available"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1071 #: builtin/mainmenu.lua:1005
msgid "Core Developers" msgid "Core Developers"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1082 #: builtin/mainmenu.lua:1020
msgid "Active Contributors" msgid "Active Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1092 #: builtin/mainmenu.lua:1028
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr "Бир кишилик"
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr ""
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr "Ырастоолор"
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr "Алкыштар"
#: builtin/modmgr.lua:236 #: builtin/modmgr.lua:236
msgid "MODS" msgid "MODS"
msgstr "" msgstr ""
@ -308,114 +316,133 @@ msgstr ""
msgid "Installed Mods:" msgid "Installed Mods:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:243 builtin/modstore.lua:253 #: builtin/modmgr.lua:243
msgid "Install" msgid "Add mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:244 #: builtin/modmgr.lua:244
#, fuzzy msgid "Local install"
msgid "Download" msgstr ""
msgstr "Ылдый"
#: builtin/modmgr.lua:256 #: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
msgid "No mod description available"
msgstr ""
#: builtin/modmgr.lua:288
msgid "Mod information:"
msgstr ""
#: builtin/modmgr.lua:299
msgid "Rename" msgid "Rename"
msgstr "" msgstr ""
#: builtin/modmgr.lua:260 builtin/modmgr.lua:402 #: builtin/modmgr.lua:301
#, fuzzy msgid "Uninstall selected modpack"
msgid "Depends:" msgstr ""
msgstr "көз карандылыктары:"
#: builtin/modmgr.lua:282 #: builtin/modmgr.lua:312
msgid "Uninstall selected mod"
msgstr ""
#: builtin/modmgr.lua:324
msgid "Rename Modpack:" msgid "Rename Modpack:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:287 src/keycode.cpp:227 #: builtin/modmgr.lua:329 src/keycode.cpp:227
msgid "Accept" msgid "Accept"
msgstr "Кабыл алуу" msgstr "Кабыл алуу"
#: builtin/modmgr.lua:381 #: builtin/modmgr.lua:423
#, fuzzy #, fuzzy
msgid "World:" msgid "World:"
msgstr "Дүйнөнү тандаңыз:" msgstr "Дүйнөнү тандаңыз:"
#: builtin/modmgr.lua:385 builtin/modmgr.lua:387 #: builtin/modmgr.lua:427 builtin/modmgr.lua:429
#, fuzzy #, fuzzy
msgid "Hide Game" msgid "Hide Game"
msgstr "Оюн" msgstr "Оюн"
#: builtin/modmgr.lua:391 builtin/modmgr.lua:393 #: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content" msgid "Hide mp content"
msgstr "" msgstr ""
#: builtin/modmgr.lua:400 #: builtin/modmgr.lua:442
msgid "Mod:" msgid "Mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:405 src/guiKeyChangeMenu.cpp:187 #: builtin/modmgr.lua:444
#, fuzzy
msgid "Depends:"
msgstr "көз карандылыктары:"
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save" msgid "Save"
msgstr "Сактоо" msgstr "Сактоо"
#: builtin/modmgr.lua:422 #: builtin/modmgr.lua:464
#, fuzzy #, fuzzy
msgid "Enable MP" msgid "Enable MP"
msgstr "Баарын күйгүзүү" msgstr "Баарын күйгүзүү"
#: builtin/modmgr.lua:424 #: builtin/modmgr.lua:466
#, fuzzy #, fuzzy
msgid "Disable MP" msgid "Disable MP"
msgstr "Баарын өчүрүү" msgstr "Баарын өчүрүү"
#: builtin/modmgr.lua:428 builtin/modmgr.lua:430 #: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled" msgid "enabled"
msgstr "күйгүзүлгөн" msgstr "күйгүзүлгөн"
#: builtin/modmgr.lua:436 #: builtin/modmgr.lua:478
#, fuzzy #, fuzzy
msgid "Enable all" msgid "Enable all"
msgstr "Баарын күйгүзүү" msgstr "Баарын күйгүзүү"
#: builtin/modmgr.lua:551 #: builtin/modmgr.lua:577
#, fuzzy #, fuzzy
msgid "Select Mod File:" msgid "Select Mod File:"
msgstr "Дүйнөнү тандаңыз:" msgstr "Дүйнөнү тандаңыз:"
#: builtin/modmgr.lua:590 #: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\"" msgid "Install Mod: file: \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:591 #: builtin/modmgr.lua:617
msgid "" msgid ""
"\n" "\n"
"Install Mod: unsupported filetype \"$1\"" "Install Mod: unsupported filetype \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:612 #: builtin/modmgr.lua:638
#, fuzzy #, fuzzy
msgid "Failed to install $1 to $2" msgid "Failed to install $1 to $2"
msgstr "Дүйнөнү инициалдаштыруу катасы" msgstr "Дүйнөнү инициалдаштыруу катасы"
#: builtin/modmgr.lua:615 #: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1" msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:635 #: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1" msgid "Install Mod: unable to find real modname for: $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:824 #: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\"" msgid "Modmgr: failed to delete \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:828 #: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\"" msgid "Modmgr: invalid modpath \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:845 #: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?" msgid "Are you sure you want to delete \"$1\"?"
msgstr "" msgstr ""
#: builtin/modmgr.lua:847 #: builtin/modmgr.lua:878
msgid "No of course not!" msgid "No of course not!"
msgstr "" msgstr ""
@ -431,48 +458,52 @@ msgstr ""
msgid "re-Install" msgid "re-Install"
msgstr "" msgstr ""
#: src/client.cpp:2915 #: builtin/modstore.lua:253
msgid "Install"
msgstr ""
#: src/client.cpp:2917
msgid "Item textures..." msgid "Item textures..."
msgstr "Буюм текстуралары..." msgstr "Буюм текстуралары..."
#: src/game.cpp:939 #: src/game.cpp:940
msgid "Loading..." msgid "Loading..."
msgstr "Жүктөлүүдө..." msgstr "Жүктөлүүдө..."
#: src/game.cpp:999 #: src/game.cpp:1000
msgid "Creating server...." msgid "Creating server...."
msgstr "Сервер жаратылууда...." msgstr "Сервер жаратылууда...."
#: src/game.cpp:1015 #: src/game.cpp:1016
msgid "Creating client..." msgid "Creating client..."
msgstr "Клиент жаратылууда..." msgstr "Клиент жаратылууда..."
#: src/game.cpp:1024 #: src/game.cpp:1025
msgid "Resolving address..." msgid "Resolving address..."
msgstr "Дареги чечилүүдө..." msgstr "Дареги чечилүүдө..."
#: src/game.cpp:1121 #: src/game.cpp:1122
msgid "Connecting to server..." msgid "Connecting to server..."
msgstr "Серверге туташтырылууда..." msgstr "Серверге туташтырылууда..."
#: src/game.cpp:1218 #: src/game.cpp:1219
#, fuzzy #, fuzzy
msgid "Item definitions..." msgid "Item definitions..."
msgstr "Буюм текстуралары..." msgstr "Буюм текстуралары..."
#: src/game.cpp:1225 #: src/game.cpp:1226
msgid "Node definitions..." msgid "Node definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1232 #: src/game.cpp:1233
msgid "Media..." msgid "Media..."
msgstr "" msgstr ""
#: src/game.cpp:3405 #: src/game.cpp:3409
msgid "Shutting down stuff..." msgid "Shutting down stuff..."
msgstr "Оюн өчүрүлүүдө..." msgstr "Оюн өчүрүлүүдө..."
#: src/game.cpp:3435 #: src/game.cpp:3439
msgid "" msgid ""
"\n" "\n"
"Check debug.txt for details." "Check debug.txt for details."
@ -488,12 +519,8 @@ msgstr "Сиз өлдүңүз."
msgid "Respawn" msgid "Respawn"
msgstr "Кайтадан жаралуу" msgstr "Кайтадан жаралуу"
#: src/guiFormSpecMenu.cpp:1569 #: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
msgid "Left click: Move all items, Right click: Move single item" #: src/guiTextInputMenu.cpp:139
msgstr "Сол баскычы: Бардык буюмдарды ташуу, Оң баскычы: Бир буюмду ташуу"
#: src/guiFormSpecMenu.cpp:1595 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:140
msgid "Proceed" msgid "Proceed"
msgstr "Улантуу" msgstr "Улантуу"
@ -509,99 +536,99 @@ msgstr ""
msgid "Double tap \"jump\" to toggle fly" msgid "Double tap \"jump\" to toggle fly"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:290 #: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use" msgid "Key already in use"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:372 #: src/guiKeyChangeMenu.cpp:363
msgid "press key" msgid "press key"
msgstr "баскычты басыңыз" msgstr "баскычты басыңыз"
#: src/guiKeyChangeMenu.cpp:400 #: src/guiKeyChangeMenu.cpp:389
msgid "Forward" msgid "Forward"
msgstr "Алга" msgstr "Алга"
#: src/guiKeyChangeMenu.cpp:401 #: src/guiKeyChangeMenu.cpp:390
msgid "Backward" msgid "Backward"
msgstr "Артка" msgstr "Артка"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left" msgid "Left"
msgstr "Солго" msgstr "Солго"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right" msgid "Right"
msgstr "Оңго" msgstr "Оңго"
#: src/guiKeyChangeMenu.cpp:404 #: src/guiKeyChangeMenu.cpp:393
msgid "Use" msgid "Use"
msgstr "Колдонуу" msgstr "Колдонуу"
#: src/guiKeyChangeMenu.cpp:405 #: src/guiKeyChangeMenu.cpp:394
msgid "Jump" msgid "Jump"
msgstr "Секирүү" msgstr "Секирүү"
#: src/guiKeyChangeMenu.cpp:406 #: src/guiKeyChangeMenu.cpp:395
msgid "Sneak" msgid "Sneak"
msgstr "Уурданып басуу" msgstr "Уурданып басуу"
#: src/guiKeyChangeMenu.cpp:407 #: src/guiKeyChangeMenu.cpp:396
msgid "Drop" msgid "Drop"
msgstr "Ыргытуу" msgstr "Ыргытуу"
#: src/guiKeyChangeMenu.cpp:408 #: src/guiKeyChangeMenu.cpp:397
msgid "Inventory" msgid "Inventory"
msgstr "Мүлк-шайман" msgstr "Мүлк-шайман"
#: src/guiKeyChangeMenu.cpp:409 #: src/guiKeyChangeMenu.cpp:398
msgid "Chat" msgid "Chat"
msgstr "Маек" msgstr "Маек"
#: src/guiKeyChangeMenu.cpp:410 #: src/guiKeyChangeMenu.cpp:399
msgid "Command" msgid "Command"
msgstr "Команда" msgstr "Команда"
#: src/guiKeyChangeMenu.cpp:411 #: src/guiKeyChangeMenu.cpp:400
msgid "Console" msgid "Console"
msgstr "Консоль" msgstr "Консоль"
#: src/guiKeyChangeMenu.cpp:412 #: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly" msgid "Toggle fly"
msgstr "Учууга которуу" msgstr "Учууга которуу"
#: src/guiKeyChangeMenu.cpp:413 #: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast" msgid "Toggle fast"
msgstr "Тез басууга которуу" msgstr "Тез басууга которуу"
#: src/guiKeyChangeMenu.cpp:414 #: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip" msgid "Toggle noclip"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:415 #: src/guiKeyChangeMenu.cpp:404
msgid "Range select" msgid "Range select"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:416 #: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks" msgid "Print stacks"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:107 #: src/guiPasswordChange.cpp:106
msgid "Old Password" msgid "Old Password"
msgstr "Эски сырсөз" msgstr "Эски сырсөз"
#: src/guiPasswordChange.cpp:125 #: src/guiPasswordChange.cpp:122
msgid "New Password" msgid "New Password"
msgstr "Жаңы сырсөз" msgstr "Жаңы сырсөз"
#: src/guiPasswordChange.cpp:142 #: src/guiPasswordChange.cpp:137
msgid "Confirm Password" msgid "Confirm Password"
msgstr "Сырсөздү аныктоо" msgstr "Сырсөздү аныктоо"
#: src/guiPasswordChange.cpp:160 #: src/guiPasswordChange.cpp:153
msgid "Change" msgid "Change"
msgstr "Өзгөртүү" msgstr "Өзгөртүү"
#: src/guiPasswordChange.cpp:169 #: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "Сырсөздөр дал келген жок!" msgstr "Сырсөздөр дал келген жок!"
@ -651,11 +678,11 @@ msgstr ""
"- Чычкан дөңгөлөгү: буюмду тандоо\n" "- Чычкан дөңгөлөгү: буюмду тандоо\n"
"- T: маек\n" "- T: маек\n"
#: src/guiVolumeChange.cpp:108 #: src/guiVolumeChange.cpp:107
msgid "Sound Volume: " msgid "Sound Volume: "
msgstr "Үн көлөмү: " msgstr "Үн көлөмү: "
#: src/guiVolumeChange.cpp:122 #: src/guiVolumeChange.cpp:121
msgid "Exit" msgid "Exit"
msgstr "Чыгуу" msgstr "Чыгуу"
@ -947,75 +974,30 @@ msgstr ""
msgid "Zoom" msgid "Zoom"
msgstr "Масштаб" msgstr "Масштаб"
#: src/main.cpp:1411 #: src/main.cpp:1472
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "" msgstr ""
#: src/main.cpp:1486 #: src/main.cpp:1547
msgid "Main Menu" msgid "Main Menu"
msgstr "Башкы меню" msgstr "Башкы меню"
#: src/main.cpp:1662 #: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do." msgid "No world selected and no address provided. Nothing to do."
msgstr "Дүйнө тандалган жок жана дареги киргизилген жок. Кылууга эч нерсе жок." msgstr "Дүйнө тандалган жок жана дареги киргизилген жок. Кылууга эч нерсе жок."
#: src/main.cpp:1670 #: src/main.cpp:1731
msgid "Could not find or load game \"" msgid "Could not find or load game \""
msgstr "Оюнду табуу же жүктөө мүмкүн эмес \"" msgstr "Оюнду табуу же жүктөө мүмкүн эмес \""
#: src/main.cpp:1684 #: src/main.cpp:1745
msgid "Invalid gamespec." msgid "Invalid gamespec."
msgstr "" msgstr ""
#: src/main.cpp:1729 #: src/main.cpp:1790
msgid "Connection error (timed out?)" msgid "Connection error (timed out?)"
msgstr "Туташтыруу катасы (убактыңыз өтүп кеттиби?)" msgstr "Туташтыруу катасы (убактыңыз өтүп кеттиби?)"
#~ msgid "is required by:"
#~ msgstr "талап кылынганы:"
#~ msgid "Configuration saved. "
#~ msgstr "Конфигурация сакталды. "
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "Эскертүү: Туура эмес конфигурация. "
#~ msgid "Multiplayer"
#~ msgstr "Көп кишилик"
#~ msgid "Advanced"
#~ msgstr "Кошумча"
#~ msgid "Show Public"
#~ msgstr "Жалпылыкты көрсөтүү"
#~ msgid "Show Favorites"
#~ msgstr "Тандалмаларды көрсөтүү"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Жергиликтүү серверди жүргүзүү үчүн даректи бош калтырыңыз."
#~ msgid "Create world"
#~ msgstr "Дүйнөнү жаратуу"
#~ msgid "Address required."
#~ msgstr "Дареги талап кылынат."
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Дүнөнү жаратуу мүмкүн эмес: Эч нерсе тандалган жок"
#~ msgid "Files to be deleted"
#~ msgstr "Өчүрүлө турган файлдар"
#~ msgid "Cannot create world: No games found"
#~ msgstr "Дүйнөнү жаратуу мүмкүн эмес: Оюндар табылган жок"
#~ msgid "Cannot configure world: Nothing selected"
#~ msgstr "Дүйнөнү ырастоо мүмкүн эмес: Эч нерсе тандалган жок"
#~ msgid "Failed to delete all world files"
#~ msgstr "Бардык дүйнө файлдарын өчүрүү оңунан чыккан жок"
#~ msgid "" #~ msgid ""
#~ "Default Controls:\n" #~ "Default Controls:\n"
#~ "- WASD: Walk\n" #~ "- WASD: Walk\n"
@ -1040,3 +1022,55 @@ msgstr "Туташтыруу катасы (убактыңыз өтүп кетт
#~ "- I: мүлк-шайман\n" #~ "- I: мүлк-шайман\n"
#~ "- ESC: бул меню\n" #~ "- ESC: бул меню\n"
#~ "- T: маек\n" #~ "- T: маек\n"
#~ msgid "Failed to delete all world files"
#~ msgstr "Бардык дүйнө файлдарын өчүрүү оңунан чыккан жок"
#~ msgid "Cannot configure world: Nothing selected"
#~ msgstr "Дүйнөнү ырастоо мүмкүн эмес: Эч нерсе тандалган жок"
#~ msgid "Cannot create world: No games found"
#~ msgstr "Дүйнөнү жаратуу мүмкүн эмес: Оюндар табылган жок"
#~ msgid "Files to be deleted"
#~ msgstr "Өчүрүлө турган файлдар"
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Дүнөнү жаратуу мүмкүн эмес: Эч нерсе тандалган жок"
#~ msgid "Address required."
#~ msgstr "Дареги талап кылынат."
#~ msgid "Create world"
#~ msgstr "Дүйнөнү жаратуу"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Жергиликтүү серверди жүргүзүү үчүн даректи бош калтырыңыз."
#~ msgid "Show Favorites"
#~ msgstr "Тандалмаларды көрсөтүү"
#~ msgid "Show Public"
#~ msgstr "Жалпылыкты көрсөтүү"
#~ msgid "Advanced"
#~ msgstr "Кошумча"
#~ msgid "Multiplayer"
#~ msgstr "Көп кишилик"
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "Эскертүү: Туура эмес конфигурация. "
#~ msgid "Configuration saved. "
#~ msgstr "Конфигурация сакталды. "
#~ msgid "is required by:"
#~ msgstr "талап кылынганы:"
#~ msgid "Left click: Move all items, Right click: Move single item"
#~ msgstr "Сол баскычы: Бардык буюмдарды ташуу, Оң баскычы: Бир буюмду ташуу"
#, fuzzy
#~ msgid "Download"
#~ msgstr "Ылдый"

968
po/lt/minetest.po Normal file
View File

@ -0,0 +1,968 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: builtin/gamemgr.lua:23
msgid "Game Name"
msgstr ""
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create"
msgstr ""
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel"
msgstr ""
#: builtin/gamemgr.lua:118
msgid "Gamemgr: Unable to copy mod \"$1\" to game \"$2\""
msgstr ""
#: builtin/gamemgr.lua:216
msgid "GAMES"
msgstr ""
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
msgid "Games"
msgstr ""
#: builtin/gamemgr.lua:234
msgid "Mods:"
msgstr ""
#: builtin/gamemgr.lua:235
msgid "edit game"
msgstr ""
#: builtin/gamemgr.lua:238
msgid "new game"
msgstr ""
#: builtin/gamemgr.lua:248
msgid "EDIT GAME"
msgstr ""
#: builtin/gamemgr.lua:269
msgid "Remove selected mod"
msgstr ""
#: builtin/gamemgr.lua:272
msgid "<<-- Add mod"
msgstr ""
#: builtin/mainmenu.lua:158
msgid "Ok"
msgstr ""
#: builtin/mainmenu.lua:297
msgid "World name"
msgstr ""
#: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen"
msgstr ""
#: builtin/mainmenu.lua:306
msgid "Game"
msgstr ""
#: builtin/mainmenu.lua:319
msgid "Delete World \"$1\"?"
msgstr ""
#: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes"
msgstr ""
#: builtin/mainmenu.lua:321
msgid "No"
msgstr ""
#: builtin/mainmenu.lua:364
msgid "A world named \"$1\" already exists"
msgstr ""
#: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected"
msgstr ""
#: builtin/mainmenu.lua:650
msgid "To enable shaders the OpenGL driver needs to be used."
msgstr ""
#: builtin/mainmenu.lua:818
msgid "CLIENT"
msgstr ""
#: builtin/mainmenu.lua:819
msgid "Favorites:"
msgstr ""
#: builtin/mainmenu.lua:820
msgid "Address/Port"
msgstr ""
#: builtin/mainmenu.lua:821
msgid "Name/Password"
msgstr ""
#: builtin/mainmenu.lua:824
msgid "Public Serverlist"
msgstr ""
#: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: src/keycode.cpp:229
msgid "Delete"
msgstr ""
#: builtin/mainmenu.lua:833
msgid "Connect"
msgstr ""
#: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New"
msgstr ""
#: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure"
msgstr ""
#: builtin/mainmenu.lua:877
msgid "Start Game"
msgstr ""
#: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:"
msgstr ""
#: builtin/mainmenu.lua:879
msgid "START SERVER"
msgstr ""
#: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode"
msgstr ""
#: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage"
msgstr ""
#: builtin/mainmenu.lua:884
msgid "Public"
msgstr ""
#: builtin/mainmenu.lua:886
msgid "Name"
msgstr ""
#: builtin/mainmenu.lua:888
msgid "Password"
msgstr ""
#: builtin/mainmenu.lua:889
msgid "Server Port"
msgstr ""
#: builtin/mainmenu.lua:899
msgid "SETTINGS"
msgstr ""
#: builtin/mainmenu.lua:900
msgid "Fancy trees"
msgstr ""
#: builtin/mainmenu.lua:902
msgid "Smooth Lighting"
msgstr ""
#: builtin/mainmenu.lua:904
msgid "3D Clouds"
msgstr ""
#: builtin/mainmenu.lua:906
msgid "Opaque Water"
msgstr ""
#: builtin/mainmenu.lua:909
msgid "Mip-Mapping"
msgstr ""
#: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering"
msgstr ""
#: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering"
msgstr ""
#: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering"
msgstr ""
#: builtin/mainmenu.lua:918
msgid "Shaders"
msgstr ""
#: builtin/mainmenu.lua:920
msgid "Preload item visuals"
msgstr ""
#: builtin/mainmenu.lua:922
msgid "Enable Particles"
msgstr ""
#: builtin/mainmenu.lua:924
msgid "Finite Liquid"
msgstr ""
#: builtin/mainmenu.lua:927
msgid "Change keys"
msgstr ""
#: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play"
msgstr ""
#: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER"
msgstr ""
#: builtin/mainmenu.lua:955
msgid "Select texture pack:"
msgstr ""
#: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS"
msgstr ""
#: builtin/mainmenu.lua:976
msgid "No information available"
msgstr ""
#: builtin/mainmenu.lua:1005
msgid "Core Developers"
msgstr ""
#: builtin/mainmenu.lua:1020
msgid "Active Contributors"
msgstr ""
#: builtin/mainmenu.lua:1028
msgid "Previous Contributors"
msgstr ""
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr ""
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr ""
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr ""
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr ""
#: builtin/modmgr.lua:236
msgid "MODS"
msgstr ""
#: builtin/modmgr.lua:237
msgid "Installed Mods:"
msgstr ""
#: builtin/modmgr.lua:243
msgid "Add mod:"
msgstr ""
#: builtin/modmgr.lua:244
msgid "Local install"
msgstr ""
#: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
msgid "No mod description available"
msgstr ""
#: builtin/modmgr.lua:288
msgid "Mod information:"
msgstr ""
#: builtin/modmgr.lua:299
msgid "Rename"
msgstr ""
#: builtin/modmgr.lua:301
msgid "Uninstall selected modpack"
msgstr ""
#: builtin/modmgr.lua:312
msgid "Uninstall selected mod"
msgstr ""
#: builtin/modmgr.lua:324
msgid "Rename Modpack:"
msgstr ""
#: builtin/modmgr.lua:329 src/keycode.cpp:227
msgid "Accept"
msgstr ""
#: builtin/modmgr.lua:423
msgid "World:"
msgstr ""
#: builtin/modmgr.lua:427 builtin/modmgr.lua:429
msgid "Hide Game"
msgstr ""
#: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content"
msgstr ""
#: builtin/modmgr.lua:442
msgid "Mod:"
msgstr ""
#: builtin/modmgr.lua:444
msgid "Depends:"
msgstr ""
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save"
msgstr ""
#: builtin/modmgr.lua:464
msgid "Enable MP"
msgstr ""
#: builtin/modmgr.lua:466
msgid "Disable MP"
msgstr ""
#: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled"
msgstr ""
#: builtin/modmgr.lua:478
msgid "Enable all"
msgstr ""
#: builtin/modmgr.lua:577
msgid "Select Mod File:"
msgstr ""
#: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\""
msgstr ""
#: builtin/modmgr.lua:617
msgid ""
"\n"
"Install Mod: unsupported filetype \"$1\""
msgstr ""
#: builtin/modmgr.lua:638
msgid "Failed to install $1 to $2"
msgstr ""
#: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr ""
#: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1"
msgstr ""
#: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\""
msgstr ""
#: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\""
msgstr ""
#: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?"
msgstr ""
#: builtin/modmgr.lua:878
msgid "No of course not!"
msgstr ""
#: builtin/modstore.lua:183
msgid "Page $1 of $2"
msgstr ""
#: builtin/modstore.lua:243
msgid "Rating"
msgstr ""
#: builtin/modstore.lua:251
msgid "re-Install"
msgstr ""
#: builtin/modstore.lua:253
msgid "Install"
msgstr ""
#: src/client.cpp:2917
msgid "Item textures..."
msgstr ""
#: src/game.cpp:940
msgid "Loading..."
msgstr ""
#: src/game.cpp:1000
msgid "Creating server...."
msgstr ""
#: src/game.cpp:1016
msgid "Creating client..."
msgstr ""
#: src/game.cpp:1025
msgid "Resolving address..."
msgstr ""
#: src/game.cpp:1122
msgid "Connecting to server..."
msgstr ""
#: src/game.cpp:1219
msgid "Item definitions..."
msgstr ""
#: src/game.cpp:1226
msgid "Node definitions..."
msgstr ""
#: src/game.cpp:1233
msgid "Media..."
msgstr ""
#: src/game.cpp:3409
msgid "Shutting down stuff..."
msgstr ""
#: src/game.cpp:3439
msgid ""
"\n"
"Check debug.txt for details."
msgstr ""
#: src/guiDeathScreen.cpp:96
msgid "You died."
msgstr ""
#: src/guiDeathScreen.cpp:104
msgid "Respawn"
msgstr ""
#: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:139
msgid "Proceed"
msgstr ""
#: src/guiKeyChangeMenu.cpp:121
msgid "Keybindings. (If this menu screws up, remove stuff from minetest.conf)"
msgstr ""
#: src/guiKeyChangeMenu.cpp:161
msgid "\"Use\" = climb down"
msgstr ""
#: src/guiKeyChangeMenu.cpp:176
msgid "Double tap \"jump\" to toggle fly"
msgstr ""
#: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use"
msgstr ""
#: src/guiKeyChangeMenu.cpp:363
msgid "press key"
msgstr ""
#: src/guiKeyChangeMenu.cpp:389
msgid "Forward"
msgstr ""
#: src/guiKeyChangeMenu.cpp:390
msgid "Backward"
msgstr ""
#: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left"
msgstr ""
#: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right"
msgstr ""
#: src/guiKeyChangeMenu.cpp:393
msgid "Use"
msgstr ""
#: src/guiKeyChangeMenu.cpp:394
msgid "Jump"
msgstr ""
#: src/guiKeyChangeMenu.cpp:395
msgid "Sneak"
msgstr ""
#: src/guiKeyChangeMenu.cpp:396
msgid "Drop"
msgstr ""
#: src/guiKeyChangeMenu.cpp:397
msgid "Inventory"
msgstr ""
#: src/guiKeyChangeMenu.cpp:398
msgid "Chat"
msgstr ""
#: src/guiKeyChangeMenu.cpp:399
msgid "Command"
msgstr ""
#: src/guiKeyChangeMenu.cpp:400
msgid "Console"
msgstr ""
#: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly"
msgstr ""
#: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast"
msgstr ""
#: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip"
msgstr ""
#: src/guiKeyChangeMenu.cpp:404
msgid "Range select"
msgstr ""
#: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks"
msgstr ""
#: src/guiPasswordChange.cpp:106
msgid "Old Password"
msgstr ""
#: src/guiPasswordChange.cpp:122
msgid "New Password"
msgstr ""
#: src/guiPasswordChange.cpp:137
msgid "Confirm Password"
msgstr ""
#: src/guiPasswordChange.cpp:153
msgid "Change"
msgstr ""
#: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!"
msgstr ""
#: src/guiPauseMenu.cpp:122
msgid "Continue"
msgstr ""
#: src/guiPauseMenu.cpp:133
msgid "Change Password"
msgstr ""
#: src/guiPauseMenu.cpp:143
msgid "Sound Volume"
msgstr ""
#: src/guiPauseMenu.cpp:152
msgid "Exit to Menu"
msgstr ""
#: src/guiPauseMenu.cpp:161
msgid "Exit to OS"
msgstr ""
#: src/guiPauseMenu.cpp:170
msgid ""
"Default Controls:\n"
"- WASD: move\n"
"- Space: jump/climb\n"
"- Shift: sneak/go down\n"
"- Q: drop item\n"
"- I: inventory\n"
"- Mouse: turn/look\n"
"- Mouse left: dig/punch\n"
"- Mouse right: place/use\n"
"- Mouse wheel: select item\n"
"- T: chat\n"
msgstr ""
#: src/guiVolumeChange.cpp:107
msgid "Sound Volume: "
msgstr ""
#: src/guiVolumeChange.cpp:121
msgid "Exit"
msgstr ""
#: src/keycode.cpp:223
msgid "Left Button"
msgstr ""
#: src/keycode.cpp:223
msgid "Middle Button"
msgstr ""
#: src/keycode.cpp:223
msgid "Right Button"
msgstr ""
#: src/keycode.cpp:223
msgid "X Button 1"
msgstr ""
#: src/keycode.cpp:224
msgid "Back"
msgstr ""
#: src/keycode.cpp:224
msgid "Clear"
msgstr ""
#: src/keycode.cpp:224
msgid "Return"
msgstr ""
#: src/keycode.cpp:224
msgid "Tab"
msgstr ""
#: src/keycode.cpp:224
msgid "X Button 2"
msgstr ""
#: src/keycode.cpp:225
msgid "Capital"
msgstr ""
#: src/keycode.cpp:225
msgid "Control"
msgstr ""
#: src/keycode.cpp:225
msgid "Kana"
msgstr ""
#: src/keycode.cpp:225
msgid "Menu"
msgstr ""
#: src/keycode.cpp:225
msgid "Pause"
msgstr ""
#: src/keycode.cpp:225
msgid "Shift"
msgstr ""
#: src/keycode.cpp:226
msgid "Convert"
msgstr ""
#: src/keycode.cpp:226
msgid "Escape"
msgstr ""
#: src/keycode.cpp:226
msgid "Final"
msgstr ""
#: src/keycode.cpp:226
msgid "Junja"
msgstr ""
#: src/keycode.cpp:226
msgid "Kanji"
msgstr ""
#: src/keycode.cpp:226
msgid "Nonconvert"
msgstr ""
#: src/keycode.cpp:227
msgid "End"
msgstr ""
#: src/keycode.cpp:227
msgid "Home"
msgstr ""
#: src/keycode.cpp:227
msgid "Mode Change"
msgstr ""
#: src/keycode.cpp:227
msgid "Next"
msgstr ""
#: src/keycode.cpp:227
msgid "Prior"
msgstr ""
#: src/keycode.cpp:227
msgid "Space"
msgstr ""
#: src/keycode.cpp:228
msgid "Down"
msgstr ""
#: src/keycode.cpp:228
msgid "Execute"
msgstr ""
#: src/keycode.cpp:228
msgid "Print"
msgstr ""
#: src/keycode.cpp:228
msgid "Select"
msgstr ""
#: src/keycode.cpp:228
msgid "Up"
msgstr ""
#: src/keycode.cpp:229
msgid "Help"
msgstr ""
#: src/keycode.cpp:229
msgid "Insert"
msgstr ""
#: src/keycode.cpp:229
msgid "Snapshot"
msgstr ""
#: src/keycode.cpp:232
msgid "Left Windows"
msgstr ""
#: src/keycode.cpp:233
msgid "Apps"
msgstr ""
#: src/keycode.cpp:233
msgid "Numpad 0"
msgstr ""
#: src/keycode.cpp:233
msgid "Numpad 1"
msgstr ""
#: src/keycode.cpp:233
msgid "Right Windows"
msgstr ""
#: src/keycode.cpp:233
msgid "Sleep"
msgstr ""
#: src/keycode.cpp:234
msgid "Numpad 2"
msgstr ""
#: src/keycode.cpp:234
msgid "Numpad 3"
msgstr ""
#: src/keycode.cpp:234
msgid "Numpad 4"
msgstr ""
#: src/keycode.cpp:234
msgid "Numpad 5"
msgstr ""
#: src/keycode.cpp:234
msgid "Numpad 6"
msgstr ""
#: src/keycode.cpp:234
msgid "Numpad 7"
msgstr ""
#: src/keycode.cpp:235
msgid "Numpad *"
msgstr ""
#: src/keycode.cpp:235
msgid "Numpad +"
msgstr ""
#: src/keycode.cpp:235
msgid "Numpad -"
msgstr ""
#: src/keycode.cpp:235
msgid "Numpad /"
msgstr ""
#: src/keycode.cpp:235
msgid "Numpad 8"
msgstr ""
#: src/keycode.cpp:235
msgid "Numpad 9"
msgstr ""
#: src/keycode.cpp:239
msgid "Num Lock"
msgstr ""
#: src/keycode.cpp:239
msgid "Scroll Lock"
msgstr ""
#: src/keycode.cpp:240
msgid "Left Shift"
msgstr ""
#: src/keycode.cpp:240
msgid "Right Shift"
msgstr ""
#: src/keycode.cpp:241
msgid "Left Control"
msgstr ""
#: src/keycode.cpp:241
msgid "Left Menu"
msgstr ""
#: src/keycode.cpp:241
msgid "Right Control"
msgstr ""
#: src/keycode.cpp:241
msgid "Right Menu"
msgstr ""
#: src/keycode.cpp:243
msgid "Comma"
msgstr ""
#: src/keycode.cpp:243
msgid "Minus"
msgstr ""
#: src/keycode.cpp:243
msgid "Period"
msgstr ""
#: src/keycode.cpp:243
msgid "Plus"
msgstr ""
#: src/keycode.cpp:247
msgid "Attn"
msgstr ""
#: src/keycode.cpp:247
msgid "CrSel"
msgstr ""
#: src/keycode.cpp:248
msgid "Erase OEF"
msgstr ""
#: src/keycode.cpp:248
msgid "ExSel"
msgstr ""
#: src/keycode.cpp:248
msgid "OEM Clear"
msgstr ""
#: src/keycode.cpp:248
msgid "PA1"
msgstr ""
#: src/keycode.cpp:248
msgid "Zoom"
msgstr ""
#: src/main.cpp:1472
msgid "needs_fallback_font"
msgstr ""
#: src/main.cpp:1547
msgid "Main Menu"
msgstr ""
#: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do."
msgstr ""
#: src/main.cpp:1731
msgid "Could not find or load game \""
msgstr ""
#: src/main.cpp:1745
msgid "Invalid gamespec."
msgstr ""
#: src/main.cpp:1790
msgid "Connection error (timed out?)"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: minetest\n" "Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-07 22:01+0400\n" "POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -21,12 +21,12 @@ msgstr ""
msgid "Game Name" msgid "Game Name"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:301 #: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create" msgid "Create"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:302 builtin/modmgr.lua:289 #: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:406 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223 #: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
@ -38,35 +38,35 @@ msgstr ""
msgid "GAMES" msgid "GAMES"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:859 #: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
msgid "Games" msgid "Games"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:233 #: builtin/gamemgr.lua:234
msgid "Mods:" msgid "Mods:"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:234 #: builtin/gamemgr.lua:235
msgid "edit game" msgid "edit game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:237 #: builtin/gamemgr.lua:238
msgid "new game" msgid "new game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:247 #: builtin/gamemgr.lua:248
msgid "EDIT GAME" msgid "EDIT GAME"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:267 #: builtin/gamemgr.lua:269
msgid "Remove selected mod" msgid "Remove selected mod"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:270 #: builtin/gamemgr.lua:272
msgid "<<-- Add mod" msgid "<<-- Add mod"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:159 #: builtin/mainmenu.lua:158
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
@ -74,223 +74,231 @@ msgstr ""
msgid "World name" msgid "World name"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:298 #: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen" msgid "Mapgen"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:300 #: builtin/mainmenu.lua:306
msgid "Game" msgid "Game"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:314 #: builtin/mainmenu.lua:319
msgid "Delete World \"$1\"?" msgid "Delete World \"$1\"?"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:315 builtin/modmgr.lua:846 #: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:316 #: builtin/mainmenu.lua:321
msgid "No" msgid "No"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:384 #: builtin/mainmenu.lua:364
msgid "A world named \"$1\" already exists" msgid "A world named \"$1\" already exists"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:399 #: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected" msgid "No worldname given or no game selected"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:852 #: builtin/mainmenu.lua:650
msgid "Singleplayer" msgid "To enable shaders the OpenGL driver needs to be used."
msgstr "" msgstr ""
#: builtin/mainmenu.lua:853 #: builtin/mainmenu.lua:818
msgid "Client"
msgstr ""
#: builtin/mainmenu.lua:854
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:855
msgid "Settings"
msgstr ""
#: builtin/mainmenu.lua:856
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:863
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:865
msgid "Credits"
msgstr ""
#: builtin/mainmenu.lua:885
msgid "CLIENT" msgid "CLIENT"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:886 #: builtin/mainmenu.lua:819
msgid "Favorites:" msgid "Favorites:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:887 #: builtin/mainmenu.lua:820
msgid "Address/Port" msgid "Address/Port"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:888 #: builtin/mainmenu.lua:821
msgid "Name/Password" msgid "Name/Password"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:891 #: builtin/mainmenu.lua:824
msgid "Public Serverlist" msgid "Public Serverlist"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:896 builtin/mainmenu.lua:941 builtin/mainmenu.lua:1004 #: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: builtin/modmgr.lua:271 src/keycode.cpp:229 #: src/keycode.cpp:229
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:900 #: builtin/mainmenu.lua:833
msgid "Connect" msgid "Connect"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:942 builtin/mainmenu.lua:1005 #: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New" msgid "New"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:943 builtin/mainmenu.lua:1006 #: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure" msgid "Configure"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:944 #: builtin/mainmenu.lua:877
msgid "Start Game" msgid "Start Game"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:945 builtin/mainmenu.lua:1008 #: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:" msgid "Select World:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:946 #: builtin/mainmenu.lua:879
msgid "START SERVER" msgid "START SERVER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:947 builtin/mainmenu.lua:1010 #: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode" msgid "Creative Mode"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:949 builtin/mainmenu.lua:1012 #: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage" msgid "Enable Damage"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:951 #: builtin/mainmenu.lua:884
msgid "Public" msgid "Public"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:953 #: builtin/mainmenu.lua:886
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:955 #: builtin/mainmenu.lua:888
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:956 #: builtin/mainmenu.lua:889
msgid "Server Port" msgid "Server Port"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:966 #: builtin/mainmenu.lua:899
msgid "SETTINGS" msgid "SETTINGS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:967 #: builtin/mainmenu.lua:900
msgid "Fancy trees" msgid "Fancy trees"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:969 #: builtin/mainmenu.lua:902
msgid "Smooth Lighting" msgid "Smooth Lighting"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:971 #: builtin/mainmenu.lua:904
msgid "3D Clouds" msgid "3D Clouds"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:973 #: builtin/mainmenu.lua:906
msgid "Opaque Water" msgid "Opaque Water"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:976 #: builtin/mainmenu.lua:909
msgid "Mip-Mapping" msgid "Mip-Mapping"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:978 #: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering" msgid "Anisotropic Filtering"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:980 #: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering" msgid "Bi-Linear Filtering"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:982 #: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering" msgid "Tri-Linear Filtering"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:985 #: builtin/mainmenu.lua:918
msgid "Shaders" msgid "Shaders"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:987 #: builtin/mainmenu.lua:920
msgid "Preload item visuals" msgid "Preload item visuals"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:989 #: builtin/mainmenu.lua:922
msgid "Enable Particles" msgid "Enable Particles"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:991 #: builtin/mainmenu.lua:924
msgid "Finite Liquid" msgid "Finite Liquid"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:994 #: builtin/mainmenu.lua:927
msgid "Change keys" msgid "Change keys"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1007 src/keycode.cpp:248 #: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play" msgid "Play"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1009 #: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER" msgid "SINGLE PLAYER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1022 #: builtin/mainmenu.lua:955
msgid "Select texture pack:" msgid "Select texture pack:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1023 #: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS" msgid "TEXTURE PACKS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1043 #: builtin/mainmenu.lua:976
msgid "No information available" msgid "No information available"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1071 #: builtin/mainmenu.lua:1005
msgid "Core Developers" msgid "Core Developers"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1082 #: builtin/mainmenu.lua:1020
msgid "Active Contributors" msgid "Active Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1092 #: builtin/mainmenu.lua:1028
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr ""
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr ""
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr ""
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr ""
#: builtin/modmgr.lua:236 #: builtin/modmgr.lua:236
msgid "MODS" msgid "MODS"
msgstr "" msgstr ""
@ -299,105 +307,125 @@ msgstr ""
msgid "Installed Mods:" msgid "Installed Mods:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:243 builtin/modstore.lua:253 #: builtin/modmgr.lua:243
msgid "Install" msgid "Add mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:244 #: builtin/modmgr.lua:244
msgid "Download" msgid "Local install"
msgstr "" msgstr ""
#: builtin/modmgr.lua:256 #: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
msgid "No mod description available"
msgstr ""
#: builtin/modmgr.lua:288
msgid "Mod information:"
msgstr ""
#: builtin/modmgr.lua:299
msgid "Rename" msgid "Rename"
msgstr "" msgstr ""
#: builtin/modmgr.lua:260 builtin/modmgr.lua:402 #: builtin/modmgr.lua:301
msgid "Depends:" msgid "Uninstall selected modpack"
msgstr "" msgstr ""
#: builtin/modmgr.lua:282 #: builtin/modmgr.lua:312
msgid "Uninstall selected mod"
msgstr ""
#: builtin/modmgr.lua:324
msgid "Rename Modpack:" msgid "Rename Modpack:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:287 src/keycode.cpp:227 #: builtin/modmgr.lua:329 src/keycode.cpp:227
msgid "Accept" msgid "Accept"
msgstr "" msgstr ""
#: builtin/modmgr.lua:381 #: builtin/modmgr.lua:423
msgid "World:" msgid "World:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:385 builtin/modmgr.lua:387 #: builtin/modmgr.lua:427 builtin/modmgr.lua:429
msgid "Hide Game" msgid "Hide Game"
msgstr "" msgstr ""
#: builtin/modmgr.lua:391 builtin/modmgr.lua:393 #: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content" msgid "Hide mp content"
msgstr "" msgstr ""
#: builtin/modmgr.lua:400 #: builtin/modmgr.lua:442
msgid "Mod:" msgid "Mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:405 src/guiKeyChangeMenu.cpp:187 #: builtin/modmgr.lua:444
msgid "Depends:"
msgstr ""
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: builtin/modmgr.lua:422 #: builtin/modmgr.lua:464
msgid "Enable MP" msgid "Enable MP"
msgstr "" msgstr ""
#: builtin/modmgr.lua:424 #: builtin/modmgr.lua:466
msgid "Disable MP" msgid "Disable MP"
msgstr "" msgstr ""
#: builtin/modmgr.lua:428 builtin/modmgr.lua:430 #: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled" msgid "enabled"
msgstr "" msgstr ""
#: builtin/modmgr.lua:436 #: builtin/modmgr.lua:478
msgid "Enable all" msgid "Enable all"
msgstr "" msgstr ""
#: builtin/modmgr.lua:551 #: builtin/modmgr.lua:577
msgid "Select Mod File:" msgid "Select Mod File:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:590 #: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\"" msgid "Install Mod: file: \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:591 #: builtin/modmgr.lua:617
msgid "" msgid ""
"\n" "\n"
"Install Mod: unsupported filetype \"$1\"" "Install Mod: unsupported filetype \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:612 #: builtin/modmgr.lua:638
msgid "Failed to install $1 to $2" msgid "Failed to install $1 to $2"
msgstr "" msgstr ""
#: builtin/modmgr.lua:615 #: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1" msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:635 #: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1" msgid "Install Mod: unable to find real modname for: $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:824 #: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\"" msgid "Modmgr: failed to delete \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:828 #: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\"" msgid "Modmgr: invalid modpath \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:845 #: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?" msgid "Are you sure you want to delete \"$1\"?"
msgstr "" msgstr ""
#: builtin/modmgr.lua:847 #: builtin/modmgr.lua:878
msgid "No of course not!" msgid "No of course not!"
msgstr "" msgstr ""
@ -413,47 +441,51 @@ msgstr ""
msgid "re-Install" msgid "re-Install"
msgstr "" msgstr ""
#: src/client.cpp:2915 #: builtin/modstore.lua:253
msgid "Install"
msgstr ""
#: src/client.cpp:2917
msgid "Item textures..." msgid "Item textures..."
msgstr "" msgstr ""
#: src/game.cpp:939 #: src/game.cpp:940
msgid "Loading..." msgid "Loading..."
msgstr "" msgstr ""
#: src/game.cpp:999 #: src/game.cpp:1000
msgid "Creating server...." msgid "Creating server...."
msgstr "" msgstr ""
#: src/game.cpp:1015 #: src/game.cpp:1016
msgid "Creating client..." msgid "Creating client..."
msgstr "" msgstr ""
#: src/game.cpp:1024 #: src/game.cpp:1025
msgid "Resolving address..." msgid "Resolving address..."
msgstr "" msgstr ""
#: src/game.cpp:1121 #: src/game.cpp:1122
msgid "Connecting to server..." msgid "Connecting to server..."
msgstr "" msgstr ""
#: src/game.cpp:1218 #: src/game.cpp:1219
msgid "Item definitions..." msgid "Item definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1225 #: src/game.cpp:1226
msgid "Node definitions..." msgid "Node definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1232 #: src/game.cpp:1233
msgid "Media..." msgid "Media..."
msgstr "" msgstr ""
#: src/game.cpp:3405 #: src/game.cpp:3409
msgid "Shutting down stuff..." msgid "Shutting down stuff..."
msgstr "" msgstr ""
#: src/game.cpp:3435 #: src/game.cpp:3439
msgid "" msgid ""
"\n" "\n"
"Check debug.txt for details." "Check debug.txt for details."
@ -467,12 +499,8 @@ msgstr ""
msgid "Respawn" msgid "Respawn"
msgstr "" msgstr ""
#: src/guiFormSpecMenu.cpp:1569 #: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
msgid "Left click: Move all items, Right click: Move single item" #: src/guiTextInputMenu.cpp:139
msgstr ""
#: src/guiFormSpecMenu.cpp:1595 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:140
msgid "Proceed" msgid "Proceed"
msgstr "" msgstr ""
@ -488,99 +516,99 @@ msgstr ""
msgid "Double tap \"jump\" to toggle fly" msgid "Double tap \"jump\" to toggle fly"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:290 #: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use" msgid "Key already in use"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:372 #: src/guiKeyChangeMenu.cpp:363
msgid "press key" msgid "press key"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:400 #: src/guiKeyChangeMenu.cpp:389
msgid "Forward" msgid "Forward"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:401 #: src/guiKeyChangeMenu.cpp:390
msgid "Backward" msgid "Backward"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left" msgid "Left"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right" msgid "Right"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:404 #: src/guiKeyChangeMenu.cpp:393
msgid "Use" msgid "Use"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:405 #: src/guiKeyChangeMenu.cpp:394
msgid "Jump" msgid "Jump"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:406 #: src/guiKeyChangeMenu.cpp:395
msgid "Sneak" msgid "Sneak"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:407 #: src/guiKeyChangeMenu.cpp:396
msgid "Drop" msgid "Drop"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:408 #: src/guiKeyChangeMenu.cpp:397
msgid "Inventory" msgid "Inventory"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:409 #: src/guiKeyChangeMenu.cpp:398
msgid "Chat" msgid "Chat"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:410 #: src/guiKeyChangeMenu.cpp:399
msgid "Command" msgid "Command"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:411 #: src/guiKeyChangeMenu.cpp:400
msgid "Console" msgid "Console"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:412 #: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly" msgid "Toggle fly"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:413 #: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast" msgid "Toggle fast"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:414 #: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip" msgid "Toggle noclip"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:415 #: src/guiKeyChangeMenu.cpp:404
msgid "Range select" msgid "Range select"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:416 #: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks" msgid "Print stacks"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:107 #: src/guiPasswordChange.cpp:106
msgid "Old Password" msgid "Old Password"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:125 #: src/guiPasswordChange.cpp:122
msgid "New Password" msgid "New Password"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:142 #: src/guiPasswordChange.cpp:137
msgid "Confirm Password" msgid "Confirm Password"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:160 #: src/guiPasswordChange.cpp:153
msgid "Change" msgid "Change"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:169 #: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "" msgstr ""
@ -619,11 +647,11 @@ msgid ""
"- T: chat\n" "- T: chat\n"
msgstr "" msgstr ""
#: src/guiVolumeChange.cpp:108 #: src/guiVolumeChange.cpp:107
msgid "Sound Volume: " msgid "Sound Volume: "
msgstr "" msgstr ""
#: src/guiVolumeChange.cpp:122 #: src/guiVolumeChange.cpp:121
msgid "Exit" msgid "Exit"
msgstr "" msgstr ""
@ -915,26 +943,26 @@ msgstr ""
msgid "Zoom" msgid "Zoom"
msgstr "" msgstr ""
#: src/main.cpp:1411 #: src/main.cpp:1472
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "" msgstr ""
#: src/main.cpp:1486 #: src/main.cpp:1547
msgid "Main Menu" msgid "Main Menu"
msgstr "" msgstr ""
#: src/main.cpp:1662 #: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do." msgid "No world selected and no address provided. Nothing to do."
msgstr "" msgstr ""
#: src/main.cpp:1670 #: src/main.cpp:1731
msgid "Could not find or load game \"" msgid "Could not find or load game \""
msgstr "" msgstr ""
#: src/main.cpp:1684 #: src/main.cpp:1745
msgid "Invalid gamespec." msgid "Invalid gamespec."
msgstr "" msgstr ""
#: src/main.cpp:1729 #: src/main.cpp:1790
msgid "Connection error (timed out?)" msgid "Connection error (timed out?)"
msgstr "" msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: minetest\n" "Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-07 22:01+0400\n" "POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: 2013-06-21 15:48+0200\n" "PO-Revision-Date: 2013-06-21 15:48+0200\n"
"Last-Translator: sfan5 <sfan5@live.de>\n" "Last-Translator: sfan5 <sfan5@live.de>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -23,12 +23,12 @@ msgstr ""
msgid "Game Name" msgid "Game Name"
msgstr "Spill" msgstr "Spill"
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:301 #: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create" msgid "Create"
msgstr "Opprett" msgstr "Opprett"
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:302 builtin/modmgr.lua:289 #: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:406 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223 #: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel" msgid "Cancel"
msgstr "Avbryt" msgstr "Avbryt"
@ -40,36 +40,36 @@ msgstr ""
msgid "GAMES" msgid "GAMES"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:859 #: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
#, fuzzy #, fuzzy
msgid "Games" msgid "Games"
msgstr "Spill" msgstr "Spill"
#: builtin/gamemgr.lua:233 #: builtin/gamemgr.lua:234
msgid "Mods:" msgid "Mods:"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:234 #: builtin/gamemgr.lua:235
msgid "edit game" msgid "edit game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:237 #: builtin/gamemgr.lua:238
msgid "new game" msgid "new game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:247 #: builtin/gamemgr.lua:248
msgid "EDIT GAME" msgid "EDIT GAME"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:267 #: builtin/gamemgr.lua:269
msgid "Remove selected mod" msgid "Remove selected mod"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:270 #: builtin/gamemgr.lua:272
msgid "<<-- Add mod" msgid "<<-- Add mod"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:159 #: builtin/mainmenu.lua:158
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
@ -77,223 +77,231 @@ msgstr ""
msgid "World name" msgid "World name"
msgstr "Navnet på verdenen" msgstr "Navnet på verdenen"
#: builtin/mainmenu.lua:298 #: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen" msgid "Mapgen"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:300 #: builtin/mainmenu.lua:306
msgid "Game" msgid "Game"
msgstr "Spill" msgstr "Spill"
#: builtin/mainmenu.lua:314 #: builtin/mainmenu.lua:319
msgid "Delete World \"$1\"?" msgid "Delete World \"$1\"?"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:315 builtin/modmgr.lua:846 #: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes" msgid "Yes"
msgstr "Ja" msgstr "Ja"
#: builtin/mainmenu.lua:316 #: builtin/mainmenu.lua:321
msgid "No" msgid "No"
msgstr "Nei" msgstr "Nei"
#: builtin/mainmenu.lua:384 #: builtin/mainmenu.lua:364
msgid "A world named \"$1\" already exists" msgid "A world named \"$1\" already exists"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:399 #: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected" msgid "No worldname given or no game selected"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:852 #: builtin/mainmenu.lua:650
msgid "Singleplayer" msgid "To enable shaders the OpenGL driver needs to be used."
msgstr "" msgstr ""
#: builtin/mainmenu.lua:853 #: builtin/mainmenu.lua:818
msgid "Client"
msgstr ""
#: builtin/mainmenu.lua:854
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:855
msgid "Settings"
msgstr ""
#: builtin/mainmenu.lua:856
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:863
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:865
msgid "Credits"
msgstr ""
#: builtin/mainmenu.lua:885
msgid "CLIENT" msgid "CLIENT"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:886 #: builtin/mainmenu.lua:819
msgid "Favorites:" msgid "Favorites:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:887 #: builtin/mainmenu.lua:820
msgid "Address/Port" msgid "Address/Port"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:888 #: builtin/mainmenu.lua:821
msgid "Name/Password" msgid "Name/Password"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:891 #: builtin/mainmenu.lua:824
msgid "Public Serverlist" msgid "Public Serverlist"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:896 builtin/mainmenu.lua:941 builtin/mainmenu.lua:1004 #: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: builtin/modmgr.lua:271 src/keycode.cpp:229 #: src/keycode.cpp:229
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:900 #: builtin/mainmenu.lua:833
msgid "Connect" msgid "Connect"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:942 builtin/mainmenu.lua:1005 #: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New" msgid "New"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:943 builtin/mainmenu.lua:1006 #: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure" msgid "Configure"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:944 #: builtin/mainmenu.lua:877
msgid "Start Game" msgid "Start Game"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:945 builtin/mainmenu.lua:1008 #: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:" msgid "Select World:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:946 #: builtin/mainmenu.lua:879
msgid "START SERVER" msgid "START SERVER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:947 builtin/mainmenu.lua:1010 #: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode" msgid "Creative Mode"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:949 builtin/mainmenu.lua:1012 #: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage" msgid "Enable Damage"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:951 #: builtin/mainmenu.lua:884
msgid "Public" msgid "Public"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:953 #: builtin/mainmenu.lua:886
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:955 #: builtin/mainmenu.lua:888
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:956 #: builtin/mainmenu.lua:889
msgid "Server Port" msgid "Server Port"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:966 #: builtin/mainmenu.lua:899
msgid "SETTINGS" msgid "SETTINGS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:967 #: builtin/mainmenu.lua:900
msgid "Fancy trees" msgid "Fancy trees"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:969 #: builtin/mainmenu.lua:902
msgid "Smooth Lighting" msgid "Smooth Lighting"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:971 #: builtin/mainmenu.lua:904
msgid "3D Clouds" msgid "3D Clouds"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:973 #: builtin/mainmenu.lua:906
msgid "Opaque Water" msgid "Opaque Water"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:976 #: builtin/mainmenu.lua:909
msgid "Mip-Mapping" msgid "Mip-Mapping"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:978 #: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering" msgid "Anisotropic Filtering"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:980 #: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering" msgid "Bi-Linear Filtering"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:982 #: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering" msgid "Tri-Linear Filtering"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:985 #: builtin/mainmenu.lua:918
msgid "Shaders" msgid "Shaders"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:987 #: builtin/mainmenu.lua:920
msgid "Preload item visuals" msgid "Preload item visuals"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:989 #: builtin/mainmenu.lua:922
msgid "Enable Particles" msgid "Enable Particles"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:991 #: builtin/mainmenu.lua:924
msgid "Finite Liquid" msgid "Finite Liquid"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:994 #: builtin/mainmenu.lua:927
msgid "Change keys" msgid "Change keys"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1007 src/keycode.cpp:248 #: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play" msgid "Play"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1009 #: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER" msgid "SINGLE PLAYER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1022 #: builtin/mainmenu.lua:955
msgid "Select texture pack:" msgid "Select texture pack:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1023 #: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS" msgid "TEXTURE PACKS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1043 #: builtin/mainmenu.lua:976
msgid "No information available" msgid "No information available"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1071 #: builtin/mainmenu.lua:1005
msgid "Core Developers" msgid "Core Developers"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1082 #: builtin/mainmenu.lua:1020
msgid "Active Contributors" msgid "Active Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1092 #: builtin/mainmenu.lua:1028
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr ""
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr ""
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr ""
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr ""
#: builtin/modmgr.lua:236 #: builtin/modmgr.lua:236
msgid "MODS" msgid "MODS"
msgstr "" msgstr ""
@ -302,111 +310,131 @@ msgstr ""
msgid "Installed Mods:" msgid "Installed Mods:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:243 builtin/modstore.lua:253 #: builtin/modmgr.lua:243
msgid "Install" msgid "Add mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:244 #: builtin/modmgr.lua:244
msgid "Download" msgid "Local install"
msgstr "" msgstr ""
#: builtin/modmgr.lua:256 #: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
msgid "No mod description available"
msgstr ""
#: builtin/modmgr.lua:288
msgid "Mod information:"
msgstr ""
#: builtin/modmgr.lua:299
msgid "Rename" msgid "Rename"
msgstr "" msgstr ""
#: builtin/modmgr.lua:260 builtin/modmgr.lua:402 #: builtin/modmgr.lua:301
#, fuzzy msgid "Uninstall selected modpack"
msgid "Depends:" msgstr ""
msgstr "Avhenger av:"
#: builtin/modmgr.lua:282 #: builtin/modmgr.lua:312
msgid "Uninstall selected mod"
msgstr ""
#: builtin/modmgr.lua:324
msgid "Rename Modpack:" msgid "Rename Modpack:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:287 src/keycode.cpp:227 #: builtin/modmgr.lua:329 src/keycode.cpp:227
msgid "Accept" msgid "Accept"
msgstr "" msgstr ""
#: builtin/modmgr.lua:381 #: builtin/modmgr.lua:423
#, fuzzy #, fuzzy
msgid "World:" msgid "World:"
msgstr "Navnet på verdenen" msgstr "Navnet på verdenen"
#: builtin/modmgr.lua:385 builtin/modmgr.lua:387 #: builtin/modmgr.lua:427 builtin/modmgr.lua:429
#, fuzzy #, fuzzy
msgid "Hide Game" msgid "Hide Game"
msgstr "Spill" msgstr "Spill"
#: builtin/modmgr.lua:391 builtin/modmgr.lua:393 #: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content" msgid "Hide mp content"
msgstr "" msgstr ""
#: builtin/modmgr.lua:400 #: builtin/modmgr.lua:442
msgid "Mod:" msgid "Mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:405 src/guiKeyChangeMenu.cpp:187 #: builtin/modmgr.lua:444
#, fuzzy
msgid "Depends:"
msgstr "Avhenger av:"
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save" msgid "Save"
msgstr "Lagre" msgstr "Lagre"
#: builtin/modmgr.lua:422 #: builtin/modmgr.lua:464
#, fuzzy #, fuzzy
msgid "Enable MP" msgid "Enable MP"
msgstr "Aktiver Alle" msgstr "Aktiver Alle"
#: builtin/modmgr.lua:424 #: builtin/modmgr.lua:466
#, fuzzy #, fuzzy
msgid "Disable MP" msgid "Disable MP"
msgstr "Deaktiver Alle" msgstr "Deaktiver Alle"
#: builtin/modmgr.lua:428 builtin/modmgr.lua:430 #: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled" msgid "enabled"
msgstr "aktivert" msgstr "aktivert"
#: builtin/modmgr.lua:436 #: builtin/modmgr.lua:478
#, fuzzy #, fuzzy
msgid "Enable all" msgid "Enable all"
msgstr "Aktiver Alle" msgstr "Aktiver Alle"
#: builtin/modmgr.lua:551 #: builtin/modmgr.lua:577
msgid "Select Mod File:" msgid "Select Mod File:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:590 #: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\"" msgid "Install Mod: file: \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:591 #: builtin/modmgr.lua:617
msgid "" msgid ""
"\n" "\n"
"Install Mod: unsupported filetype \"$1\"" "Install Mod: unsupported filetype \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:612 #: builtin/modmgr.lua:638
msgid "Failed to install $1 to $2" msgid "Failed to install $1 to $2"
msgstr "" msgstr ""
#: builtin/modmgr.lua:615 #: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1" msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:635 #: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1" msgid "Install Mod: unable to find real modname for: $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:824 #: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\"" msgid "Modmgr: failed to delete \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:828 #: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\"" msgid "Modmgr: invalid modpath \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:845 #: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?" msgid "Are you sure you want to delete \"$1\"?"
msgstr "" msgstr ""
#: builtin/modmgr.lua:847 #: builtin/modmgr.lua:878
msgid "No of course not!" msgid "No of course not!"
msgstr "" msgstr ""
@ -422,47 +450,51 @@ msgstr ""
msgid "re-Install" msgid "re-Install"
msgstr "" msgstr ""
#: src/client.cpp:2915 #: builtin/modstore.lua:253
msgid "Install"
msgstr ""
#: src/client.cpp:2917
msgid "Item textures..." msgid "Item textures..."
msgstr "" msgstr ""
#: src/game.cpp:939 #: src/game.cpp:940
msgid "Loading..." msgid "Loading..."
msgstr "" msgstr ""
#: src/game.cpp:999 #: src/game.cpp:1000
msgid "Creating server...." msgid "Creating server...."
msgstr "" msgstr ""
#: src/game.cpp:1015 #: src/game.cpp:1016
msgid "Creating client..." msgid "Creating client..."
msgstr "" msgstr ""
#: src/game.cpp:1024 #: src/game.cpp:1025
msgid "Resolving address..." msgid "Resolving address..."
msgstr "" msgstr ""
#: src/game.cpp:1121 #: src/game.cpp:1122
msgid "Connecting to server..." msgid "Connecting to server..."
msgstr "" msgstr ""
#: src/game.cpp:1218 #: src/game.cpp:1219
msgid "Item definitions..." msgid "Item definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1225 #: src/game.cpp:1226
msgid "Node definitions..." msgid "Node definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1232 #: src/game.cpp:1233
msgid "Media..." msgid "Media..."
msgstr "" msgstr ""
#: src/game.cpp:3405 #: src/game.cpp:3409
msgid "Shutting down stuff..." msgid "Shutting down stuff..."
msgstr "" msgstr ""
#: src/game.cpp:3435 #: src/game.cpp:3439
msgid "" msgid ""
"\n" "\n"
"Check debug.txt for details." "Check debug.txt for details."
@ -476,12 +508,8 @@ msgstr "Du døde."
msgid "Respawn" msgid "Respawn"
msgstr "" msgstr ""
#: src/guiFormSpecMenu.cpp:1569 #: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
msgid "Left click: Move all items, Right click: Move single item" #: src/guiTextInputMenu.cpp:139
msgstr ""
#: src/guiFormSpecMenu.cpp:1595 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:140
msgid "Proceed" msgid "Proceed"
msgstr "" msgstr ""
@ -497,99 +525,99 @@ msgstr ""
msgid "Double tap \"jump\" to toggle fly" msgid "Double tap \"jump\" to toggle fly"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:290 #: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use" msgid "Key already in use"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:372 #: src/guiKeyChangeMenu.cpp:363
msgid "press key" msgid "press key"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:400 #: src/guiKeyChangeMenu.cpp:389
msgid "Forward" msgid "Forward"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:401 #: src/guiKeyChangeMenu.cpp:390
msgid "Backward" msgid "Backward"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left" msgid "Left"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right" msgid "Right"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:404 #: src/guiKeyChangeMenu.cpp:393
msgid "Use" msgid "Use"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:405 #: src/guiKeyChangeMenu.cpp:394
msgid "Jump" msgid "Jump"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:406 #: src/guiKeyChangeMenu.cpp:395
msgid "Sneak" msgid "Sneak"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:407 #: src/guiKeyChangeMenu.cpp:396
msgid "Drop" msgid "Drop"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:408 #: src/guiKeyChangeMenu.cpp:397
msgid "Inventory" msgid "Inventory"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:409 #: src/guiKeyChangeMenu.cpp:398
msgid "Chat" msgid "Chat"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:410 #: src/guiKeyChangeMenu.cpp:399
msgid "Command" msgid "Command"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:411 #: src/guiKeyChangeMenu.cpp:400
msgid "Console" msgid "Console"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:412 #: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly" msgid "Toggle fly"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:413 #: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast" msgid "Toggle fast"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:414 #: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip" msgid "Toggle noclip"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:415 #: src/guiKeyChangeMenu.cpp:404
msgid "Range select" msgid "Range select"
msgstr "" msgstr ""
#: src/guiKeyChangeMenu.cpp:416 #: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks" msgid "Print stacks"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:107 #: src/guiPasswordChange.cpp:106
msgid "Old Password" msgid "Old Password"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:125 #: src/guiPasswordChange.cpp:122
msgid "New Password" msgid "New Password"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:142 #: src/guiPasswordChange.cpp:137
msgid "Confirm Password" msgid "Confirm Password"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:160 #: src/guiPasswordChange.cpp:153
msgid "Change" msgid "Change"
msgstr "" msgstr ""
#: src/guiPasswordChange.cpp:169 #: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "" msgstr ""
@ -628,11 +656,11 @@ msgid ""
"- T: chat\n" "- T: chat\n"
msgstr "" msgstr ""
#: src/guiVolumeChange.cpp:108 #: src/guiVolumeChange.cpp:107
msgid "Sound Volume: " msgid "Sound Volume: "
msgstr "" msgstr ""
#: src/guiVolumeChange.cpp:122 #: src/guiVolumeChange.cpp:121
msgid "Exit" msgid "Exit"
msgstr "" msgstr ""
@ -924,35 +952,36 @@ msgstr ""
msgid "Zoom" msgid "Zoom"
msgstr "" msgstr ""
#: src/main.cpp:1411 #: src/main.cpp:1472
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "" msgstr ""
#: src/main.cpp:1486 #: src/main.cpp:1547
msgid "Main Menu" msgid "Main Menu"
msgstr "" msgstr ""
#: src/main.cpp:1662 #: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do." msgid "No world selected and no address provided. Nothing to do."
msgstr "" msgstr ""
#: src/main.cpp:1670 #: src/main.cpp:1731
msgid "Could not find or load game \"" msgid "Could not find or load game \""
msgstr "" msgstr ""
#: src/main.cpp:1684 #: src/main.cpp:1745
msgid "Invalid gamespec." msgid "Invalid gamespec."
msgstr "" msgstr ""
#: src/main.cpp:1729 #: src/main.cpp:1790
msgid "Connection error (timed out?)" msgid "Connection error (timed out?)"
msgstr "" msgstr ""
#~ msgid "is required by:" #~ msgid ""
#~ msgstr "trengs av:" #~ "Warning: Some mods are not configured yet.\n"
#~ "They will be enabled by default when you save the configuration. "
#~ msgid "Configuration saved. " #~ msgstr ""
#~ msgstr "Konfigurasjon lagret. " #~ "Advarsel: Noen modifikasjoner er ikke konfigurert enda. \n"
#~ "De vil bli aktivert som standard når du lagrer konfigurasjonen."
#~ msgid "" #~ msgid ""
#~ "Warning: Some configured mods are missing.\n" #~ "Warning: Some configured mods are missing.\n"
@ -961,9 +990,8 @@ msgstr ""
#~ "Advarsel: Noen konfigurerte modifikasjoner mangler. \n" #~ "Advarsel: Noen konfigurerte modifikasjoner mangler. \n"
#~ "Instillingene deres vil bli fjernet når du lagrer konfigurasjonen." #~ "Instillingene deres vil bli fjernet når du lagrer konfigurasjonen."
#~ msgid "" #~ msgid "Configuration saved. "
#~ "Warning: Some mods are not configured yet.\n" #~ msgstr "Konfigurasjon lagret. "
#~ "They will be enabled by default when you save the configuration. "
#~ msgstr "" #~ msgid "is required by:"
#~ "Advarsel: Noen modifikasjoner er ikke konfigurert enda. \n" #~ msgstr "trengs av:"
#~ "De vil bli aktivert som standard når du lagrer konfigurasjonen."

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: minetest\n" "Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-07 22:01+0400\n" "POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: 2013-09-05 12:47+0200\n" "PO-Revision-Date: 2013-09-05 12:47+0200\n"
"Last-Translator: Leonardo Costa <k95leo@gmail.com>\n" "Last-Translator: Leonardo Costa <k95leo@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -22,12 +22,12 @@ msgstr ""
msgid "Game Name" msgid "Game Name"
msgstr "Nome do Jogo" msgstr "Nome do Jogo"
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:301 #: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create" msgid "Create"
msgstr "Criar" msgstr "Criar"
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:302 builtin/modmgr.lua:289 #: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:406 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223 #: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
@ -40,35 +40,35 @@ msgstr ""
msgid "GAMES" msgid "GAMES"
msgstr "JOGOS" msgstr "JOGOS"
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:859 #: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
msgid "Games" msgid "Games"
msgstr "Jogos" msgstr "Jogos"
#: builtin/gamemgr.lua:233 #: builtin/gamemgr.lua:234
msgid "Mods:" msgid "Mods:"
msgstr "Extras:" msgstr "Extras:"
#: builtin/gamemgr.lua:234 #: builtin/gamemgr.lua:235
msgid "edit game" msgid "edit game"
msgstr "editar jogo" msgstr "editar jogo"
#: builtin/gamemgr.lua:237 #: builtin/gamemgr.lua:238
msgid "new game" msgid "new game"
msgstr "novo jogo" msgstr "novo jogo"
#: builtin/gamemgr.lua:247 #: builtin/gamemgr.lua:248
msgid "EDIT GAME" msgid "EDIT GAME"
msgstr "EDITAR JOGO" msgstr "EDITAR JOGO"
#: builtin/gamemgr.lua:267 #: builtin/gamemgr.lua:269
msgid "Remove selected mod" msgid "Remove selected mod"
msgstr "Remover extra selecionado" msgstr "Remover extra selecionado"
#: builtin/gamemgr.lua:270 #: builtin/gamemgr.lua:272
msgid "<<-- Add mod" msgid "<<-- Add mod"
msgstr "<<-- Adicionar extra" msgstr "<<-- Adicionar extra"
#: builtin/mainmenu.lua:159 #: builtin/mainmenu.lua:158
msgid "Ok" msgid "Ok"
msgstr "Ok" msgstr "Ok"
@ -76,223 +76,231 @@ msgstr "Ok"
msgid "World name" msgid "World name"
msgstr "Nome do Mundo" msgstr "Nome do Mundo"
#: builtin/mainmenu.lua:298 #: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen" msgid "Mapgen"
msgstr "Geração de Mapa" msgstr "Geração de Mapa"
#: builtin/mainmenu.lua:300 #: builtin/mainmenu.lua:306
msgid "Game" msgid "Game"
msgstr "Jogo" msgstr "Jogo"
#: builtin/mainmenu.lua:314 #: builtin/mainmenu.lua:319
msgid "Delete World \"$1\"?" msgid "Delete World \"$1\"?"
msgstr "Eliminar Mundo \"$1\"?" msgstr "Eliminar Mundo \"$1\"?"
#: builtin/mainmenu.lua:315 builtin/modmgr.lua:846 #: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes" msgid "Yes"
msgstr "Sim" msgstr "Sim"
#: builtin/mainmenu.lua:316 #: builtin/mainmenu.lua:321
msgid "No" msgid "No"
msgstr "Não" msgstr "Não"
#: builtin/mainmenu.lua:384 #: builtin/mainmenu.lua:364
msgid "A world named \"$1\" already exists" msgid "A world named \"$1\" already exists"
msgstr "O mundo com o nome \"$1\" já existe" msgstr "O mundo com o nome \"$1\" já existe"
#: builtin/mainmenu.lua:399 #: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected" msgid "No worldname given or no game selected"
msgstr "Mundo sem nome ou nenhum jogo selecionado" msgstr "Mundo sem nome ou nenhum jogo selecionado"
#: builtin/mainmenu.lua:852 #: builtin/mainmenu.lua:650
msgid "Singleplayer" msgid "To enable shaders the OpenGL driver needs to be used."
msgstr "Um Jogador" msgstr ""
#: builtin/mainmenu.lua:853 #: builtin/mainmenu.lua:818
msgid "Client"
msgstr "Cliente"
#: builtin/mainmenu.lua:854
msgid "Server"
msgstr "Servidor"
#: builtin/mainmenu.lua:855
msgid "Settings"
msgstr "Definições"
#: builtin/mainmenu.lua:856
msgid "Texture Packs"
msgstr "Pacotes de Texturas"
#: builtin/mainmenu.lua:863
msgid "Mods"
msgstr "Extras"
#: builtin/mainmenu.lua:865
msgid "Credits"
msgstr "Créditos"
#: builtin/mainmenu.lua:885
msgid "CLIENT" msgid "CLIENT"
msgstr "CLIENTE" msgstr "CLIENTE"
#: builtin/mainmenu.lua:886 #: builtin/mainmenu.lua:819
msgid "Favorites:" msgid "Favorites:"
msgstr "Favoritos:" msgstr "Favoritos:"
#: builtin/mainmenu.lua:887 #: builtin/mainmenu.lua:820
msgid "Address/Port" msgid "Address/Port"
msgstr "Endereço/Porta" msgstr "Endereço/Porta"
#: builtin/mainmenu.lua:888 #: builtin/mainmenu.lua:821
msgid "Name/Password" msgid "Name/Password"
msgstr "Nome/Senha" msgstr "Nome/Senha"
#: builtin/mainmenu.lua:891 #: builtin/mainmenu.lua:824
msgid "Public Serverlist" msgid "Public Serverlist"
msgstr "Lista de Servidores Públicos" msgstr "Lista de Servidores Públicos"
#: builtin/mainmenu.lua:896 builtin/mainmenu.lua:941 builtin/mainmenu.lua:1004 #: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: builtin/modmgr.lua:271 src/keycode.cpp:229 #: src/keycode.cpp:229
msgid "Delete" msgid "Delete"
msgstr "Eliminar" msgstr "Eliminar"
#: builtin/mainmenu.lua:900 #: builtin/mainmenu.lua:833
msgid "Connect" msgid "Connect"
msgstr "Ligar" msgstr "Ligar"
#: builtin/mainmenu.lua:942 builtin/mainmenu.lua:1005 #: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New" msgid "New"
msgstr "Novo" msgstr "Novo"
#: builtin/mainmenu.lua:943 builtin/mainmenu.lua:1006 #: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure" msgid "Configure"
msgstr "Configurar" msgstr "Configurar"
#: builtin/mainmenu.lua:944 #: builtin/mainmenu.lua:877
msgid "Start Game" msgid "Start Game"
msgstr "Jogar" msgstr "Jogar"
#: builtin/mainmenu.lua:945 builtin/mainmenu.lua:1008 #: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:" msgid "Select World:"
msgstr "Seleccionar Mundo:" msgstr "Seleccionar Mundo:"
#: builtin/mainmenu.lua:946 #: builtin/mainmenu.lua:879
msgid "START SERVER" msgid "START SERVER"
msgstr "INICIAR SERVIDOR" msgstr "INICIAR SERVIDOR"
#: builtin/mainmenu.lua:947 builtin/mainmenu.lua:1010 #: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode" msgid "Creative Mode"
msgstr "Modo Criativo" msgstr "Modo Criativo"
#: builtin/mainmenu.lua:949 builtin/mainmenu.lua:1012 #: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage" msgid "Enable Damage"
msgstr "Ativar Dano" msgstr "Ativar Dano"
#: builtin/mainmenu.lua:951 #: builtin/mainmenu.lua:884
msgid "Public" msgid "Public"
msgstr "Público" msgstr "Público"
#: builtin/mainmenu.lua:953 #: builtin/mainmenu.lua:886
msgid "Name" msgid "Name"
msgstr "Nome" msgstr "Nome"
#: builtin/mainmenu.lua:955 #: builtin/mainmenu.lua:888
msgid "Password" msgid "Password"
msgstr "Senha" msgstr "Senha"
#: builtin/mainmenu.lua:956 #: builtin/mainmenu.lua:889
msgid "Server Port" msgid "Server Port"
msgstr "Porta" msgstr "Porta"
#: builtin/mainmenu.lua:966 #: builtin/mainmenu.lua:899
msgid "SETTINGS" msgid "SETTINGS"
msgstr "DEFINIÇÕES" msgstr "DEFINIÇÕES"
#: builtin/mainmenu.lua:967 #: builtin/mainmenu.lua:900
msgid "Fancy trees" msgid "Fancy trees"
msgstr "Árvores Melhoradas" msgstr "Árvores Melhoradas"
#: builtin/mainmenu.lua:969 #: builtin/mainmenu.lua:902
msgid "Smooth Lighting" msgid "Smooth Lighting"
msgstr "Iluminação Suave" msgstr "Iluminação Suave"
#: builtin/mainmenu.lua:971 #: builtin/mainmenu.lua:904
msgid "3D Clouds" msgid "3D Clouds"
msgstr "Nuvens 3D" msgstr "Nuvens 3D"
#: builtin/mainmenu.lua:973 #: builtin/mainmenu.lua:906
msgid "Opaque Water" msgid "Opaque Water"
msgstr "Água Opaca" msgstr "Água Opaca"
#: builtin/mainmenu.lua:976 #: builtin/mainmenu.lua:909
msgid "Mip-Mapping" msgid "Mip-Mapping"
msgstr "Mip-Mapping" msgstr "Mip-Mapping"
#: builtin/mainmenu.lua:978 #: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering" msgid "Anisotropic Filtering"
msgstr "Filtro Anisotrópico" msgstr "Filtro Anisotrópico"
#: builtin/mainmenu.lua:980 #: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering" msgid "Bi-Linear Filtering"
msgstr "Filtro Bi-Linear" msgstr "Filtro Bi-Linear"
#: builtin/mainmenu.lua:982 #: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering" msgid "Tri-Linear Filtering"
msgstr "Filtro Tri-Linear" msgstr "Filtro Tri-Linear"
#: builtin/mainmenu.lua:985 #: builtin/mainmenu.lua:918
msgid "Shaders" msgid "Shaders"
msgstr "Sombras" msgstr "Sombras"
#: builtin/mainmenu.lua:987 #: builtin/mainmenu.lua:920
msgid "Preload item visuals" msgid "Preload item visuals"
msgstr "Pré-carregamento dos itens" msgstr "Pré-carregamento dos itens"
#: builtin/mainmenu.lua:989 #: builtin/mainmenu.lua:922
msgid "Enable Particles" msgid "Enable Particles"
msgstr "Ativar Partículas" msgstr "Ativar Partículas"
#: builtin/mainmenu.lua:991 #: builtin/mainmenu.lua:924
msgid "Finite Liquid" msgid "Finite Liquid"
msgstr "Líquido Finito" msgstr "Líquido Finito"
#: builtin/mainmenu.lua:994 #: builtin/mainmenu.lua:927
msgid "Change keys" msgid "Change keys"
msgstr "Mudar teclas" msgstr "Mudar teclas"
#: builtin/mainmenu.lua:1007 src/keycode.cpp:248 #: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play" msgid "Play"
msgstr "Jogar" msgstr "Jogar"
#: builtin/mainmenu.lua:1009 #: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER" msgid "SINGLE PLAYER"
msgstr "Um Jogador" msgstr "Um Jogador"
#: builtin/mainmenu.lua:1022 #: builtin/mainmenu.lua:955
msgid "Select texture pack:" msgid "Select texture pack:"
msgstr "Selecione um pacote de texturas:" msgstr "Selecione um pacote de texturas:"
#: builtin/mainmenu.lua:1023 #: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS" msgid "TEXTURE PACKS"
msgstr "PACOTES DE TEXTURAS" msgstr "PACOTES DE TEXTURAS"
#: builtin/mainmenu.lua:1043 #: builtin/mainmenu.lua:976
msgid "No information available" msgid "No information available"
msgstr "Sem informação" msgstr "Sem informação"
#: builtin/mainmenu.lua:1071 #: builtin/mainmenu.lua:1005
msgid "Core Developers" msgid "Core Developers"
msgstr "Desenvolvedores Chave" msgstr "Desenvolvedores Chave"
#: builtin/mainmenu.lua:1082 #: builtin/mainmenu.lua:1020
msgid "Active Contributors" msgid "Active Contributors"
msgstr "Contribuintes Ativos" msgstr "Contribuintes Ativos"
#: builtin/mainmenu.lua:1092 #: builtin/mainmenu.lua:1028
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "Antigos Contribuintes" msgstr "Antigos Contribuintes"
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr "Um Jogador"
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr "Cliente"
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr "Servidor"
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr "Definições"
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr "Pacotes de Texturas"
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr "Extras"
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr "Créditos"
#: builtin/modmgr.lua:236 #: builtin/modmgr.lua:236
msgid "MODS" msgid "MODS"
msgstr "EXTRAS" msgstr "EXTRAS"
@ -301,78 +309,103 @@ msgstr "EXTRAS"
msgid "Installed Mods:" msgid "Installed Mods:"
msgstr "Extras Instalados:" msgstr "Extras Instalados:"
#: builtin/modmgr.lua:243 builtin/modstore.lua:253 #: builtin/modmgr.lua:243
msgid "Install" #, fuzzy
msgstr "Instalar" msgid "Add mod:"
msgstr "<<-- Adicionar extra"
#: builtin/modmgr.lua:244 #: builtin/modmgr.lua:244
msgid "Download" #, fuzzy
msgstr "Descarregar" msgid "Local install"
msgstr "Instalar"
#: builtin/modmgr.lua:256 #: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
#, fuzzy
msgid "No mod description available"
msgstr "Sem informação"
#: builtin/modmgr.lua:288
#, fuzzy
msgid "Mod information:"
msgstr "Sem informação"
#: builtin/modmgr.lua:299
msgid "Rename" msgid "Rename"
msgstr "Renomear" msgstr "Renomear"
#: builtin/modmgr.lua:260 builtin/modmgr.lua:402 #: builtin/modmgr.lua:301
msgid "Depends:" msgid "Uninstall selected modpack"
msgstr "Depende de:" msgstr ""
#: builtin/modmgr.lua:282 #: builtin/modmgr.lua:312
#, fuzzy
msgid "Uninstall selected mod"
msgstr "Remover extra selecionado"
#: builtin/modmgr.lua:324
msgid "Rename Modpack:" msgid "Rename Modpack:"
msgstr "Renomear Pacote de Extras:" msgstr "Renomear Pacote de Extras:"
#: builtin/modmgr.lua:287 src/keycode.cpp:227 #: builtin/modmgr.lua:329 src/keycode.cpp:227
msgid "Accept" msgid "Accept"
msgstr "Aceitar" msgstr "Aceitar"
#: builtin/modmgr.lua:381 #: builtin/modmgr.lua:423
msgid "World:" msgid "World:"
msgstr "Mundo:" msgstr "Mundo:"
#: builtin/modmgr.lua:385 builtin/modmgr.lua:387 #: builtin/modmgr.lua:427 builtin/modmgr.lua:429
msgid "Hide Game" msgid "Hide Game"
msgstr "Esconder Jogo" msgstr "Esconder Jogo"
#: builtin/modmgr.lua:391 builtin/modmgr.lua:393 #: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content" msgid "Hide mp content"
msgstr "" msgstr ""
#: builtin/modmgr.lua:400 #: builtin/modmgr.lua:442
msgid "Mod:" msgid "Mod:"
msgstr "Extra:" msgstr "Extra:"
#: builtin/modmgr.lua:405 src/guiKeyChangeMenu.cpp:187 #: builtin/modmgr.lua:444
msgid "Depends:"
msgstr "Depende de:"
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save" msgid "Save"
msgstr "Guardar" msgstr "Guardar"
#: builtin/modmgr.lua:422 #: builtin/modmgr.lua:464
#, fuzzy #, fuzzy
msgid "Enable MP" msgid "Enable MP"
msgstr "Ativar Tudo" msgstr "Ativar Tudo"
#: builtin/modmgr.lua:424 #: builtin/modmgr.lua:466
#, fuzzy #, fuzzy
msgid "Disable MP" msgid "Disable MP"
msgstr "Desativar Tudo" msgstr "Desativar Tudo"
#: builtin/modmgr.lua:428 builtin/modmgr.lua:430 #: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled" msgid "enabled"
msgstr "ativo" msgstr "ativo"
#: builtin/modmgr.lua:436 #: builtin/modmgr.lua:478
#, fuzzy #, fuzzy
msgid "Enable all" msgid "Enable all"
msgstr "Ativar Tudo" msgstr "Ativar Tudo"
#: builtin/modmgr.lua:551 #: builtin/modmgr.lua:577
msgid "Select Mod File:" msgid "Select Mod File:"
msgstr "Seleccionar ficheiro de Extra:" msgstr "Seleccionar ficheiro de Extra:"
#: builtin/modmgr.lua:590 #: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\"" msgid "Install Mod: file: \"$1\""
msgstr "Instalar Extra: ficheiro: \"$1\"" msgstr "Instalar Extra: ficheiro: \"$1\""
#: builtin/modmgr.lua:591 #: builtin/modmgr.lua:617
msgid "" msgid ""
"\n" "\n"
"Install Mod: unsupported filetype \"$1\"" "Install Mod: unsupported filetype \"$1\""
@ -380,31 +413,31 @@ msgstr ""
"\n" "\n"
"Instalar Extra: tipo de ficheiro desconhecido \"$1\"" "Instalar Extra: tipo de ficheiro desconhecido \"$1\""
#: builtin/modmgr.lua:612 #: builtin/modmgr.lua:638
msgid "Failed to install $1 to $2" msgid "Failed to install $1 to $2"
msgstr "Falha ao instalar de $1 ao $2" msgstr "Falha ao instalar de $1 ao $2"
#: builtin/modmgr.lua:615 #: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1" msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:635 #: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1" msgid "Install Mod: unable to find real modname for: $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:824 #: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\"" msgid "Modmgr: failed to delete \"$1\""
msgstr "Mensagem de Extra: falhou a eliminação de \"$1\"" msgstr "Mensagem de Extra: falhou a eliminação de \"$1\""
#: builtin/modmgr.lua:828 #: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\"" msgid "Modmgr: invalid modpath \"$1\""
msgstr "Mensagem de extra: caminho inválido \"$1\"" msgstr "Mensagem de extra: caminho inválido \"$1\""
#: builtin/modmgr.lua:845 #: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?" msgid "Are you sure you want to delete \"$1\"?"
msgstr "Tem a certeza que pertende eliminar \"$1\"?" msgstr "Tem a certeza que pertende eliminar \"$1\"?"
#: builtin/modmgr.lua:847 #: builtin/modmgr.lua:878
msgid "No of course not!" msgid "No of course not!"
msgstr "Não, é claro que não!" msgstr "Não, é claro que não!"
@ -420,47 +453,51 @@ msgstr "Classificação"
msgid "re-Install" msgid "re-Install"
msgstr "re-Instalar" msgstr "re-Instalar"
#: src/client.cpp:2915 #: builtin/modstore.lua:253
msgid "Install"
msgstr "Instalar"
#: src/client.cpp:2917
msgid "Item textures..." msgid "Item textures..."
msgstr "Texturas dos items..." msgstr "Texturas dos items..."
#: src/game.cpp:939 #: src/game.cpp:940
msgid "Loading..." msgid "Loading..."
msgstr "A carregar..." msgstr "A carregar..."
#: src/game.cpp:999 #: src/game.cpp:1000
msgid "Creating server...." msgid "Creating server...."
msgstr "A criar servidor..." msgstr "A criar servidor..."
#: src/game.cpp:1015 #: src/game.cpp:1016
msgid "Creating client..." msgid "Creating client..."
msgstr "A criar cliente..." msgstr "A criar cliente..."
#: src/game.cpp:1024 #: src/game.cpp:1025
msgid "Resolving address..." msgid "Resolving address..."
msgstr "A resolver endereço..." msgstr "A resolver endereço..."
#: src/game.cpp:1121 #: src/game.cpp:1122
msgid "Connecting to server..." msgid "Connecting to server..."
msgstr "A conectar ao servidor..." msgstr "A conectar ao servidor..."
#: src/game.cpp:1218 #: src/game.cpp:1219
msgid "Item definitions..." msgid "Item definitions..."
msgstr "Definições dos Itens..." msgstr "Definições dos Itens..."
#: src/game.cpp:1225 #: src/game.cpp:1226
msgid "Node definitions..." msgid "Node definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1232 #: src/game.cpp:1233
msgid "Media..." msgid "Media..."
msgstr "Dados..." msgstr "Dados..."
#: src/game.cpp:3405 #: src/game.cpp:3409
msgid "Shutting down stuff..." msgid "Shutting down stuff..."
msgstr "A desligar..." msgstr "A desligar..."
#: src/game.cpp:3435 #: src/game.cpp:3439
msgid "" msgid ""
"\n" "\n"
"Check debug.txt for details." "Check debug.txt for details."
@ -476,12 +513,8 @@ msgstr "Morreste."
msgid "Respawn" msgid "Respawn"
msgstr "Reaparecer" msgstr "Reaparecer"
#: src/guiFormSpecMenu.cpp:1569 #: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
msgid "Left click: Move all items, Right click: Move single item" #: src/guiTextInputMenu.cpp:139
msgstr "Botão esq: Mover todos os itens Botão dir: Mover um item"
#: src/guiFormSpecMenu.cpp:1595 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:140
msgid "Proceed" msgid "Proceed"
msgstr "Continuar" msgstr "Continuar"
@ -497,99 +530,99 @@ msgstr "\"Use\" = descer"
msgid "Double tap \"jump\" to toggle fly" msgid "Double tap \"jump\" to toggle fly"
msgstr "Carregue duas vezes em \"saltar\" para ativar o vôo" msgstr "Carregue duas vezes em \"saltar\" para ativar o vôo"
#: src/guiKeyChangeMenu.cpp:290 #: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use" msgid "Key already in use"
msgstr "Tecla já em uso" msgstr "Tecla já em uso"
#: src/guiKeyChangeMenu.cpp:372 #: src/guiKeyChangeMenu.cpp:363
msgid "press key" msgid "press key"
msgstr "pressione a tecla" msgstr "pressione a tecla"
#: src/guiKeyChangeMenu.cpp:400 #: src/guiKeyChangeMenu.cpp:389
msgid "Forward" msgid "Forward"
msgstr "Avançar" msgstr "Avançar"
#: src/guiKeyChangeMenu.cpp:401 #: src/guiKeyChangeMenu.cpp:390
msgid "Backward" msgid "Backward"
msgstr "Recuar" msgstr "Recuar"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left" msgid "Left"
msgstr "Esquerda" msgstr "Esquerda"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right" msgid "Right"
msgstr "Direita" msgstr "Direita"
#: src/guiKeyChangeMenu.cpp:404 #: src/guiKeyChangeMenu.cpp:393
msgid "Use" msgid "Use"
msgstr "Usar" msgstr "Usar"
#: src/guiKeyChangeMenu.cpp:405 #: src/guiKeyChangeMenu.cpp:394
msgid "Jump" msgid "Jump"
msgstr "Saltar" msgstr "Saltar"
#: src/guiKeyChangeMenu.cpp:406 #: src/guiKeyChangeMenu.cpp:395
msgid "Sneak" msgid "Sneak"
msgstr "Agachar" msgstr "Agachar"
#: src/guiKeyChangeMenu.cpp:407 #: src/guiKeyChangeMenu.cpp:396
msgid "Drop" msgid "Drop"
msgstr "Largar" msgstr "Largar"
#: src/guiKeyChangeMenu.cpp:408 #: src/guiKeyChangeMenu.cpp:397
msgid "Inventory" msgid "Inventory"
msgstr "Inventário" msgstr "Inventário"
#: src/guiKeyChangeMenu.cpp:409 #: src/guiKeyChangeMenu.cpp:398
msgid "Chat" msgid "Chat"
msgstr "Conversa" msgstr "Conversa"
#: src/guiKeyChangeMenu.cpp:410 #: src/guiKeyChangeMenu.cpp:399
msgid "Command" msgid "Command"
msgstr "Comando" msgstr "Comando"
#: src/guiKeyChangeMenu.cpp:411 #: src/guiKeyChangeMenu.cpp:400
msgid "Console" msgid "Console"
msgstr "Consola" msgstr "Consola"
#: src/guiKeyChangeMenu.cpp:412 #: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly" msgid "Toggle fly"
msgstr "Ativar/Desativar vôo" msgstr "Ativar/Desativar vôo"
#: src/guiKeyChangeMenu.cpp:413 #: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast" msgid "Toggle fast"
msgstr "Ativar/Desativar correr" msgstr "Ativar/Desativar correr"
#: src/guiKeyChangeMenu.cpp:414 #: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip" msgid "Toggle noclip"
msgstr "Ativar/Desativar noclip" msgstr "Ativar/Desativar noclip"
#: src/guiKeyChangeMenu.cpp:415 #: src/guiKeyChangeMenu.cpp:404
msgid "Range select" msgid "Range select"
msgstr "Seleccionar Distância" msgstr "Seleccionar Distância"
#: src/guiKeyChangeMenu.cpp:416 #: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks" msgid "Print stacks"
msgstr "Imprimir stacks" msgstr "Imprimir stacks"
#: src/guiPasswordChange.cpp:107 #: src/guiPasswordChange.cpp:106
msgid "Old Password" msgid "Old Password"
msgstr "Senha antiga" msgstr "Senha antiga"
#: src/guiPasswordChange.cpp:125 #: src/guiPasswordChange.cpp:122
msgid "New Password" msgid "New Password"
msgstr "Senha Nova" msgstr "Senha Nova"
#: src/guiPasswordChange.cpp:142 #: src/guiPasswordChange.cpp:137
msgid "Confirm Password" msgid "Confirm Password"
msgstr "Confirmar Senha" msgstr "Confirmar Senha"
#: src/guiPasswordChange.cpp:160 #: src/guiPasswordChange.cpp:153
msgid "Change" msgid "Change"
msgstr "Mudar" msgstr "Mudar"
#: src/guiPasswordChange.cpp:169 #: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "Senhas não correspondem!" msgstr "Senhas não correspondem!"
@ -639,11 +672,11 @@ msgstr ""
"- Roda do rato: seleccionar item\n" "- Roda do rato: seleccionar item\n"
"- T: conversação\n" "- T: conversação\n"
#: src/guiVolumeChange.cpp:108 #: src/guiVolumeChange.cpp:107
msgid "Sound Volume: " msgid "Sound Volume: "
msgstr "Volume do som: " msgstr "Volume do som: "
#: src/guiVolumeChange.cpp:122 #: src/guiVolumeChange.cpp:121
msgid "Exit" msgid "Exit"
msgstr "Sair" msgstr "Sair"
@ -935,78 +968,44 @@ msgstr "PAL"
msgid "Zoom" msgid "Zoom"
msgstr "Zoom" msgstr "Zoom"
#: src/main.cpp:1411 #: src/main.cpp:1472
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "" msgstr ""
#: src/main.cpp:1486 #: src/main.cpp:1547
msgid "Main Menu" msgid "Main Menu"
msgstr "Menu Principal" msgstr "Menu Principal"
#: src/main.cpp:1662 #: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do." msgid "No world selected and no address provided. Nothing to do."
msgstr "" msgstr ""
"Nenhum mundo seleccionado e nenhum endereço providenciado. Nada para fazer." "Nenhum mundo seleccionado e nenhum endereço providenciado. Nada para fazer."
#: src/main.cpp:1670 #: src/main.cpp:1731
msgid "Could not find or load game \"" msgid "Could not find or load game \""
msgstr "Não foi possível encontrar ou carregar jogo \"" msgstr "Não foi possível encontrar ou carregar jogo \""
#: src/main.cpp:1684 #: src/main.cpp:1745
msgid "Invalid gamespec." msgid "Invalid gamespec."
msgstr "gamespec inválido." msgstr "gamespec inválido."
#: src/main.cpp:1729 #: src/main.cpp:1790
msgid "Connection error (timed out?)" msgid "Connection error (timed out?)"
msgstr "Erro de conexão (excedeu tempo?)" msgstr "Erro de conexão (excedeu tempo?)"
#~ msgid "is required by:" #~ msgid ""
#~ msgstr "é necessário pelo:" #~ "Warning: Some mods are not configured yet.\n"
#~ "They will be enabled by default when you save the configuration. "
#~ msgstr ""
#~ "Atenção: Alguns mods ainda não estão configurados.\n"
#~ "Eles vão ser ativados por predefinição quando guardar a configuração. "
#~ msgid "Configuration saved. " #~ msgid ""
#~ msgstr "Configuração gravada. " #~ "Warning: Some configured mods are missing.\n"
#~ "Their setting will be removed when you save the configuration. "
#~ msgid "Warning: Configuration not consistent. " #~ msgstr ""
#~ msgstr "Atenção: Configuração não compatível. " #~ "Atenção: Alguns mods configurados estão em falta.\n"
#~ "As suas definições vão ser removidas quando gravar a configuração. "
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Não foi possível criar mundo: Nome com caracteres inválidos"
#~ msgid "Multiplayer"
#~ msgstr "Vários jogadores"
#~ msgid "Advanced"
#~ msgstr "Avançado"
#~ msgid "Show Public"
#~ msgstr "Mostrar Públicos"
#~ msgid "Show Favorites"
#~ msgstr "Mostrar Favoritos"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Deixe endereço em branco para iniciar servidor local."
#~ msgid "Create world"
#~ msgstr "Criar mundo"
#~ msgid "Address required."
#~ msgstr "Endereço necessário."
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Não foi possível eliminar mundo: Nada seleccionado"
#~ msgid "Files to be deleted"
#~ msgstr "Ficheiros para eliminar"
#~ msgid "Cannot create world: No games found"
#~ msgstr "Não foi possível criar mundo: Não foram detectados jogos"
#~ msgid "Cannot configure world: Nothing selected"
#~ msgstr "Não foi possível configurar mundo: Nada seleccionado"
#~ msgid "Failed to delete all world files"
#~ msgstr "Falhou a remoção de todos os ficheiros dos mundos"
#~ msgid "" #~ msgid ""
#~ "Default Controls:\n" #~ "Default Controls:\n"
@ -1033,16 +1032,56 @@ msgstr "Erro de conexão (excedeu tempo?)"
#~ "- ESC: Este menu\n" #~ "- ESC: Este menu\n"
#~ "- T: Chat\n" #~ "- T: Chat\n"
#~ msgid "" #~ msgid "Failed to delete all world files"
#~ "Warning: Some configured mods are missing.\n" #~ msgstr "Falhou a remoção de todos os ficheiros dos mundos"
#~ "Their setting will be removed when you save the configuration. "
#~ msgstr ""
#~ "Atenção: Alguns mods configurados estão em falta.\n"
#~ "As suas definições vão ser removidas quando gravar a configuração. "
#~ msgid "" #~ msgid "Cannot configure world: Nothing selected"
#~ "Warning: Some mods are not configured yet.\n" #~ msgstr "Não foi possível configurar mundo: Nada seleccionado"
#~ "They will be enabled by default when you save the configuration. "
#~ msgstr "" #~ msgid "Cannot create world: No games found"
#~ "Atenção: Alguns mods ainda não estão configurados.\n" #~ msgstr "Não foi possível criar mundo: Não foram detectados jogos"
#~ "Eles vão ser ativados por predefinição quando guardar a configuração. "
#~ msgid "Files to be deleted"
#~ msgstr "Ficheiros para eliminar"
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Não foi possível eliminar mundo: Nada seleccionado"
#~ msgid "Address required."
#~ msgstr "Endereço necessário."
#~ msgid "Create world"
#~ msgstr "Criar mundo"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Deixe endereço em branco para iniciar servidor local."
#~ msgid "Show Favorites"
#~ msgstr "Mostrar Favoritos"
#~ msgid "Show Public"
#~ msgstr "Mostrar Públicos"
#~ msgid "Advanced"
#~ msgstr "Avançado"
#~ msgid "Multiplayer"
#~ msgstr "Vários jogadores"
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Não foi possível criar mundo: Nome com caracteres inválidos"
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "Atenção: Configuração não compatível. "
#~ msgid "Configuration saved. "
#~ msgstr "Configuração gravada. "
#~ msgid "is required by:"
#~ msgstr "é necessário pelo:"
#~ msgid "Left click: Move all items, Right click: Move single item"
#~ msgstr "Botão esq: Mover todos os itens Botão dir: Mover um item"
#~ msgid "Download"
#~ msgstr "Descarregar"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,9 +7,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: minetest\n" "Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-07 22:01+0400\n" "POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: 2013-08-30 23:15+0200\n" "PO-Revision-Date: 2013-11-22 11:45+0200\n"
"Last-Translator: Ilya Zhuravlev <zhuravlevilya@ya.ru>\n" "Last-Translator: Anton Tsyganenko <anton-tsyganenko@yandex.ru>\n"
"Language-Team: Russian\n" "Language-Team: Russian\n"
"Language: ru\n" "Language: ru\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -23,12 +23,12 @@ msgstr ""
msgid "Game Name" msgid "Game Name"
msgstr "Название" msgstr "Название"
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:301 #: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create" msgid "Create"
msgstr "Создать" msgstr "Создать"
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:302 builtin/modmgr.lua:289 #: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:406 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223 #: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel" msgid "Cancel"
msgstr "Отменить" msgstr "Отменить"
@ -40,35 +40,35 @@ msgstr "Gamemgr: Не могу скопировать мод \"$1\" в игру
msgid "GAMES" msgid "GAMES"
msgstr "ИГРЫ" msgstr "ИГРЫ"
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:859 #: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
msgid "Games" msgid "Games"
msgstr "Игры" msgstr "Игры"
#: builtin/gamemgr.lua:233 #: builtin/gamemgr.lua:234
msgid "Mods:" msgid "Mods:"
msgstr "Моды:" msgstr "Моды:"
#: builtin/gamemgr.lua:234 #: builtin/gamemgr.lua:235
msgid "edit game" msgid "edit game"
msgstr "Редактировать" msgstr "Редактировать"
#: builtin/gamemgr.lua:237 #: builtin/gamemgr.lua:238
msgid "new game" msgid "new game"
msgstr "Создать игру" msgstr "Создать игру"
#: builtin/gamemgr.lua:247 #: builtin/gamemgr.lua:248
msgid "EDIT GAME" msgid "EDIT GAME"
msgstr "РЕДАКТИРОВАНИЕ" msgstr "РЕДАКТИРОВАНИЕ"
#: builtin/gamemgr.lua:267 #: builtin/gamemgr.lua:269
msgid "Remove selected mod" msgid "Remove selected mod"
msgstr "Удалить мод" msgstr "Удалить мод"
#: builtin/gamemgr.lua:270 #: builtin/gamemgr.lua:272
msgid "<<-- Add mod" msgid "<<-- Add mod"
msgstr "<<-- Добавить мод" msgstr "<<-- Добавить мод"
#: builtin/mainmenu.lua:159 #: builtin/mainmenu.lua:158
msgid "Ok" msgid "Ok"
msgstr "Ok" msgstr "Ok"
@ -76,223 +76,231 @@ msgstr "Ok"
msgid "World name" msgid "World name"
msgstr "Название мира" msgstr "Название мира"
#: builtin/mainmenu.lua:298 #: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen" msgid "Mapgen"
msgstr "Генератор карты" msgstr "Генератор карты"
#: builtin/mainmenu.lua:300 #: builtin/mainmenu.lua:306
msgid "Game" msgid "Game"
msgstr "Игра" msgstr "Игра"
#: builtin/mainmenu.lua:314 #: builtin/mainmenu.lua:319
msgid "Delete World \"$1\"?" msgid "Delete World \"$1\"?"
msgstr "Удалить мир \"$1\"?" msgstr "Удалить мир \"$1\"?"
#: builtin/mainmenu.lua:315 builtin/modmgr.lua:846 #: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes" msgid "Yes"
msgstr "Да" msgstr "Да"
#: builtin/mainmenu.lua:316 #: builtin/mainmenu.lua:321
msgid "No" msgid "No"
msgstr "Нет" msgstr "Нет"
#: builtin/mainmenu.lua:384 #: builtin/mainmenu.lua:364
msgid "A world named \"$1\" already exists" msgid "A world named \"$1\" already exists"
msgstr "Мир под названием \"$1\" уже существует" msgstr "Мир под названием \"$1\" уже существует"
#: builtin/mainmenu.lua:399 #: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected" msgid "No worldname given or no game selected"
msgstr "Не задано имя мира или не выбрана игра" msgstr "Не задано имя мира или не выбрана игра"
#: builtin/mainmenu.lua:852 #: builtin/mainmenu.lua:650
msgid "Singleplayer" msgid "To enable shaders the OpenGL driver needs to be used."
msgstr "Одиночная игра" msgstr ""
#: builtin/mainmenu.lua:853 #: builtin/mainmenu.lua:818
msgid "Client"
msgstr "Клиент"
#: builtin/mainmenu.lua:854
msgid "Server"
msgstr "Сервер"
#: builtin/mainmenu.lua:855
msgid "Settings"
msgstr "Настройки"
#: builtin/mainmenu.lua:856
msgid "Texture Packs"
msgstr "Пакеты текстур"
#: builtin/mainmenu.lua:863
msgid "Mods"
msgstr "Моды"
#: builtin/mainmenu.lua:865
msgid "Credits"
msgstr "Благодарности"
#: builtin/mainmenu.lua:885
msgid "CLIENT" msgid "CLIENT"
msgstr "КЛИЕНТ" msgstr "КЛИЕНТ"
#: builtin/mainmenu.lua:886 #: builtin/mainmenu.lua:819
msgid "Favorites:" msgid "Favorites:"
msgstr "Избранное:" msgstr "Избранное:"
#: builtin/mainmenu.lua:887 #: builtin/mainmenu.lua:820
msgid "Address/Port" msgid "Address/Port"
msgstr "Адрес/Порт" msgstr "Адрес/Порт"
#: builtin/mainmenu.lua:888 #: builtin/mainmenu.lua:821
msgid "Name/Password" msgid "Name/Password"
msgstr "Имя/Пароль" msgstr "Имя/Пароль"
#: builtin/mainmenu.lua:891 #: builtin/mainmenu.lua:824
msgid "Public Serverlist" msgid "Public Serverlist"
msgstr "Список публичных серверов" msgstr "Список публичных серверов"
#: builtin/mainmenu.lua:896 builtin/mainmenu.lua:941 builtin/mainmenu.lua:1004 #: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: builtin/modmgr.lua:271 src/keycode.cpp:229 #: src/keycode.cpp:229
msgid "Delete" msgid "Delete"
msgstr "Удалить" msgstr "Удалить"
#: builtin/mainmenu.lua:900 #: builtin/mainmenu.lua:833
msgid "Connect" msgid "Connect"
msgstr "Подключиться" msgstr "Подключиться"
#: builtin/mainmenu.lua:942 builtin/mainmenu.lua:1005 #: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New" msgid "New"
msgstr "Новый" msgstr "Новый"
#: builtin/mainmenu.lua:943 builtin/mainmenu.lua:1006 #: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure" msgid "Configure"
msgstr "Настроить" msgstr "Настроить"
#: builtin/mainmenu.lua:944 #: builtin/mainmenu.lua:877
msgid "Start Game" msgid "Start Game"
msgstr "Начать игру" msgstr "Начать игру"
#: builtin/mainmenu.lua:945 builtin/mainmenu.lua:1008 #: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:" msgid "Select World:"
msgstr "Выберите мир:" msgstr "Выберите мир:"
#: builtin/mainmenu.lua:946 #: builtin/mainmenu.lua:879
msgid "START SERVER" msgid "START SERVER"
msgstr "СЕРВЕР" msgstr "СЕРВЕР"
#: builtin/mainmenu.lua:947 builtin/mainmenu.lua:1010 #: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode" msgid "Creative Mode"
msgstr "Режим создания" msgstr "Режим создания"
#: builtin/mainmenu.lua:949 builtin/mainmenu.lua:1012 #: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage" msgid "Enable Damage"
msgstr "Включить урон" msgstr "Включить урон"
#: builtin/mainmenu.lua:951 #: builtin/mainmenu.lua:884
msgid "Public" msgid "Public"
msgstr "Публичные" msgstr "Публичные"
#: builtin/mainmenu.lua:953 #: builtin/mainmenu.lua:886
msgid "Name" msgid "Name"
msgstr "Имя" msgstr "Имя"
#: builtin/mainmenu.lua:955 #: builtin/mainmenu.lua:888
msgid "Password" msgid "Password"
msgstr "Пароль" msgstr "Пароль"
#: builtin/mainmenu.lua:956 #: builtin/mainmenu.lua:889
msgid "Server Port" msgid "Server Port"
msgstr "Порт" msgstr "Порт"
#: builtin/mainmenu.lua:966 #: builtin/mainmenu.lua:899
msgid "SETTINGS" msgid "SETTINGS"
msgstr "НАСТРОЙКИ" msgstr "НАСТРОЙКИ"
#: builtin/mainmenu.lua:967 #: builtin/mainmenu.lua:900
msgid "Fancy trees" msgid "Fancy trees"
msgstr "Красивые деревья" msgstr "Красивые деревья"
#: builtin/mainmenu.lua:969 #: builtin/mainmenu.lua:902
msgid "Smooth Lighting" msgid "Smooth Lighting"
msgstr "Мягкое освещение" msgstr "Мягкое освещение"
#: builtin/mainmenu.lua:971 #: builtin/mainmenu.lua:904
msgid "3D Clouds" msgid "3D Clouds"
msgstr "3D облака" msgstr "3D облака"
#: builtin/mainmenu.lua:973 #: builtin/mainmenu.lua:906
msgid "Opaque Water" msgid "Opaque Water"
msgstr "Непрозрачная вода" msgstr "Непрозрачная вода"
#: builtin/mainmenu.lua:976 #: builtin/mainmenu.lua:909
msgid "Mip-Mapping" msgid "Mip-Mapping"
msgstr "Mip-текстурирование" msgstr "Mip-текстурирование"
#: builtin/mainmenu.lua:978 #: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering" msgid "Anisotropic Filtering"
msgstr "Анизотропная фильтрация" msgstr "Анизотропная фильтрация"
#: builtin/mainmenu.lua:980 #: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering" msgid "Bi-Linear Filtering"
msgstr "Билинейная фильтрация" msgstr "Билинейная фильтрация"
#: builtin/mainmenu.lua:982 #: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering" msgid "Tri-Linear Filtering"
msgstr "Трилинейная фильтрация" msgstr "Трилинейная фильтрация"
#: builtin/mainmenu.lua:985 #: builtin/mainmenu.lua:918
msgid "Shaders" msgid "Shaders"
msgstr "Шейдеры" msgstr "Шейдеры"
#: builtin/mainmenu.lua:987 #: builtin/mainmenu.lua:920
msgid "Preload item visuals" msgid "Preload item visuals"
msgstr "Предзагрузка изображений" msgstr "Предзагрузка изображений"
#: builtin/mainmenu.lua:989 #: builtin/mainmenu.lua:922
msgid "Enable Particles" msgid "Enable Particles"
msgstr "Включить частицы" msgstr "Включить частицы"
#: builtin/mainmenu.lua:991 #: builtin/mainmenu.lua:924
msgid "Finite Liquid" msgid "Finite Liquid"
msgstr "Конечные жидкости" msgstr "Конечные жидкости"
#: builtin/mainmenu.lua:994 #: builtin/mainmenu.lua:927
msgid "Change keys" msgid "Change keys"
msgstr "Смена управления" msgstr "Смена управления"
#: builtin/mainmenu.lua:1007 src/keycode.cpp:248 #: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play" msgid "Play"
msgstr "Играть" msgstr "Играть"
#: builtin/mainmenu.lua:1009 #: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER" msgid "SINGLE PLAYER"
msgstr "ОДИНОЧНАЯ ИГРА" msgstr "ОДИНОЧНАЯ ИГРА"
#: builtin/mainmenu.lua:1022 #: builtin/mainmenu.lua:955
msgid "Select texture pack:" msgid "Select texture pack:"
msgstr "Выберите пакет текстур:" msgstr "Выберите пакет текстур:"
#: builtin/mainmenu.lua:1023 #: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS" msgid "TEXTURE PACKS"
msgstr "ПАКЕТЫ ТЕКСТУР" msgstr "ПАКЕТЫ ТЕКСТУР"
#: builtin/mainmenu.lua:1043 #: builtin/mainmenu.lua:976
msgid "No information available" msgid "No information available"
msgstr "Описание отсутствует" msgstr "Описание отсутствует"
#: builtin/mainmenu.lua:1071 #: builtin/mainmenu.lua:1005
msgid "Core Developers" msgid "Core Developers"
msgstr "Основные разработчики" msgstr "Основные разработчики"
#: builtin/mainmenu.lua:1082 #: builtin/mainmenu.lua:1020
msgid "Active Contributors" msgid "Active Contributors"
msgstr "Активные контрибьюторы" msgstr "Активные контрибьюторы"
#: builtin/mainmenu.lua:1092 #: builtin/mainmenu.lua:1028
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "В отставке" msgstr "В отставке"
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr "Одиночная игра"
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr "Клиент"
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr "Сервер"
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr "Настройки"
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr "Пакеты текстур"
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr "Моды"
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr "Благодарности"
#: builtin/modmgr.lua:236 #: builtin/modmgr.lua:236
msgid "MODS" msgid "MODS"
msgstr "МОДЫ" msgstr "МОДЫ"
@ -301,78 +309,102 @@ msgstr "МОДЫ"
msgid "Installed Mods:" msgid "Installed Mods:"
msgstr "Установленные моды:" msgstr "Установленные моды:"
#: builtin/modmgr.lua:243 builtin/modstore.lua:253 #: builtin/modmgr.lua:243
msgid "Install" #, fuzzy
msgstr "Установить" msgid "Add mod:"
msgstr "<<-- Добавить мод"
#: builtin/modmgr.lua:244 #: builtin/modmgr.lua:244
msgid "Download" #, fuzzy
msgstr "Загрузить" msgid "Local install"
msgstr "Установить"
#: builtin/modmgr.lua:256 #: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
#, fuzzy
msgid "No mod description available"
msgstr "Описание отсутствует"
#: builtin/modmgr.lua:288
#, fuzzy
msgid "Mod information:"
msgstr "Описание отсутствует"
#: builtin/modmgr.lua:299
msgid "Rename" msgid "Rename"
msgstr "Переименовать" msgstr "Переименовать"
#: builtin/modmgr.lua:260 builtin/modmgr.lua:402 #: builtin/modmgr.lua:301
msgid "Depends:" msgid "Uninstall selected modpack"
msgstr "Зависит от:" msgstr ""
#: builtin/modmgr.lua:282 #: builtin/modmgr.lua:312
#, fuzzy
msgid "Uninstall selected mod"
msgstr "Удалить мод"
#: builtin/modmgr.lua:324
msgid "Rename Modpack:" msgid "Rename Modpack:"
msgstr "Переименовать модпак:" msgstr "Переименовать модпак:"
#: builtin/modmgr.lua:287 src/keycode.cpp:227 #: builtin/modmgr.lua:329 src/keycode.cpp:227
msgid "Accept" msgid "Accept"
msgstr "Принять" msgstr "Принять"
#: builtin/modmgr.lua:381 #: builtin/modmgr.lua:423
msgid "World:" msgid "World:"
msgstr "Мир:" msgstr "Мир:"
#: builtin/modmgr.lua:385 builtin/modmgr.lua:387 #: builtin/modmgr.lua:427 builtin/modmgr.lua:429
#, fuzzy
msgid "Hide Game" msgid "Hide Game"
msgstr "Игра" msgstr "Скрыть игру"
#: builtin/modmgr.lua:391 builtin/modmgr.lua:393 #: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content" msgid "Hide mp content"
msgstr "Скрыть содержимое модпака" msgstr "Скрыть содержимое модпака"
#: builtin/modmgr.lua:400 #: builtin/modmgr.lua:442
msgid "Mod:" msgid "Mod:"
msgstr "Мод:" msgstr "Мод:"
#: builtin/modmgr.lua:405 src/guiKeyChangeMenu.cpp:187 #: builtin/modmgr.lua:444
msgid "Depends:"
msgstr "Зависит от:"
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save" msgid "Save"
msgstr "Сохранить" msgstr "Сохранить"
#: builtin/modmgr.lua:422 #: builtin/modmgr.lua:464
#, fuzzy #, fuzzy
msgid "Enable MP" msgid "Enable MP"
msgstr "Включить Всё" msgstr "Включить Всё"
#: builtin/modmgr.lua:424 #: builtin/modmgr.lua:466
#, fuzzy #, fuzzy
msgid "Disable MP" msgid "Disable MP"
msgstr "Отключить Всё" msgstr "Отключить Всё"
#: builtin/modmgr.lua:428 builtin/modmgr.lua:430 #: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled" msgid "enabled"
msgstr "включено" msgstr "включено"
#: builtin/modmgr.lua:436 #: builtin/modmgr.lua:478
msgid "Enable all" msgid "Enable all"
msgstr "Включить всё" msgstr "Включить всё"
#: builtin/modmgr.lua:551 #: builtin/modmgr.lua:577
msgid "Select Mod File:" msgid "Select Mod File:"
msgstr "Выберите файл с модом:" msgstr "Выберите файл с модом:"
#: builtin/modmgr.lua:590 #: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\"" msgid "Install Mod: file: \"$1\""
msgstr "Установка мода: файл \"$1\"" msgstr "Установка мода: файл \"$1\""
#: builtin/modmgr.lua:591 #: builtin/modmgr.lua:617
msgid "" msgid ""
"\n" "\n"
"Install Mod: unsupported filetype \"$1\"" "Install Mod: unsupported filetype \"$1\""
@ -380,32 +412,32 @@ msgstr ""
"\n" "\n"
"Установка мода: неподдерживаемый тип \"$1\"" "Установка мода: неподдерживаемый тип \"$1\""
#: builtin/modmgr.lua:612 #: builtin/modmgr.lua:638
msgid "Failed to install $1 to $2" msgid "Failed to install $1 to $2"
msgstr "Ошибка при установке $1 в $2" msgstr "Ошибка при установке $1 в $2"
#: builtin/modmgr.lua:615 #: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1" msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "" msgstr ""
"Установка мода: невозможно найти подходящее имя директории для модпака $1" "Установка мода: невозможно найти подходящее имя директории для модпака $1"
#: builtin/modmgr.lua:635 #: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1" msgid "Install Mod: unable to find real modname for: $1"
msgstr "Установка мода: невозможно определить название мода для $1" msgstr "Установка мода: невозможно определить название мода для $1"
#: builtin/modmgr.lua:824 #: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\"" msgid "Modmgr: failed to delete \"$1\""
msgstr "Modmgr: невозможно удалить \"$1\"" msgstr "Modmgr: невозможно удалить \"$1\""
#: builtin/modmgr.lua:828 #: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\"" msgid "Modmgr: invalid modpath \"$1\""
msgstr "Modmgr: неправильный путь \"$1\"" msgstr "Modmgr: неправильный путь \"$1\""
#: builtin/modmgr.lua:845 #: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?" msgid "Are you sure you want to delete \"$1\"?"
msgstr "Уверены, что хотите удалить \"$1\"?" msgstr "Уверены, что хотите удалить \"$1\"?"
#: builtin/modmgr.lua:847 #: builtin/modmgr.lua:878
msgid "No of course not!" msgid "No of course not!"
msgstr "Никак нет!" msgstr "Никак нет!"
@ -421,47 +453,51 @@ msgstr "Рейтинг"
msgid "re-Install" msgid "re-Install"
msgstr "Переустановить" msgstr "Переустановить"
#: src/client.cpp:2915 #: builtin/modstore.lua:253
msgid "Install"
msgstr "Установить"
#: src/client.cpp:2917
msgid "Item textures..." msgid "Item textures..."
msgstr "Текстуры предметов..." msgstr "Текстуры предметов..."
#: src/game.cpp:939 #: src/game.cpp:940
msgid "Loading..." msgid "Loading..."
msgstr "Загрузка..." msgstr "Загрузка..."
#: src/game.cpp:999 #: src/game.cpp:1000
msgid "Creating server...." msgid "Creating server...."
msgstr "Создание сервера..." msgstr "Создание сервера..."
#: src/game.cpp:1015 #: src/game.cpp:1016
msgid "Creating client..." msgid "Creating client..."
msgstr "Создание клиента..." msgstr "Создание клиента..."
#: src/game.cpp:1024 #: src/game.cpp:1025
msgid "Resolving address..." msgid "Resolving address..."
msgstr "Получение адреса..." msgstr "Получение адреса..."
#: src/game.cpp:1121 #: src/game.cpp:1122
msgid "Connecting to server..." msgid "Connecting to server..."
msgstr "Подключение к серверу..." msgstr "Подключение к серверу..."
#: src/game.cpp:1218 #: src/game.cpp:1219
msgid "Item definitions..." msgid "Item definitions..."
msgstr "Описания предметов..." msgstr "Описания предметов..."
#: src/game.cpp:1225 #: src/game.cpp:1226
msgid "Node definitions..." msgid "Node definitions..."
msgstr "Описания нод..." msgstr "Описания нод..."
#: src/game.cpp:1232 #: src/game.cpp:1233
msgid "Media..." msgid "Media..."
msgstr "Медиафайлы..." msgstr "Медиафайлы..."
#: src/game.cpp:3405 #: src/game.cpp:3409
msgid "Shutting down stuff..." msgid "Shutting down stuff..."
msgstr "Завершение работы..." msgstr "Завершение работы..."
#: src/game.cpp:3435 #: src/game.cpp:3439
msgid "" msgid ""
"\n" "\n"
"Check debug.txt for details." "Check debug.txt for details."
@ -477,12 +513,8 @@ msgstr "Вы умерли."
msgid "Respawn" msgid "Respawn"
msgstr "Возродиться" msgstr "Возродиться"
#: src/guiFormSpecMenu.cpp:1569 #: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
msgid "Left click: Move all items, Right click: Move single item" #: src/guiTextInputMenu.cpp:139
msgstr "ЛКМ: Переместить все предметы, ПКМ: Переместить один предмет"
#: src/guiFormSpecMenu.cpp:1595 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:140
msgid "Proceed" msgid "Proceed"
msgstr "Продолжить" msgstr "Продолжить"
@ -500,99 +532,99 @@ msgstr "\"Использовать\" = вниз"
msgid "Double tap \"jump\" to toggle fly" msgid "Double tap \"jump\" to toggle fly"
msgstr "Двойной прыжок = летать" msgstr "Двойной прыжок = летать"
#: src/guiKeyChangeMenu.cpp:290 #: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use" msgid "Key already in use"
msgstr "Клавиша уже используется" msgstr "Клавиша уже используется"
#: src/guiKeyChangeMenu.cpp:372 #: src/guiKeyChangeMenu.cpp:363
msgid "press key" msgid "press key"
msgstr "нажмите клавишу" msgstr "нажмите клавишу"
#: src/guiKeyChangeMenu.cpp:400 #: src/guiKeyChangeMenu.cpp:389
msgid "Forward" msgid "Forward"
msgstr "Вперед" msgstr "Вперед"
#: src/guiKeyChangeMenu.cpp:401 #: src/guiKeyChangeMenu.cpp:390
msgid "Backward" msgid "Backward"
msgstr "Назад" msgstr "Назад"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left" msgid "Left"
msgstr "Влево" msgstr "Влево"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right" msgid "Right"
msgstr "Вправо" msgstr "Вправо"
#: src/guiKeyChangeMenu.cpp:404 #: src/guiKeyChangeMenu.cpp:393
msgid "Use" msgid "Use"
msgstr "Использовать" msgstr "Использовать"
#: src/guiKeyChangeMenu.cpp:405 #: src/guiKeyChangeMenu.cpp:394
msgid "Jump" msgid "Jump"
msgstr "Прыжок" msgstr "Прыжок"
#: src/guiKeyChangeMenu.cpp:406 #: src/guiKeyChangeMenu.cpp:395
msgid "Sneak" msgid "Sneak"
msgstr "Красться" msgstr "Красться"
#: src/guiKeyChangeMenu.cpp:407 #: src/guiKeyChangeMenu.cpp:396
msgid "Drop" msgid "Drop"
msgstr "Бросить" msgstr "Бросить"
#: src/guiKeyChangeMenu.cpp:408 #: src/guiKeyChangeMenu.cpp:397
msgid "Inventory" msgid "Inventory"
msgstr "Инвентарь" msgstr "Инвентарь"
#: src/guiKeyChangeMenu.cpp:409 #: src/guiKeyChangeMenu.cpp:398
msgid "Chat" msgid "Chat"
msgstr "Чат" msgstr "Чат"
#: src/guiKeyChangeMenu.cpp:410 #: src/guiKeyChangeMenu.cpp:399
msgid "Command" msgid "Command"
msgstr "Команда" msgstr "Команда"
#: src/guiKeyChangeMenu.cpp:411 #: src/guiKeyChangeMenu.cpp:400
msgid "Console" msgid "Console"
msgstr "Консоль" msgstr "Консоль"
#: src/guiKeyChangeMenu.cpp:412 #: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly" msgid "Toggle fly"
msgstr "Полёт" msgstr "Полёт"
#: src/guiKeyChangeMenu.cpp:413 #: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast" msgid "Toggle fast"
msgstr "Ускорение" msgstr "Ускорение"
#: src/guiKeyChangeMenu.cpp:414 #: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip" msgid "Toggle noclip"
msgstr "Включить noclip" msgstr "Включить noclip"
#: src/guiKeyChangeMenu.cpp:415 #: src/guiKeyChangeMenu.cpp:404
msgid "Range select" msgid "Range select"
msgstr "Зона видимости" msgstr "Зона видимости"
#: src/guiKeyChangeMenu.cpp:416 #: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks" msgid "Print stacks"
msgstr "Печать стеков" msgstr "Печать стеков"
#: src/guiPasswordChange.cpp:107 #: src/guiPasswordChange.cpp:106
msgid "Old Password" msgid "Old Password"
msgstr "Старый пароль" msgstr "Старый пароль"
#: src/guiPasswordChange.cpp:125 #: src/guiPasswordChange.cpp:122
msgid "New Password" msgid "New Password"
msgstr "Новый пароль" msgstr "Новый пароль"
#: src/guiPasswordChange.cpp:142 #: src/guiPasswordChange.cpp:137
msgid "Confirm Password" msgid "Confirm Password"
msgstr "Подтверждение пароля" msgstr "Подтверждение пароля"
#: src/guiPasswordChange.cpp:160 #: src/guiPasswordChange.cpp:153
msgid "Change" msgid "Change"
msgstr "Изменить" msgstr "Изменить"
#: src/guiPasswordChange.cpp:169 #: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "Пароли не совпадают!" msgstr "Пароли не совпадают!"
@ -642,11 +674,11 @@ msgstr ""
"- Колесико мыши: выбор предмета\n" "- Колесико мыши: выбор предмета\n"
"- T: чат\n" "- T: чат\n"
#: src/guiVolumeChange.cpp:108 #: src/guiVolumeChange.cpp:107
msgid "Sound Volume: " msgid "Sound Volume: "
msgstr "Громкость звука: " msgstr "Громкость звука: "
#: src/guiVolumeChange.cpp:122 #: src/guiVolumeChange.cpp:121
msgid "Exit" msgid "Exit"
msgstr "Выход" msgstr "Выход"
@ -938,77 +970,44 @@ msgstr "PA1"
msgid "Zoom" msgid "Zoom"
msgstr "Масштаб" msgstr "Масштаб"
#: src/main.cpp:1411 #: src/main.cpp:1472
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "" msgstr ""
#: src/main.cpp:1486 #: src/main.cpp:1547
msgid "Main Menu" msgid "Main Menu"
msgstr "Главное меню" msgstr "Главное меню"
#: src/main.cpp:1662 #: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do." msgid "No world selected and no address provided. Nothing to do."
msgstr "Не выбран мир и не введен адрес." msgstr "Не выбран мир и не введен адрес."
#: src/main.cpp:1670 #: src/main.cpp:1731
msgid "Could not find or load game \"" msgid "Could not find or load game \""
msgstr "Невозможно найти или загрузить игру \"" msgstr "Невозможно найти или загрузить игру \""
#: src/main.cpp:1684 #: src/main.cpp:1745
msgid "Invalid gamespec." msgid "Invalid gamespec."
msgstr "Неправильная конфигурация игры." msgstr "Неправильная конфигурация игры."
#: src/main.cpp:1729 #: src/main.cpp:1790
msgid "Connection error (timed out?)" msgid "Connection error (timed out?)"
msgstr "Ошибка соединения (таймаут?)" msgstr "Ошибка соединения (таймаут?)"
#~ msgid "is required by:" #~ msgid ""
#~ msgstr "требуется для:" #~ "Warning: Some mods are not configured yet.\n"
#~ "They will be enabled by default when you save the configuration. "
#~ msgstr ""
#~ "Предупреждение: Некоторые моды еще не настроены.\n"
#~ "Их стандартные настройки будут установлены, когда вы сохраните "
#~ "конфигурацию. "
#~ msgid "Configuration saved. " #~ msgid ""
#~ msgstr "Настройки сохранены. " #~ "Warning: Some configured mods are missing.\n"
#~ "Their setting will be removed when you save the configuration. "
#~ msgid "Warning: Configuration not consistent. " #~ msgstr ""
#~ msgstr "Предупреждение: Неверная конфигурация. " #~ "Предупреждение: Некоторые моды не найдены.\n"
#~ "Их настройки будут удалены, когда вы сохраните конфигурацию. "
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Невозможно создать мир: Имя содержит недопустимые символы"
#~ msgid "Multiplayer"
#~ msgstr "Сетевая игра"
#~ msgid "Advanced"
#~ msgstr "Дополнительно"
#~ msgid "Show Public"
#~ msgstr "Публичные"
#~ msgid "Show Favorites"
#~ msgstr "Избранные"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Оставьте адрес пустым для запуска локального сервера."
#~ msgid "Create world"
#~ msgstr "Создать мир"
#~ msgid "Address required."
#~ msgstr "Нужно ввести адрес."
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Невозможно удалить мир: Ничего не выбрано"
#~ msgid "Files to be deleted"
#~ msgstr "Следующие файлы будут удалены"
#~ msgid "Cannot create world: No games found"
#~ msgstr "Невозможно создать мир: Ни одной игры не найдено"
#~ msgid "Cannot configure world: Nothing selected"
#~ msgstr "Невозможно настроить мир: ничего не выбрано"
#~ msgid "Failed to delete all world files"
#~ msgstr "Ошибка при удалении файлов мира"
#~ msgid "" #~ msgid ""
#~ "Default Controls:\n" #~ "Default Controls:\n"
@ -1035,17 +1034,56 @@ msgstr "Ошибка соединения (таймаут?)"
#~ "- ESC: это меню\n" #~ "- ESC: это меню\n"
#~ "- T: чат\n" #~ "- T: чат\n"
#~ msgid "" #~ msgid "Failed to delete all world files"
#~ "Warning: Some configured mods are missing.\n" #~ msgstr "Ошибка при удалении файлов мира"
#~ "Their setting will be removed when you save the configuration. "
#~ msgstr ""
#~ "Предупреждение: Некоторые моды не найдены.\n"
#~ "Их настройки будут удалены, когда вы сохраните конфигурацию. "
#~ msgid "" #~ msgid "Cannot configure world: Nothing selected"
#~ "Warning: Some mods are not configured yet.\n" #~ msgstr "Невозможно настроить мир: ничего не выбрано"
#~ "They will be enabled by default when you save the configuration. "
#~ msgstr "" #~ msgid "Cannot create world: No games found"
#~ "Предупреждение: Некоторые моды еще не настроены.\n" #~ msgstr "Невозможно создать мир: Ни одной игры не найдено"
#~ "Их стандартные настройки будут установлены, когда вы сохраните "
#~ "конфигурацию. " #~ msgid "Files to be deleted"
#~ msgstr "Следующие файлы будут удалены"
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Невозможно удалить мир: Ничего не выбрано"
#~ msgid "Address required."
#~ msgstr "Нужно ввести адрес."
#~ msgid "Create world"
#~ msgstr "Создать мир"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Оставьте адрес пустым для запуска локального сервера."
#~ msgid "Show Favorites"
#~ msgstr "Избранные"
#~ msgid "Show Public"
#~ msgstr "Публичные"
#~ msgid "Advanced"
#~ msgstr "Дополнительно"
#~ msgid "Multiplayer"
#~ msgstr "Сетевая игра"
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Невозможно создать мир: Имя содержит недопустимые символы"
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "Предупреждение: Неверная конфигурация. "
#~ msgid "Configuration saved. "
#~ msgstr "Настройки сохранены. "
#~ msgid "is required by:"
#~ msgstr "требуется для:"
#~ msgid "Left click: Move all items, Right click: Move single item"
#~ msgstr "ЛКМ: Переместить все предметы, ПКМ: Переместить один предмет"
#~ msgid "Download"
#~ msgstr "Загрузить"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: minetest\n" "Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-07 22:01+0400\n" "POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: 2013-06-27 01:22+0200\n" "PO-Revision-Date: 2013-06-27 01:22+0200\n"
"Last-Translator: Vladimir a <c-vld@ya.ru>\n" "Last-Translator: Vladimir a <c-vld@ya.ru>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -24,12 +24,12 @@ msgstr ""
msgid "Game Name" msgid "Game Name"
msgstr "Гра" msgstr "Гра"
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:301 #: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create" msgid "Create"
msgstr "Створити" msgstr "Створити"
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:302 builtin/modmgr.lua:289 #: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:406 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223 #: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel" msgid "Cancel"
msgstr "Відміна" msgstr "Відміна"
@ -41,36 +41,36 @@ msgstr ""
msgid "GAMES" msgid "GAMES"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:859 #: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
#, fuzzy #, fuzzy
msgid "Games" msgid "Games"
msgstr "Гра" msgstr "Гра"
#: builtin/gamemgr.lua:233 #: builtin/gamemgr.lua:234
msgid "Mods:" msgid "Mods:"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:234 #: builtin/gamemgr.lua:235
msgid "edit game" msgid "edit game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:237 #: builtin/gamemgr.lua:238
msgid "new game" msgid "new game"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:247 #: builtin/gamemgr.lua:248
msgid "EDIT GAME" msgid "EDIT GAME"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:267 #: builtin/gamemgr.lua:269
msgid "Remove selected mod" msgid "Remove selected mod"
msgstr "" msgstr ""
#: builtin/gamemgr.lua:270 #: builtin/gamemgr.lua:272
msgid "<<-- Add mod" msgid "<<-- Add mod"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:159 #: builtin/mainmenu.lua:158
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
@ -78,230 +78,238 @@ msgstr ""
msgid "World name" msgid "World name"
msgstr "Назва Світу" msgstr "Назва Світу"
#: builtin/mainmenu.lua:298 #: builtin/mainmenu.lua:300
msgid "Seed"
msgstr ""
#: builtin/mainmenu.lua:303
msgid "Mapgen" msgid "Mapgen"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:300 #: builtin/mainmenu.lua:306
msgid "Game" msgid "Game"
msgstr "Гра" msgstr "Гра"
#: builtin/mainmenu.lua:314 #: builtin/mainmenu.lua:319
#, fuzzy #, fuzzy
msgid "Delete World \"$1\"?" msgid "Delete World \"$1\"?"
msgstr "Видалити світ" msgstr "Видалити світ"
#: builtin/mainmenu.lua:315 builtin/modmgr.lua:846 #: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes" msgid "Yes"
msgstr "Так" msgstr "Так"
#: builtin/mainmenu.lua:316 #: builtin/mainmenu.lua:321
msgid "No" msgid "No"
msgstr "Ні" msgstr "Ні"
#: builtin/mainmenu.lua:384 #: builtin/mainmenu.lua:364
#, fuzzy #, fuzzy
msgid "A world named \"$1\" already exists" msgid "A world named \"$1\" already exists"
msgstr "Неможливо створити світ: Світ з таким ім'ям вже існує" msgstr "Неможливо створити світ: Світ з таким ім'ям вже існує"
#: builtin/mainmenu.lua:399 #: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected" msgid "No worldname given or no game selected"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:852 #: builtin/mainmenu.lua:650
msgid "Singleplayer" msgid "To enable shaders the OpenGL driver needs to be used."
msgstr "Одиночна гра"
#: builtin/mainmenu.lua:853
msgid "Client"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:854 #: builtin/mainmenu.lua:818
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:855
msgid "Settings"
msgstr "Налаштування"
#: builtin/mainmenu.lua:856
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:863
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:865
msgid "Credits"
msgstr "Подяка"
#: builtin/mainmenu.lua:885
msgid "CLIENT" msgid "CLIENT"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:886 #: builtin/mainmenu.lua:819
msgid "Favorites:" msgid "Favorites:"
msgstr "Улюблені:" msgstr "Улюблені:"
#: builtin/mainmenu.lua:887 #: builtin/mainmenu.lua:820
msgid "Address/Port" msgid "Address/Port"
msgstr "Адреса/Порт" msgstr "Адреса/Порт"
#: builtin/mainmenu.lua:888 #: builtin/mainmenu.lua:821
msgid "Name/Password" msgid "Name/Password"
msgstr "Ім'я/Пароль" msgstr "Ім'я/Пароль"
#: builtin/mainmenu.lua:891 #: builtin/mainmenu.lua:824
#, fuzzy #, fuzzy
msgid "Public Serverlist" msgid "Public Serverlist"
msgstr "Список публічних серверів:" msgstr "Список публічних серверів:"
#: builtin/mainmenu.lua:896 builtin/mainmenu.lua:941 builtin/mainmenu.lua:1004 #: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: builtin/modmgr.lua:271 src/keycode.cpp:229 #: src/keycode.cpp:229
msgid "Delete" msgid "Delete"
msgstr "Видалити" msgstr "Видалити"
#: builtin/mainmenu.lua:900 #: builtin/mainmenu.lua:833
msgid "Connect" msgid "Connect"
msgstr "Підключитися" msgstr "Підключитися"
#: builtin/mainmenu.lua:942 builtin/mainmenu.lua:1005 #: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New" msgid "New"
msgstr "Новий" msgstr "Новий"
#: builtin/mainmenu.lua:943 builtin/mainmenu.lua:1006 #: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure" msgid "Configure"
msgstr "Налаштувати" msgstr "Налаштувати"
#: builtin/mainmenu.lua:944 #: builtin/mainmenu.lua:877
#, fuzzy #, fuzzy
msgid "Start Game" msgid "Start Game"
msgstr "Почати гру / Підключитися" msgstr "Почати гру / Підключитися"
#: builtin/mainmenu.lua:945 builtin/mainmenu.lua:1008 #: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:" msgid "Select World:"
msgstr "Виберіть світ:" msgstr "Виберіть світ:"
#: builtin/mainmenu.lua:946 #: builtin/mainmenu.lua:879
msgid "START SERVER" msgid "START SERVER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:947 builtin/mainmenu.lua:1010 #: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode" msgid "Creative Mode"
msgstr "Режим Створення" msgstr "Режим Створення"
#: builtin/mainmenu.lua:949 builtin/mainmenu.lua:1012 #: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage" msgid "Enable Damage"
msgstr "Ввімкнути урон" msgstr "Ввімкнути урон"
#: builtin/mainmenu.lua:951 #: builtin/mainmenu.lua:884
msgid "Public" msgid "Public"
msgstr "Публичний" msgstr "Публичний"
#: builtin/mainmenu.lua:953 #: builtin/mainmenu.lua:886
msgid "Name" msgid "Name"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:955 #: builtin/mainmenu.lua:888
#, fuzzy #, fuzzy
msgid "Password" msgid "Password"
msgstr "Старий Пароль" msgstr "Старий Пароль"
#: builtin/mainmenu.lua:956 #: builtin/mainmenu.lua:889
msgid "Server Port" msgid "Server Port"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:966 #: builtin/mainmenu.lua:899
msgid "SETTINGS" msgid "SETTINGS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:967 #: builtin/mainmenu.lua:900
msgid "Fancy trees" msgid "Fancy trees"
msgstr "Гарні дерева" msgstr "Гарні дерева"
#: builtin/mainmenu.lua:969 #: builtin/mainmenu.lua:902
msgid "Smooth Lighting" msgid "Smooth Lighting"
msgstr "Рівне освітлення" msgstr "Рівне освітлення"
#: builtin/mainmenu.lua:971 #: builtin/mainmenu.lua:904
msgid "3D Clouds" msgid "3D Clouds"
msgstr "3D Хмари" msgstr "3D Хмари"
#: builtin/mainmenu.lua:973 #: builtin/mainmenu.lua:906
#, fuzzy #, fuzzy
msgid "Opaque Water" msgid "Opaque Water"
msgstr "Непрозора вода" msgstr "Непрозора вода"
#: builtin/mainmenu.lua:976 #: builtin/mainmenu.lua:909
msgid "Mip-Mapping" msgid "Mip-Mapping"
msgstr "MIP-текстурування" msgstr "MIP-текстурування"
#: builtin/mainmenu.lua:978 #: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering" msgid "Anisotropic Filtering"
msgstr "Анізотропна фільтрація" msgstr "Анізотропна фільтрація"
#: builtin/mainmenu.lua:980 #: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering" msgid "Bi-Linear Filtering"
msgstr "Білінійна фільтрація" msgstr "Білінійна фільтрація"
#: builtin/mainmenu.lua:982 #: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering" msgid "Tri-Linear Filtering"
msgstr "Трилінійна фільтрація" msgstr "Трилінійна фільтрація"
#: builtin/mainmenu.lua:985 #: builtin/mainmenu.lua:918
msgid "Shaders" msgid "Shaders"
msgstr "Шейдери" msgstr "Шейдери"
#: builtin/mainmenu.lua:987 #: builtin/mainmenu.lua:920
msgid "Preload item visuals" msgid "Preload item visuals"
msgstr "Попереднє завантаження зображень" msgstr "Попереднє завантаження зображень"
#: builtin/mainmenu.lua:989 #: builtin/mainmenu.lua:922
msgid "Enable Particles" msgid "Enable Particles"
msgstr "Ввімкнути частки" msgstr "Ввімкнути частки"
#: builtin/mainmenu.lua:991 #: builtin/mainmenu.lua:924
#, fuzzy #, fuzzy
msgid "Finite Liquid" msgid "Finite Liquid"
msgstr "Кінцеві рідини" msgstr "Кінцеві рідини"
#: builtin/mainmenu.lua:994 #: builtin/mainmenu.lua:927
msgid "Change keys" msgid "Change keys"
msgstr "Змінити клавіши" msgstr "Змінити клавіши"
#: builtin/mainmenu.lua:1007 src/keycode.cpp:248 #: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play" msgid "Play"
msgstr "Грати" msgstr "Грати"
#: builtin/mainmenu.lua:1009 #: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER" msgid "SINGLE PLAYER"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1022 #: builtin/mainmenu.lua:955
msgid "Select texture pack:" msgid "Select texture pack:"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1023 #: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS" msgid "TEXTURE PACKS"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1043 #: builtin/mainmenu.lua:976
msgid "No information available" msgid "No information available"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1071 #: builtin/mainmenu.lua:1005
msgid "Core Developers" msgid "Core Developers"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1082 #: builtin/mainmenu.lua:1020
msgid "Active Contributors" msgid "Active Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1092 #: builtin/mainmenu.lua:1028
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr "Одиночна гра"
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr ""
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr ""
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr "Налаштування"
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr ""
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr ""
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr "Подяка"
#: builtin/modmgr.lua:236 #: builtin/modmgr.lua:236
msgid "MODS" msgid "MODS"
msgstr "" msgstr ""
@ -310,115 +318,134 @@ msgstr ""
msgid "Installed Mods:" msgid "Installed Mods:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:243 builtin/modstore.lua:253 #: builtin/modmgr.lua:243
msgid "Install" msgid "Add mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:244 #: builtin/modmgr.lua:244
#, fuzzy msgid "Local install"
msgid "Download" msgstr ""
msgstr "Вниз"
#: builtin/modmgr.lua:256 #: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
msgid "No mod description available"
msgstr ""
#: builtin/modmgr.lua:288
msgid "Mod information:"
msgstr ""
#: builtin/modmgr.lua:299
msgid "Rename" msgid "Rename"
msgstr "" msgstr ""
#: builtin/modmgr.lua:260 builtin/modmgr.lua:402 #: builtin/modmgr.lua:301
#, fuzzy msgid "Uninstall selected modpack"
msgid "Depends:" msgstr ""
msgstr "залежить від:"
#: builtin/modmgr.lua:282 #: builtin/modmgr.lua:312
msgid "Uninstall selected mod"
msgstr ""
#: builtin/modmgr.lua:324
msgid "Rename Modpack:" msgid "Rename Modpack:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:287 src/keycode.cpp:227 #: builtin/modmgr.lua:329 src/keycode.cpp:227
#, fuzzy #, fuzzy
msgid "Accept" msgid "Accept"
msgstr "Підтвердити" msgstr "Підтвердити"
#: builtin/modmgr.lua:381 #: builtin/modmgr.lua:423
#, fuzzy #, fuzzy
msgid "World:" msgid "World:"
msgstr "Виберіть світ:" msgstr "Виберіть світ:"
#: builtin/modmgr.lua:385 builtin/modmgr.lua:387 #: builtin/modmgr.lua:427 builtin/modmgr.lua:429
#, fuzzy #, fuzzy
msgid "Hide Game" msgid "Hide Game"
msgstr "Гра" msgstr "Гра"
#: builtin/modmgr.lua:391 builtin/modmgr.lua:393 #: builtin/modmgr.lua:433 builtin/modmgr.lua:435
msgid "Hide mp content" msgid "Hide mp content"
msgstr "" msgstr ""
#: builtin/modmgr.lua:400 #: builtin/modmgr.lua:442
msgid "Mod:" msgid "Mod:"
msgstr "" msgstr ""
#: builtin/modmgr.lua:405 src/guiKeyChangeMenu.cpp:187 #: builtin/modmgr.lua:444
#, fuzzy
msgid "Depends:"
msgstr "залежить від:"
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save" msgid "Save"
msgstr "Зберегти" msgstr "Зберегти"
#: builtin/modmgr.lua:422 #: builtin/modmgr.lua:464
#, fuzzy #, fuzzy
msgid "Enable MP" msgid "Enable MP"
msgstr "Увімкнути Все" msgstr "Увімкнути Все"
#: builtin/modmgr.lua:424 #: builtin/modmgr.lua:466
#, fuzzy #, fuzzy
msgid "Disable MP" msgid "Disable MP"
msgstr "Вимкнути Усе" msgstr "Вимкнути Усе"
#: builtin/modmgr.lua:428 builtin/modmgr.lua:430 #: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled" msgid "enabled"
msgstr "Увімкнено" msgstr "Увімкнено"
#: builtin/modmgr.lua:436 #: builtin/modmgr.lua:478
#, fuzzy #, fuzzy
msgid "Enable all" msgid "Enable all"
msgstr "Увімкнути Все" msgstr "Увімкнути Все"
#: builtin/modmgr.lua:551 #: builtin/modmgr.lua:577
#, fuzzy #, fuzzy
msgid "Select Mod File:" msgid "Select Mod File:"
msgstr "Виберіть світ:" msgstr "Виберіть світ:"
#: builtin/modmgr.lua:590 #: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\"" msgid "Install Mod: file: \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:591 #: builtin/modmgr.lua:617
msgid "" msgid ""
"\n" "\n"
"Install Mod: unsupported filetype \"$1\"" "Install Mod: unsupported filetype \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:612 #: builtin/modmgr.lua:638
#, fuzzy #, fuzzy
msgid "Failed to install $1 to $2" msgid "Failed to install $1 to $2"
msgstr "Не вдалося ініціалізувати світ" msgstr "Не вдалося ініціалізувати світ"
#: builtin/modmgr.lua:615 #: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1" msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:635 #: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1" msgid "Install Mod: unable to find real modname for: $1"
msgstr "" msgstr ""
#: builtin/modmgr.lua:824 #: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\"" msgid "Modmgr: failed to delete \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:828 #: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\"" msgid "Modmgr: invalid modpath \"$1\""
msgstr "" msgstr ""
#: builtin/modmgr.lua:845 #: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?" msgid "Are you sure you want to delete \"$1\"?"
msgstr "" msgstr ""
#: builtin/modmgr.lua:847 #: builtin/modmgr.lua:878
msgid "No of course not!" msgid "No of course not!"
msgstr "" msgstr ""
@ -434,47 +461,51 @@ msgstr ""
msgid "re-Install" msgid "re-Install"
msgstr "" msgstr ""
#: src/client.cpp:2915 #: builtin/modstore.lua:253
msgid "Install"
msgstr ""
#: src/client.cpp:2917
msgid "Item textures..." msgid "Item textures..."
msgstr "Текстура предметів..." msgstr "Текстура предметів..."
#: src/game.cpp:939 #: src/game.cpp:940
msgid "Loading..." msgid "Loading..."
msgstr "Завантаження..." msgstr "Завантаження..."
#: src/game.cpp:999 #: src/game.cpp:1000
msgid "Creating server...." msgid "Creating server...."
msgstr "Створення сервера..." msgstr "Створення сервера..."
#: src/game.cpp:1015 #: src/game.cpp:1016
msgid "Creating client..." msgid "Creating client..."
msgstr "Створення клієнта..." msgstr "Створення клієнта..."
#: src/game.cpp:1024 #: src/game.cpp:1025
msgid "Resolving address..." msgid "Resolving address..."
msgstr "Отримання адреси..." msgstr "Отримання адреси..."
#: src/game.cpp:1121 #: src/game.cpp:1122
msgid "Connecting to server..." msgid "Connecting to server..."
msgstr "Підключення до сервера..." msgstr "Підключення до сервера..."
#: src/game.cpp:1218 #: src/game.cpp:1219
msgid "Item definitions..." msgid "Item definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1225 #: src/game.cpp:1226
msgid "Node definitions..." msgid "Node definitions..."
msgstr "" msgstr ""
#: src/game.cpp:1232 #: src/game.cpp:1233
msgid "Media..." msgid "Media..."
msgstr "" msgstr ""
#: src/game.cpp:3405 #: src/game.cpp:3409
msgid "Shutting down stuff..." msgid "Shutting down stuff..."
msgstr "" msgstr ""
#: src/game.cpp:3435 #: src/game.cpp:3439
msgid "" msgid ""
"\n" "\n"
"Check debug.txt for details." "Check debug.txt for details."
@ -490,14 +521,8 @@ msgstr "Ви загинули."
msgid "Respawn" msgid "Respawn"
msgstr "Народитися" msgstr "Народитися"
#: src/guiFormSpecMenu.cpp:1569 #: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
msgid "Left click: Move all items, Right click: Move single item" #: src/guiTextInputMenu.cpp:139
msgstr ""
"Ліва кнопка миші: Перемістити усі предмети, Права кнопка миші: Перемістити "
"один предмет"
#: src/guiFormSpecMenu.cpp:1595 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:140
msgid "Proceed" msgid "Proceed"
msgstr "Далі" msgstr "Далі"
@ -516,99 +541,99 @@ msgstr "\"Використовувати\" = підніматися в гору"
msgid "Double tap \"jump\" to toggle fly" msgid "Double tap \"jump\" to toggle fly"
msgstr "Подвійний \"Стрибок\" щоб полетіти" msgstr "Подвійний \"Стрибок\" щоб полетіти"
#: src/guiKeyChangeMenu.cpp:290 #: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use" msgid "Key already in use"
msgstr "Клавіша вже використовується" msgstr "Клавіша вже використовується"
#: src/guiKeyChangeMenu.cpp:372 #: src/guiKeyChangeMenu.cpp:363
msgid "press key" msgid "press key"
msgstr "Натисніть клавішу" msgstr "Натисніть клавішу"
#: src/guiKeyChangeMenu.cpp:400 #: src/guiKeyChangeMenu.cpp:389
msgid "Forward" msgid "Forward"
msgstr "Уперед" msgstr "Уперед"
#: src/guiKeyChangeMenu.cpp:401 #: src/guiKeyChangeMenu.cpp:390
msgid "Backward" msgid "Backward"
msgstr "Назад" msgstr "Назад"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left" msgid "Left"
msgstr "Ліворуч" msgstr "Ліворуч"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right" msgid "Right"
msgstr "Праворуч" msgstr "Праворуч"
#: src/guiKeyChangeMenu.cpp:404 #: src/guiKeyChangeMenu.cpp:393
msgid "Use" msgid "Use"
msgstr "Використовувати" msgstr "Використовувати"
#: src/guiKeyChangeMenu.cpp:405 #: src/guiKeyChangeMenu.cpp:394
msgid "Jump" msgid "Jump"
msgstr "Стрибок" msgstr "Стрибок"
#: src/guiKeyChangeMenu.cpp:406 #: src/guiKeyChangeMenu.cpp:395
msgid "Sneak" msgid "Sneak"
msgstr "Крастися" msgstr "Крастися"
#: src/guiKeyChangeMenu.cpp:407 #: src/guiKeyChangeMenu.cpp:396
msgid "Drop" msgid "Drop"
msgstr "Викинути" msgstr "Викинути"
#: src/guiKeyChangeMenu.cpp:408 #: src/guiKeyChangeMenu.cpp:397
msgid "Inventory" msgid "Inventory"
msgstr "Інвентар" msgstr "Інвентар"
#: src/guiKeyChangeMenu.cpp:409 #: src/guiKeyChangeMenu.cpp:398
msgid "Chat" msgid "Chat"
msgstr "Чат" msgstr "Чат"
#: src/guiKeyChangeMenu.cpp:410 #: src/guiKeyChangeMenu.cpp:399
msgid "Command" msgid "Command"
msgstr "Комманда" msgstr "Комманда"
#: src/guiKeyChangeMenu.cpp:411 #: src/guiKeyChangeMenu.cpp:400
msgid "Console" msgid "Console"
msgstr "Консоль" msgstr "Консоль"
#: src/guiKeyChangeMenu.cpp:412 #: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly" msgid "Toggle fly"
msgstr "Переключити режим польоту" msgstr "Переключити режим польоту"
#: src/guiKeyChangeMenu.cpp:413 #: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast" msgid "Toggle fast"
msgstr "Переключити швидкий режим" msgstr "Переключити швидкий режим"
#: src/guiKeyChangeMenu.cpp:414 #: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip" msgid "Toggle noclip"
msgstr "Переключити режим проходження скрізь стін" msgstr "Переключити режим проходження скрізь стін"
#: src/guiKeyChangeMenu.cpp:415 #: src/guiKeyChangeMenu.cpp:404
msgid "Range select" msgid "Range select"
msgstr "Вибір діапазону" msgstr "Вибір діапазону"
#: src/guiKeyChangeMenu.cpp:416 #: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks" msgid "Print stacks"
msgstr "Надрукувати стек" msgstr "Надрукувати стек"
#: src/guiPasswordChange.cpp:107 #: src/guiPasswordChange.cpp:106
msgid "Old Password" msgid "Old Password"
msgstr "Старий Пароль" msgstr "Старий Пароль"
#: src/guiPasswordChange.cpp:125 #: src/guiPasswordChange.cpp:122
msgid "New Password" msgid "New Password"
msgstr "Новий Пароль" msgstr "Новий Пароль"
#: src/guiPasswordChange.cpp:142 #: src/guiPasswordChange.cpp:137
msgid "Confirm Password" msgid "Confirm Password"
msgstr "Підтвердження нового пароля" msgstr "Підтвердження нового пароля"
#: src/guiPasswordChange.cpp:160 #: src/guiPasswordChange.cpp:153
msgid "Change" msgid "Change"
msgstr "Змінити" msgstr "Змінити"
#: src/guiPasswordChange.cpp:169 #: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "Паролі не збігаються!" msgstr "Паролі не збігаються!"
@ -659,11 +684,11 @@ msgstr ""
"- Колесо миші: вибір предмета\n" "- Колесо миші: вибір предмета\n"
"- T: чат\n" "- T: чат\n"
#: src/guiVolumeChange.cpp:108 #: src/guiVolumeChange.cpp:107
msgid "Sound Volume: " msgid "Sound Volume: "
msgstr "Гучність Звуку: " msgstr "Гучність Звуку: "
#: src/guiVolumeChange.cpp:122 #: src/guiVolumeChange.cpp:121
msgid "Exit" msgid "Exit"
msgstr "Вихід" msgstr "Вихід"
@ -972,74 +997,83 @@ msgstr "PA1"
msgid "Zoom" msgid "Zoom"
msgstr "Збільшити" msgstr "Збільшити"
#: src/main.cpp:1411 #: src/main.cpp:1472
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "" msgstr ""
#: src/main.cpp:1486 #: src/main.cpp:1547
msgid "Main Menu" msgid "Main Menu"
msgstr "Головне Меню" msgstr "Головне Меню"
#: src/main.cpp:1662 #: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do." msgid "No world selected and no address provided. Nothing to do."
msgstr "Жоден світ не вибрано та не надано адреси. Нічого не робити." msgstr "Жоден світ не вибрано та не надано адреси. Нічого не робити."
#: src/main.cpp:1670 #: src/main.cpp:1731
msgid "Could not find or load game \"" msgid "Could not find or load game \""
msgstr "Неможливо знайти, або завантажити гру \"" msgstr "Неможливо знайти, або завантажити гру \""
#: src/main.cpp:1684 #: src/main.cpp:1745
msgid "Invalid gamespec." msgid "Invalid gamespec."
msgstr "Помилкова конфігурація гри." msgstr "Помилкова конфігурація гри."
#: src/main.cpp:1729 #: src/main.cpp:1790
msgid "Connection error (timed out?)" msgid "Connection error (timed out?)"
msgstr "Помилка з'єднання (час вийшов?)" msgstr "Помилка з'єднання (час вийшов?)"
#~ msgid "is required by:" #~ msgid "Failed to delete all world files"
#~ msgstr "необхідний для:" #~ msgstr "Помилка при видаленні файлів світу"
#~ msgid "Configuration saved. "
#~ msgstr "Налаштування Збережено. "
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "Попередження: Помилкова конфігурація. "
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Неможливо створити світ: Ім'я містить недопустимі символи"
#~ msgid "Multiplayer"
#~ msgstr "Мережева гра"
#~ msgid "Advanced"
#~ msgstr "Додатково"
#~ msgid "Show Public"
#~ msgstr "Показати Публічні"
#~ msgid "Show Favorites"
#~ msgstr "Показати Улюблені"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Залишіть адресу незаповненою для створення локального серверу."
#~ msgid "Create world"
#~ msgstr "Створити світ"
#~ msgid "Address required."
#~ msgstr "Адреса необхідна."
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Неможливо видалити світ: Нічого не вибрано"
#~ msgid "Files to be deleted"
#~ msgstr "Файлів, що підлягають видаленню"
#~ msgid "Cannot create world: No games found"
#~ msgstr "Неможливо створити світ: Не знайдено жодної гри"
#~ msgid "Cannot configure world: Nothing selected" #~ msgid "Cannot configure world: Nothing selected"
#~ msgstr "Неможливо налаштувати світ: Нічого не вибрано" #~ msgstr "Неможливо налаштувати світ: Нічого не вибрано"
#~ msgid "Failed to delete all world files" #~ msgid "Cannot create world: No games found"
#~ msgstr "Помилка при видаленні файлів світу" #~ msgstr "Неможливо створити світ: Не знайдено жодної гри"
#~ msgid "Files to be deleted"
#~ msgstr "Файлів, що підлягають видаленню"
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "Неможливо видалити світ: Нічого не вибрано"
#~ msgid "Address required."
#~ msgstr "Адреса необхідна."
#~ msgid "Create world"
#~ msgstr "Створити світ"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "Залишіть адресу незаповненою для створення локального серверу."
#~ msgid "Show Favorites"
#~ msgstr "Показати Улюблені"
#~ msgid "Show Public"
#~ msgstr "Показати Публічні"
#~ msgid "Advanced"
#~ msgstr "Додатково"
#~ msgid "Multiplayer"
#~ msgstr "Мережева гра"
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "Неможливо створити світ: Ім'я містить недопустимі символи"
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "Попередження: Помилкова конфігурація. "
#~ msgid "Configuration saved. "
#~ msgstr "Налаштування Збережено. "
#~ msgid "is required by:"
#~ msgstr "необхідний для:"
#~ msgid "Left click: Move all items, Right click: Move single item"
#~ msgstr ""
#~ "Ліва кнопка миші: Перемістити усі предмети, Права кнопка миші: "
#~ "Перемістити один предмет"
#, fuzzy
#~ msgid "Download"
#~ msgstr "Вниз"

View File

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: minetest\n" "Project-Id-Version: minetest\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-09-07 22:01+0400\n" "POT-Creation-Date: 2013-11-23 17:37+0100\n"
"PO-Revision-Date: 2013-09-07 16:20+0200\n" "PO-Revision-Date: 2013-09-14 12:52+0200\n"
"Last-Translator: Shen Zheyu <arsdragonfly@gmail.com>\n" "Last-Translator: Shen Zheyu <arsdragonfly@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: zh_CN\n" "Language: zh_CN\n"
@ -22,12 +22,12 @@ msgstr ""
msgid "Game Name" msgid "Game Name"
msgstr "游戏名" msgstr "游戏名"
#: builtin/gamemgr.lua:25 builtin/mainmenu.lua:301 #: builtin/gamemgr.lua:25 builtin/mainmenu.lua:310
msgid "Create" msgid "Create"
msgstr "创建" msgstr "创建"
#: builtin/gamemgr.lua:26 builtin/mainmenu.lua:302 builtin/modmgr.lua:289 #: builtin/gamemgr.lua:26 builtin/mainmenu.lua:311 builtin/modmgr.lua:331
#: builtin/modmgr.lua:406 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223 #: builtin/modmgr.lua:448 src/guiKeyChangeMenu.cpp:195 src/keycode.cpp:223
msgid "Cancel" msgid "Cancel"
msgstr "取消" msgstr "取消"
@ -39,35 +39,35 @@ msgstr "Gamemgr: 无法复制MOD“$1”到游戏“$2”"
msgid "GAMES" msgid "GAMES"
msgstr "游戏" msgstr "游戏"
#: builtin/gamemgr.lua:217 builtin/mainmenu.lua:859 #: builtin/gamemgr.lua:217 builtin/mainmenu.lua:1076
msgid "Games" msgid "Games"
msgstr "游戏" msgstr "游戏"
#: builtin/gamemgr.lua:233 #: builtin/gamemgr.lua:234
msgid "Mods:" msgid "Mods:"
msgstr "MODS" msgstr "MODS"
#: builtin/gamemgr.lua:234 #: builtin/gamemgr.lua:235
msgid "edit game" msgid "edit game"
msgstr "编辑游戏" msgstr "编辑游戏"
#: builtin/gamemgr.lua:237 #: builtin/gamemgr.lua:238
msgid "new game" msgid "new game"
msgstr "新建游戏" msgstr "新建游戏"
#: builtin/gamemgr.lua:247 #: builtin/gamemgr.lua:248
msgid "EDIT GAME" msgid "EDIT GAME"
msgstr "编辑游戏" msgstr "编辑游戏"
#: builtin/gamemgr.lua:267 #: builtin/gamemgr.lua:269
msgid "Remove selected mod" msgid "Remove selected mod"
msgstr "删除选中MOD" msgstr "删除选中MOD"
#: builtin/gamemgr.lua:270 #: builtin/gamemgr.lua:272
msgid "<<-- Add mod" msgid "<<-- Add mod"
msgstr "<<-- 添加MOD" msgstr "<<-- 添加MOD"
#: builtin/mainmenu.lua:159 #: builtin/mainmenu.lua:158
msgid "Ok" msgid "Ok"
msgstr "OK" msgstr "OK"
@ -75,224 +75,231 @@ msgstr "OK"
msgid "World name" msgid "World name"
msgstr "世界名称" msgstr "世界名称"
#: builtin/mainmenu.lua:298 #: builtin/mainmenu.lua:300
msgid "Mapgen" msgid "Seed"
msgstr "" msgstr ""
#: builtin/mainmenu.lua:300 #: builtin/mainmenu.lua:303
msgid "Mapgen"
msgstr "地图生成器"
#: builtin/mainmenu.lua:306
msgid "Game" msgid "Game"
msgstr "游戏" msgstr "游戏"
#: builtin/mainmenu.lua:314 #: builtin/mainmenu.lua:319
msgid "Delete World \"$1\"?" msgid "Delete World \"$1\"?"
msgstr "删除世界“$1”?" msgstr "删除世界“$1”?"
#: builtin/mainmenu.lua:315 builtin/modmgr.lua:846 #: builtin/mainmenu.lua:320 builtin/modmgr.lua:877
msgid "Yes" msgid "Yes"
msgstr "是" msgstr "是"
#: builtin/mainmenu.lua:316 #: builtin/mainmenu.lua:321
msgid "No" msgid "No"
msgstr "否" msgstr "否"
#: builtin/mainmenu.lua:384 #: builtin/mainmenu.lua:364
msgid "A world named \"$1\" already exists" msgid "A world named \"$1\" already exists"
msgstr "名为 \"$1\" 的世界已经存在" msgstr "名为 \"$1\" 的世界已经存在"
#: builtin/mainmenu.lua:399 #: builtin/mainmenu.lua:381
msgid "No worldname given or no game selected" msgid "No worldname given or no game selected"
msgstr "未给定世界名或未选择游戏" msgstr "未给定世界名或未选择游戏"
#: builtin/mainmenu.lua:852 #: builtin/mainmenu.lua:650
msgid "Singleplayer" msgid "To enable shaders the OpenGL driver needs to be used."
msgstr "单人游戏" msgstr ""
#: builtin/mainmenu.lua:853 #: builtin/mainmenu.lua:818
msgid "Client"
msgstr "客户端"
#: builtin/mainmenu.lua:854
msgid "Server"
msgstr "服务器"
#: builtin/mainmenu.lua:855
msgid "Settings"
msgstr "设置"
#: builtin/mainmenu.lua:856
msgid "Texture Packs"
msgstr "材质包"
#: builtin/mainmenu.lua:863
msgid "Mods"
msgstr "MODS"
#: builtin/mainmenu.lua:865
msgid "Credits"
msgstr "关于"
#: builtin/mainmenu.lua:885
msgid "CLIENT" msgid "CLIENT"
msgstr "客户端" msgstr "客户端"
#: builtin/mainmenu.lua:886 #: builtin/mainmenu.lua:819
msgid "Favorites:" msgid "Favorites:"
msgstr "最爱的服务器:" msgstr "最爱的服务器:"
#: builtin/mainmenu.lua:887 #: builtin/mainmenu.lua:820
msgid "Address/Port" msgid "Address/Port"
msgstr "地址/端口" msgstr "地址/端口"
#: builtin/mainmenu.lua:888 #: builtin/mainmenu.lua:821
msgid "Name/Password" msgid "Name/Password"
msgstr "名字/密码" msgstr "名字/密码"
#: builtin/mainmenu.lua:891 #: builtin/mainmenu.lua:824
msgid "Public Serverlist" msgid "Public Serverlist"
msgstr "公共服务器列表" msgstr "公共服务器列表"
#: builtin/mainmenu.lua:896 builtin/mainmenu.lua:941 builtin/mainmenu.lua:1004 #: builtin/mainmenu.lua:829 builtin/mainmenu.lua:874 builtin/mainmenu.lua:937
#: builtin/modmgr.lua:271 src/keycode.cpp:229 #: src/keycode.cpp:229
msgid "Delete" msgid "Delete"
msgstr "删除" msgstr "删除"
#: builtin/mainmenu.lua:900 #: builtin/mainmenu.lua:833
msgid "Connect" msgid "Connect"
msgstr "连接" msgstr "连接"
#: builtin/mainmenu.lua:942 builtin/mainmenu.lua:1005 #: builtin/mainmenu.lua:875 builtin/mainmenu.lua:938
msgid "New" msgid "New"
msgstr "新建" msgstr "新建"
#: builtin/mainmenu.lua:943 builtin/mainmenu.lua:1006 #: builtin/mainmenu.lua:876 builtin/mainmenu.lua:939
msgid "Configure" msgid "Configure"
msgstr "配置" msgstr "配置"
#: builtin/mainmenu.lua:944 #: builtin/mainmenu.lua:877
#, fuzzy
msgid "Start Game" msgid "Start Game"
msgstr "启动游戏" msgstr "启动游戏"
#: builtin/mainmenu.lua:945 builtin/mainmenu.lua:1008 #: builtin/mainmenu.lua:878 builtin/mainmenu.lua:941
msgid "Select World:" msgid "Select World:"
msgstr "选择世界:" msgstr "选择世界:"
#: builtin/mainmenu.lua:946 #: builtin/mainmenu.lua:879
msgid "START SERVER" msgid "START SERVER"
msgstr "启动服务器" msgstr "启动服务器"
#: builtin/mainmenu.lua:947 builtin/mainmenu.lua:1010 #: builtin/mainmenu.lua:880 builtin/mainmenu.lua:943
msgid "Creative Mode" msgid "Creative Mode"
msgstr "创造模式" msgstr "创造模式"
#: builtin/mainmenu.lua:949 builtin/mainmenu.lua:1012 #: builtin/mainmenu.lua:882 builtin/mainmenu.lua:945
msgid "Enable Damage" msgid "Enable Damage"
msgstr "开启伤害" msgstr "开启伤害"
#: builtin/mainmenu.lua:951 #: builtin/mainmenu.lua:884
msgid "Public" msgid "Public"
msgstr "公共服务器" msgstr "公共服务器"
#: builtin/mainmenu.lua:953 #: builtin/mainmenu.lua:886
msgid "Name" msgid "Name"
msgstr "名字" msgstr "名字"
#: builtin/mainmenu.lua:955 #: builtin/mainmenu.lua:888
msgid "Password" msgid "Password"
msgstr "密码" msgstr "密码"
#: builtin/mainmenu.lua:956 #: builtin/mainmenu.lua:889
msgid "Server Port" msgid "Server Port"
msgstr "服务器端口" msgstr "服务器端口"
#: builtin/mainmenu.lua:966 #: builtin/mainmenu.lua:899
msgid "SETTINGS" msgid "SETTINGS"
msgstr "设置" msgstr "设置"
#: builtin/mainmenu.lua:967 #: builtin/mainmenu.lua:900
msgid "Fancy trees" msgid "Fancy trees"
msgstr "更漂亮的树" msgstr "更漂亮的树"
#: builtin/mainmenu.lua:969 #: builtin/mainmenu.lua:902
msgid "Smooth Lighting" msgid "Smooth Lighting"
msgstr "平滑光照" msgstr "平滑光照"
#: builtin/mainmenu.lua:971 #: builtin/mainmenu.lua:904
msgid "3D Clouds" msgid "3D Clouds"
msgstr "3D云彩" msgstr "3D云彩"
#: builtin/mainmenu.lua:973 #: builtin/mainmenu.lua:906
msgid "Opaque Water" msgid "Opaque Water"
msgstr "不透明的水" msgstr "不透明的水"
#: builtin/mainmenu.lua:976 #: builtin/mainmenu.lua:909
msgid "Mip-Mapping" msgid "Mip-Mapping"
msgstr "贴图处理" msgstr "贴图处理"
#: builtin/mainmenu.lua:978 #: builtin/mainmenu.lua:911
msgid "Anisotropic Filtering" msgid "Anisotropic Filtering"
msgstr "各向异性过滤" msgstr "各向异性过滤"
#: builtin/mainmenu.lua:980 #: builtin/mainmenu.lua:913
msgid "Bi-Linear Filtering" msgid "Bi-Linear Filtering"
msgstr "双线性过滤" msgstr "双线性过滤"
#: builtin/mainmenu.lua:982 #: builtin/mainmenu.lua:915
msgid "Tri-Linear Filtering" msgid "Tri-Linear Filtering"
msgstr "三线性过滤" msgstr "三线性过滤"
#: builtin/mainmenu.lua:985 #: builtin/mainmenu.lua:918
msgid "Shaders" msgid "Shaders"
msgstr "着色器" msgstr "着色器"
#: builtin/mainmenu.lua:987 #: builtin/mainmenu.lua:920
msgid "Preload item visuals" msgid "Preload item visuals"
msgstr "预先加载物品图像" msgstr "预先加载物品图像"
#: builtin/mainmenu.lua:989 #: builtin/mainmenu.lua:922
msgid "Enable Particles" msgid "Enable Particles"
msgstr "启用粒子效果" msgstr "启用粒子效果"
#: builtin/mainmenu.lua:991 #: builtin/mainmenu.lua:924
msgid "Finite Liquid" msgid "Finite Liquid"
msgstr "液体有限延伸" msgstr "液体有限延伸"
#: builtin/mainmenu.lua:994 #: builtin/mainmenu.lua:927
msgid "Change keys" msgid "Change keys"
msgstr "改变键位设置" msgstr "改变键位设置"
#: builtin/mainmenu.lua:1007 src/keycode.cpp:248 #: builtin/mainmenu.lua:940 src/keycode.cpp:248
msgid "Play" msgid "Play"
msgstr "开始游戏" msgstr "开始游戏"
#: builtin/mainmenu.lua:1009 #: builtin/mainmenu.lua:942
msgid "SINGLE PLAYER" msgid "SINGLE PLAYER"
msgstr "单人游戏" msgstr "单人游戏"
#: builtin/mainmenu.lua:1022 #: builtin/mainmenu.lua:955
msgid "Select texture pack:" msgid "Select texture pack:"
msgstr "选择材质包:" msgstr "选择材质包:"
#: builtin/mainmenu.lua:1023 #: builtin/mainmenu.lua:956
msgid "TEXTURE PACKS" msgid "TEXTURE PACKS"
msgstr "材质包" msgstr "材质包"
#: builtin/mainmenu.lua:1043 #: builtin/mainmenu.lua:976
msgid "No information available" msgid "No information available"
msgstr "无可用信息" msgstr "无可用信息"
#: builtin/mainmenu.lua:1071 #: builtin/mainmenu.lua:1005
msgid "Core Developers" msgid "Core Developers"
msgstr "核心开发人员" msgstr "核心开发人员"
#: builtin/mainmenu.lua:1082 #: builtin/mainmenu.lua:1020
msgid "Active Contributors" msgid "Active Contributors"
msgstr "活跃的贡献者" msgstr "活跃的贡献者"
#: builtin/mainmenu.lua:1092 #: builtin/mainmenu.lua:1028
msgid "Previous Contributors" msgid "Previous Contributors"
msgstr "以往的贡献者" msgstr "以往的贡献者"
#: builtin/mainmenu.lua:1069
msgid "Singleplayer"
msgstr "单人游戏"
#: builtin/mainmenu.lua:1070
msgid "Client"
msgstr "客户端"
#: builtin/mainmenu.lua:1071
msgid "Server"
msgstr "服务器"
#: builtin/mainmenu.lua:1072
msgid "Settings"
msgstr "设置"
#: builtin/mainmenu.lua:1073
msgid "Texture Packs"
msgstr "材质包"
#: builtin/mainmenu.lua:1080
msgid "Mods"
msgstr "MODS"
#: builtin/mainmenu.lua:1082
msgid "Credits"
msgstr "关于"
#: builtin/modmgr.lua:236 #: builtin/modmgr.lua:236
msgid "MODS" msgid "MODS"
msgstr "MODS" msgstr "MODS"
@ -301,168 +308,192 @@ msgstr "MODS"
msgid "Installed Mods:" msgid "Installed Mods:"
msgstr "已安装的MOD" msgstr "已安装的MOD"
#: builtin/modmgr.lua:243 builtin/modstore.lua:253 #: builtin/modmgr.lua:243
msgid "Install" #, fuzzy
msgstr "安装" msgid "Add mod:"
msgstr "<<-- 添加MOD"
#: builtin/modmgr.lua:244 #: builtin/modmgr.lua:244
msgid "Download" #, fuzzy
msgstr "下载" msgid "Local install"
msgstr "安装"
#: builtin/modmgr.lua:256 #: builtin/modmgr.lua:245
msgid "Online mod repository"
msgstr ""
#: builtin/modmgr.lua:284
#, fuzzy
msgid "No mod description available"
msgstr "无可用信息"
#: builtin/modmgr.lua:288
#, fuzzy
msgid "Mod information:"
msgstr "无可用信息"
#: builtin/modmgr.lua:299
msgid "Rename" msgid "Rename"
msgstr "重命名" msgstr "重命名"
#: builtin/modmgr.lua:260 builtin/modmgr.lua:402 #: builtin/modmgr.lua:301
msgid "Depends:" msgid "Uninstall selected modpack"
msgstr "依赖于:" msgstr ""
#: builtin/modmgr.lua:282 #: builtin/modmgr.lua:312
#, fuzzy
msgid "Uninstall selected mod"
msgstr "删除选中MOD"
#: builtin/modmgr.lua:324
msgid "Rename Modpack:" msgid "Rename Modpack:"
msgstr "重命名MOD包" msgstr "重命名MOD包"
#: builtin/modmgr.lua:287 src/keycode.cpp:227 #: builtin/modmgr.lua:329 src/keycode.cpp:227
msgid "Accept" msgid "Accept"
msgstr "接受" msgstr "接受"
#: builtin/modmgr.lua:381 #: builtin/modmgr.lua:423
msgid "World:" msgid "World:"
msgstr "世界:" msgstr "世界:"
#: builtin/modmgr.lua:385 builtin/modmgr.lua:387 #: builtin/modmgr.lua:427 builtin/modmgr.lua:429
msgid "Hide Game" msgid "Hide Game"
msgstr "隐藏游戏" msgstr "隐藏游戏"
#: builtin/modmgr.lua:391 builtin/modmgr.lua:393 #: builtin/modmgr.lua:433 builtin/modmgr.lua:435
#, fuzzy
msgid "Hide mp content" msgid "Hide mp content"
msgstr "隐藏mp内容" msgstr "隐藏MOD包内容"
#: builtin/modmgr.lua:400 #: builtin/modmgr.lua:442
msgid "Mod:" msgid "Mod:"
msgstr "MOD" msgstr "MOD"
#: builtin/modmgr.lua:405 src/guiKeyChangeMenu.cpp:187 #: builtin/modmgr.lua:444
msgid "Depends:"
msgstr "依赖于:"
#: builtin/modmgr.lua:447 src/guiKeyChangeMenu.cpp:187
msgid "Save" msgid "Save"
msgstr "保存" msgstr "保存"
#: builtin/modmgr.lua:422 #: builtin/modmgr.lua:464
#, fuzzy
msgid "Enable MP" msgid "Enable MP"
msgstr "启用MP" msgstr "启用MOD包"
#: builtin/modmgr.lua:424 #: builtin/modmgr.lua:466
#, fuzzy
msgid "Disable MP" msgid "Disable MP"
msgstr "全部禁用" msgstr "禁用MOD包"
#: builtin/modmgr.lua:428 builtin/modmgr.lua:430 #: builtin/modmgr.lua:470 builtin/modmgr.lua:472
msgid "enabled" msgid "enabled"
msgstr "启用" msgstr "启用"
#: builtin/modmgr.lua:436 #: builtin/modmgr.lua:478
#, fuzzy
msgid "Enable all" msgid "Enable all"
msgstr "全部启用" msgstr "全部启用"
#: builtin/modmgr.lua:551 #: builtin/modmgr.lua:577
#, fuzzy
msgid "Select Mod File:" msgid "Select Mod File:"
msgstr "选择世界" msgstr "选择MOD文件"
#: builtin/modmgr.lua:590 #: builtin/modmgr.lua:616
msgid "Install Mod: file: \"$1\"" msgid "Install Mod: file: \"$1\""
msgstr "" msgstr "安装MOD文件”$1“"
#: builtin/modmgr.lua:591 #: builtin/modmgr.lua:617
msgid "" msgid ""
"\n" "\n"
"Install Mod: unsupported filetype \"$1\"" "Install Mod: unsupported filetype \"$1\""
msgstr "" msgstr ""
"\n"
"安装MOD不支持的文件类型“$1“"
#: builtin/modmgr.lua:612 #: builtin/modmgr.lua:638
#, fuzzy
msgid "Failed to install $1 to $2" msgid "Failed to install $1 to $2"
msgstr "无法初始化世界" msgstr "无法安装$1到$2"
#: builtin/modmgr.lua:615 #: builtin/modmgr.lua:641
msgid "Install Mod: unable to find suitable foldername for modpack $1" msgid "Install Mod: unable to find suitable foldername for modpack $1"
msgstr "" msgstr "安装MOD找不到MOD包$1的合适文件夹名"
#: builtin/modmgr.lua:635 #: builtin/modmgr.lua:661
msgid "Install Mod: unable to find real modname for: $1" msgid "Install Mod: unable to find real modname for: $1"
msgstr "" msgstr "安装MOD找不到$1的真正MOD名"
#: builtin/modmgr.lua:824 #: builtin/modmgr.lua:855
msgid "Modmgr: failed to delete \"$1\"" msgid "Modmgr: failed to delete \"$1\""
msgstr "" msgstr "MOD管理器无法删除“$1“"
#: builtin/modmgr.lua:828 #: builtin/modmgr.lua:859
msgid "Modmgr: invalid modpath \"$1\"" msgid "Modmgr: invalid modpath \"$1\""
msgstr "" msgstr "MOD管理器MOD“$1“路径非法"
#: builtin/modmgr.lua:845 #: builtin/modmgr.lua:876
msgid "Are you sure you want to delete \"$1\"?" msgid "Are you sure you want to delete \"$1\"?"
msgstr "" msgstr "你确认要删除\"$1\"?"
#: builtin/modmgr.lua:847 #: builtin/modmgr.lua:878
msgid "No of course not!" msgid "No of course not!"
msgstr "" msgstr "当然不!"
#: builtin/modstore.lua:183 #: builtin/modstore.lua:183
msgid "Page $1 of $2" msgid "Page $1 of $2"
msgstr "" msgstr "第$1页,共$2页"
#: builtin/modstore.lua:243 #: builtin/modstore.lua:243
msgid "Rating" msgid "Rating"
msgstr "" msgstr "评级"
#: builtin/modstore.lua:251 #: builtin/modstore.lua:251
msgid "re-Install" msgid "re-Install"
msgstr "" msgstr "重新安装"
#: src/client.cpp:2915 #: builtin/modstore.lua:253
msgid "Install"
msgstr "安装"
#: src/client.cpp:2917
msgid "Item textures..." msgid "Item textures..."
msgstr "物品材质..." msgstr "物品材质..."
#: src/game.cpp:939 #: src/game.cpp:940
msgid "Loading..." msgid "Loading..."
msgstr "载入中..." msgstr "载入中..."
#: src/game.cpp:999 #: src/game.cpp:1000
msgid "Creating server...." msgid "Creating server...."
msgstr "正在建立服务器...." msgstr "正在建立服务器...."
#: src/game.cpp:1015 #: src/game.cpp:1016
msgid "Creating client..." msgid "Creating client..."
msgstr "正在建立客户端..." msgstr "正在建立客户端..."
#: src/game.cpp:1024 #: src/game.cpp:1025
msgid "Resolving address..." msgid "Resolving address..."
msgstr "正在解析地址..." msgstr "正在解析地址..."
#: src/game.cpp:1121 #: src/game.cpp:1122
msgid "Connecting to server..." msgid "Connecting to server..."
msgstr "正在连接服务器..." msgstr "正在连接服务器..."
#: src/game.cpp:1218 #: src/game.cpp:1219
#, fuzzy
msgid "Item definitions..." msgid "Item definitions..."
msgstr "物品材质..." msgstr "物品定义..."
#: src/game.cpp:1225 #: src/game.cpp:1226
msgid "Node definitions..." msgid "Node definitions..."
msgstr "" msgstr "方块定义..."
#: src/game.cpp:1232 #: src/game.cpp:1233
msgid "Media..." msgid "Media..."
msgstr "" msgstr "媒体..."
#: src/game.cpp:3405 #: src/game.cpp:3409
msgid "Shutting down stuff..." msgid "Shutting down stuff..."
msgstr "关闭中......" msgstr "关闭中......"
#: src/game.cpp:3435 #: src/game.cpp:3439
msgid "" msgid ""
"\n" "\n"
"Check debug.txt for details." "Check debug.txt for details."
@ -478,12 +509,8 @@ msgstr "你死了。"
msgid "Respawn" msgid "Respawn"
msgstr "重生" msgstr "重生"
#: src/guiFormSpecMenu.cpp:1569 #: src/guiFormSpecMenu.cpp:1656 src/guiMessageMenu.cpp:107
msgid "Left click: Move all items, Right click: Move single item" #: src/guiTextInputMenu.cpp:139
msgstr "左键:移动所有物品,右键:移动单个物品"
#: src/guiFormSpecMenu.cpp:1595 src/guiMessageMenu.cpp:107
#: src/guiTextInputMenu.cpp:140
msgid "Proceed" msgid "Proceed"
msgstr "继续游戏" msgstr "继续游戏"
@ -499,99 +526,99 @@ msgstr "“使用” = 向下爬"
msgid "Double tap \"jump\" to toggle fly" msgid "Double tap \"jump\" to toggle fly"
msgstr "连按两次“跳”切换飞行状态" msgstr "连按两次“跳”切换飞行状态"
#: src/guiKeyChangeMenu.cpp:290 #: src/guiKeyChangeMenu.cpp:288
msgid "Key already in use" msgid "Key already in use"
msgstr "按键已被占用" msgstr "按键已被占用"
#: src/guiKeyChangeMenu.cpp:372 #: src/guiKeyChangeMenu.cpp:363
msgid "press key" msgid "press key"
msgstr "按键" msgstr "按键"
#: src/guiKeyChangeMenu.cpp:400 #: src/guiKeyChangeMenu.cpp:389
msgid "Forward" msgid "Forward"
msgstr "向前" msgstr "向前"
#: src/guiKeyChangeMenu.cpp:401 #: src/guiKeyChangeMenu.cpp:390
msgid "Backward" msgid "Backward"
msgstr "向后" msgstr "向后"
#: src/guiKeyChangeMenu.cpp:402 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:391 src/keycode.cpp:228
msgid "Left" msgid "Left"
msgstr "向左" msgstr "向左"
#: src/guiKeyChangeMenu.cpp:403 src/keycode.cpp:228 #: src/guiKeyChangeMenu.cpp:392 src/keycode.cpp:228
msgid "Right" msgid "Right"
msgstr "向右" msgstr "向右"
#: src/guiKeyChangeMenu.cpp:404 #: src/guiKeyChangeMenu.cpp:393
msgid "Use" msgid "Use"
msgstr "使用" msgstr "使用"
#: src/guiKeyChangeMenu.cpp:405 #: src/guiKeyChangeMenu.cpp:394
msgid "Jump" msgid "Jump"
msgstr "跳" msgstr "跳"
#: src/guiKeyChangeMenu.cpp:406 #: src/guiKeyChangeMenu.cpp:395
msgid "Sneak" msgid "Sneak"
msgstr "潜行" msgstr "潜行"
#: src/guiKeyChangeMenu.cpp:407 #: src/guiKeyChangeMenu.cpp:396
msgid "Drop" msgid "Drop"
msgstr "丢出" msgstr "丢出"
#: src/guiKeyChangeMenu.cpp:408 #: src/guiKeyChangeMenu.cpp:397
msgid "Inventory" msgid "Inventory"
msgstr "物品栏" msgstr "物品栏"
#: src/guiKeyChangeMenu.cpp:409 #: src/guiKeyChangeMenu.cpp:398
msgid "Chat" msgid "Chat"
msgstr "聊天" msgstr "聊天"
#: src/guiKeyChangeMenu.cpp:410 #: src/guiKeyChangeMenu.cpp:399
msgid "Command" msgid "Command"
msgstr "命令" msgstr "命令"
#: src/guiKeyChangeMenu.cpp:411 #: src/guiKeyChangeMenu.cpp:400
msgid "Console" msgid "Console"
msgstr "控制台" msgstr "控制台"
#: src/guiKeyChangeMenu.cpp:412 #: src/guiKeyChangeMenu.cpp:401
msgid "Toggle fly" msgid "Toggle fly"
msgstr "切换飞行状态" msgstr "切换飞行状态"
#: src/guiKeyChangeMenu.cpp:413 #: src/guiKeyChangeMenu.cpp:402
msgid "Toggle fast" msgid "Toggle fast"
msgstr "切换快速移动状态" msgstr "切换快速移动状态"
#: src/guiKeyChangeMenu.cpp:414 #: src/guiKeyChangeMenu.cpp:403
msgid "Toggle noclip" msgid "Toggle noclip"
msgstr "切换穿墙模式" msgstr "切换穿墙模式"
#: src/guiKeyChangeMenu.cpp:415 #: src/guiKeyChangeMenu.cpp:404
msgid "Range select" msgid "Range select"
msgstr "选择范围" msgstr "选择范围"
#: src/guiKeyChangeMenu.cpp:416 #: src/guiKeyChangeMenu.cpp:405
msgid "Print stacks" msgid "Print stacks"
msgstr "打印栈" msgstr "打印栈"
#: src/guiPasswordChange.cpp:107 #: src/guiPasswordChange.cpp:106
msgid "Old Password" msgid "Old Password"
msgstr "旧密码" msgstr "旧密码"
#: src/guiPasswordChange.cpp:125 #: src/guiPasswordChange.cpp:122
msgid "New Password" msgid "New Password"
msgstr "新密码" msgstr "新密码"
#: src/guiPasswordChange.cpp:142 #: src/guiPasswordChange.cpp:137
msgid "Confirm Password" msgid "Confirm Password"
msgstr "确认密码" msgstr "确认密码"
#: src/guiPasswordChange.cpp:160 #: src/guiPasswordChange.cpp:153
msgid "Change" msgid "Change"
msgstr "更改" msgstr "更改"
#: src/guiPasswordChange.cpp:169 #: src/guiPasswordChange.cpp:162
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "密码不匹配!" msgstr "密码不匹配!"
@ -641,11 +668,11 @@ msgstr ""
"鼠标滚轮: 选择物品\n" "鼠标滚轮: 选择物品\n"
"T: 聊天\n" "T: 聊天\n"
#: src/guiVolumeChange.cpp:108 #: src/guiVolumeChange.cpp:107
msgid "Sound Volume: " msgid "Sound Volume: "
msgstr "音量: " msgstr "音量: "
#: src/guiVolumeChange.cpp:122 #: src/guiVolumeChange.cpp:121
msgid "Exit" msgid "Exit"
msgstr "退出" msgstr "退出"
@ -937,77 +964,43 @@ msgstr "PA1键"
msgid "Zoom" msgid "Zoom"
msgstr "缩放" msgstr "缩放"
#: src/main.cpp:1411 #: src/main.cpp:1472
msgid "needs_fallback_font" msgid "needs_fallback_font"
msgstr "yes" msgstr "yes"
#: src/main.cpp:1486 #: src/main.cpp:1547
msgid "Main Menu" msgid "Main Menu"
msgstr "主菜单" msgstr "主菜单"
#: src/main.cpp:1662 #: src/main.cpp:1723
msgid "No world selected and no address provided. Nothing to do." msgid "No world selected and no address provided. Nothing to do."
msgstr "没有选择世界或提供地址。未执行操作。" msgstr "没有选择世界或提供地址。未执行操作。"
#: src/main.cpp:1670 #: src/main.cpp:1731
msgid "Could not find or load game \"" msgid "Could not find or load game \""
msgstr "无法找到或载入游戏模式“" msgstr "无法找到或载入游戏模式“"
#: src/main.cpp:1684 #: src/main.cpp:1745
msgid "Invalid gamespec." msgid "Invalid gamespec."
msgstr "非法游戏模式规格。" msgstr "非法游戏模式规格。"
#: src/main.cpp:1729 #: src/main.cpp:1790
msgid "Connection error (timed out?)" msgid "Connection error (timed out?)"
msgstr "连接出错(超时?)" msgstr "连接出错(超时?)"
#~ msgid "is required by:" #~ msgid ""
#~ msgstr "被需要:" #~ "Warning: Some mods are not configured yet.\n"
#~ "They will be enabled by default when you save the configuration. "
#~ msgstr ""
#~ "警告一些MOD仍未设定。\n"
#~ "它们会在你保存配置的时候自动启用。 "
#~ msgid "Configuration saved. " #~ msgid ""
#~ msgstr "配置已保存。 " #~ "Warning: Some configured mods are missing.\n"
#~ "Their setting will be removed when you save the configuration. "
#~ msgid "Warning: Configuration not consistent. " #~ msgstr ""
#~ msgstr "警告:配置不一致。 " #~ "警告缺少一些设定了的MOD。\n"
#~ "它们的设置会在你保存配置的时候被移除。 "
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "无法创建世界:名字包含非法字符"
#~ msgid "Multiplayer"
#~ msgstr "多人游戏"
#~ msgid "Advanced"
#~ msgstr "高级联机设置"
#~ msgid "Show Public"
#~ msgstr "显示公共"
#~ msgid "Show Favorites"
#~ msgstr "显示最爱"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "地址栏留空可启动本地服务器。"
#~ msgid "Create world"
#~ msgstr "创造世界"
#~ msgid "Address required."
#~ msgstr "需要地址。"
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "无法删除世界:没有选择世界"
#~ msgid "Files to be deleted"
#~ msgstr "将被删除的文件"
#~ msgid "Cannot create world: No games found"
#~ msgstr "无法创造世界:未找到游戏模式"
#~ msgid "Cannot configure world: Nothing selected"
#~ msgstr "无法配置世界:没有选择世界"
#~ msgid "Failed to delete all world files"
#~ msgstr "无法删除所有该世界的文件"
#~ msgid "" #~ msgid ""
#~ "Default Controls:\n" #~ "Default Controls:\n"
@ -1035,16 +1028,56 @@ msgstr "连接出错(超时?)"
#~ "ESC菜单\n" #~ "ESC菜单\n"
#~ "T聊天\n" #~ "T聊天\n"
#~ msgid "" #~ msgid "Failed to delete all world files"
#~ "Warning: Some configured mods are missing.\n" #~ msgstr "无法删除所有该世界的文件"
#~ "Their setting will be removed when you save the configuration. "
#~ msgstr ""
#~ "警告缺少一些设定了的MOD。\n"
#~ "它们的设置会在你保存配置的时候被移除。 "
#~ msgid "" #~ msgid "Cannot configure world: Nothing selected"
#~ "Warning: Some mods are not configured yet.\n" #~ msgstr "无法配置世界:没有选择世界"
#~ "They will be enabled by default when you save the configuration. "
#~ msgstr "" #~ msgid "Cannot create world: No games found"
#~ "警告一些MOD仍未设定。\n" #~ msgstr "无法创造世界:未找到游戏模式"
#~ "它们会在你保存配置的时候自动启用。 "
#~ msgid "Files to be deleted"
#~ msgstr "将被删除的文件"
#~ msgid "Cannot delete world: Nothing selected"
#~ msgstr "无法删除世界:没有选择世界"
#~ msgid "Address required."
#~ msgstr "需要地址。"
#~ msgid "Create world"
#~ msgstr "创造世界"
#~ msgid "Leave address blank to start a local server."
#~ msgstr "地址栏留空可启动本地服务器。"
#~ msgid "Show Favorites"
#~ msgstr "显示最爱"
#~ msgid "Show Public"
#~ msgstr "显示公共"
#~ msgid "Advanced"
#~ msgstr "高级联机设置"
#~ msgid "Multiplayer"
#~ msgstr "多人游戏"
#~ msgid "Cannot create world: Name contains invalid characters"
#~ msgstr "无法创建世界:名字包含非法字符"
#~ msgid "Warning: Configuration not consistent. "
#~ msgstr "警告:配置不一致。 "
#~ msgid "Configuration saved. "
#~ msgstr "配置已保存。 "
#~ msgid "is required by:"
#~ msgstr "被需要:"
#~ msgid "Left click: Move all items, Right click: Move single item"
#~ msgstr "左键:移动所有物品,右键:移动单个物品"
#~ msgid "Download"
#~ msgstr "下载"

View File

@ -187,8 +187,10 @@ find_path(LUA_INCLUDE_DIR luajit.h
message (STATUS "LuaJIT library: ${LUA_LIBRARY}") message (STATUS "LuaJIT library: ${LUA_LIBRARY}")
message (STATUS "LuaJIT headers: ${LUA_INCLUDE_DIR}") message (STATUS "LuaJIT headers: ${LUA_INCLUDE_DIR}")
if(LUA_LIBRARY AND LUA_INCLUDE_DIR) set(USE_LUAJIT 0)
if(LUA_LIBRARY AND LUA_INCLUDE_DIR)
message (STATUS "LuaJIT found.") message (STATUS "LuaJIT found.")
set(USE_LUAJIT 1)
else(LUA_LIBRARY AND LUA_INCLUDE_DIR) else(LUA_LIBRARY AND LUA_INCLUDE_DIR)
message (STATUS "LuaJIT not found, using bundled Lua.") message (STATUS "LuaJIT not found, using bundled Lua.")
set(LUA_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/lua/src") set(LUA_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/lua/src")
@ -223,11 +225,22 @@ configure_file(
"${PROJECT_BINARY_DIR}/cmake_config.h" "${PROJECT_BINARY_DIR}/cmake_config.h"
) )
# Add a target that always rebuilds cmake_config_githash.h
add_custom_target(GenerateVersion
COMMAND ${CMAKE_COMMAND}
-D "GENERATE_VERSION_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}"
-D "GENERATE_VERSION_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}"
-D "VERSION_STRING=${VERSION_STRING}"
-D "VERSION_EXTRA=${VERSION_EXTRA}"
-P "${CMAKE_SOURCE_DIR}/cmake/Modules/GenerateVersion.cmake"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
add_subdirectory(jthread) add_subdirectory(jthread)
add_subdirectory(script) add_subdirectory(script)
add_subdirectory(util) add_subdirectory(util)
set(common_SRCS set(common_SRCS
version.cpp
rollback_interface.cpp rollback_interface.cpp
rollback.cpp rollback.cpp
genericobject.cpp genericobject.cpp
@ -293,6 +306,8 @@ set(common_SRCS
serverlist.cpp serverlist.cpp
pathfinder.cpp pathfinder.cpp
convert_json.cpp convert_json.cpp
gettext.cpp
httpfetch.cpp
${JTHREAD_SRCS} ${JTHREAD_SRCS}
${common_SCRIPT_SRCS} ${common_SCRIPT_SRCS}
${UTIL_SRCS} ${UTIL_SRCS}
@ -345,6 +360,7 @@ set(minetest_SRCS
guiDeathScreen.cpp guiDeathScreen.cpp
guiChatConsole.cpp guiChatConsole.cpp
client.cpp client.cpp
clientmedia.cpp
filecache.cpp filecache.cpp
tile.cpp tile.cpp
shader.cpp shader.cpp
@ -404,6 +420,7 @@ set(EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin")
if(BUILD_CLIENT) if(BUILD_CLIENT)
add_executable(${PROJECT_NAME} ${minetest_SRCS}) add_executable(${PROJECT_NAME} ${minetest_SRCS})
add_dependencies(${PROJECT_NAME} GenerateVersion)
target_link_libraries( target_link_libraries(
${PROJECT_NAME} ${PROJECT_NAME}
${ZLIB_LIBRARIES} ${ZLIB_LIBRARIES}
@ -442,6 +459,7 @@ endif(BUILD_CLIENT)
if(BUILD_SERVER) if(BUILD_SERVER)
add_executable(${PROJECT_NAME}server ${minetestserver_SRCS}) add_executable(${PROJECT_NAME}server ${minetestserver_SRCS})
add_dependencies(${PROJECT_NAME}server GenerateVersion)
target_link_libraries( target_link_libraries(
${PROJECT_NAME}server ${PROJECT_NAME}server
${ZLIB_LIBRARIES} ${ZLIB_LIBRARIES}
@ -484,7 +502,7 @@ if(MSVC)
# Flags for C files (sqlite) # Flags for C files (sqlite)
# /MT = Link statically with standard library stuff # /MT = Link statically with standard library stuff
set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT") set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT")
if(BUILD_SERVER) if(BUILD_SERVER)
set_target_properties(${PROJECT_NAME}server PROPERTIES set_target_properties(${PROJECT_NAME}server PROPERTIES
COMPILE_DEFINITIONS "SERVER") COMPILE_DEFINITIONS "SERVER")
@ -492,13 +510,13 @@ if(MSVC)
else() else()
# Probably GCC # Probably GCC
if(WARN_ALL) if(WARN_ALL)
set(RELEASE_WARNING_FLAGS "-Wall") set(RELEASE_WARNING_FLAGS "-Wall")
else() else()
set(RELEASE_WARNING_FLAGS "") set(RELEASE_WARNING_FLAGS "")
endif() endif()
if(NOT APPLE AND NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") if(NOT APPLE AND NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
CHECK_CXX_COMPILER_FLAG("-Wno-unused-but-set-variable" HAS_UNUSED_BUT_SET_VARIABLE_WARNING) CHECK_CXX_COMPILER_FLAG("-Wno-unused-but-set-variable" HAS_UNUSED_BUT_SET_VARIABLE_WARNING)
if(HAS_UNUSED_BUT_SET_VARIABLE_WARNING) if(HAS_UNUSED_BUT_SET_VARIABLE_WARNING)
@ -521,7 +539,7 @@ else()
if(USE_GPROF) if(USE_GPROF)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
endif() endif()
if(BUILD_SERVER) if(BUILD_SERVER)
set_target_properties(${PROJECT_NAME}server PROPERTIES set_target_properties(${PROJECT_NAME}server PROPERTIES
COMPILE_DEFINITIONS "SERVER") COMPILE_DEFINITIONS "SERVER")

View File

@ -31,7 +31,6 @@ BanManager::BanManager(const std::string &banfilepath):
m_banfilepath(banfilepath), m_banfilepath(banfilepath),
m_modified(false) m_modified(false)
{ {
m_mutex.Init();
try{ try{
load(); load();
} }

View File

@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "log.h" #include "log.h"
#include "util/numeric.h" #include "util/numeric.h"
#include "main.h" #include "main.h"
#include "util/mathconstants.h"
NoiseParams nparams_biome_def_heat = NoiseParams nparams_biome_def_heat =
{50, 50, v3f(500.0, 500.0, 500.0), 5349, 3, 0.70}; {50, 50, v3f(500.0, 500.0, 500.0), 5349, 3, 0.70};

View File

@ -110,9 +110,21 @@ void CaveV6::makeCave(v3s16 nmin, v3s16 nmax, int max_stone_height) {
(float)(ps->next() % ar.Z) + 0.5 (float)(ps->next() % ar.Z) + 0.5
); );
int notifytype = large_cave ? GENNOTIFY_LARGECAVE_BEGIN : GENNOTIFY_CAVE_BEGIN;
if (mg->gennotify & (1 << notifytype)) {
std::vector <v3s16> *nvec = mg->gen_notifications[notifytype];
nvec->push_back(v3s16(of.X + orp.X, of.Y + orp.Y, of.Z + orp.Z));
}
// Generate some tunnel starting from orp // Generate some tunnel starting from orp
for (u16 j = 0; j < tunnel_routepoints; j++) for (u16 j = 0; j < tunnel_routepoints; j++)
makeTunnel(j % dswitchint == 0); makeTunnel(j % dswitchint == 0);
notifytype = large_cave ? GENNOTIFY_LARGECAVE_END : GENNOTIFY_CAVE_END;
if (mg->gennotify & (1 << notifytype)) {
std::vector <v3s16> *nvec = mg->gen_notifications[notifytype];
nvec->push_back(v3s16(of.X + orp.X, of.Y + orp.Y, of.Z + orp.Z));
}
} }
@ -236,6 +248,9 @@ void CaveV6::carveRoute(v3f vec, float f, bool randomize_xz) {
continue; continue;
u32 i = vm->m_area.index(p); u32 i = vm->m_area.index(p);
content_t c = vm->m_data[i].getContent();
if (!ndef->get(c).is_ground_content)
continue;
if (large_cave) { if (large_cave) {
int full_ymin = node_min.Y - MAP_BLOCKSIZE; int full_ymin = node_min.Y - MAP_BLOCKSIZE;
@ -250,7 +265,6 @@ void CaveV6::carveRoute(v3f vec, float f, bool randomize_xz) {
} }
} else { } else {
// Don't replace air or water or lava or ignore // Don't replace air or water or lava or ignore
content_t c = vm->m_data[i].getContent();
if (c == CONTENT_IGNORE || c == CONTENT_AIR || if (c == CONTENT_IGNORE || c == CONTENT_AIR ||
c == c_water_source || c == c_lava_source) c == c_water_source || c == c_lava_source)
continue; continue;
@ -345,9 +359,21 @@ void CaveV7::makeCave(v3s16 nmin, v3s16 nmax, int max_stone_height) {
(float)(ps->next() % ar.Z) + 0.5 (float)(ps->next() % ar.Z) + 0.5
); );
int notifytype = large_cave ? GENNOTIFY_LARGECAVE_BEGIN : GENNOTIFY_CAVE_BEGIN;
if (mg->gennotify & (1 << notifytype)) {
std::vector <v3s16> *nvec = mg->gen_notifications[notifytype];
nvec->push_back(v3s16(of.X + orp.X, of.Y + orp.Y, of.Z + orp.Z));
}
// Generate some tunnel starting from orp // Generate some tunnel starting from orp
for (u16 j = 0; j < tunnel_routepoints; j++) for (u16 j = 0; j < tunnel_routepoints; j++)
makeTunnel(j % dswitchint == 0); makeTunnel(j % dswitchint == 0);
notifytype = large_cave ? GENNOTIFY_LARGECAVE_END : GENNOTIFY_CAVE_END;
if (mg->gennotify & (1 << notifytype)) {
std::vector <v3s16> *nvec = mg->gen_notifications[notifytype];
nvec->push_back(v3s16(of.X + orp.X, of.Y + orp.Y, of.Z + orp.Z));
}
} }
@ -516,7 +542,8 @@ void CaveV7::carveRoute(v3f vec, float f, bool randomize_xz, bool is_ravine) {
v3s16 p(cp.X + x0, cp.Y + y0, cp.Z + z0); v3s16 p(cp.X + x0, cp.Y + y0, cp.Z + z0);
p += of; p += of;
if (!is_ravine && mg->heightmap && should_make_cave_hole) { if (!is_ravine && mg->heightmap && should_make_cave_hole &&
p.X <= node_max.X && p.Z <= node_max.Z) {
int maplen = node_max.X - node_min.X + 1; int maplen = node_max.X - node_min.X + 1;
int idx = (p.Z - node_min.Z) * maplen + (p.X - node_min.X); int idx = (p.Z - node_min.Z) * maplen + (p.X - node_min.X);
if (p.Y >= mg->heightmap[idx] - 2) if (p.Y >= mg->heightmap[idx] - 2)
@ -530,8 +557,8 @@ void CaveV7::carveRoute(v3f vec, float f, bool randomize_xz, bool is_ravine) {
// Don't replace air, water, lava, or ice // Don't replace air, water, lava, or ice
content_t c = vm->m_data[i].getContent(); content_t c = vm->m_data[i].getContent();
if (c == CONTENT_AIR || c == c_water_source || if (!ndef->get(c).is_ground_content || c == CONTENT_AIR ||
c == c_lava_source || c == c_ice) c == c_water_source || c == c_lava_source || c == c_ice)
continue; continue;
if (large_cave) { if (large_cave) {

View File

@ -199,7 +199,7 @@ void SGUITTGlyph::unload()
////////////////////// //////////////////////
CGUITTFont* CGUITTFont::createTTFont(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias, const bool transparency) CGUITTFont* CGUITTFont::createTTFont(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias, const bool transparency, const u32 shadow, const u32 shadow_alpha)
{ {
if (!c_libraryLoaded) if (!c_libraryLoaded)
{ {
@ -216,6 +216,9 @@ CGUITTFont* CGUITTFont::createTTFont(IGUIEnvironment *env, const io::path& filen
return 0; return 0;
} }
font->shadow_offset = shadow;
font->shadow_alpha = shadow_alpha;
return font; return font;
} }
@ -625,6 +628,14 @@ void CGUITTFont::draw(const core::stringw& text, const core::rect<s32>& position
CGUITTGlyphPage* page = n->getValue(); CGUITTGlyphPage* page = n->getValue();
if (!use_transparency) color.color |= 0xff000000; if (!use_transparency) color.color |= 0xff000000;
if (shadow_offset) {
for (size_t i = 0; i < page->render_positions.size(); ++i)
page->render_positions[i] += core::vector2di(shadow_offset, shadow_offset);
Driver->draw2DImageBatch(page->texture, page->render_positions, page->render_source_rects, clip, video::SColor(shadow_alpha,0,0,0), true);
for (size_t i = 0; i < page->render_positions.size(); ++i)
page->render_positions[i] -= core::vector2di(shadow_offset, shadow_offset);
}
Driver->draw2DImageBatch(page->texture, page->render_positions, page->render_source_rects, clip, color, true); Driver->draw2DImageBatch(page->texture, page->render_positions, page->render_source_rects, clip, color, true);
} }
} }

View File

@ -207,7 +207,7 @@ namespace gui
//! \param antialias set the use_monochrome (opposite to antialias) flag //! \param antialias set the use_monochrome (opposite to antialias) flag
//! \param transparency set the use_transparency flag //! \param transparency set the use_transparency flag
//! \return Returns a pointer to a CGUITTFont. Will return 0 if the font failed to load. //! \return Returns a pointer to a CGUITTFont. Will return 0 if the font failed to load.
static CGUITTFont* createTTFont(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true); static CGUITTFont* createTTFont(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true, const u32 shadow = 0, const u32 shadow_alpha = 255);
static CGUITTFont* createTTFont(IrrlichtDevice *device, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true); static CGUITTFont* createTTFont(IrrlichtDevice *device, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
static CGUITTFont* create(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true); static CGUITTFont* create(IGUIEnvironment *env, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
static CGUITTFont* create(IrrlichtDevice *device, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true); static CGUITTFont* create(IrrlichtDevice *device, const io::path& filename, const u32 size, const bool antialias = true, const bool transparency = true);
@ -369,6 +369,8 @@ namespace gui
s32 GlobalKerningWidth; s32 GlobalKerningWidth;
s32 GlobalKerningHeight; s32 GlobalKerningHeight;
core::ustring Invisible; core::ustring Invisible;
u32 shadow_offset;
u32 shadow_alpha;
}; };
} // end namespace gui } // end namespace gui

View File

@ -205,6 +205,10 @@ inline core::array<u8> getUnicodeBOM(EUTF_ENCODE mode)
case EUTFE_UTF32_LE: case EUTFE_UTF32_LE:
COPY_ARRAY(BOM_ENCODE_UTF32_LE, BOM_ENCODE_UTF32_LEN); COPY_ARRAY(BOM_ENCODE_UTF32_LE, BOM_ENCODE_UTF32_LEN);
break; break;
case EUTFE_NONE:
// TODO sapier: fixed warning only,
// don't know if something needs to be done here
break;
} }
return ret; return ret;
@ -257,7 +261,7 @@ public:
_set(c); _set(c);
return *this; return *this;
} }
//! Increments the value by 1. //! Increments the value by 1.
//! \return Myself. //! \return Myself.
_ustring16_iterator_access& operator++() _ustring16_iterator_access& operator++()
@ -392,7 +396,7 @@ public:
return unicode::toUTF32(a[pos], a[pos + 1]); return unicode::toUTF32(a[pos], a[pos + 1]);
} }
} }
//! Sets a uchar32_t at our current position. //! Sets a uchar32_t at our current position.
void _set(uchar32_t c) void _set(uchar32_t c)
{ {
@ -707,7 +711,6 @@ public:
//! Moves the iterator to the end of the string. //! Moves the iterator to the end of the string.
void toEnd() void toEnd()
{ {
const uchar16_t* a = ref->c_str();
pos = ref->size_raw(); pos = ref->size_raw();
} }
@ -732,12 +735,13 @@ public:
typedef typename _Base::const_pointer const_pointer; typedef typename _Base::const_pointer const_pointer;
typedef typename _Base::const_reference const_reference; typedef typename _Base::const_reference const_reference;
typedef typename _Base::value_type value_type; typedef typename _Base::value_type value_type;
typedef typename _Base::difference_type difference_type; typedef typename _Base::difference_type difference_type;
typedef typename _Base::distance_type distance_type; typedef typename _Base::distance_type distance_type;
typedef access pointer; typedef access pointer;
typedef access reference; typedef access reference;
using _Base::pos; using _Base::pos;
using _Base::ref; using _Base::ref;
@ -2096,7 +2100,7 @@ public:
} }
#endif #endif
//! Appends a number to this ustring16. //! Appends a number to this ustring16.
//! \param c Number to append. //! \param c Number to append.
//! \return A reference to our current string. //! \return A reference to our current string.
@ -2958,7 +2962,7 @@ public:
if (endian != unicode::EUTFEE_NATIVE && getEndianness() != endian) if (endian != unicode::EUTFEE_NATIVE && getEndianness() != endian)
{ {
for (u32 i = 0; i <= used; ++i) for (u32 i = 0; i <= used; ++i)
*ptr++ = unicode::swapEndian16(*ptr); ptr[i] = unicode::swapEndian16(ptr[i]);
} }
ret.set_used(used + (addBOM ? unicode::BOM_UTF16_LEN : 0)); ret.set_used(used + (addBOM ? unicode::BOM_UTF16_LEN : 0));
ret.push_back(0); ret.push_back(0);

View File

@ -19,6 +19,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "client.h" #include "client.h"
#include <iostream> #include <iostream>
#include <algorithm>
#include "clientserver.h" #include "clientserver.h"
#include "jthread/jmutexautolock.h" #include "jthread/jmutexautolock.h"
#include "main.h" #include "main.h"
@ -37,26 +38,18 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "itemdef.h" #include "itemdef.h"
#include "shader.h" #include "shader.h"
#include <IFileSystem.h> #include <IFileSystem.h>
#include "sha1.h"
#include "base64.h" #include "base64.h"
#include "clientmap.h" #include "clientmap.h"
#include "filecache.h" #include "clientmedia.h"
#include "sound.h" #include "sound.h"
#include "util/string.h" #include "util/string.h"
#include "hex.h"
#include "IMeshCache.h" #include "IMeshCache.h"
#include "serialization.h"
#include "util/serialize.h" #include "util/serialize.h"
#include "config.h" #include "config.h"
#include "util/directiontables.h" #include "util/directiontables.h"
#include "util/pointedthing.h"
#if USE_CURL #include "version.h"
#include <curl/curl.h>
#endif
static std::string getMediaCacheDir()
{
return porting::path_user + DIR_DELIM + "cache" + DIR_DELIM + "media";
}
/* /*
QueuedMeshUpdate QueuedMeshUpdate
@ -81,7 +74,6 @@ QueuedMeshUpdate::~QueuedMeshUpdate()
MeshUpdateQueue::MeshUpdateQueue() MeshUpdateQueue::MeshUpdateQueue()
{ {
m_mutex.Init();
} }
MeshUpdateQueue::~MeshUpdateQueue() MeshUpdateQueue::~MeshUpdateQueue()
@ -176,7 +168,7 @@ void * MeshUpdateThread::Thread()
BEGIN_DEBUG_EXCEPTION_HANDLER BEGIN_DEBUG_EXCEPTION_HANDLER
while(getRun()) while(!StopRequested())
{ {
/*// Wait for output queue to flush. /*// Wait for output queue to flush.
// Allow 2 in queue, this makes less frametime jitter. // Allow 2 in queue, this makes less frametime jitter.
@ -222,45 +214,9 @@ void * MeshUpdateThread::Thread()
return NULL; return NULL;
} }
void * MediaFetchThread::Thread() /*
{ Client
ThreadStarted(); */
log_register_thread("MediaFetchThread");
DSTACK(__FUNCTION_NAME);
BEGIN_DEBUG_EXCEPTION_HANDLER
#if USE_CURL
CURL *curl;
CURLcode res;
for (std::list<MediaRequest>::iterator i = m_file_requests.begin();
i != m_file_requests.end(); ++i) {
curl = curl_easy_init();
assert(curl);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
curl_easy_setopt(curl, CURLOPT_URL, (m_remote_url + i->name).c_str());
curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);
std::ostringstream stream;
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &stream);
res = curl_easy_perform(curl);
if (res == CURLE_OK) {
std::string data = stream.str();
m_file_data.push_back(make_pair(i->name, data));
} else {
m_failed.push_back(*i);
infostream << "cURL request failed for " << i->name << " (" << curl_easy_strerror(res) << ")"<< std::endl;
}
curl_easy_cleanup(curl);
}
#endif
END_DEBUG_EXCEPTION_HANDLER(errorstream)
return NULL;
}
Client::Client( Client::Client(
IrrlichtDevice *device, IrrlichtDevice *device,
@ -302,12 +258,9 @@ Client::Client(
m_map_seed(0), m_map_seed(0),
m_password(password), m_password(password),
m_access_denied(false), m_access_denied(false),
m_media_cache(getMediaCacheDir()),
m_media_receive_started(false),
m_media_count(0),
m_media_received_count(0),
m_itemdef_received(false), m_itemdef_received(false),
m_nodedef_received(false), m_nodedef_received(false),
m_media_downloader(new ClientMediaDownloader()),
m_time_of_day_set(false), m_time_of_day_set(false),
m_last_time_of_day_f(-1), m_last_time_of_day_f(-1),
m_time_of_day_update_timer(0), m_time_of_day_update_timer(0),
@ -331,9 +284,6 @@ Client::Client(
m_env.addPlayer(player); m_env.addPlayer(player);
} }
for (size_t i = 0; i < g_settings->getU16("media_fetch_threads"); ++i)
m_media_fetch_threads.push_back(new MediaFetchThread(this));
} }
Client::~Client() Client::~Client()
@ -343,9 +293,8 @@ Client::~Client()
m_con.Disconnect(); m_con.Disconnect();
} }
m_mesh_update_thread.setRun(false); m_mesh_update_thread.Stop();
while(m_mesh_update_thread.IsRunning()) m_mesh_update_thread.Wait();
sleep_ms(100);
while(!m_mesh_update_thread.m_queue_out.empty()) { while(!m_mesh_update_thread.m_queue_out.empty()) {
MeshUpdateResult r = m_mesh_update_thread.m_queue_out.pop_front(); MeshUpdateResult r = m_mesh_update_thread.m_queue_out.pop_front();
delete r.mesh; delete r.mesh;
@ -363,10 +312,6 @@ Client::~Client()
} }
} }
for (std::list<MediaFetchThread*>::iterator i = m_media_fetch_threads.begin();
i != m_media_fetch_threads.end(); ++i)
delete *i;
// cleanup 3d model meshes on client shutdown // cleanup 3d model meshes on client shutdown
while (m_device->getSceneManager()->getMeshCache()->getMeshCount() != 0) { while (m_device->getSceneManager()->getMeshCache()->getMeshCount() != 0) {
scene::IAnimatedMesh * mesh = scene::IAnimatedMesh * mesh =
@ -472,7 +417,7 @@ void Client::step(float dtime)
core::list<v3s16> deleted_blocks; core::list<v3s16> deleted_blocks;
float delete_unused_sectors_timeout = float delete_unused_sectors_timeout =
g_settings->getFloat("client_delete_unused_sectors_timeout"); g_settings->getFloat("client_delete_unused_sectors_timeout");
// Delete sector blocks // Delete sector blocks
@ -796,57 +741,11 @@ void Client::step(float dtime)
/* /*
Load fetched media Load fetched media
*/ */
if (m_media_receive_started) { if (m_media_downloader && m_media_downloader->isStarted()) {
bool all_stopped = true; m_media_downloader->step(this);
for (std::list<MediaFetchThread*>::iterator thread = m_media_fetch_threads.begin(); if (m_media_downloader->isDone()) {
thread != m_media_fetch_threads.end(); ++thread) { delete m_media_downloader;
all_stopped &= !(*thread)->IsRunning(); m_media_downloader = NULL;
while (!(*thread)->m_file_data.empty()) {
std::pair <std::string, std::string> out = (*thread)->m_file_data.pop_front();
if(m_media_received_count < m_media_count)
m_media_received_count++;
bool success = loadMedia(out.second, out.first);
if(success){
verbosestream<<"Client: Loaded received media: "
<<"\""<<out.first<<"\". Caching."<<std::endl;
} else{
infostream<<"Client: Failed to load received media: "
<<"\""<<out.first<<"\". Not caching."<<std::endl;
continue;
}
bool did = fs::CreateAllDirs(getMediaCacheDir());
if(!did){
errorstream<<"Could not create media cache directory"
<<std::endl;
}
{
std::map<std::string, std::string>::iterator n;
n = m_media_name_sha1_map.find(out.first);
if(n == m_media_name_sha1_map.end())
errorstream<<"The server sent a file that has not "
<<"been announced."<<std::endl;
else
m_media_cache.update_sha1(out.second);
}
}
}
if (all_stopped) {
std::list<MediaRequest> fetch_failed;
for (std::list<MediaFetchThread*>::iterator thread = m_media_fetch_threads.begin();
thread != m_media_fetch_threads.end(); ++thread) {
for (std::list<MediaRequest>::iterator request = (*thread)->m_failed.begin();
request != (*thread)->m_failed.end(); ++request)
fetch_failed.push_back(*request);
(*thread)->m_failed.clear();
}
if (fetch_failed.size() > 0) {
infostream << "Failed to remote-fetch " << fetch_failed.size() << " files. "
<< "Requesting them the usual way." << std::endl;
request_media(fetch_failed);
}
} }
} }
@ -1047,15 +946,15 @@ void Client::deletingPeer(con::Peer *peer, bool timeout)
string name string name
} }
*/ */
void Client::request_media(const std::list<MediaRequest> &file_requests) void Client::request_media(const std::list<std::string> &file_requests)
{ {
std::ostringstream os(std::ios_base::binary); std::ostringstream os(std::ios_base::binary);
writeU16(os, TOSERVER_REQUEST_MEDIA); writeU16(os, TOSERVER_REQUEST_MEDIA);
writeU16(os, file_requests.size()); writeU16(os, file_requests.size());
for(std::list<MediaRequest>::const_iterator i = file_requests.begin(); for(std::list<std::string>::const_iterator i = file_requests.begin();
i != file_requests.end(); ++i) { i != file_requests.end(); ++i) {
os<<serializeString(i->name); os<<serializeString(*i);
} }
// Make data buffer // Make data buffer
@ -1067,6 +966,19 @@ void Client::request_media(const std::list<MediaRequest> &file_requests)
<<file_requests.size()<<" files)"<<std::endl; <<file_requests.size()<<" files)"<<std::endl;
} }
void Client::received_media()
{
// notify server we received everything
std::ostringstream os(std::ios_base::binary);
writeU16(os, TOSERVER_RECEIVED_MEDIA);
std::string s = os.str();
SharedBuffer<u8> data((u8*)s.c_str(), s.size());
// Send as reliable
Send(0, data, true);
infostream<<"Client: Notifying server that we received all media"
<<std::endl;
}
void Client::ReceiveAll() void Client::ReceiveAll()
{ {
DSTACK(__FUNCTION_NAME); DSTACK(__FUNCTION_NAME);
@ -1260,7 +1172,13 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
MapNode n; MapNode n;
n.deSerialize(&data[8], ser_version); n.deSerialize(&data[8], ser_version);
addNode(p, n); bool remove_metadata = true;
u32 index = 8 + MapNode::serializedLength(ser_version);
if ((datasize >= index+1) && data[index]){
remove_metadata = false;
}
addNode(p, n, remove_metadata);
} }
else if(command == TOCLIENT_BLOCKDATA) else if(command == TOCLIENT_BLOCKDATA)
{ {
@ -1653,96 +1571,54 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
std::string datastring((char*)&data[2], datasize-2); std::string datastring((char*)&data[2], datasize-2);
std::istringstream is(datastring, std::ios_base::binary); std::istringstream is(datastring, std::ios_base::binary);
// Mesh update thread must be stopped while
// updating content definitions
assert(!m_mesh_update_thread.IsRunning());
int num_files = readU16(is); int num_files = readU16(is);
infostream<<"Client: Received media announcement: packet size: " infostream<<"Client: Received media announcement: packet size: "
<<datasize<<std::endl; <<datasize<<std::endl;
std::list<MediaRequest> file_requests; if (m_media_downloader == NULL ||
m_media_downloader->isStarted()) {
const char *problem = m_media_downloader ?
"we already saw another announcement" :
"all media has been received already";
errorstream<<"Client: Received media announcement but "
<<problem<<"! "
<<" files="<<num_files
<<" size="<<datasize<<std::endl;
return;
}
// Mesh update thread must be stopped while
// updating content definitions
assert(!m_mesh_update_thread.IsRunning());
for(int i=0; i<num_files; i++) for(int i=0; i<num_files; i++)
{ {
//read file from cache
std::string name = deSerializeString(is); std::string name = deSerializeString(is);
std::string sha1_base64 = deSerializeString(is); std::string sha1_base64 = deSerializeString(is);
// if name contains illegal characters, ignore the file
if(!string_allowed(name, TEXTURENAME_ALLOWED_CHARS)){
errorstream<<"Client: ignoring illegal file name "
<<"sent by server: \""<<name<<"\""<<std::endl;
continue;
}
std::string sha1_raw = base64_decode(sha1_base64); std::string sha1_raw = base64_decode(sha1_base64);
std::string sha1_hex = hex_encode(sha1_raw); m_media_downloader->addFile(name, sha1_raw);
std::ostringstream tmp_os(std::ios_base::binary);
bool found_in_cache = m_media_cache.load_sha1(sha1_raw, tmp_os);
m_media_name_sha1_map[name] = sha1_raw;
// If found in cache, try to load it from there
if(found_in_cache)
{
bool success = loadMedia(tmp_os.str(), name);
if(success){
verbosestream<<"Client: Loaded cached media: "
<<sha1_hex<<" \""<<name<<"\""<<std::endl;
continue;
} else{
infostream<<"Client: Failed to load cached media: "
<<sha1_hex<<" \""<<name<<"\""<<std::endl;
}
}
// Didn't load from cache; queue it to be requested
verbosestream<<"Client: Adding file to request list: \""
<<sha1_hex<<" \""<<name<<"\""<<std::endl;
file_requests.push_back(MediaRequest(name));
} }
std::string remote_media = ""; std::vector<std::string> remote_media;
try { try {
remote_media = deSerializeString(is); Strfnd sf(deSerializeString(is));
while(!sf.atend()) {
std::string baseurl = trim(sf.next(","));
if(baseurl != "")
m_media_downloader->addRemoteServer(baseurl);
}
} }
catch(SerializationError) { catch(SerializationError) {
// not supported by server or turned off // not supported by server or turned off
} }
m_media_count = file_requests.size(); m_media_downloader->step(this);
m_media_receive_started = true; if (m_media_downloader->isDone()) {
// might be done already if all media is in the cache
if (remote_media == "" || !USE_CURL) { delete m_media_downloader;
request_media(file_requests); m_media_downloader = NULL;
} else {
#if USE_CURL
std::list<MediaFetchThread*>::iterator cur = m_media_fetch_threads.begin();
for(std::list<MediaRequest>::iterator i = file_requests.begin();
i != file_requests.end(); ++i) {
(*cur)->m_file_requests.push_back(*i);
cur++;
if (cur == m_media_fetch_threads.end())
cur = m_media_fetch_threads.begin();
}
for (std::list<MediaFetchThread*>::iterator i = m_media_fetch_threads.begin();
i != m_media_fetch_threads.end(); ++i) {
(*i)->m_remote_url = remote_media;
(*i)->Start();
}
#endif
// notify server we received everything
std::ostringstream os(std::ios_base::binary);
writeU16(os, TOSERVER_RECEIVED_MEDIA);
std::string s = os.str();
SharedBuffer<u8> data((u8*)s.c_str(), s.size());
// Send as reliable
Send(0, data, true);
} }
ClientEvent event;
event.type = CE_TEXTURES_UPDATED;
m_client_event_queue.push_back(event);
} }
else if(command == TOCLIENT_MEDIA) else if(command == TOCLIENT_MEDIA)
{ {
@ -1768,67 +1644,37 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
<<num_bunches<<" files="<<num_files <<num_bunches<<" files="<<num_files
<<" size="<<datasize<<std::endl; <<" size="<<datasize<<std::endl;
// Check total and received media count if (num_files == 0)
assert(m_media_received_count <= m_media_count); return;
if (num_files > m_media_count - m_media_received_count) {
errorstream<<"Client: Received more files than requested:" if (m_media_downloader == NULL ||
<<" total count="<<m_media_count !m_media_downloader->isStarted()) {
<<" total received="<<m_media_received_count const char *problem = m_media_downloader ?
"media has not been requested" :
"all media has been received already";
errorstream<<"Client: Received media but "
<<problem<<"! "
<<" bunch "<<bunch_i<<"/"<<num_bunches <<" bunch "<<bunch_i<<"/"<<num_bunches
<<" files="<<num_files <<" files="<<num_files
<<" size="<<datasize<<std::endl; <<" size="<<datasize<<std::endl;
num_files = m_media_count - m_media_received_count;
}
if (num_files == 0)
return; return;
}
// Mesh update thread must be stopped while // Mesh update thread must be stopped while
// updating content definitions // updating content definitions
assert(!m_mesh_update_thread.IsRunning()); assert(!m_mesh_update_thread.IsRunning());
for(u32 i=0; i<num_files; i++){ for(u32 i=0; i<num_files; i++){
assert(m_media_received_count < m_media_count);
m_media_received_count++;
std::string name = deSerializeString(is); std::string name = deSerializeString(is);
std::string data = deSerializeLongString(is); std::string data = deSerializeLongString(is);
m_media_downloader->conventionalTransferDone(
// if name contains illegal characters, ignore the file name, data, this);
if(!string_allowed(name, TEXTURENAME_ALLOWED_CHARS)){
errorstream<<"Client: ignoring illegal file name "
<<"sent by server: \""<<name<<"\""<<std::endl;
continue;
}
bool success = loadMedia(data, name);
if(success){
verbosestream<<"Client: Loaded received media: "
<<"\""<<name<<"\". Caching."<<std::endl;
} else{
infostream<<"Client: Failed to load received media: "
<<"\""<<name<<"\". Not caching."<<std::endl;
continue;
}
bool did = fs::CreateAllDirs(getMediaCacheDir());
if(!did){
errorstream<<"Could not create media cache directory"
<<std::endl;
}
{
std::map<std::string, std::string>::iterator n;
n = m_media_name_sha1_map.find(name);
if(n == m_media_name_sha1_map.end())
errorstream<<"The server sent a file that has not "
<<"been announced."<<std::endl;
else
m_media_cache.update_sha1(data);
}
} }
ClientEvent event; if (m_media_downloader->isDone()) {
event.type = CE_TEXTURES_UPDATED; delete m_media_downloader;
m_client_event_queue.push_back(event); m_media_downloader = NULL;
}
} }
else if(command == TOCLIENT_TOOLDEF) else if(command == TOCLIENT_TOOLDEF)
{ {
@ -2118,7 +1964,7 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
m_client_event_queue.push_back(event); m_client_event_queue.push_back(event);
} }
else if(command == TOCLIENT_HUDCHANGE) else if(command == TOCLIENT_HUDCHANGE)
{ {
std::string sdata; std::string sdata;
v2f v2fdata; v2f v2fdata;
u32 intdata = 0; u32 intdata = 0;
@ -2147,7 +1993,7 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id)
m_client_event_queue.push_back(event); m_client_event_queue.push_back(event);
} }
else if(command == TOCLIENT_HUD_SET_FLAGS) else if(command == TOCLIENT_HUD_SET_FLAGS)
{ {
std::string datastring((char *)&data[2], datasize - 2); std::string datastring((char *)&data[2], datasize - 2);
std::istringstream is(datastring, std::ios_base::binary); std::istringstream is(datastring, std::ios_base::binary);
@ -2256,7 +2102,7 @@ void Client::sendNodemetaFields(v3s16 p, const std::string &formname,
Send(0, data, true); Send(0, data, true);
} }
void Client::sendInventoryFields(const std::string &formname, void Client::sendInventoryFields(const std::string &formname,
const std::map<std::string, std::string> &fields) const std::map<std::string, std::string> &fields)
{ {
std::ostringstream os(std::ios_base::binary); std::ostringstream os(std::ios_base::binary);
@ -2460,7 +2306,7 @@ void Client::sendPlayerPos()
writeV3S32(&data[2], position); writeV3S32(&data[2], position);
writeV3S32(&data[2+12], speed); writeV3S32(&data[2+12], speed);
writeS32(&data[2+12+12], pitch); writeS32(&data[2+12+12], pitch);
writeS32(&data[2+12+12+4], yaw); writeS32(&data[2+12+12+4], yaw);
writeU32(&data[2+12+12+4+4], keyPressed); writeU32(&data[2+12+12+4+4], keyPressed);
// Send as unreliable // Send as unreliable
Send(0, data, false); Send(0, data, false);
@ -2512,7 +2358,7 @@ void Client::removeNode(v3s16 p)
} }
} }
void Client::addNode(v3s16 p, MapNode n) void Client::addNode(v3s16 p, MapNode n, bool remove_metadata)
{ {
TimeTaker timer1("Client::addNode()"); TimeTaker timer1("Client::addNode()");
@ -2521,7 +2367,7 @@ void Client::addNode(v3s16 p, MapNode n)
try try
{ {
//TimeTaker timer3("Client::addNode(): addNodeAndUpdate"); //TimeTaker timer3("Client::addNode(): addNodeAndUpdate");
m_env.getMap().addNodeAndUpdate(p, n, modified_blocks); m_env.getMap().addNodeAndUpdate(p, n, modified_blocks, remove_metadata);
} }
catch(InvalidPositionException &e) catch(InvalidPositionException &e)
{} {}
@ -2878,6 +2724,14 @@ ClientEvent Client::getClientEvent()
return m_client_event_queue.pop_front(); return m_client_event_queue.pop_front();
} }
float Client::mediaReceiveProgress()
{
if (m_media_downloader)
return m_media_downloader->getProgress();
else
return 1.0; // downloader only exists when not yet done
}
void draw_load_screen(const std::wstring &text, void draw_load_screen(const std::wstring &text,
IrrlichtDevice* device, gui::IGUIFont* font, IrrlichtDevice* device, gui::IGUIFont* font,
float dtime=0 ,int percent=0, bool clouds=true); float dtime=0 ,int percent=0, bool clouds=true);
@ -2886,12 +2740,8 @@ void Client::afterContentReceived(IrrlichtDevice *device, gui::IGUIFont* font)
infostream<<"Client::afterContentReceived() started"<<std::endl; infostream<<"Client::afterContentReceived() started"<<std::endl;
assert(m_itemdef_received); assert(m_itemdef_received);
assert(m_nodedef_received); assert(m_nodedef_received);
assert(texturesReceived()); assert(mediaReceived());
// remove the information about which checksum each texture
// ought to have
m_media_name_sha1_map.clear();
// Rebuild inherited images and recreate textures // Rebuild inherited images and recreate textures
infostream<<"- Rebuilding images and textures"<<std::endl; infostream<<"- Rebuilding images and textures"<<std::endl;
m_tsrc->rebuildImagesAndTextures(); m_tsrc->rebuildImagesAndTextures();

View File

@ -31,32 +31,21 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "clientobject.h" #include "clientobject.h"
#include "gamedef.h" #include "gamedef.h"
#include "inventorymanager.h" #include "inventorymanager.h"
#include "filecache.h"
#include "localplayer.h" #include "localplayer.h"
#include "server.h" #include "hud.h"
#include "particles.h" #include "particles.h"
#include "util/pointedthing.h"
#include <algorithm>
struct MeshMakeData; struct MeshMakeData;
class MapBlockMesh; class MapBlockMesh;
class IGameDef;
class IWritableTextureSource; class IWritableTextureSource;
class IWritableShaderSource; class IWritableShaderSource;
class IWritableItemDefManager; class IWritableItemDefManager;
class IWritableNodeDefManager; class IWritableNodeDefManager;
//class IWritableCraftDefManager; //class IWritableCraftDefManager;
class ClientEnvironment; class ClientMediaDownloader;
struct MapDrawControl; struct MapDrawControl;
class MtEventManager; class MtEventManager;
struct PointedThing;
class ClientNotReadyException : public BaseException
{
public:
ClientNotReadyException(const char *s):
BaseException(s)
{}
};
struct QueuedMeshUpdate struct QueuedMeshUpdate
{ {
@ -114,7 +103,7 @@ struct MeshUpdateResult
} }
}; };
class MeshUpdateThread : public SimpleThread class MeshUpdateThread : public JThread
{ {
public: public:
@ -132,31 +121,12 @@ public:
IGameDef *m_gamedef; IGameDef *m_gamedef;
}; };
class MediaFetchThread : public SimpleThread
{
public:
MediaFetchThread(IGameDef *gamedef):
m_gamedef(gamedef)
{
}
void * Thread();
std::list<MediaRequest> m_file_requests;
MutexedQueue<std::pair<std::string, std::string> > m_file_data;
std::list<MediaRequest> m_failed;
std::string m_remote_url;
IGameDef *m_gamedef;
};
enum ClientEventType enum ClientEventType
{ {
CE_NONE, CE_NONE,
CE_PLAYER_DAMAGE, CE_PLAYER_DAMAGE,
CE_PLAYER_FORCE_MOVE, CE_PLAYER_FORCE_MOVE,
CE_DEATHSCREEN, CE_DEATHSCREEN,
CE_TEXTURES_UPDATED,
CE_SHOW_FORMSPEC, CE_SHOW_FORMSPEC,
CE_SPAWN_PARTICLE, CE_SPAWN_PARTICLE,
CE_ADD_PARTICLESPAWNER, CE_ADD_PARTICLESPAWNER,
@ -365,7 +335,7 @@ public:
// Causes urgent mesh updates (unlike Map::add/removeNodeWithEvent) // Causes urgent mesh updates (unlike Map::add/removeNodeWithEvent)
void removeNode(v3s16 p); void removeNode(v3s16 p);
void addNode(v3s16 p, MapNode n); void addNode(v3s16 p, MapNode n, bool remove_metadata = true);
void setPlayerControl(PlayerControl &control); void setPlayerControl(PlayerControl &control);
@ -426,19 +396,15 @@ public:
std::wstring accessDeniedReason() std::wstring accessDeniedReason()
{ return m_access_denied_reason; } { return m_access_denied_reason; }
float mediaReceiveProgress()
{
if (!m_media_receive_started) return 0;
return 1.0 * m_media_received_count / m_media_count;
}
bool texturesReceived()
{ return m_media_receive_started && m_media_received_count == m_media_count; }
bool itemdefReceived() bool itemdefReceived()
{ return m_itemdef_received; } { return m_itemdef_received; }
bool nodedefReceived() bool nodedefReceived()
{ return m_nodedef_received; } { return m_nodedef_received; }
bool mediaReceived()
{ return m_media_downloader == NULL; }
float mediaReceiveProgress();
void afterContentReceived(IrrlichtDevice *device, gui::IGUIFont* font); void afterContentReceived(IrrlichtDevice *device, gui::IGUIFont* font);
float getRTT(void); float getRTT(void);
@ -455,12 +421,15 @@ public:
virtual bool checkLocalPrivilege(const std::string &priv) virtual bool checkLocalPrivilege(const std::string &priv)
{ return checkPrivilege(priv); } { return checkPrivilege(priv); }
private: // The following set of functions is used by ClientMediaDownloader
// Insert a media file appropriately into the appropriate manager // Insert a media file appropriately into the appropriate manager
bool loadMedia(const std::string &data, const std::string &filename); bool loadMedia(const std::string &data, const std::string &filename);
// Send a request for conventional media transfer
void request_media(const std::list<std::string> &file_requests);
// Send a notification that no conventional media transfer is needed
void received_media();
void request_media(const std::list<MediaRequest> &file_requests); private:
// Virtual methods from con::PeerHandler // Virtual methods from con::PeerHandler
void peerAdded(con::Peer *peer); void peerAdded(con::Peer *peer);
@ -488,7 +457,6 @@ private:
MtEventManager *m_event; MtEventManager *m_event;
MeshUpdateThread m_mesh_update_thread; MeshUpdateThread m_mesh_update_thread;
std::list<MediaFetchThread*> m_media_fetch_threads;
ClientEnvironment m_env; ClientEnvironment m_env;
con::Connection m_con; con::Connection m_con;
IrrlichtDevice *m_device; IrrlichtDevice *m_device;
@ -514,14 +482,9 @@ private:
bool m_access_denied; bool m_access_denied;
std::wstring m_access_denied_reason; std::wstring m_access_denied_reason;
Queue<ClientEvent> m_client_event_queue; Queue<ClientEvent> m_client_event_queue;
FileCache m_media_cache;
// Mapping from media file name to SHA1 checksum
std::map<std::string, std::string> m_media_name_sha1_map;
bool m_media_receive_started;
u32 m_media_count;
u32 m_media_received_count;
bool m_itemdef_received; bool m_itemdef_received;
bool m_nodedef_received; bool m_nodedef_received;
ClientMediaDownloader *m_media_downloader;
// time_of_day speed approximation for old protocol // time_of_day speed approximation for old protocol
bool m_time_of_day_set; bool m_time_of_day_set;

View File

@ -50,9 +50,6 @@ ClientMap::ClientMap(
m_camera_direction(0,0,1), m_camera_direction(0,0,1),
m_camera_fov(M_PI) m_camera_fov(M_PI)
{ {
m_camera_mutex.Init();
assert(m_camera_mutex.IsInitialized());
m_box = core::aabbox3d<f32>(-BS*1000000,-BS*1000000,-BS*1000000, m_box = core::aabbox3d<f32>(-BS*1000000,-BS*1000000,-BS*1000000,
BS*1000000,BS*1000000,BS*1000000); BS*1000000,BS*1000000,BS*1000000);
} }

656
src/clientmedia.cpp Normal file
View File

@ -0,0 +1,656 @@
/*
Minetest
Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "clientmedia.h"
#include "httpfetch.h"
#include "client.h"
#include "clientserver.h"
#include "filecache.h"
#include "hex.h"
#include "sha1.h"
#include "debug.h"
#include "log.h"
#include "porting.h"
#include "settings.h"
#include "main.h"
#include "util/serialize.h"
#include "util/string.h"
static std::string getMediaCacheDir()
{
return porting::path_user + DIR_DELIM + "cache" + DIR_DELIM + "media";
}
/*
ClientMediaDownloader
*/
ClientMediaDownloader::ClientMediaDownloader():
m_media_cache(getMediaCacheDir())
{
m_initial_step_done = false;
m_name_bound = ""; // works because "" is an invalid file name
m_uncached_count = 0;
m_uncached_received_count = 0;
m_httpfetch_caller = HTTPFETCH_DISCARD;
m_httpfetch_active = 0;
m_httpfetch_active_limit = 0;
m_httpfetch_next_id = 0;
m_httpfetch_timeout = 0;
m_outstanding_hash_sets = 0;
}
ClientMediaDownloader::~ClientMediaDownloader()
{
if (m_httpfetch_caller != HTTPFETCH_DISCARD)
httpfetch_caller_free(m_httpfetch_caller);
for (std::map<std::string, FileStatus*>::iterator it = m_files.begin();
it != m_files.end(); ++it)
delete it->second;
for (u32 i = 0; i < m_remotes.size(); ++i)
delete m_remotes[i];
}
void ClientMediaDownloader::addFile(std::string name, std::string sha1)
{
assert(!m_initial_step_done);
// if name was already announced, ignore the new announcement
if (m_files.count(name) != 0) {
errorstream << "Client: ignoring duplicate media announcement "
<< "sent by server: \"" << name << "\""
<< std::endl;
return;
}
// if name is empty or contains illegal characters, ignore the file
if (name.empty() || !string_allowed(name, TEXTURENAME_ALLOWED_CHARS)) {
errorstream << "Client: ignoring illegal file name "
<< "sent by server: \"" << name << "\""
<< std::endl;
return;
}
// length of sha1 must be exactly 20 (160 bits), else ignore the file
if (sha1.size() != 20) {
errorstream << "Client: ignoring illegal SHA1 sent by server: "
<< hex_encode(sha1) << " \"" << name << "\""
<< std::endl;
return;
}
FileStatus *filestatus = new FileStatus;
filestatus->received = false;
filestatus->sha1 = sha1;
filestatus->current_remote = -1;
m_files.insert(std::make_pair(name, filestatus));
}
void ClientMediaDownloader::addRemoteServer(std::string baseurl)
{
assert(!m_initial_step_done);
#ifdef USE_CURL
infostream << "Client: Adding remote server \""
<< baseurl << "\" for media download" << std::endl;
RemoteServerStatus *remote = new RemoteServerStatus;
remote->baseurl = baseurl;
remote->active_count = 0;
remote->request_by_filename = false;
m_remotes.push_back(remote);
#else
infostream << "Client: Ignoring remote server \""
<< baseurl << "\" because cURL support is not compiled in"
<< std::endl;
#endif
}
void ClientMediaDownloader::step(Client *client)
{
if (!m_initial_step_done) {
initialStep(client);
m_initial_step_done = true;
}
// Remote media: check for completion of fetches
if (m_httpfetch_active) {
bool fetched_something = false;
HTTPFetchResult fetchresult;
while (httpfetch_async_get(m_httpfetch_caller, fetchresult)) {
m_httpfetch_active--;
fetched_something = true;
// Is this a hashset (index.mth) or a media file?
if (fetchresult.request_id < m_remotes.size())
remoteHashSetReceived(fetchresult);
else
remoteMediaReceived(fetchresult, client);
}
if (fetched_something)
startRemoteMediaTransfers();
// Did all remote transfers end and no new ones can be started?
// If so, request still missing files from the minetest server
// (Or report that we have all files.)
if (m_httpfetch_active == 0) {
if (m_uncached_received_count < m_uncached_count) {
infostream << "Client: Failed to remote-fetch "
<< (m_uncached_count-m_uncached_received_count)
<< " files. Requesting them"
<< " the usual way." << std::endl;
}
startConventionalTransfers(client);
}
}
}
void ClientMediaDownloader::initialStep(Client *client)
{
// Check media cache
m_uncached_count = m_files.size();
for (std::map<std::string, FileStatus*>::iterator
it = m_files.begin();
it != m_files.end(); ++it) {
std::string name = it->first;
FileStatus *filestatus = it->second;
const std::string &sha1 = filestatus->sha1;
std::ostringstream tmp_os(std::ios_base::binary);
bool found_in_cache = m_media_cache.load(hex_encode(sha1), tmp_os);
// If found in cache, try to load it from there
if (found_in_cache) {
bool success = checkAndLoad(name, sha1,
tmp_os.str(), true, client);
if (success) {
filestatus->received = true;
m_uncached_count--;
}
}
}
assert(m_uncached_received_count == 0);
// Create the media cache dir if we are likely to write to it
if (m_uncached_count != 0) {
bool did = fs::CreateAllDirs(getMediaCacheDir());
if (!did) {
errorstream << "Client: "
<< "Could not create media cache directory: "
<< getMediaCacheDir()
<< std::endl;
}
}
// If we found all files in the cache, report this fact to the server.
// If the server reported no remote servers, immediately start
// conventional transfers. Note: if cURL support is not compiled in,
// m_remotes is always empty, so "!USE_CURL" is redundant but may
// reduce the size of the compiled code
if (!USE_CURL || m_uncached_count == 0 || m_remotes.empty()) {
startConventionalTransfers(client);
}
else {
// Otherwise start off by requesting each server's sha1 set
// This is the first time we use httpfetch, so alloc a caller ID
m_httpfetch_caller = httpfetch_caller_alloc();
m_httpfetch_timeout = g_settings->getS32("curl_timeout");
// Set the active fetch limit to curl_parallel_limit or 84,
// whichever is greater. This gives us some leeway so that
// inefficiencies in communicating with the httpfetch thread
// don't slow down fetches too much. (We still want some limit
// so that when the first remote server returns its hash set,
// not all files are requested from that server immediately.)
// One such inefficiency is that ClientMediaDownloader::step()
// is only called a couple times per second, while httpfetch
// might return responses much faster than that.
// Note that httpfetch strictly enforces curl_parallel_limit
// but at no inter-thread communication cost. This however
// doesn't help with the aforementioned inefficiencies.
// The signifance of 84 is that it is 2*6*9 in base 13.
m_httpfetch_active_limit = g_settings->getS32("curl_parallel_limit");
m_httpfetch_active_limit = MYMAX(m_httpfetch_active_limit, 84);
// Write a list of hashes that we need. This will be POSTed
// to the server using Content-Type: application/octet-stream
std::string required_hash_set = serializeRequiredHashSet();
// minor fixme: this loop ignores m_httpfetch_active_limit
// another minor fixme, unlikely to matter in normal usage:
// these index.mth fetches do (however) count against
// m_httpfetch_active_limit when starting actual media file
// requests, so if there are lots of remote servers that are
// not responding, those will stall new media file transfers.
for (u32 i = 0; i < m_remotes.size(); ++i) {
assert(m_httpfetch_next_id == i);
RemoteServerStatus *remote = m_remotes[i];
actionstream << "Client: Contacting remote server \""
<< remote->baseurl << "\"" << std::endl;
HTTPFetchRequest fetchrequest;
fetchrequest.url =
remote->baseurl + MTHASHSET_FILE_NAME;
fetchrequest.caller = m_httpfetch_caller;
fetchrequest.request_id = m_httpfetch_next_id; // == i
fetchrequest.timeout = m_httpfetch_timeout;
fetchrequest.connect_timeout = m_httpfetch_timeout;
fetchrequest.post_fields = required_hash_set;
fetchrequest.extra_headers.push_back(
"Content-Type: application/octet-stream");
httpfetch_async(fetchrequest);
m_httpfetch_active++;
m_httpfetch_next_id++;
m_outstanding_hash_sets++;
}
}
}
void ClientMediaDownloader::remoteHashSetReceived(
const HTTPFetchResult &fetchresult)
{
u32 remote_id = fetchresult.request_id;
assert(remote_id < m_remotes.size());
RemoteServerStatus *remote = m_remotes[remote_id];
m_outstanding_hash_sets--;
if (fetchresult.succeeded) {
try {
// Server sent a list of file hashes that are
// available on it, try to parse the list
std::set<std::string> sha1_set;
deSerializeHashSet(fetchresult.data, sha1_set);
// Parsing succeeded: For every file that is
// available on this server, add this server
// to the available_remotes array
for(std::map<std::string, FileStatus*>::iterator
it = m_files.upper_bound(m_name_bound);
it != m_files.end(); ++it) {
FileStatus *f = it->second;
if (!f->received && sha1_set.count(f->sha1))
f->available_remotes.push_back(remote_id);
}
}
catch (SerializationError &e) {
infostream << "Client: Remote server \""
<< remote->baseurl << "\" sent invalid hash set: "
<< e.what() << std::endl;
}
}
// For compatibility: If index.mth is not found, assume that the
// server contains files named like the original files (not their sha1)
if (!fetchresult.succeeded && !fetchresult.timeout &&
fetchresult.response_code == 404) {
infostream << "Client: Enabling compatibility mode for remote "
<< "server \"" << remote->baseurl << "\"" << std::endl;
remote->request_by_filename = true;
// Assume every file is available on this server
for(std::map<std::string, FileStatus*>::iterator
it = m_files.upper_bound(m_name_bound);
it != m_files.end(); ++it) {
FileStatus *f = it->second;
if (!f->received)
f->available_remotes.push_back(remote_id);
}
}
}
void ClientMediaDownloader::remoteMediaReceived(
const HTTPFetchResult &fetchresult,
Client *client)
{
// Some remote server sent us a file.
// -> decrement number of active fetches
// -> mark file as received if fetch succeeded
// -> try to load media
std::string name;
{
std::map<unsigned long, std::string>::iterator it =
m_remote_file_transfers.find(fetchresult.request_id);
assert(it != m_remote_file_transfers.end());
name = it->second;
m_remote_file_transfers.erase(it);
}
assert(m_files.count(name) != 0);
FileStatus *filestatus = m_files[name];
assert(!filestatus->received);
assert(filestatus->current_remote >= 0);
RemoteServerStatus *remote = m_remotes[filestatus->current_remote];
filestatus->current_remote = -1;
remote->active_count--;
// If fetch succeeded, try to load media file
if (fetchresult.succeeded) {
bool success = checkAndLoad(name, filestatus->sha1,
fetchresult.data, false, client);
if (success) {
filestatus->received = true;
assert(m_uncached_received_count < m_uncached_count);
m_uncached_received_count++;
}
}
}
s32 ClientMediaDownloader::selectRemoteServer(FileStatus *filestatus)
{
assert(filestatus != NULL);
assert(!filestatus->received);
assert(filestatus->current_remote < 0);
if (filestatus->available_remotes.empty())
return -1;
else {
// Of all servers that claim to provide the file (and haven't
// been unsuccessfully tried before), find the one with the
// smallest number of currently active transfers
s32 best = 0;
s32 best_remote_id = filestatus->available_remotes[best];
s32 best_active_count = m_remotes[best_remote_id]->active_count;
for (u32 i = 1; i < filestatus->available_remotes.size(); ++i) {
s32 remote_id = filestatus->available_remotes[i];
s32 active_count = m_remotes[remote_id]->active_count;
if (active_count < best_active_count) {
best = i;
best_remote_id = remote_id;
best_active_count = active_count;
}
}
filestatus->available_remotes.erase(
filestatus->available_remotes.begin() + best);
return best_remote_id;
}
}
void ClientMediaDownloader::startRemoteMediaTransfers()
{
bool changing_name_bound = true;
for (std::map<std::string, FileStatus*>::iterator
files_iter = m_files.upper_bound(m_name_bound);
files_iter != m_files.end(); ++files_iter) {
// Abort if active fetch limit is exceeded
if (m_httpfetch_active >= m_httpfetch_active_limit)
break;
const std::string &name = files_iter->first;
FileStatus *filestatus = files_iter->second;
if (!filestatus->received && filestatus->current_remote < 0) {
// File has not been received yet and is not currently
// being transferred. Choose a server for it.
s32 remote_id = selectRemoteServer(filestatus);
if (remote_id >= 0) {
// Found a server, so start fetching
RemoteServerStatus *remote =
m_remotes[remote_id];
std::string url = remote->baseurl +
(remote->request_by_filename ? name :
hex_encode(filestatus->sha1));
verbosestream << "Client: "
<< "Requesting remote media file "
<< "\"" << name << "\" "
<< "\"" << url << "\"" << std::endl;
HTTPFetchRequest fetchrequest;
fetchrequest.url = url;
fetchrequest.caller = m_httpfetch_caller;
fetchrequest.request_id = m_httpfetch_next_id;
fetchrequest.timeout = 0; // no data timeout!
fetchrequest.connect_timeout =
m_httpfetch_timeout;
httpfetch_async(fetchrequest);
m_remote_file_transfers.insert(std::make_pair(
m_httpfetch_next_id,
name));
filestatus->current_remote = remote_id;
remote->active_count++;
m_httpfetch_active++;
m_httpfetch_next_id++;
}
}
if (filestatus->received ||
(filestatus->current_remote < 0 &&
!m_outstanding_hash_sets)) {
// If we arrive here, we conclusively know that we
// won't fetch this file from a remote server in the
// future. So update the name bound if possible.
if (changing_name_bound)
m_name_bound = name;
}
else
changing_name_bound = false;
}
}
void ClientMediaDownloader::startConventionalTransfers(Client *client)
{
assert(m_httpfetch_active == 0);
if (m_uncached_received_count == m_uncached_count) {
// In this case all media was found in the cache or
// has been downloaded from some remote server;
// report this fact to the server
client->received_media();
}
else {
// Some media files have not been received yet, use the
// conventional slow method (minetest protocol) to get them
std::list<std::string> file_requests;
for (std::map<std::string, FileStatus*>::iterator
it = m_files.begin();
it != m_files.end(); ++it) {
if (!it->second->received)
file_requests.push_back(it->first);
}
assert((s32) file_requests.size() ==
m_uncached_count - m_uncached_received_count);
client->request_media(file_requests);
}
}
void ClientMediaDownloader::conventionalTransferDone(
const std::string &name,
const std::string &data,
Client *client)
{
// Check that file was announced
std::map<std::string, FileStatus*>::iterator
file_iter = m_files.find(name);
if (file_iter == m_files.end()) {
errorstream << "Client: server sent media file that was"
<< "not announced, ignoring it: \"" << name << "\""
<< std::endl;
return;
}
FileStatus *filestatus = file_iter->second;
assert(filestatus != NULL);
// Check that file hasn't already been received
if (filestatus->received) {
errorstream << "Client: server sent media file that we already"
<< "received, ignoring it: \"" << name << "\""
<< std::endl;
return;
}
// Mark file as received, regardless of whether loading it works and
// whether the checksum matches (because at this point there is no
// other server that could send a replacement)
filestatus->received = true;
assert(m_uncached_received_count < m_uncached_count);
m_uncached_received_count++;
// Check that received file matches announced checksum
// If so, load it
checkAndLoad(name, filestatus->sha1, data, false, client);
}
bool ClientMediaDownloader::checkAndLoad(
const std::string &name, const std::string &sha1,
const std::string &data, bool is_from_cache, Client *client)
{
const char *cached_or_received = is_from_cache ? "cached" : "received";
const char *cached_or_received_uc = is_from_cache ? "Cached" : "Received";
std::string sha1_hex = hex_encode(sha1);
// Compute actual checksum of data
std::string data_sha1;
{
SHA1 data_sha1_calculator;
data_sha1_calculator.addBytes(data.c_str(), data.size());
unsigned char *data_tmpdigest = data_sha1_calculator.getDigest();
data_sha1.assign((char*) data_tmpdigest, 20);
free(data_tmpdigest);
}
// Check that received file matches announced checksum
if (data_sha1 != sha1) {
std::string data_sha1_hex = hex_encode(data_sha1);
infostream << "Client: "
<< cached_or_received_uc << " media file "
<< sha1_hex << " \"" << name << "\" "
<< "mismatches actual checksum " << data_sha1_hex
<< std::endl;
return false;
}
// Checksum is ok, try loading the file
bool success = client->loadMedia(data, name);
if (!success) {
infostream << "Client: "
<< "Failed to load " << cached_or_received << " media: "
<< sha1_hex << " \"" << name << "\""
<< std::endl;
return false;
}
verbosestream << "Client: "
<< "Loaded " << cached_or_received << " media: "
<< sha1_hex << " \"" << name << "\""
<< std::endl;
// Update cache (unless we just loaded the file from the cache)
if (!is_from_cache)
m_media_cache.update(sha1_hex, data);
return true;
}
/*
Minetest Hashset File Format
All values are stored in big-endian byte order.
[u32] signature: 'MTHS'
[u16] version: 1
For each hash in set:
[u8*20] SHA1 hash
Version changes:
1 - Initial version
*/
std::string ClientMediaDownloader::serializeRequiredHashSet()
{
std::ostringstream os(std::ios::binary);
writeU32(os, MTHASHSET_FILE_SIGNATURE); // signature
writeU16(os, 1); // version
// Write list of hashes of files that have not been
// received (found in cache) yet
for (std::map<std::string, FileStatus*>::iterator
it = m_files.begin();
it != m_files.end(); ++it) {
if (!it->second->received) {
assert(it->second->sha1.size() == 20);
os << it->second->sha1;
}
}
return os.str();
}
void ClientMediaDownloader::deSerializeHashSet(const std::string &data,
std::set<std::string> &result)
{
if (data.size() < 6 || data.size() % 20 != 6) {
throw SerializationError(
"ClientMediaDownloader::deSerializeHashSet: "
"invalid hash set file size");
}
const u8 *data_cstr = (const u8*) data.c_str();
u32 signature = readU32(&data_cstr[0]);
if (signature != MTHASHSET_FILE_SIGNATURE) {
throw SerializationError(
"ClientMediaDownloader::deSerializeHashSet: "
"invalid hash set file signature");
}
u16 version = readU16(&data_cstr[4]);
if (version != 1) {
throw SerializationError(
"ClientMediaDownloader::deSerializeHashSet: "
"unsupported hash set file version");
}
for (u32 pos = 6; pos < data.size(); pos += 20) {
result.insert(data.substr(pos, 20));
}
}

150
src/clientmedia.h Normal file
View File

@ -0,0 +1,150 @@
/*
Minetest
Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef CLIENTMEDIA_HEADER
#define CLIENTMEDIA_HEADER
#include "irrlichttypes.h"
#include "filecache.h"
#include <ostream>
#include <map>
#include <set>
#include <vector>
class Client;
struct HTTPFetchResult;
#define MTHASHSET_FILE_SIGNATURE 0x4d544853 // 'MTHS'
#define MTHASHSET_FILE_NAME "index.mth"
class ClientMediaDownloader
{
public:
ClientMediaDownloader();
~ClientMediaDownloader();
float getProgress() const {
if (m_uncached_count >= 1)
return 1.0 * m_uncached_received_count /
m_uncached_count;
else
return 0.0;
}
bool isStarted() const {
return m_initial_step_done;
}
// If this returns true, the downloader is done and can be deleted
bool isDone() const {
return m_initial_step_done &&
m_uncached_received_count == m_uncached_count;
}
// Add a file to the list of required file (but don't fetch it yet)
void addFile(std::string name, std::string sha1);
// Add a remote server to the list; ignored if not built with cURL
void addRemoteServer(std::string baseurl);
// Steps the media downloader:
// - May load media into client by calling client->loadMedia()
// - May check media cache for files
// - May add files to media cache
// - May start remote transfers by calling httpfetch_async
// - May check for completion of current remote transfers
// - May start conventional transfers by calling client->request_media()
// - May inform server that all media has been loaded
// by calling client->received_media()
// After step has been called once, don't call addFile/addRemoteServer.
void step(Client *client);
// Must be called for each file received through TOCLIENT_MEDIA
void conventionalTransferDone(
const std::string &name,
const std::string &data,
Client *client);
private:
struct FileStatus {
bool received;
std::string sha1;
s32 current_remote;
std::vector<s32> available_remotes;
};
struct RemoteServerStatus {
std::string baseurl;
s32 active_count;
bool request_by_filename;
};
void initialStep(Client *client);
void remoteHashSetReceived(const HTTPFetchResult &fetchresult);
void remoteMediaReceived(const HTTPFetchResult &fetchresult,
Client *client);
s32 selectRemoteServer(FileStatus *filestatus);
void startRemoteMediaTransfers();
void startConventionalTransfers(Client *client);
bool checkAndLoad(const std::string &name, const std::string &sha1,
const std::string &data, bool is_from_cache,
Client *client);
std::string serializeRequiredHashSet();
static void deSerializeHashSet(const std::string &data,
std::set<std::string> &result);
// Maps filename to file status
std::map<std::string, FileStatus*> m_files;
// Array of remote media servers
std::vector<RemoteServerStatus*> m_remotes;
// Filesystem-based media cache
FileCache m_media_cache;
// Has an attempt been made to load media files from the file cache?
// Have hash sets been requested from remote servers?
bool m_initial_step_done;
// Total number of media files to load
s32 m_uncached_count;
// Number of media files that have been received
s32 m_uncached_received_count;
// Status of remote transfers
unsigned long m_httpfetch_caller;
unsigned long m_httpfetch_next_id;
long m_httpfetch_timeout;
s32 m_httpfetch_active;
s32 m_httpfetch_active_limit;
s32 m_outstanding_hash_sets;
std::map<unsigned long, std::string> m_remote_file_transfers;
// All files up to this name have either been received from a
// remote server or failed on all remote servers, so those files
// don't need to be looked at again
// (use m_files.upper_bound(m_name_bound) to get an iterator)
std::string m_name_bound;
};
#endif // !CLIENTMEDIA_HEADER

View File

@ -102,7 +102,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
added to object properties added to object properties
*/ */
#define LATEST_PROTOCOL_VERSION 21 #define LATEST_PROTOCOL_VERSION 22
// Server's supported network protocol range // Server's supported network protocol range
#define SERVER_PROTOCOL_VERSION_MIN 13 #define SERVER_PROTOCOL_VERSION_MIN 13
@ -139,6 +139,12 @@ enum ToClientCommand
TOCLIENT_BLOCKDATA = 0x20, //TODO: Multiple blocks TOCLIENT_BLOCKDATA = 0x20, //TODO: Multiple blocks
TOCLIENT_ADDNODE = 0x21, TOCLIENT_ADDNODE = 0x21,
/*
u16 command
v3s16 position
serialized mapnode
u8 keep_metadata // Added in protocol version 22
*/
TOCLIENT_REMOVENODE = 0x22, TOCLIENT_REMOVENODE = 0x22,
TOCLIENT_PLAYERPOS = 0x23, // Obsolete TOCLIENT_PLAYERPOS = 0x23, // Obsolete

View File

@ -12,13 +12,14 @@
#define CMAKE_USE_FREETYPE @USE_FREETYPE@ #define CMAKE_USE_FREETYPE @USE_FREETYPE@
#define CMAKE_STATIC_SHAREDIR "@SHAREDIR@" #define CMAKE_STATIC_SHAREDIR "@SHAREDIR@"
#define CMAKE_USE_LEVELDB @USE_LEVELDB@ #define CMAKE_USE_LEVELDB @USE_LEVELDB@
#define CMAKE_USE_LUAJIT @USE_LUAJIT@
#ifdef NDEBUG #ifdef NDEBUG
#define CMAKE_BUILD_TYPE "Release" #define CMAKE_BUILD_TYPE "Release"
#else #else
#define CMAKE_BUILD_TYPE "Debug" #define CMAKE_BUILD_TYPE "Debug"
#endif #endif
#define CMAKE_BUILD_INFO "VER=@VERSION_STRING@ BUILD_TYPE="CMAKE_BUILD_TYPE" RUN_IN_PLACE=@RUN_IN_PLACE@ USE_GETTEXT=@USE_GETTEXT@ USE_SOUND=@USE_SOUND@ STATIC_SHAREDIR=@SHAREDIR@" #define CMAKE_BUILD_INFO "BUILD_TYPE="CMAKE_BUILD_TYPE" RUN_IN_PLACE=@RUN_IN_PLACE@ USE_GETTEXT=@USE_GETTEXT@ USE_SOUND=@USE_SOUND@ USE_CURL=@USE_CURL@ USE_FREETYPE=@USE_FREETYPE@ USE_LUAJIT=@USE_LUAJIT@ STATIC_SHAREDIR=@SHAREDIR@"
#endif #endif

View File

@ -0,0 +1,10 @@
// Filled in by the build system
// Separated from cmake_config.h to avoid excessive rebuilds on every commit
#ifndef CMAKE_CONFIG_GITHASH_H
#define CMAKE_CONFIG_GITHASH_H
#define CMAKE_VERSION_GITHASH "@VERSION_GITHASH@"
#endif

View File

@ -7,22 +7,19 @@
#define CONFIG_H #define CONFIG_H
#define PROJECT_NAME "Minetest" #define PROJECT_NAME "Minetest"
#define VERSION_STRING "unknown"
#define RUN_IN_PLACE 0 #define RUN_IN_PLACE 0
#define USE_GETTEXT 0 #define USE_GETTEXT 0
#define USE_SOUND 0 #define USE_SOUND 0
#define USE_CURL 0 #define USE_CURL 0
#define USE_FREETYPE 0 #define USE_FREETYPE 0
#define STATIC_SHAREDIR "" #define STATIC_SHAREDIR ""
#define BUILD_INFO "non-cmake"
#define USE_LEVELDB 0 #define USE_LEVELDB 0
#define USE_LUAJIT 0
#ifdef USE_CMAKE_CONFIG_H #ifdef USE_CMAKE_CONFIG_H
#include "cmake_config.h" #include "cmake_config.h"
#undef PROJECT_NAME #undef PROJECT_NAME
#define PROJECT_NAME CMAKE_PROJECT_NAME #define PROJECT_NAME CMAKE_PROJECT_NAME
#undef VERSION_STRING
#define VERSION_STRING CMAKE_VERSION_STRING
#undef RUN_IN_PLACE #undef RUN_IN_PLACE
#define RUN_IN_PLACE CMAKE_RUN_IN_PLACE #define RUN_IN_PLACE CMAKE_RUN_IN_PLACE
#undef USE_GETTEXT #undef USE_GETTEXT
@ -35,10 +32,10 @@
#define USE_FREETYPE CMAKE_USE_FREETYPE #define USE_FREETYPE CMAKE_USE_FREETYPE
#undef STATIC_SHAREDIR #undef STATIC_SHAREDIR
#define STATIC_SHAREDIR CMAKE_STATIC_SHAREDIR #define STATIC_SHAREDIR CMAKE_STATIC_SHAREDIR
#undef BUILD_INFO
#define BUILD_INFO CMAKE_BUILD_INFO
#undef USE_LEVELDB #undef USE_LEVELDB
#define USE_LEVELDB CMAKE_USE_LEVELDB #define USE_LEVELDB CMAKE_USE_LEVELDB
#undef USE_LUAJIT
#define USE_LUAJIT CMAKE_USE_LUAJIT
#endif #endif
#endif #endif

View File

@ -556,7 +556,7 @@ Connection::Connection(u32 protocol_id, u32 max_packet_size, float timeout,
Connection::~Connection() Connection::~Connection()
{ {
stop(); Stop();
// Delete peers // Delete peers
for(std::map<u16, Peer*>::iterator for(std::map<u16, Peer*>::iterator
j = m_peers.begin(); j = m_peers.begin();
@ -578,7 +578,7 @@ void * Connection::Thread()
u32 curtime = porting::getTimeMs(); u32 curtime = porting::getTimeMs();
u32 lasttime = curtime; u32 lasttime = curtime;
while(getRun()) while(!StopRequested())
{ {
BEGIN_DEBUG_EXCEPTION_HANDLER BEGIN_DEBUG_EXCEPTION_HANDLER

View File

@ -450,11 +450,11 @@ struct ConnectionEvent
return "CONNEVENT_NONE"; return "CONNEVENT_NONE";
case CONNEVENT_DATA_RECEIVED: case CONNEVENT_DATA_RECEIVED:
return "CONNEVENT_DATA_RECEIVED"; return "CONNEVENT_DATA_RECEIVED";
case CONNEVENT_PEER_ADDED: case CONNEVENT_PEER_ADDED:
return "CONNEVENT_PEER_ADDED"; return "CONNEVENT_PEER_ADDED";
case CONNEVENT_PEER_REMOVED: case CONNEVENT_PEER_REMOVED:
return "CONNEVENT_PEER_REMOVED"; return "CONNEVENT_PEER_REMOVED";
case CONNEVENT_BIND_FAILED: case CONNEVENT_BIND_FAILED:
return "CONNEVENT_BIND_FAILED"; return "CONNEVENT_BIND_FAILED";
} }
return "Invalid ConnectionEvent"; return "Invalid ConnectionEvent";
@ -544,7 +544,7 @@ struct ConnectionCommand
} }
}; };
class Connection: public SimpleThread class Connection: public JThread
{ {
public: public:
Connection(u32 protocol_id, u32 max_packet_size, float timeout, bool ipv6); Connection(u32 protocol_id, u32 max_packet_size, float timeout, bool ipv6);

View File

@ -25,7 +25,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "content_sao.h" #include "content_sao.h"
#include "settings.h" #include "settings.h"
#include "mapblock.h" // For getNodeBlockPos #include "mapblock.h" // For getNodeBlockPos
#include "treegen.h" // For treegen::make_tree
#include "main.h" // for g_settings #include "main.h" // for g_settings
#include "map.h" #include "map.h"
#include "scripting_game.h" #include "scripting_game.h"
@ -33,141 +32,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")" #define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")"
class GrowGrassABM : public ActiveBlockModifier
{
private:
public:
virtual std::set<std::string> getTriggerContents()
{
std::set<std::string> s;
s.insert("mapgen_dirt");
return s;
}
virtual float getTriggerInterval()
{ return 2.0; }
virtual u32 getTriggerChance()
{ return 200; }
virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n)
{
INodeDefManager *ndef = env->getGameDef()->ndef();
ServerMap *map = &env->getServerMap();
MapNode n_top = map->getNodeNoEx(p+v3s16(0,1,0));
content_t c_snow = ndef->getId("snow");
if(ndef->get(n_top).light_propagates &&
!ndef->get(n_top).isLiquid() &&
n_top.getLightBlend(env->getDayNightRatio(), ndef) >= 13)
{
if(c_snow != CONTENT_IGNORE && n_top.getContent() == c_snow)
n.setContent(ndef->getId("dirt_with_snow"));
else
n.setContent(ndef->getId("mapgen_dirt_with_grass"));
map->addNodeWithEvent(p, n);
}
}
};
class RemoveGrassABM : public ActiveBlockModifier
{
private:
public:
virtual std::set<std::string> getTriggerContents()
{
std::set<std::string> s;
s.insert("mapgen_dirt_with_grass");
return s;
}
virtual float getTriggerInterval()
{ return 2.0; }
virtual u32 getTriggerChance()
{ return 20; }
virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n)
{
INodeDefManager *ndef = env->getGameDef()->ndef();
ServerMap *map = &env->getServerMap();
MapNode n_top = map->getNodeNoEx(p+v3s16(0,1,0));
if((!ndef->get(n_top).light_propagates &&
n_top.getContent() != CONTENT_IGNORE) ||
ndef->get(n_top).isLiquid())
{
n.setContent(ndef->getId("mapgen_dirt"));
map->addNodeWithEvent(p, n);
}
}
};
class MakeTreesFromSaplingsABM : public ActiveBlockModifier
{
private:
content_t c_junglesapling;
public:
MakeTreesFromSaplingsABM(ServerEnvironment *env, INodeDefManager *nodemgr) {
c_junglesapling = nodemgr->getId("junglesapling");
}
virtual std::set<std::string> getTriggerContents()
{
std::set<std::string> s;
s.insert("sapling");
s.insert("junglesapling");
return s;
}
virtual float getTriggerInterval()
{ return 10.0; }
virtual u32 getTriggerChance()
{ return 50; }
virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n,
u32 active_object_count, u32 active_object_count_wider)
{
INodeDefManager *ndef = env->getGameDef()->ndef();
ServerMap *map = &env->getServerMap();
MapNode n_below = map->getNodeNoEx(p - v3s16(0, 1, 0));
if (!((ItemGroupList) ndef->get(n_below).groups)["soil"])
return;
bool is_jungle_tree = n.getContent() == c_junglesapling;
actionstream <<"A " << (is_jungle_tree ? "jungle " : "")
<< "sapling grows into a tree at "
<< PP(p) << std::endl;
std::map<v3s16, MapBlock*> modified_blocks;
v3s16 tree_p = p;
ManualMapVoxelManipulator vmanip(map);
v3s16 tree_blockp = getNodeBlockPos(tree_p);
vmanip.initialEmerge(tree_blockp - v3s16(1,1,1), tree_blockp + v3s16(1,1,1));
if (is_jungle_tree) {
treegen::make_jungletree(vmanip, tree_p, ndef, myrand());
} else {
bool is_apple_tree = myrand() % 4 == 0;
treegen::make_tree(vmanip, tree_p, is_apple_tree, ndef, myrand());
}
vmanip.blitBackAll(&modified_blocks);
// update lighting
std::map<v3s16, MapBlock*> lighting_modified_blocks;
lighting_modified_blocks.insert(modified_blocks.begin(), modified_blocks.end());
map->updateLighting(lighting_modified_blocks, modified_blocks);
// Send a MEET_OTHER event
MapEditEvent event;
event.type = MEET_OTHER;
// event.modified_blocks.insert(modified_blocks.begin(), modified_blocks.end());
for(std::map<v3s16, MapBlock*>::iterator
i = modified_blocks.begin();
i != modified_blocks.end(); ++i)
{
event.modified_blocks.insert(i->first);
}
map->dispatchEvent(&event);
}
};
class LiquidFlowABM : public ActiveBlockModifier { class LiquidFlowABM : public ActiveBlockModifier {
private: private:
std::set<std::string> contents; std::set<std::string> contents;
@ -209,7 +73,7 @@ class LiquidDropABM : public ActiveBlockModifier {
{ return contents; } { return contents; }
virtual std::set<std::string> getRequiredNeighbors() { virtual std::set<std::string> getRequiredNeighbors() {
std::set<std::string> neighbors; std::set<std::string> neighbors;
neighbors.insert("mapgen_air"); neighbors.insert("air");
return neighbors; return neighbors;
} }
virtual float getTriggerInterval() virtual float getTriggerInterval()
@ -241,7 +105,7 @@ class LiquidFreeze : public ActiveBlockModifier {
} }
virtual std::set<std::string> getRequiredNeighbors() { virtual std::set<std::string> getRequiredNeighbors() {
std::set<std::string> s; std::set<std::string> s;
s.insert("mapgen_air"); s.insert("air");
s.insert("group:melts"); s.insert("group:melts");
return s; return s;
} }
@ -303,7 +167,7 @@ class LiquidMeltWeather : public ActiveBlockModifier {
} }
virtual std::set<std::string> getRequiredNeighbors() { virtual std::set<std::string> getRequiredNeighbors() {
std::set<std::string> s; std::set<std::string> s;
s.insert("mapgen_air"); s.insert("air");
s.insert("group:freezes"); s.insert("group:freezes");
return s; return s;
} }
@ -370,9 +234,6 @@ class LiquidMeltAround : public LiquidMeltHot {
*/ */
void add_legacy_abms(ServerEnvironment *env, INodeDefManager *nodedef) { void add_legacy_abms(ServerEnvironment *env, INodeDefManager *nodedef) {
env->addActiveBlockModifier(new GrowGrassABM());
env->addActiveBlockModifier(new RemoveGrassABM());
env->addActiveBlockModifier(new MakeTreesFromSaplingsABM(env, nodedef));
if (g_settings->getBool("liquid_finite")) { if (g_settings->getBool("liquid_finite")) {
env->addActiveBlockModifier(new LiquidFlowABM(env, nodedef)); env->addActiveBlockModifier(new LiquidFlowABM(env, nodedef));
env->addActiveBlockModifier(new LiquidDropABM(env, nodedef)); env->addActiveBlockModifier(new LiquidDropABM(env, nodedef));

View File

@ -1649,6 +1649,8 @@ public:
m_acceleration = readV3F1000(is); m_acceleration = readV3F1000(is);
if(fabs(m_prop.automatic_rotate) < 0.001) if(fabs(m_prop.automatic_rotate) < 0.001)
m_yaw = readF1000(is); m_yaw = readF1000(is);
else
readF1000(is);
bool do_interpolate = readU8(is); bool do_interpolate = readU8(is);
bool is_end_position = readU8(is); bool is_end_position = readU8(is);
float update_interval = readF1000(is); float update_interval = readF1000(is);
@ -1693,12 +1695,18 @@ public:
float override_speed = readF1000(is); float override_speed = readF1000(is);
float override_jump = readF1000(is); float override_jump = readF1000(is);
float override_gravity = readF1000(is); float override_gravity = readF1000(is);
// these are sent inverted so we get true when the server sends nothing
bool sneak = !readU8(is);
bool sneak_glitch = !readU8(is);
if(m_is_local_player) if(m_is_local_player)
{ {
LocalPlayer *player = m_env->getLocalPlayer(); LocalPlayer *player = m_env->getLocalPlayer();
player->physics_override_speed = override_speed; player->physics_override_speed = override_speed;
player->physics_override_jump = override_jump; player->physics_override_jump = override_jump;
player->physics_override_gravity = override_gravity; player->physics_override_gravity = override_gravity;
player->physics_override_sneak = sneak;
player->physics_override_sneak_glitch = sneak_glitch;
} }
} }
else if(cmd == GENERIC_CMD_SET_ANIMATION) else if(cmd == GENERIC_CMD_SET_ANIMATION)

View File

@ -395,7 +395,7 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
l = getInteriorLight(n, 0, data); l = getInteriorLight(n, 0, data);
video::SColor c = MapBlock_LightColor(f.alpha, l, decode_light(f.light_source)); video::SColor c = MapBlock_LightColor(f.alpha, l, decode_light(f.light_source));
u8 range = rangelim(nodedef->get(c_flowing).liquid_range, 0, 8); u8 range = rangelim(nodedef->get(c_flowing).liquid_range, 1, 8);
// Neighbor liquid levels (key = relative position) // Neighbor liquid levels (key = relative position)
// Includes current node // Includes current node
@ -429,7 +429,11 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
if(n2.getContent() == c_source) if(n2.getContent() == c_source)
level = (-0.5+node_liquid_level) * BS; level = (-0.5+node_liquid_level) * BS;
else if(n2.getContent() == c_flowing){ else if(n2.getContent() == c_flowing){
u8 liquid_level = (n2.param2&LIQUID_LEVEL_MASK) - (LIQUID_LEVEL_MAX+1-range); u8 liquid_level = (n2.param2&LIQUID_LEVEL_MASK);
if (liquid_level <= LIQUID_LEVEL_MAX+1-range)
liquid_level = 0;
else
liquid_level -= (LIQUID_LEVEL_MAX+1-range);
level = (-0.5 + ((float)liquid_level+ 0.5) / (float)range * node_liquid_level) * BS; level = (-0.5 + ((float)liquid_level+ 0.5) / (float)range * node_liquid_level) * BS;
} }
@ -908,13 +912,14 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
u16 l = getInteriorLight(n, 1, data); u16 l = getInteriorLight(n, 1, data);
video::SColor c = MapBlock_LightColor(255, l, decode_light(f.light_source)); video::SColor c = MapBlock_LightColor(255, l, decode_light(f.light_source));
float s = BS/2*f.visual_scale;
// Wall at X+ of node // Wall at X+ of node
video::S3DVertex vertices[4] = video::S3DVertex vertices[4] =
{ {
video::S3DVertex(-BS/2,-BS/2,0, 0,0,0, c, 0,1), video::S3DVertex(-s,-s,0, 0,0,0, c, 0,1),
video::S3DVertex(BS/2,-BS/2,0, 0,0,0, c, 1,1), video::S3DVertex( s,-s,0, 0,0,0, c, 1,1),
video::S3DVertex(BS/2,BS/2,0, 0,0,0, c, 1,0), video::S3DVertex( s, s,0, 0,0,0, c, 1,0),
video::S3DVertex(-BS/2,BS/2,0, 0,0,0, c, 0,0), video::S3DVertex(-s, s,0, 0,0,0, c, 0,0),
}; };
for(s32 i=0; i<4; i++) for(s32 i=0; i<4; i++)
@ -949,13 +954,14 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
video::SColor c = MapBlock_LightColor(255, l, decode_light(f.light_source)); video::SColor c = MapBlock_LightColor(255, l, decode_light(f.light_source));
float d = (float)BS/16; float d = (float)BS/16;
float s = BS/2*f.visual_scale;
// Wall at X+ of node // Wall at X+ of node
video::S3DVertex vertices[4] = video::S3DVertex vertices[4] =
{ {
video::S3DVertex(BS/2-d,BS/2,BS/2, 0,0,0, c, 0,0), video::S3DVertex(BS/2-d, s, s, 0,0,0, c, 0,0),
video::S3DVertex(BS/2-d,BS/2,-BS/2, 0,0,0, c, 1,0), video::S3DVertex(BS/2-d, s, -s, 0,0,0, c, 1,0),
video::S3DVertex(BS/2-d,-BS/2,-BS/2, 0,0,0, c, 1,1), video::S3DVertex(BS/2-d, -s, -s, 0,0,0, c, 1,1),
video::S3DVertex(BS/2-d,-BS/2,BS/2, 0,0,0, c, 0,1), video::S3DVertex(BS/2-d, -s, s, 0,0,0, c, 0,1),
}; };
v3s16 dir = n.getWallMountedDir(nodedef); v3s16 dir = n.getWallMountedDir(nodedef);
@ -990,16 +996,16 @@ void mapblock_mesh_generate_special(MeshMakeData *data,
u16 l = getInteriorLight(n, 1, data); u16 l = getInteriorLight(n, 1, data);
video::SColor c = MapBlock_LightColor(255, l, decode_light(f.light_source)); video::SColor c = MapBlock_LightColor(255, l, decode_light(f.light_source));
float s = BS/2*f.visual_scale;
for(u32 j=0; j<2; j++) for(u32 j=0; j<2; j++)
{ {
video::S3DVertex vertices[4] = video::S3DVertex vertices[4] =
{ {
video::S3DVertex(-BS/2*f.visual_scale,-BS/2,0, 0,0,0, c, 0,1), video::S3DVertex(-s,-BS/2, 0, 0,0,0, c, 0,1),
video::S3DVertex( BS/2*f.visual_scale,-BS/2,0, 0,0,0, c, 1,1), video::S3DVertex( s,-BS/2, 0, 0,0,0, c, 1,1),
video::S3DVertex( BS/2*f.visual_scale, video::S3DVertex( s,-BS/2 + s*2,0, 0,0,0, c, 1,0),
-BS/2 + f.visual_scale*BS,0, 0,0,0, c, 1,0), video::S3DVertex(-s,-BS/2 + s*2,0, 0,0,0, c, 0,0),
video::S3DVertex(-BS/2*f.visual_scale,
-BS/2 + f.visual_scale*BS,0, 0,0,0, c, 0,0),
}; };
if(j == 0) if(j == 0)

View File

@ -969,6 +969,8 @@ PlayerSAO::PlayerSAO(ServerEnvironment *env_, Player *player_, u16 peer_id_,
m_physics_override_speed(1), m_physics_override_speed(1),
m_physics_override_jump(1), m_physics_override_jump(1),
m_physics_override_gravity(1), m_physics_override_gravity(1),
m_physics_override_sneak(true),
m_physics_override_sneak_glitch(true),
m_physics_override_sent(false) m_physics_override_sent(false)
{ {
assert(m_player); assert(m_player);
@ -1060,7 +1062,9 @@ std::string PlayerSAO::getClientInitializationData(u16 protocol_version)
os<<serializeLongString(gob_cmd_update_bone_position((*ii).first, (*ii).second.X, (*ii).second.Y)); // m_bone_position.size os<<serializeLongString(gob_cmd_update_bone_position((*ii).first, (*ii).second.X, (*ii).second.Y)); // m_bone_position.size
} }
os<<serializeLongString(gob_cmd_update_attachment(m_attachment_parent_id, m_attachment_bone, m_attachment_position, m_attachment_rotation)); // 4 os<<serializeLongString(gob_cmd_update_attachment(m_attachment_parent_id, m_attachment_bone, m_attachment_position, m_attachment_rotation)); // 4
os<<serializeLongString(gob_cmd_update_physics_override(m_physics_override_speed, m_physics_override_jump, m_physics_override_gravity)); // 5 os<<serializeLongString(gob_cmd_update_physics_override(m_physics_override_speed,
m_physics_override_jump, m_physics_override_gravity, m_physics_override_sneak,
m_physics_override_sneak_glitch)); // 5
} }
else else
{ {
@ -1187,7 +1191,9 @@ void PlayerSAO::step(float dtime, bool send_recommended)
if(m_physics_override_sent == false){ if(m_physics_override_sent == false){
m_physics_override_sent = true; m_physics_override_sent = true;
std::string str = gob_cmd_update_physics_override(m_physics_override_speed, m_physics_override_jump, m_physics_override_gravity); std::string str = gob_cmd_update_physics_override(m_physics_override_speed,
m_physics_override_jump, m_physics_override_gravity,
m_physics_override_sneak, m_physics_override_sneak_glitch);
// create message and add to list // create message and add to list
ActiveObjectMessage aom(getId(), true, str); ActiveObjectMessage aom(getId(), true, str);
m_messages_out.push_back(aom); m_messages_out.push_back(aom);

View File

@ -330,6 +330,8 @@ public:
float m_physics_override_speed; float m_physics_override_speed;
float m_physics_override_jump; float m_physics_override_jump;
float m_physics_override_gravity; float m_physics_override_gravity;
bool m_physics_override_sneak;
bool m_physics_override_sneak_glitch;
bool m_physics_override_sent; bool m_physics_override_sent;
}; };

View File

@ -27,57 +27,39 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "log.h" #include "log.h"
#include "main.h" // for g_settings #include "main.h" // for g_settings
#include "settings.h" #include "settings.h"
#include "version.h"
#if USE_CURL #include "httpfetch.h"
#include <curl/curl.h>
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
#endif
Json::Value fetchJsonValue(const std::string url, Json::Value fetchJsonValue(const std::string url,
struct curl_slist *chunk) { struct curl_slist *chunk) {
#if USE_CURL #if USE_CURL
std::string liststring;
CURL *curl;
curl = curl_easy_init(); HTTPFetchRequest fetchrequest;
if (curl) HTTPFetchResult fetchresult;
{ fetchrequest.url = url;
CURLcode res; fetchrequest.useragent = std::string("Minetest ")+minetest_version_hash;
fetchrequest.timeout = g_settings->getS32("curl_timeout");
fetchrequest.caller = HTTPFETCH_SYNC;
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1); struct curl_slist* runptr = chunk;
curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); while(runptr) {
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); fetchrequest.extra_headers.push_back(runptr->data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &liststring); runptr = runptr->next;
curl_easy_setopt(curl, CURLOPT_TIMEOUT_MS, g_settings->getS32("curl_timeout"));
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS, g_settings->getS32("curl_timeout"));
if (chunk != 0)
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
res = curl_easy_perform(curl);
if (res != CURLE_OK)
errorstream<<"Jsonreader: "<< url <<" not found (" << curl_easy_strerror(res) << ")" <<std::endl;
curl_easy_cleanup(curl);
} }
httpfetch_sync(fetchrequest,fetchresult);
Json::Value root; if (!fetchresult.succeeded) {
Json::Reader reader;
std::istringstream stream(liststring);
if (!liststring.size()) {
return Json::Value(); return Json::Value();
} }
Json::Value root;
Json::Reader reader;
std::istringstream stream(fetchresult.data);
if (!reader.parse( stream, root ) ) if (!reader.parse( stream, root ) )
{ {
errorstream << "URL: " << url << std::endl; errorstream << "URL: " << url << std::endl;
errorstream << "Failed to parse json data " << reader.getFormattedErrorMessages(); errorstream << "Failed to parse json data " << reader.getFormattedErrorMessages();
errorstream << "data: \"" << liststring << "\"" << std::endl; errorstream << "data: \"" << fetchresult.data << "\"" << std::endl;
return Json::Value(); return Json::Value();
} }
@ -105,13 +87,17 @@ std::vector<ModStoreMod> readModStoreList(Json::Value& modlist) {
//id //id
if (modlist[i]["id"].asString().size()) { if (modlist[i]["id"].asString().size()) {
const char* id_raw = modlist[i]["id"].asString().c_str(); std::string id_raw = modlist[i]["id"].asString();
char* endptr = 0; char* endptr = 0;
int numbervalue = strtol(id_raw,&endptr,10); int numbervalue = strtol(id_raw.c_str(),&endptr,10);
if ((*id_raw != 0) && (*endptr == 0)) { if ((id_raw != "") && (*endptr == 0)) {
toadd.id = numbervalue; toadd.id = numbervalue;
} }
else {
errorstream << "readModStoreList: missing id" << std::endl;
toadd.valid = false;
}
} }
else { else {
errorstream << "readModStoreList: missing id" << std::endl; errorstream << "readModStoreList: missing id" << std::endl;
@ -163,11 +149,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) {
ModStoreVersionEntry toadd; ModStoreVersionEntry toadd;
if (details["version_set"][i]["id"].asString().size()) { if (details["version_set"][i]["id"].asString().size()) {
const char* id_raw = details["version_set"][i]["id"].asString().c_str(); std::string id_raw = details["version_set"][i]["id"].asString();
char* endptr = 0; char* endptr = 0;
int numbervalue = strtol(id_raw,&endptr,10); int numbervalue = strtol(id_raw.c_str(),&endptr,10);
if ((*id_raw != 0) && (*endptr == 0)) { if ((id_raw != "") && (*endptr == 0)) {
toadd.id = numbervalue; toadd.id = numbervalue;
} }
} }
@ -204,7 +190,7 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) {
} }
if (retval.versions.size() < 1) { if (retval.versions.size() < 1) {
errorstream << "readModStoreModDetails: not a single version specified!" << std::endl; infostream << "readModStoreModDetails: not a single version specified!" << std::endl;
retval.valid = false; retval.valid = false;
} }
@ -215,11 +201,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) {
if (details["categories"][i]["id"].asString().size()) { if (details["categories"][i]["id"].asString().size()) {
const char* id_raw = details["categories"][i]["id"].asString().c_str(); std::string id_raw = details["categories"][i]["id"].asString();
char* endptr = 0; char* endptr = 0;
int numbervalue = strtol(id_raw,&endptr,10); int numbervalue = strtol(id_raw.c_str(),&endptr,10);
if ((*id_raw != 0) && (*endptr == 0)) { if ((id_raw != "") && (*endptr == 0)) {
toadd.id = numbervalue; toadd.id = numbervalue;
} }
} }
@ -248,11 +234,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) {
if (details["author"].isObject()) { if (details["author"].isObject()) {
if (details["author"]["id"].asString().size()) { if (details["author"]["id"].asString().size()) {
const char* id_raw = details["author"]["id"].asString().c_str(); std::string id_raw = details["author"]["id"].asString();
char* endptr = 0; char* endptr = 0;
int numbervalue = strtol(id_raw,&endptr,10); int numbervalue = strtol(id_raw.c_str(),&endptr,10);
if ((*id_raw != 0) && (*endptr == 0)) { if ((id_raw != "") && (*endptr == 0)) {
retval.author.id = numbervalue; retval.author.id = numbervalue;
} }
else { else {
@ -282,11 +268,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) {
if (details["license"].isObject()) { if (details["license"].isObject()) {
if (details["license"]["id"].asString().size()) { if (details["license"]["id"].asString().size()) {
const char* id_raw = details["license"]["id"].asString().c_str(); std::string id_raw = details["license"]["id"].asString();
char* endptr = 0; char* endptr = 0;
int numbervalue = strtol(id_raw,&endptr,10); int numbervalue = strtol(id_raw.c_str(),&endptr,10);
if ((*id_raw != 0) && (*endptr == 0)) { if ((id_raw != "") && (*endptr == 0)) {
retval.license.id = numbervalue; retval.license.id = numbervalue;
} }
} }
@ -313,11 +299,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) {
if (details["titlepic"].isObject()) { if (details["titlepic"].isObject()) {
if (details["titlepic"]["id"].asString().size()) { if (details["titlepic"]["id"].asString().size()) {
const char* id_raw = details["titlepic"]["id"].asString().c_str(); std::string id_raw = details["titlepic"]["id"].asString();
char* endptr = 0; char* endptr = 0;
int numbervalue = strtol(id_raw,&endptr,10); int numbervalue = strtol(id_raw.c_str(),&endptr,10);
if ((*id_raw != 0) && (*endptr == 0)) { if ((id_raw != "") && (*endptr == 0)) {
retval.titlepic.id = numbervalue; retval.titlepic.id = numbervalue;
} }
} }
@ -332,11 +318,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) {
if (details["titlepic"]["mod"].asString().size()) { if (details["titlepic"]["mod"].asString().size()) {
const char* mod_raw = details["titlepic"]["mod"].asString().c_str(); std::string mod_raw = details["titlepic"]["mod"].asString();
char* endptr = 0; char* endptr = 0;
int numbervalue = strtol(mod_raw,&endptr,10); int numbervalue = strtol(mod_raw.c_str(),&endptr,10);
if ((*mod_raw != 0) && (*endptr == 0)) { if ((mod_raw != "") && (*endptr == 0)) {
retval.titlepic.mod = numbervalue; retval.titlepic.mod = numbervalue;
} }
} }
@ -345,11 +331,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) {
//id //id
if (details["id"].asString().size()) { if (details["id"].asString().size()) {
const char* id_raw = details["id"].asString().c_str(); std::string id_raw = details["id"].asString();
char* endptr = 0; char* endptr = 0;
int numbervalue = strtol(id_raw,&endptr,10); int numbervalue = strtol(id_raw.c_str(),&endptr,10);
if ((*id_raw != 0) && (*endptr == 0)) { if ((id_raw != "") && (*endptr == 0)) {
retval.id = numbervalue; retval.id = numbervalue;
} }
} }
@ -389,11 +375,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) {
//value //value
if (details["rating"].asString().size()) { if (details["rating"].asString().size()) {
const char* id_raw = details["rating"].asString().c_str(); std::string id_raw = details["rating"].asString();
char* endptr = 0; char* endptr = 0;
float numbervalue = strtof(id_raw,&endptr); float numbervalue = strtof(id_raw.c_str(),&endptr);
if ((*id_raw != 0) && (*endptr == 0)) { if ((id_raw != "") && (*endptr == 0)) {
retval.rating = numbervalue; retval.rating = numbervalue;
} }
} }

View File

@ -92,68 +92,82 @@ MapBlock* Database_LevelDB::loadBlock(v3s16 blockpos)
v2s16 p2d(blockpos.X, blockpos.Z); v2s16 p2d(blockpos.X, blockpos.Z);
std::string datastr; std::string datastr;
leveldb::Status s = m_database->Get(leveldb::ReadOptions(), i64tos(getBlockAsInteger(blockpos)), &datastr); leveldb::Status s = m_database->Get(leveldb::ReadOptions(),
i64tos(getBlockAsInteger(blockpos)), &datastr);
if (datastr.length() == 0 && s.ok()) {
errorstream << "Blank block data in database (datastr.length() == 0) ("
<< blockpos.X << "," << blockpos.Y << "," << blockpos.Z << ")" << std::endl;
if(s.ok()) { if (g_settings->getBool("ignore_world_load_errors")) {
/* errorstream << "Ignoring block load error. Duck and cover! "
Make sure sector is loaded << "(ignore_world_load_errors)" << std::endl;
*/ } else {
MapSector *sector = srvmap->createSector(p2d); throw SerializationError("Blank block data in database");
}
return NULL;
}
if (s.ok()) {
/*
Make sure sector is loaded
*/
MapSector *sector = srvmap->createSector(p2d);
try { try {
std::istringstream is(datastr, std::ios_base::binary); std::istringstream is(datastr, std::ios_base::binary);
u8 version = SER_FMT_VER_INVALID; u8 version = SER_FMT_VER_INVALID;
is.read((char*)&version, 1); is.read((char *)&version, 1);
if(is.fail()) if (is.fail())
throw SerializationError("ServerMap::loadBlock(): Failed" throw SerializationError("ServerMap::loadBlock(): Failed"
" to read MapBlock version"); " to read MapBlock version");
MapBlock *block = NULL; MapBlock *block = NULL;
bool created_new = false; bool created_new = false;
block = sector->getBlockNoCreateNoEx(blockpos.Y); block = sector->getBlockNoCreateNoEx(blockpos.Y);
if(block == NULL) if (block == NULL)
{ {
block = sector->createBlankBlockNoInsert(blockpos.Y); block = sector->createBlankBlockNoInsert(blockpos.Y);
created_new = true; created_new = true;
} }
// Read basic data
block->deSerialize(is, version, true);
// If it's a new block, insert it to the map
if(created_new)
sector->insertBlock(block);
/*
Save blocks loaded in old format in new format
*/
//if(version < SER_FMT_VER_HIGHEST || save_after_load) // Read basic data
// Only save if asked to; no need to update version block->deSerialize(is, version, true);
//if(save_after_load)
// saveBlock(block);
// We just loaded it from, so it's up-to-date.
block->resetModified();
} // If it's a new block, insert it to the map
catch(SerializationError &e) if (created_new)
{ sector->insertBlock(block);
errorstream<<"Invalid block data in database"
<<" ("<<blockpos.X<<","<<blockpos.Y<<","<<blockpos.Z<<")"
<<" (SerializationError): "<<e.what()<<std::endl;
// TODO: Block should be marked as invalid in memory so that it is
// not touched but the game can run
if(g_settings->getBool("ignore_world_load_errors")){ /*
errorstream<<"Ignoring block load error. Duck and cover! " Save blocks loaded in old format in new format
<<"(ignore_world_load_errors)"<<std::endl; */
} else { //if(version < SER_FMT_VER_HIGHEST || save_after_load)
throw SerializationError("Invalid block data in database"); // Only save if asked to; no need to update version
//assert(0); //if(save_after_load)
} // saveBlock(block);
} // We just loaded it from, so it's up-to-date.
block->resetModified();
}
catch (SerializationError &e)
{
errorstream << "Invalid block data in database"
<< " (" << blockpos.X << "," << blockpos.Y << "," << blockpos.Z
<< ") (SerializationError): " << e.what() << std::endl;
// TODO: Block should be marked as invalid in memory so that it is
// not touched but the game can run
return srvmap->getBlockNoCreateNoEx(blockpos); // should not be using this here if (g_settings->getBool("ignore_world_load_errors")) {
} errorstream << "Ignoring block load error. Duck and cover! "
return(NULL); << "(ignore_world_load_errors)" << std::endl;
} else {
throw SerializationError("Invalid block data in database");
//assert(0);
}
}
return srvmap->getBlockNoCreateNoEx(blockpos); // should not be using this here
}
return NULL;
} }
void Database_LevelDB::listAllLoadableBlocks(std::list<v3s16> &dst) void Database_LevelDB::listAllLoadableBlocks(std::list<v3s16> &dst)

Some files were not shown because too many files have changed in this diff Show More