Sudoku 1.9.3 upload
parent
ac76956337
commit
25d89af334
|
@ -17,6 +17,8 @@ local function destruct_bed(pos, n)
|
|||
reverse = not reverse
|
||||
minetest.remove_node(other)
|
||||
minetest.check_for_falling(other)
|
||||
beds.remove_spawns_at(pos)
|
||||
beds.remove_spawns_at(other)
|
||||
else
|
||||
reverse = not reverse
|
||||
end
|
||||
|
|
|
@ -79,10 +79,10 @@ beds.register_bed("beds:bed", {
|
|||
}
|
||||
},
|
||||
nodebox = {
|
||||
bottom = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5},
|
||||
top = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5},
|
||||
bottom = {-0.5, -0.5, -0.5, 0.5, 0.0625, 0.5},
|
||||
top = {-0.5, -0.5, -0.5, 0.5, 0.0625, 0.5},
|
||||
},
|
||||
selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.06, 1.5},
|
||||
selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.0625, 1.5},
|
||||
recipe = {
|
||||
{"wool:white", "wool:white", "wool:white"},
|
||||
{"group:wood", "group:wood", "group:wood"}
|
||||
|
|
|
@ -90,7 +90,13 @@ local function lay_down(player, pos, bed_pos, state, skip)
|
|||
local yaw, param2 = get_look_yaw(bed_pos)
|
||||
player:set_look_horizontal(yaw)
|
||||
local dir = minetest.facedir_to_dir(param2)
|
||||
local p = {x = bed_pos.x + dir.x / 2, y = bed_pos.y, z = bed_pos.z + dir.z / 2}
|
||||
-- p.y is just above the nodebox height of the 'Simple Bed' (the highest bed),
|
||||
-- to avoid sinking down through the bed.
|
||||
local p = {
|
||||
x = bed_pos.x + dir.x / 2,
|
||||
y = bed_pos.y + 0.07,
|
||||
z = bed_pos.z + dir.z / 2
|
||||
}
|
||||
player:set_physics_override(0, 0, 0)
|
||||
player:set_pos(p)
|
||||
default.player_attached[name] = true
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
-- Load support for MT game translation.
|
||||
local S = minetest.get_translator("beds")
|
||||
|
||||
local esc = minetest.formspec_escape
|
||||
|
||||
beds = {}
|
||||
beds.player = {}
|
||||
|
@ -14,7 +14,7 @@ beds.get_translator = S
|
|||
beds.formspec = "size[8,11;true]" ..
|
||||
"no_prepend[]" ..
|
||||
"bgcolor[#080808BB;true]" ..
|
||||
"button_exit[2,10;4,0.75;leave;" .. S("Leave Bed") .. "]"
|
||||
"button_exit[2,10;4,0.75;leave;" .. esc(S("Leave Bed")) .. "]"
|
||||
|
||||
local modpath = minetest.get_modpath("beds")
|
||||
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: beds
|
||||
Fancy Bed=Katil Beragam
|
||||
Simple Bed=Katil Biasa
|
||||
Leave Bed=Bangun
|
||||
Good morning.=Selamat pagi.
|
||||
@1 of @2 players are in bed=@1 daripada @2 pemain sedang tidur
|
||||
Force night skip=Paksa langkau malam
|
||||
You can only sleep at night.=Anda hanya boleh tidur pada waktu malam.
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: beds
|
||||
Fancy Bed=Детализированная Кровать
|
||||
Simple Bed=Обычная Кровать
|
||||
Leave Bed=Встать с кровати
|
||||
Good morning.=Доброе утро.
|
||||
@1 of @2 players are in bed=@1 из @2 игроков в кровати
|
||||
Force night skip=Пропустить ночь
|
||||
You can only sleep at night.=Вы можете спать только ночью.
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: beds
|
||||
Fancy Bed=Fin säng
|
||||
Simple Bed=Enkel Säng
|
||||
Leave Bed=Lämna Säng
|
||||
Good morning.= God morgon.
|
||||
@1 of @2 players are in bed=@1 av @2 spelar försöker sover.
|
||||
Force night skip=Tvinga över natten
|
||||
You can only sleep at night.=Du kan bara sova på natten.
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: beds
|
||||
Fancy Bed=花式床
|
||||
Simple Bed=简易床
|
||||
Leave Bed=离开床
|
||||
Good morning.=早安!
|
||||
@1 of @2 players are in bed=@2位玩家中的@1位在床上
|
||||
Force night skip=强制跳过夜晚
|
||||
You can only sleep at night.=你只能在晚上睡觉。
|
|
@ -0,0 +1,9 @@
|
|||
# textdomain: beds
|
||||
Fancy Bed=花式床
|
||||
Simple Bed=簡易床
|
||||
Leave Bed=離開床
|
||||
Good morning.=早安!
|
||||
@1 of @2 players are in bed=@2位玩家中的@1位在床上
|
||||
Force night skip=強制跳過夜晚
|
||||
You can only sleep at night.=你只能在晚上睡覺。
|
||||
|
|
@ -61,3 +61,12 @@ function beds.set_spawns()
|
|||
end
|
||||
beds.save_spawns()
|
||||
end
|
||||
|
||||
function beds.remove_spawns_at(pos)
|
||||
for name, p in pairs(beds.spawn) do
|
||||
if vector.equals(vector.round(p), pos) then
|
||||
beds.spawn[name] = nil
|
||||
end
|
||||
end
|
||||
beds.save_spawns()
|
||||
end
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
# textdomain: binoculars
|
||||
Binoculars=Binokular
|
||||
Use with 'Zoom' key=Guna dengan kekunci 'Zum'
|
|
@ -0,0 +1,3 @@
|
|||
# textdomain: binoculars
|
||||
Binoculars=Бинокль
|
||||
Use with 'Zoom' key=Используется с привилегией 'Zoom'
|
|
@ -0,0 +1,3 @@
|
|||
# textdomain: binoculars
|
||||
Binoculars=Kikare
|
||||
Use with 'Zoom' key=Används med 'Zoom' knappen
|
|
@ -0,0 +1,3 @@
|
|||
# textdomain: binoculars
|
||||
Binoculars=望远镜
|
||||
Use with 'Zoom' key=与“缩放”键一起使用
|
|
@ -0,0 +1,3 @@
|
|||
# textdomain: binoculars
|
||||
Binoculars=望遠鏡
|
||||
Use with 'Zoom' key=與“縮放”鍵一起使用
|
|
@ -13,15 +13,6 @@ local function is_water(pos)
|
|||
end
|
||||
|
||||
|
||||
local function get_sign(i)
|
||||
if i == 0 then
|
||||
return 0
|
||||
else
|
||||
return i / math.abs(i)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local function get_velocity(v, yaw, y)
|
||||
local x = -math.sin(yaw) * v
|
||||
local z = math.cos(yaw) * v
|
||||
|
@ -146,7 +137,7 @@ end
|
|||
|
||||
|
||||
function boat.on_step(self, dtime)
|
||||
self.v = get_v(self.object:get_velocity()) * get_sign(self.v)
|
||||
self.v = get_v(self.object:get_velocity()) * math.sign(self.v)
|
||||
if self.driver then
|
||||
local driver_objref = minetest.get_player_by_name(self.driver)
|
||||
if driver_objref then
|
||||
|
@ -157,13 +148,13 @@ function boat.on_step(self, dtime)
|
|||
minetest.chat_send_player(self.driver, S("Boat cruise mode on"))
|
||||
end
|
||||
elseif ctrl.down then
|
||||
self.v = self.v - dtime * 1.8
|
||||
self.v = self.v - dtime * 2.0
|
||||
if self.auto then
|
||||
self.auto = false
|
||||
minetest.chat_send_player(self.driver, S("Boat cruise mode off"))
|
||||
end
|
||||
elseif ctrl.up or self.auto then
|
||||
self.v = self.v + dtime * 1.8
|
||||
self.v = self.v + dtime * 2.0
|
||||
end
|
||||
if ctrl.left then
|
||||
if self.v < -0.001 then
|
||||
|
@ -185,15 +176,14 @@ function boat.on_step(self, dtime)
|
|||
self.object:set_pos(self.object:get_pos())
|
||||
return
|
||||
end
|
||||
local s = get_sign(self.v)
|
||||
self.v = self.v - dtime * 0.6 * s
|
||||
if s ~= get_sign(self.v) then
|
||||
self.object:set_velocity({x = 0, y = 0, z = 0})
|
||||
-- We need to preserve velocity sign to properly apply drag force
|
||||
-- while moving backward
|
||||
local drag = dtime * math.sign(self.v) * (0.01 + 0.0796 * self.v * self.v)
|
||||
-- If drag is larger than velocity, then stop horizontal movement
|
||||
if math.abs(self.v) <= math.abs(drag) then
|
||||
self.v = 0
|
||||
return
|
||||
end
|
||||
if math.abs(self.v) > 5 then
|
||||
self.v = 5 * get_sign(self.v)
|
||||
else
|
||||
self.v = self.v - drag
|
||||
end
|
||||
|
||||
local p = self.object:get_pos()
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: boats
|
||||
Boat cruise mode on=Mod bot layar makan angin dibolehkan
|
||||
Boat cruise mode off=Mod bot layar makan angin dilumpuhkan
|
||||
Boat=Bot
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: boats
|
||||
Boat cruise mode on=Режим путешествия на лодке включен
|
||||
Boat cruise mode off=Режим путешествия на лодке выключен
|
||||
Boat=Лодка
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: boats
|
||||
Boat cruise mode on=Båtkryssningsläge på
|
||||
Boat cruise mode off=Båtkryssningsläge av
|
||||
Boat=Båt
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: boats
|
||||
Boat cruise mode on=巡航模式开启
|
||||
Boat cruise mode off=巡航模式关闭
|
||||
Boat=船
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: boats
|
||||
Boat cruise mode on=巡航模式開啟
|
||||
Boat cruise mode off=巡航模式關閉
|
||||
Boat=船
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: bones
|
||||
Bones=Tulang
|
||||
@1's old bones=Tulang lama @1
|
||||
@1 died at @2.=@1 mati di @2.
|
||||
@1 died at @2, and dropped their inventory.=@1 mati di @2, dan menjatuhkan inventorinya.
|
||||
@1 died at @2, and bones were placed.=@1 mati di @2, dan tulang diletakkan.
|
||||
@1's fresh bones=Tulang segar @1
|
||||
@1's bones=Tulang @1
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: bones
|
||||
Bones=Кости
|
||||
@1's old bones=Старые кости @1
|
||||
@1 died at @2.=@1 умер в @2.
|
||||
@1 died at @2, and dropped their inventory.=@1 умер в @2 и потерял содержимое своего инвентаря.
|
||||
@1 died at @2, and bones were placed.=@1 умер в @2, помещены кости.
|
||||
@1's fresh bones=новые кости @1
|
||||
@1's bones=кости @1
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: bones
|
||||
Bones=Ben
|
||||
@1's old bones=@1s Gamla ben
|
||||
@1 died at @2.=@1 dog på @a.
|
||||
@1 died at @2, and dropped their inventory.=@1 dog på @a, och tappade deras saker.
|
||||
@1 died at @2, and bones were placed.=@1 dog på @2, och deras ben var placerade.
|
||||
@1's fresh bones=@1s färska ben
|
||||
@1's bones=@1s ben
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: bones
|
||||
Bones=骨骸
|
||||
@1's old bones=@1的旧骨骸
|
||||
@1 died at @2.=@1在@2死亡。
|
||||
@1 died at @2, and dropped their inventory.=@1在@2死亡,丢掉了物品栏。
|
||||
@1 died at @2, and bones were placed.=@1在@2死亡,骨骸被放置。
|
||||
@1's fresh bones=@1的新鲜骨骸
|
||||
@1's bones=@1的骨骸
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: bones
|
||||
Bones=骨骸
|
||||
@1's old bones=@1的舊骨骸
|
||||
@1 died at @2.=@1在@2死亡。
|
||||
@1 died at @2, and dropped their inventory.=@1在@2死亡,丟掉了物品欄。
|
||||
@1 died at @2, and bones were placed.=@1在@2死亡,骨骸被放置。
|
||||
@1's fresh bones=@1的新鮮骨骸
|
||||
@1's bones=@1的骨骸
|
|
@ -225,3 +225,16 @@ minetest.register_craft({
|
|||
replacements = {{"bucket:bucket_lava", "bucket:bucket_empty"}},
|
||||
})
|
||||
|
||||
-- Register buckets as dungeon loot
|
||||
if minetest.global_exists("dungeon_loot") then
|
||||
dungeon_loot.register({
|
||||
{name = "bucket:bucket_empty", chance = 0.55},
|
||||
-- water in deserts/ice or above ground, lava otherwise
|
||||
{name = "bucket:bucket_water", chance = 0.45,
|
||||
types = {"sandstone", "desert", "ice"}},
|
||||
{name = "bucket:bucket_water", chance = 0.45, y = {0, 32768},
|
||||
types = {"normal"}},
|
||||
{name = "bucket:bucket_lava", chance = 0.45, y = {-32768, -1},
|
||||
types = {"normal"}},
|
||||
})
|
||||
end
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# textdomain: bucket
|
||||
Empty Bucket=Baldi Kosong
|
||||
Water Bucket=Baldi Air
|
||||
River Water Bucket=Baldi Air Sungai
|
||||
Lava Bucket=Baldi Lava
|
|
@ -0,0 +1,5 @@
|
|||
# textdomain: bucket
|
||||
Empty Bucket=Пустое Ведро
|
||||
Water Bucket=Ведро с Водой
|
||||
River Water Bucket=Ведро с Речной Водой
|
||||
Lava Bucket=Ведро с Лавой
|
|
@ -0,0 +1,5 @@
|
|||
# textdomain: bucket
|
||||
Empty Bucket=Tom hink
|
||||
Water Bucket=Vatten hink
|
||||
River Water Bucket=Flodvatten hink
|
||||
Lava Bucket=Lava hink
|
|
@ -0,0 +1,5 @@
|
|||
# textdomain: bucket
|
||||
Empty Bucket=空桶
|
||||
Water Bucket=水桶
|
||||
River Water Bucket=河水桶
|
||||
Lava Bucket=岩浆桶
|
|
@ -0,0 +1,5 @@
|
|||
# textdomain: bucket
|
||||
Empty Bucket=空桶
|
||||
Water Bucket=水桶
|
||||
River Water Bucket=河水桶
|
||||
Lava Bucket=岩漿桶
|
|
@ -1,3 +1,4 @@
|
|||
name = bucket
|
||||
description = Minetest Game mod: bucket
|
||||
depends = default
|
||||
optional_depends = dungeon_loot
|
||||
|
|
|
@ -102,7 +102,7 @@ minetest.register_decoration({
|
|||
place_offset_y = 2,
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.005,
|
||||
biomes = {"grassland", "deciduous_forest", "floatland_grassland"},
|
||||
biomes = {"grassland", "deciduous_forest"},
|
||||
y_max = 31000,
|
||||
y_min = 1,
|
||||
decoration = {
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: butterflies
|
||||
White Butterfly=Rama-Rama Putih
|
||||
Red Butterfly=Rama-Rama Merah
|
||||
Violet Butterfly=Rama-Rama Ungu
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: butterflies
|
||||
White Butterfly=Белая Бабочка
|
||||
Red Butterfly=Красная Бабочка
|
||||
Violet Butterfly=Фиолетовая Бабочка
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: butterflies
|
||||
White Butterfly=Vit fjäril
|
||||
Red Butterfly=Röd fjäril
|
||||
Violet Butterfly=Violett fjäril
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: butterflies
|
||||
White Butterfly=白蝴蝶
|
||||
Red Butterfly=红蝴蝶
|
||||
Violet Butterfly=紫蝴蝶
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: butterflies
|
||||
White Butterfly=白蝴蝶
|
||||
Red Butterfly=紅蝴蝶
|
||||
Violet Butterfly=紫蝴蝶
|
|
@ -414,7 +414,7 @@ minetest.register_craftitem("carts:cart", {
|
|||
end
|
||||
|
||||
minetest.sound_play({name = "default_place_node_metal", gain = 0.5},
|
||||
{pos = pointed_thing.above})
|
||||
{pos = pointed_thing.above}, true)
|
||||
|
||||
if not (creative and creative.is_enabled_for
|
||||
and creative.is_enabled_for(placer:get_player_name())) then
|
||||
|
|
|
@ -19,3 +19,10 @@ carts.path_distance_max = 3
|
|||
dofile(carts.modpath.."/functions.lua")
|
||||
dofile(carts.modpath.."/rails.lua")
|
||||
dofile(carts.modpath.."/cart_entity.lua")
|
||||
|
||||
-- Register rails as dungeon loot
|
||||
if minetest.global_exists("dungeon_loot") then
|
||||
dungeon_loot.register({
|
||||
name = "carts:rail", chance = 0.35, count = {1, 6}
|
||||
})
|
||||
end
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
# textdomain: carts
|
||||
Cart=Pedati
|
||||
(Sneak+Click to pick up)=(Selinap+Klik untuk ambil balik)
|
||||
Rail=Landasan
|
||||
Powered Rail=Landasan Berkuasa
|
||||
Brake Rail=Landasan Brek
|
|
@ -0,0 +1,6 @@
|
|||
# textdomain: carts
|
||||
Cart=Вагонетка
|
||||
(Sneak+Click to pick up)=(Пригнитесь и кликните по вагонетке, чтобы забрать)
|
||||
Rail=Рельса
|
||||
Powered Rail=Механизированная Рельса
|
||||
Brake Rail=Рельса с тормозом
|
|
@ -0,0 +1,6 @@
|
|||
# textdomain: carts
|
||||
Cart=Vagn
|
||||
(Sneak+Click to pick up)=(Shift+Klicka för att plocka upp)
|
||||
Rail=Räls
|
||||
Powered Rail=Aktiverad räls
|
||||
Brake Rail=Broms räls
|
|
@ -0,0 +1,6 @@
|
|||
# textdomain: carts
|
||||
Cart=矿车
|
||||
(Sneak+Click to pick up)=(潜行+单击以捡起)
|
||||
Rail=铁轨
|
||||
Powered Rail=动力铁轨
|
||||
Brake Rail=制动铁轨
|
|
@ -0,0 +1,6 @@
|
|||
# textdomain: carts
|
||||
Cart=礦車
|
||||
(Sneak+Click to pick up)=(潛行+單擊以撿起)
|
||||
Rail=鐵軌
|
||||
Powered Rail=動力鐵軌
|
||||
Brake Rail=制動鐵軌
|
|
@ -1,3 +1,4 @@
|
|||
name = carts
|
||||
description = Carts (formerly boost_cart)
|
||||
depends = default, player_api
|
||||
optional_depends = dungeon_loot
|
||||
|
|
|
@ -25,7 +25,9 @@ function creative.init_creative_inventory(player)
|
|||
player_inventory[player_name] = {
|
||||
size = 0,
|
||||
filter = "",
|
||||
start_i = 0
|
||||
start_i = 0,
|
||||
old_filter = nil, -- use only for caching in update_creative_inventory
|
||||
old_content = nil
|
||||
}
|
||||
|
||||
minetest.create_detached_inventory("creative_" .. player_name, {
|
||||
|
@ -59,22 +61,42 @@ function creative.init_creative_inventory(player)
|
|||
return player_inventory[player_name]
|
||||
end
|
||||
|
||||
local function match(s, filter)
|
||||
if filter == "" then
|
||||
return 0
|
||||
end
|
||||
if s:lower():find(filter, 1, true) then
|
||||
return #s - #filter
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
function creative.update_creative_inventory(player_name, tab_content)
|
||||
local creative_list = {}
|
||||
local inv = player_inventory[player_name] or
|
||||
creative.init_creative_inventory(minetest.get_player_by_name(player_name))
|
||||
local player_inv = minetest.get_inventory({type = "detached", name = "creative_" .. player_name})
|
||||
|
||||
if inv.filter == inv.old_filter and tab_content == inv.old_content then
|
||||
return
|
||||
end
|
||||
inv.old_filter = inv.filter
|
||||
inv.old_content = tab_content
|
||||
|
||||
local items = inventory_cache[tab_content] or init_creative_cache(tab_content)
|
||||
|
||||
local creative_list = {}
|
||||
local order = {}
|
||||
for name, def in pairs(items) do
|
||||
if def.name:find(inv.filter, 1, true) or
|
||||
def.description:lower():find(inv.filter, 1, true) then
|
||||
local m = match(def.description, inv.filter) or match(def.name, inv.filter)
|
||||
if m then
|
||||
creative_list[#creative_list+1] = name
|
||||
-- Sort by description length first so closer matches appear earlier
|
||||
order[name] = string.format("%02d", m) .. name
|
||||
end
|
||||
end
|
||||
|
||||
table.sort(creative_list)
|
||||
table.sort(creative_list, function(a, b) return order[a] < order[b] end)
|
||||
|
||||
player_inv:set_size("main", #creative_list)
|
||||
player_inv:set_list("main", creative_list)
|
||||
inv.size = #creative_list
|
||||
|
@ -105,21 +127,20 @@ function creative.register_tab(name, title, items)
|
|||
local player_name = player:get_player_name()
|
||||
creative.update_creative_inventory(player_name, items)
|
||||
local inv = player_inventory[player_name]
|
||||
local start_i = inv.start_i or 0
|
||||
local pagenum = math.floor(start_i / (3*8) + 1)
|
||||
local pagemax = math.ceil(inv.size / (3*8))
|
||||
local pagenum = math.floor(inv.start_i / (4*8) + 1)
|
||||
local pagemax = math.ceil(inv.size / (4*8))
|
||||
local esc = minetest.formspec_escape
|
||||
return sfinv.make_formspec(player, context,
|
||||
"label[6.2,3.35;" .. minetest.colorize("#FFFF00", tostring(pagenum)) .. " / " .. tostring(pagemax) .. "]" ..
|
||||
"label[5.8,4.15;" .. minetest.colorize("#FFFF00", tostring(pagenum)) .. " / " .. tostring(pagemax) .. "]" ..
|
||||
[[
|
||||
image[4.06,3.4;0.8,0.8;creative_trash_icon.png]
|
||||
image[4.08,4.2;0.8,0.8;creative_trash_icon.png]
|
||||
listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]
|
||||
list[detached:creative_trash;main;4,3.3;1,1;]
|
||||
list[detached:creative_trash;main;4.02,4.1;1,1;]
|
||||
listring[]
|
||||
image_button[5.4,3.25;0.8,0.8;creative_prev_icon.png;creative_prev;]
|
||||
image_button[7.2,3.25;0.8,0.8;creative_next_icon.png;creative_next;]
|
||||
image_button[2.1,3.25;0.8,0.8;creative_search_icon.png;creative_search;]
|
||||
image_button[2.75,3.25;0.8,0.8;creative_clear_icon.png;creative_clear;]
|
||||
image_button[5,4.05;0.8,0.8;creative_prev_icon.png;creative_prev;]
|
||||
image_button[7.2,4.05;0.8,0.8;creative_next_icon.png;creative_next;]
|
||||
image_button[2.63,4.05;0.8,0.8;creative_search_icon.png;creative_search;]
|
||||
image_button[3.25,4.05;0.8,0.8;creative_clear_icon.png;creative_clear;]
|
||||
]] ..
|
||||
"tooltip[creative_search;" .. esc(S("Search")) .. "]" ..
|
||||
"tooltip[creative_clear;" .. esc(S("Reset")) .. "]" ..
|
||||
|
@ -127,9 +148,9 @@ function creative.register_tab(name, title, items)
|
|||
"tooltip[creative_next;" .. esc(S("Next page")) .. "]" ..
|
||||
"listring[current_player;main]" ..
|
||||
"field_close_on_enter[creative_filter;false]" ..
|
||||
"field[0.3,3.5;2.2,1;creative_filter;;" .. esc(inv.filter) .. "]" ..
|
||||
"field[0.3,4.2;2.8,1.2;creative_filter;;" .. esc(inv.filter) .. "]" ..
|
||||
"listring[detached:creative_" .. player_name .. ";main]" ..
|
||||
"list[detached:creative_" .. player_name .. ";main;0,0;8,3;" .. tostring(start_i) .. "]" ..
|
||||
"list[detached:creative_" .. player_name .. ";main;0,0;8,4;" .. tostring(inv.start_i) .. "]" ..
|
||||
creative.formspec_add, true)
|
||||
end,
|
||||
on_enter = function(self, player, context)
|
||||
|
@ -147,27 +168,25 @@ function creative.register_tab(name, title, items)
|
|||
if fields.creative_clear then
|
||||
inv.start_i = 0
|
||||
inv.filter = ""
|
||||
creative.update_creative_inventory(player_name, items)
|
||||
sfinv.set_player_inventory_formspec(player, context)
|
||||
elseif fields.creative_search or
|
||||
fields.key_enter_field == "creative_filter" then
|
||||
inv.start_i = 0
|
||||
inv.filter = fields.creative_filter:lower()
|
||||
creative.update_creative_inventory(player_name, items)
|
||||
sfinv.set_player_inventory_formspec(player, context)
|
||||
elseif not fields.quit then
|
||||
local start_i = inv.start_i or 0
|
||||
|
||||
if fields.creative_prev then
|
||||
start_i = start_i - 3*8
|
||||
start_i = start_i - 4*8
|
||||
if start_i < 0 then
|
||||
start_i = inv.size - (inv.size % (3*8))
|
||||
start_i = inv.size - (inv.size % (4*8))
|
||||
if inv.size == start_i then
|
||||
start_i = math.max(0, inv.size - (3*8))
|
||||
start_i = math.max(0, inv.size - (4*8))
|
||||
end
|
||||
end
|
||||
elseif fields.creative_next then
|
||||
start_i = start_i + 3*8
|
||||
start_i = start_i + 4*8
|
||||
if start_i >= inv.size then
|
||||
start_i = 0
|
||||
end
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
# textdomain: creative
|
||||
Allow player to use creative inventory=Benarkan pemain menggunakan inventori kreatif
|
||||
Search=Cari
|
||||
Reset=Set semula
|
||||
Previous page=Halaman sebelumnya
|
||||
Next page=Halaman seterusnya
|
||||
All=Semua
|
||||
Nodes=Nod
|
||||
Tools=Alatan
|
||||
Items=Item
|
|
@ -0,0 +1,10 @@
|
|||
# textdomain: creative
|
||||
Allow player to use creative inventory=Разрешить игроку использовать творческий инвентарь
|
||||
Search=Поиск
|
||||
Reset=Сброс
|
||||
Previous page=Предыдущая страница
|
||||
Next page=Следующая страница
|
||||
All=Всё
|
||||
Nodes=Ноды
|
||||
Tools=Инструменты
|
||||
Items=Предметы
|
|
@ -0,0 +1,10 @@
|
|||
# textdomain: creative
|
||||
Allow player to use creative inventory=Tilllåt spelare att används kreativa saker
|
||||
Search=Sök
|
||||
Reset=Återställ
|
||||
Previous page=Förra sidan
|
||||
Next page=Nästa sidan
|
||||
All=Alla
|
||||
Nodes=Noder
|
||||
Tools=Verktyg
|
||||
Items=Saker
|
|
@ -0,0 +1,10 @@
|
|||
# textdomain: creative
|
||||
Allow player to use creative inventory=允许玩家使用创造模式物品栏
|
||||
Search=搜索
|
||||
Reset=重置
|
||||
Previous page=上一页
|
||||
Next page=下一页
|
||||
All=所有
|
||||
Nodes=节点
|
||||
Tools=工具
|
||||
Items=物品
|
|
@ -0,0 +1,10 @@
|
|||
# textdomain: creative
|
||||
Allow player to use creative inventory=允許玩家使用創造模式物品欄
|
||||
Search=搜索
|
||||
Reset=重置
|
||||
Previous page=上一頁
|
||||
Next page=下一頁
|
||||
All=所有
|
||||
Nodes=節點
|
||||
Tools=工具
|
||||
Items=物品
|
|
@ -123,6 +123,8 @@ paramat (CC BY-SA 3.0):
|
|||
default_fence_rail_junglewood
|
||||
default_fence_rail_pine_wood
|
||||
default_fence_rail_wood -- Derived from a texture by BlockMen (CC BY-SA 3.0)
|
||||
gui_hotbar.png
|
||||
gui_hotbar_selected.png
|
||||
|
||||
TumeniNodes (CC BY-SA 3.0):
|
||||
default_desert_cobble.png -- Derived from a texture by brunob.santos (CC BY-SA 3.0)
|
||||
|
@ -150,7 +152,10 @@ BlockMen (CC BY-SA 3.0):
|
|||
default_mineral_mese.png
|
||||
default_meselamp.png
|
||||
bubble.png
|
||||
gui_*.png
|
||||
gui_formbg.png
|
||||
gui_furnace_arrow_bg.png
|
||||
gui_furnace_arrow_fg.png
|
||||
gui_hb_bg.png
|
||||
|
||||
sofar (CC BY-SA 3.0):
|
||||
default_aspen_sapling
|
||||
|
@ -330,6 +335,10 @@ http://freesound.org/people/Ryding/sounds/94337/
|
|||
Ferk (CC0 1.0):
|
||||
default_item_smoke.ogg, based on a sound by http://opengameart.org/users/bart
|
||||
|
||||
sonictechtonic (CC BY 3.0):
|
||||
https://www.freesound.org/people/sonictechtonic/sounds/241872/
|
||||
player_damage.ogg
|
||||
|
||||
|
||||
Models
|
||||
------
|
||||
|
|
|
@ -46,7 +46,8 @@ function default.chest.chest_lid_close(pn)
|
|||
local node = minetest.get_node(pos)
|
||||
minetest.after(0.2, minetest.swap_node, pos, { name = "default:" .. swap,
|
||||
param2 = node.param2 })
|
||||
minetest.sound_play(sound, {gain = 0.3, pos = pos, max_hear_distance = 10})
|
||||
minetest.sound_play(sound, {gain = 0.3, pos = pos,
|
||||
max_hear_distance = 10}, true)
|
||||
end
|
||||
|
||||
default.chest.open_chests = {}
|
||||
|
@ -128,7 +129,7 @@ function default.chest.register_chest(name, d)
|
|||
end
|
||||
|
||||
minetest.sound_play(def.sound_open, {gain = 0.3,
|
||||
pos = pos, max_hear_distance = 10})
|
||||
pos = pos, max_hear_distance = 10}, true)
|
||||
if not default.chest.chest_lid_obstructed(pos) then
|
||||
minetest.swap_node(pos,
|
||||
{ name = "default:" .. name .. "_open",
|
||||
|
@ -199,7 +200,7 @@ function default.chest.register_chest(name, d)
|
|||
end
|
||||
def.on_rightclick = function(pos, node, clicker)
|
||||
minetest.sound_play(def.sound_open, {gain = 0.3, pos = pos,
|
||||
max_hear_distance = 10})
|
||||
max_hear_distance = 10}, true)
|
||||
if not default.chest.chest_lid_obstructed(pos) then
|
||||
minetest.swap_node(pos, {
|
||||
name = "default:" .. name .. "_open",
|
||||
|
@ -318,3 +319,39 @@ default.chest.register_chest("chest_locked", {
|
|||
groups = {choppy = 2, oddly_breakable_by_hand = 2},
|
||||
protected = true,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:chest",
|
||||
recipe = {
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
{"group:wood", "", "group:wood"},
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:chest_locked",
|
||||
recipe = {
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
{"group:wood", "default:steel_ingot", "group:wood"},
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "default:chest_locked",
|
||||
recipe = {"default:chest", "default:steel_ingot"},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:chest",
|
||||
burntime = 30,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:chest_locked",
|
||||
burntime = 30,
|
||||
})
|
||||
|
|
|
@ -56,13 +56,6 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:stick 4",
|
||||
recipe = {
|
||||
{"group:wood"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:sign_wall_steel 3",
|
||||
recipe = {
|
||||
|
@ -81,273 +74,6 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:torch 4",
|
||||
recipe = {
|
||||
{"default:coal_lump"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:pick_wood",
|
||||
recipe = {
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
{"", "group:stick", ""},
|
||||
{"", "group:stick", ""},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:pick_stone",
|
||||
recipe = {
|
||||
{"group:stone", "group:stone", "group:stone"},
|
||||
{"", "group:stick", ""},
|
||||
{"", "group:stick", ""},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:pick_steel",
|
||||
recipe = {
|
||||
{"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
|
||||
{"", "group:stick", ""},
|
||||
{"", "group:stick", ""},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:pick_bronze",
|
||||
recipe = {
|
||||
{"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"},
|
||||
{"", "group:stick", ""},
|
||||
{"", "group:stick", ""},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:pick_mese",
|
||||
recipe = {
|
||||
{"default:mese_crystal", "default:mese_crystal", "default:mese_crystal"},
|
||||
{"", "group:stick", ""},
|
||||
{"", "group:stick", ""},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:pick_diamond",
|
||||
recipe = {
|
||||
{"default:diamond", "default:diamond", "default:diamond"},
|
||||
{"", "group:stick", ""},
|
||||
{"", "group:stick", ""},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:shovel_wood",
|
||||
recipe = {
|
||||
{"group:wood"},
|
||||
{"group:stick"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:shovel_stone",
|
||||
recipe = {
|
||||
{"group:stone"},
|
||||
{"group:stick"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:shovel_steel",
|
||||
recipe = {
|
||||
{"default:steel_ingot"},
|
||||
{"group:stick"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:shovel_bronze",
|
||||
recipe = {
|
||||
{"default:bronze_ingot"},
|
||||
{"group:stick"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:shovel_mese",
|
||||
recipe = {
|
||||
{"default:mese_crystal"},
|
||||
{"group:stick"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:shovel_diamond",
|
||||
recipe = {
|
||||
{"default:diamond"},
|
||||
{"group:stick"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
-- Axes
|
||||
-- Recipes face left to match appearence in textures and inventory
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:axe_wood",
|
||||
recipe = {
|
||||
{"group:wood", "group:wood"},
|
||||
{"group:wood", "group:stick"},
|
||||
{"", "group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:axe_stone",
|
||||
recipe = {
|
||||
{"group:stone", "group:stone"},
|
||||
{"group:stone", "group:stick"},
|
||||
{"", "group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:axe_steel",
|
||||
recipe = {
|
||||
{"default:steel_ingot", "default:steel_ingot"},
|
||||
{"default:steel_ingot", "group:stick"},
|
||||
{"", "group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:axe_bronze",
|
||||
recipe = {
|
||||
{"default:bronze_ingot", "default:bronze_ingot"},
|
||||
{"default:bronze_ingot", "group:stick"},
|
||||
{"", "group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:axe_mese",
|
||||
recipe = {
|
||||
{"default:mese_crystal", "default:mese_crystal"},
|
||||
{"default:mese_crystal", "group:stick"},
|
||||
{"", "group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:axe_diamond",
|
||||
recipe = {
|
||||
{"default:diamond", "default:diamond"},
|
||||
{"default:diamond", "group:stick"},
|
||||
{"", "group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:sword_wood",
|
||||
recipe = {
|
||||
{"group:wood"},
|
||||
{"group:wood"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:sword_stone",
|
||||
recipe = {
|
||||
{"group:stone"},
|
||||
{"group:stone"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:sword_steel",
|
||||
recipe = {
|
||||
{"default:steel_ingot"},
|
||||
{"default:steel_ingot"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:sword_bronze",
|
||||
recipe = {
|
||||
{"default:bronze_ingot"},
|
||||
{"default:bronze_ingot"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:sword_mese",
|
||||
recipe = {
|
||||
{"default:mese_crystal"},
|
||||
{"default:mese_crystal"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:sword_diamond",
|
||||
recipe = {
|
||||
{"default:diamond"},
|
||||
{"default:diamond"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:skeleton_key",
|
||||
recipe = {
|
||||
{"default:gold_ingot"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:chest",
|
||||
recipe = {
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
{"group:wood", "", "group:wood"},
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:chest_locked",
|
||||
recipe = {
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
{"group:wood", "default:steel_ingot", "group:wood"},
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "default:chest_locked",
|
||||
recipe = {"default:chest", "default:steel_ingot"},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:furnace",
|
||||
recipe = {
|
||||
{"group:stone", "group:stone", "group:stone"},
|
||||
{"group:stone", "", "group:stone"},
|
||||
{"group:stone", "group:stone", "group:stone"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:coalblock",
|
||||
recipe = {
|
||||
|
@ -357,13 +83,6 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:coal_lump 9",
|
||||
recipe = {
|
||||
{"default:coalblock"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:steelblock",
|
||||
recipe = {
|
||||
|
@ -373,13 +92,6 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:steel_ingot 9",
|
||||
recipe = {
|
||||
{"default:steelblock"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:copperblock",
|
||||
recipe = {
|
||||
|
@ -389,13 +101,6 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:copper_ingot 9",
|
||||
recipe = {
|
||||
{"default:copperblock"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:tinblock",
|
||||
recipe = {
|
||||
|
@ -405,22 +110,6 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:tin_ingot 9",
|
||||
recipe = {
|
||||
{"default:tinblock"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:bronze_ingot 9",
|
||||
recipe = {
|
||||
{"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"},
|
||||
{"default:copper_ingot", "default:tin_ingot", "default:copper_ingot"},
|
||||
{"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:bronzeblock",
|
||||
recipe = {
|
||||
|
@ -446,13 +135,6 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:gold_ingot 9",
|
||||
recipe = {
|
||||
{"default:goldblock"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:diamondblock",
|
||||
recipe = {
|
||||
|
@ -462,13 +144,6 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:diamond 9",
|
||||
recipe = {
|
||||
{"default:diamondblock"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:sandstone",
|
||||
recipe = {
|
||||
|
@ -573,13 +248,6 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:clay_lump 4",
|
||||
recipe = {
|
||||
{"default:clay"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:brick",
|
||||
recipe = {
|
||||
|
@ -588,29 +256,6 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:clay_brick 4",
|
||||
recipe = {
|
||||
{"default:brick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:paper",
|
||||
recipe = {
|
||||
{"default:papyrus", "default:papyrus", "default:papyrus"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:book",
|
||||
recipe = {
|
||||
{"default:paper"},
|
||||
{"default:paper"},
|
||||
{"default:paper"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:bookshelf",
|
||||
recipe = {
|
||||
|
@ -647,29 +292,6 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:mese_crystal 9",
|
||||
recipe = {
|
||||
{"default:mese"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:mese_crystal_fragment 9",
|
||||
recipe = {
|
||||
{"default:mese_crystal"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:mese_crystal",
|
||||
recipe = {
|
||||
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
|
||||
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
|
||||
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:meselamp",
|
||||
recipe = {
|
||||
|
@ -687,13 +309,6 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:obsidian_shard 9",
|
||||
recipe = {
|
||||
{"default:obsidian"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:obsidian",
|
||||
recipe = {
|
||||
|
@ -833,50 +448,6 @@ minetest.register_craft({
|
|||
recipe = "default:desert_cobble",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:steel_ingot",
|
||||
recipe = "default:iron_lump",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:copper_ingot",
|
||||
recipe = "default:copper_lump",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:tin_ingot",
|
||||
recipe = "default:tin_lump",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:gold_ingot",
|
||||
recipe = "default:gold_lump",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:clay_brick",
|
||||
recipe = "default:clay_lump",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:gold_ingot",
|
||||
recipe = "default:skeleton_key",
|
||||
cooktime = 5,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:gold_ingot",
|
||||
recipe = "default:key",
|
||||
cooktime = 5,
|
||||
})
|
||||
|
||||
|
||||
--
|
||||
-- Fuels
|
||||
|
@ -1005,7 +576,6 @@ minetest.register_craft({
|
|||
burntime = 7,
|
||||
})
|
||||
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:fence_aspen_wood",
|
||||
|
@ -1067,7 +637,6 @@ minetest.register_craft({
|
|||
burntime = 7,
|
||||
})
|
||||
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:bush_stem",
|
||||
|
@ -1134,36 +703,12 @@ minetest.register_craft({
|
|||
burntime = 60,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:torch",
|
||||
burntime = 4,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:sign_wall_wood",
|
||||
burntime = 10,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:chest",
|
||||
burntime = 30,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:chest_locked",
|
||||
burntime = 30,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:coal_lump",
|
||||
burntime = 40,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:coalblock",
|
||||
|
@ -1194,57 +739,8 @@ minetest.register_craft({
|
|||
burntime = 2,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:paper",
|
||||
burntime = 1,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:book",
|
||||
burntime = 3,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:book_written",
|
||||
burntime = 3,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:dry_shrub",
|
||||
burntime = 2,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "group:stick",
|
||||
burntime = 1,
|
||||
})
|
||||
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:pick_wood",
|
||||
burntime = 6,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:shovel_wood",
|
||||
burntime = 4,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:axe_wood",
|
||||
burntime = 6,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:sword_wood",
|
||||
burntime = 5,
|
||||
})
|
||||
|
|
|
@ -3,19 +3,6 @@
|
|||
-- support for MT game translation.
|
||||
local S = default.get_translator
|
||||
|
||||
minetest.register_craftitem("default:stick", {
|
||||
description = S("Stick"),
|
||||
inventory_image = "default_stick.png",
|
||||
groups = {stick = 1, flammable = 2},
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:paper", {
|
||||
description = S("Paper"),
|
||||
inventory_image = "default_paper.png",
|
||||
groups = {flammable = 3},
|
||||
})
|
||||
|
||||
|
||||
local lpp = 14 -- Lines per book's page
|
||||
local function book_on_use(itemstack, user)
|
||||
local player_name = user:get_player_name()
|
||||
|
@ -158,54 +145,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||
player:set_wielded_item(stack)
|
||||
end)
|
||||
|
||||
minetest.register_craftitem("default:book", {
|
||||
description = S("Book"),
|
||||
inventory_image = "default_book.png",
|
||||
groups = {book = 1, flammable = 3},
|
||||
on_use = book_on_use,
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:book_written", {
|
||||
description = S("Book with Text"),
|
||||
inventory_image = "default_book_written.png",
|
||||
groups = {book = 1, not_in_creative_inventory = 1, flammable = 3},
|
||||
stack_max = 1,
|
||||
on_use = book_on_use,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "default:book_written",
|
||||
recipe = {"default:book", "default:book_written"}
|
||||
})
|
||||
|
||||
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
|
||||
if itemstack:get_name() ~= "default:book_written" then
|
||||
return
|
||||
end
|
||||
|
||||
local original
|
||||
local index
|
||||
for i = 1, player:get_inventory():get_size("craft") do
|
||||
if old_craft_grid[i]:get_name() == "default:book_written" then
|
||||
original = old_craft_grid[i]
|
||||
index = i
|
||||
end
|
||||
end
|
||||
if not original then
|
||||
return
|
||||
end
|
||||
local copymeta = original:get_meta():to_table()
|
||||
-- copy of the book held by player's mouse cursor
|
||||
itemstack:get_meta():from_table(copymeta)
|
||||
-- put the book with metadata back in the craft grid
|
||||
craft_inv:set_stack("craft", index, original)
|
||||
end)
|
||||
|
||||
minetest.register_craftitem("default:skeleton_key", {
|
||||
description = S("Skeleton Key"),
|
||||
inventory_image = "default_key_skeleton.png",
|
||||
groups = {key = 1},
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if pointed_thing.type ~= "node" then
|
||||
return itemstack
|
||||
|
@ -258,91 +200,9 @@ minetest.register_craftitem("default:skeleton_key", {
|
|||
end
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:coal_lump", {
|
||||
description = S("Coal Lump"),
|
||||
inventory_image = "default_coal_lump.png",
|
||||
groups = {coal = 1, flammable = 1}
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:iron_lump", {
|
||||
description = S("Iron Lump"),
|
||||
inventory_image = "default_iron_lump.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:copper_lump", {
|
||||
description = S("Copper Lump"),
|
||||
inventory_image = "default_copper_lump.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:tin_lump", {
|
||||
description = S("Tin Lump"),
|
||||
inventory_image = "default_tin_lump.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:mese_crystal", {
|
||||
description = S("Mese Crystal"),
|
||||
inventory_image = "default_mese_crystal.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:gold_lump", {
|
||||
description = S("Gold Lump"),
|
||||
inventory_image = "default_gold_lump.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:diamond", {
|
||||
description = S("Diamond"),
|
||||
inventory_image = "default_diamond.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:clay_lump", {
|
||||
description = S("Clay Lump"),
|
||||
inventory_image = "default_clay_lump.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:steel_ingot", {
|
||||
description = S("Steel Ingot"),
|
||||
inventory_image = "default_steel_ingot.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:copper_ingot", {
|
||||
description = S("Copper Ingot"),
|
||||
inventory_image = "default_copper_ingot.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:tin_ingot", {
|
||||
description = S("Tin Ingot"),
|
||||
inventory_image = "default_tin_ingot.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:bronze_ingot", {
|
||||
description = S("Bronze Ingot"),
|
||||
inventory_image = "default_bronze_ingot.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:gold_ingot", {
|
||||
description = S("Gold Ingot"),
|
||||
inventory_image = "default_gold_ingot.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:mese_crystal_fragment", {
|
||||
description = S("Mese Crystal Fragment"),
|
||||
inventory_image = "default_mese_crystal_fragment.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:clay_brick", {
|
||||
description = S("Clay Brick"),
|
||||
inventory_image = "default_clay_brick.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:obsidian_shard", {
|
||||
description = S("Obsidian Shard"),
|
||||
inventory_image = "default_obsidian_shard.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:flint", {
|
||||
description = S("Flint"),
|
||||
inventory_image = "default_flint.png"
|
||||
})
|
||||
--
|
||||
-- Craftitem registry
|
||||
--
|
||||
|
||||
minetest.register_craftitem("default:blueberries", {
|
||||
description = S("Blueberries"),
|
||||
|
@ -350,3 +210,329 @@ minetest.register_craftitem("default:blueberries", {
|
|||
groups = {food_blueberries = 1, food_berry = 1},
|
||||
on_use = minetest.item_eat(2),
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:book", {
|
||||
description = S("Book"),
|
||||
inventory_image = "default_book.png",
|
||||
groups = {book = 1, flammable = 3},
|
||||
on_use = book_on_use,
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:book_written", {
|
||||
description = S("Book with Text"),
|
||||
inventory_image = "default_book_written.png",
|
||||
groups = {book = 1, not_in_creative_inventory = 1, flammable = 3},
|
||||
stack_max = 1,
|
||||
on_use = book_on_use,
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:bronze_ingot", {
|
||||
description = S("Bronze Ingot"),
|
||||
inventory_image = "default_bronze_ingot.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:clay_brick", {
|
||||
description = S("Clay Brick"),
|
||||
inventory_image = "default_clay_brick.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:clay_lump", {
|
||||
description = S("Clay Lump"),
|
||||
inventory_image = "default_clay_lump.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:coal_lump", {
|
||||
description = S("Coal Lump"),
|
||||
inventory_image = "default_coal_lump.png",
|
||||
groups = {coal = 1, flammable = 1}
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:copper_ingot", {
|
||||
description = S("Copper Ingot"),
|
||||
inventory_image = "default_copper_ingot.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:copper_lump", {
|
||||
description = S("Copper Lump"),
|
||||
inventory_image = "default_copper_lump.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:diamond", {
|
||||
description = S("Diamond"),
|
||||
inventory_image = "default_diamond.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:flint", {
|
||||
description = S("Flint"),
|
||||
inventory_image = "default_flint.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:gold_ingot", {
|
||||
description = S("Gold Ingot"),
|
||||
inventory_image = "default_gold_ingot.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:gold_lump", {
|
||||
description = S("Gold Lump"),
|
||||
inventory_image = "default_gold_lump.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:iron_lump", {
|
||||
description = S("Iron Lump"),
|
||||
inventory_image = "default_iron_lump.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:mese_crystal", {
|
||||
description = S("Mese Crystal"),
|
||||
inventory_image = "default_mese_crystal.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:mese_crystal_fragment", {
|
||||
description = S("Mese Crystal Fragment"),
|
||||
inventory_image = "default_mese_crystal_fragment.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:obsidian_shard", {
|
||||
description = S("Obsidian Shard"),
|
||||
inventory_image = "default_obsidian_shard.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:paper", {
|
||||
description = S("Paper"),
|
||||
inventory_image = "default_paper.png",
|
||||
groups = {flammable = 3},
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:steel_ingot", {
|
||||
description = S("Steel Ingot"),
|
||||
inventory_image = "default_steel_ingot.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:stick", {
|
||||
description = S("Stick"),
|
||||
inventory_image = "default_stick.png",
|
||||
groups = {stick = 1, flammable = 2},
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:tin_ingot", {
|
||||
description = S("Tin Ingot"),
|
||||
inventory_image = "default_tin_ingot.png"
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:tin_lump", {
|
||||
description = S("Tin Lump"),
|
||||
inventory_image = "default_tin_lump.png"
|
||||
})
|
||||
|
||||
--
|
||||
-- Crafting recipes
|
||||
--
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:book",
|
||||
recipe = {
|
||||
{"default:paper"},
|
||||
{"default:paper"},
|
||||
{"default:paper"},
|
||||
}
|
||||
})
|
||||
|
||||
default.register_craft_metadata_copy("default:book", "default:book_written")
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:bronze_ingot 9",
|
||||
recipe = {
|
||||
{"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"},
|
||||
{"default:copper_ingot", "default:tin_ingot", "default:copper_ingot"},
|
||||
{"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:clay_brick 4",
|
||||
recipe = {
|
||||
{"default:brick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:clay_lump 4",
|
||||
recipe = {
|
||||
{"default:clay"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:coal_lump 9",
|
||||
recipe = {
|
||||
{"default:coalblock"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:copper_ingot 9",
|
||||
recipe = {
|
||||
{"default:copperblock"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:diamond 9",
|
||||
recipe = {
|
||||
{"default:diamondblock"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:gold_ingot 9",
|
||||
recipe = {
|
||||
{"default:goldblock"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:mese_crystal",
|
||||
recipe = {
|
||||
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
|
||||
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
|
||||
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:mese_crystal 9",
|
||||
recipe = {
|
||||
{"default:mese"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:mese_crystal_fragment 9",
|
||||
recipe = {
|
||||
{"default:mese_crystal"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:obsidian_shard 9",
|
||||
recipe = {
|
||||
{"default:obsidian"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:paper",
|
||||
recipe = {
|
||||
{"default:papyrus", "default:papyrus", "default:papyrus"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:skeleton_key",
|
||||
recipe = {
|
||||
{"default:gold_ingot"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:steel_ingot 9",
|
||||
recipe = {
|
||||
{"default:steelblock"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:stick 4",
|
||||
recipe = {
|
||||
{"group:wood"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:tin_ingot 9",
|
||||
recipe = {
|
||||
{"default:tinblock"},
|
||||
}
|
||||
})
|
||||
|
||||
--
|
||||
-- Cooking recipes
|
||||
--
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:clay_brick",
|
||||
recipe = "default:clay_lump",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:copper_ingot",
|
||||
recipe = "default:copper_lump",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:gold_ingot",
|
||||
recipe = "default:gold_lump",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:gold_ingot",
|
||||
recipe = "default:key",
|
||||
cooktime = 5,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:gold_ingot",
|
||||
recipe = "default:skeleton_key",
|
||||
cooktime = 5,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:steel_ingot",
|
||||
recipe = "default:iron_lump",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "default:tin_ingot",
|
||||
recipe = "default:tin_lump",
|
||||
})
|
||||
|
||||
--
|
||||
-- Fuels
|
||||
--
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:book",
|
||||
burntime = 3,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:book_written",
|
||||
burntime = 3,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:coal_lump",
|
||||
burntime = 40,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:paper",
|
||||
burntime = 1,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "group:stick",
|
||||
burntime = 1,
|
||||
})
|
||||
|
|
|
@ -141,7 +141,7 @@ default.cool_lava = function(pos, node)
|
|||
minetest.set_node(pos, {name = "default:stone"})
|
||||
end
|
||||
minetest.sound_play("default_cool_lava",
|
||||
{pos = pos, max_hear_distance = 16, gain = 0.25})
|
||||
{pos = pos, max_hear_distance = 16, gain = 0.25}, true)
|
||||
end
|
||||
|
||||
if minetest.settings:get_bool("enable_lavacooling") ~= false then
|
||||
|
@ -581,6 +581,40 @@ minetest.register_abm({
|
|||
end
|
||||
})
|
||||
|
||||
--
|
||||
-- Register a craft to copy the metadata of items
|
||||
--
|
||||
|
||||
function default.register_craft_metadata_copy(ingredient, result)
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = result,
|
||||
recipe = {ingredient, result}
|
||||
})
|
||||
|
||||
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
|
||||
if itemstack:get_name() ~= result then
|
||||
return
|
||||
end
|
||||
|
||||
local original
|
||||
local index
|
||||
for i = 1, #old_craft_grid do
|
||||
if old_craft_grid[i]:get_name() == result then
|
||||
original = old_craft_grid[i]
|
||||
index = i
|
||||
end
|
||||
end
|
||||
if not original then
|
||||
return
|
||||
end
|
||||
local copymeta = original:get_meta():to_table()
|
||||
itemstack:get_meta():from_table(copymeta)
|
||||
-- put the book with metadata back in the craft grid
|
||||
craft_inv:set_stack("craft", index, original)
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
--
|
||||
-- NOTICE: This method is not an official part of the API yet.
|
||||
|
@ -605,7 +639,7 @@ function default.can_interact_with_node(player, pos)
|
|||
|
||||
-- Is player wielding the right key?
|
||||
local item = player:get_wielded_item()
|
||||
if item:get_name() == "default:key" then
|
||||
if minetest.get_item_group(item:get_name(), "key") == 1 then
|
||||
local key_meta = item:get_meta()
|
||||
|
||||
if key_meta:get_string("secret") == "" then
|
||||
|
|
|
@ -352,3 +352,12 @@ minetest.register_node("default:furnace_active", {
|
|||
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
||||
allow_metadata_inventory_take = allow_metadata_inventory_take,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:furnace",
|
||||
recipe = {
|
||||
{"group:stone", "group:stone", "group:stone"},
|
||||
{"group:stone", "", "group:stone"},
|
||||
{"group:stone", "group:stone", "group:stone"},
|
||||
}
|
||||
})
|
||||
|
|
|
@ -14,11 +14,22 @@ default.get_translator = S
|
|||
|
||||
-- GUI related stuff
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
player:set_formspec_prepend([[
|
||||
-- Set formspec prepend
|
||||
local formspec = [[
|
||||
bgcolor[#080808BB;true]
|
||||
background[5,5;1,1;gui_formbg.png;true]
|
||||
background9[5,5;1,1;gui_formbg.png;true;10]
|
||||
listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] ]])
|
||||
listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] ]]
|
||||
local name = player:get_player_name()
|
||||
local info = minetest.get_player_information(name)
|
||||
if info.formspec_version > 1 then
|
||||
formspec = formspec .. "background9[5,5;1,1;gui_formbg.png;true;10]"
|
||||
else
|
||||
formspec = formspec .. "background[5,5;1,1;gui_formbg.png;true]"
|
||||
end
|
||||
player:set_formspec_prepend(formspec)
|
||||
|
||||
-- Set hotbar textures
|
||||
player:hud_set_hotbar_image("gui_hotbar.png")
|
||||
player:hud_set_hotbar_selected_image("gui_hotbar_selected.png")
|
||||
end)
|
||||
|
||||
function default.get_hotbar_bg(x,y)
|
||||
|
|
|
@ -20,7 +20,7 @@ local item = {
|
|||
minetest.sound_play("default_item_smoke", {
|
||||
pos = p,
|
||||
max_hear_distance = 8,
|
||||
})
|
||||
}, true)
|
||||
minetest.add_particlespawner({
|
||||
amount = 3,
|
||||
time = 0.1,
|
||||
|
|
|
@ -0,0 +1,211 @@
|
|||
# textdomain: default
|
||||
Locked Chest=Peti Berkunci
|
||||
Locked Chest (owned by @1)=Peti Berkunci (milik @1)
|
||||
You do not own this chest.=Ini bukan peti milik anda.
|
||||
a locked chest=peti berkunci
|
||||
Chest=Peti
|
||||
Stick=Serpihan Kayu
|
||||
Paper=Kertas
|
||||
"@1" by @2="@1" oleh @2
|
||||
Book=Buku
|
||||
Book with Text=Buku Bertulisan
|
||||
Skeleton Key=Kunci Induk
|
||||
Key to @1's @2=Kunci @2 milik @1
|
||||
Coal Lump=Longgokan Batu Arang
|
||||
Iron Lump=Longgokan Besi
|
||||
Copper Lump=Longgokan Tembaga
|
||||
Tin Lump=Longgokan Timah
|
||||
Mese Crystal=Kristal Mese
|
||||
Gold Lump=Longgokan Emas
|
||||
Diamond=Berlian
|
||||
Clay Lump=Longgokan Tanah Liat
|
||||
Steel Ingot=Jongkong Keluli
|
||||
Copper Ingot=Jongkong Tembaga
|
||||
Tin Ingot=Jongkong Timah
|
||||
Bronze Ingot=Jongkong Gangsa
|
||||
Gold Ingot=Jongkong Emas
|
||||
Mese Crystal Fragment=Serpihan Mese
|
||||
Clay Brick=Bata Tanah Liat
|
||||
Obsidian Shard=Serpihan Obsidia
|
||||
Flint=Batu Api
|
||||
Blueberries=Beri Biru
|
||||
Furnace is empty=Relau masih kosong
|
||||
100% (output full)=100% (keluaran penuh)
|
||||
@1%=@1%
|
||||
Empty=Kosong
|
||||
Not cookable=Tidak boleh dimasak
|
||||
Furnace active=Relau aktif
|
||||
Furnace inactive=Relau tidak aktif
|
||||
(Item: @1; Fuel: @2)=(Item: @1; Bahan api: @2)
|
||||
Furnace=Relau
|
||||
Stone=Batu
|
||||
Cobblestone=Batu Buntar
|
||||
Stone Brick=Bata Batu
|
||||
Stone Block=Bongkah Batu
|
||||
Mossy Cobblestone=Batu Buntar Berlumut
|
||||
Desert Stone=Batu Gurun
|
||||
Desert Cobblestone=Batu Buntar Gurun
|
||||
Desert Stone Brick=Bata Batu Gurun
|
||||
Desert Stone Block=Bongkah Batu Gurun
|
||||
Sandstone=Batu Pasir
|
||||
Sandstone Brick=Bata Batu Pasir
|
||||
Sandstone Block=Bongkah Batu Pasir
|
||||
Desert Sandstone=Batu Pasir Gurun
|
||||
Desert Sandstone Brick=Bata Batu Pasir Gurun
|
||||
Desert Sandstone Block=Bongkah Batu Pasir Gurun
|
||||
Silver Sandstone=Batu Pasir Perak
|
||||
Silver Sandstone Brick=Bata Batu Pasir Perak
|
||||
Silver Sandstone Block=Bongkah Batu Pasir Perak
|
||||
Obsidian=Obsidia
|
||||
Obsidian Brick=Bata Obsidia
|
||||
Obsidian Block=Bongkah Obsidia
|
||||
Dirt=Tanah
|
||||
Dirt with Grass=Tanah Berumput
|
||||
Dirt with Grass and Footsteps=Tanah Berumput dan Tapak Kaki
|
||||
Dirt with Dry Grass=Tanah Berumput Kering
|
||||
Dirt with Snow=Tanah Bersalji
|
||||
Dirt with Rainforest Litter=Tanah Bersarap Hutan Hujan
|
||||
Dirt with Coniferous Litter=Tanah Bersarap Hutan Konifer
|
||||
Dry Dirt=Tanah Kering
|
||||
Dry Dirt with Dry Grass=Tanah Kering Berumput Kering
|
||||
Permafrost=Ibun Abadi
|
||||
Permafrost with Stones=Ibun Abadi Berbatu
|
||||
Permafrost with Moss=Ibun Abadi Berlumut
|
||||
Sand=Pasir
|
||||
Desert Sand=Pasir Gurun
|
||||
Silver Sand=Pasir Perak
|
||||
Gravel=Kelikir
|
||||
Clay=Tanah Liat
|
||||
Snow=Salji
|
||||
Snow Block=Bongkah Salji
|
||||
Ice=Ais
|
||||
Cave Ice=Ais Gua
|
||||
Apple Tree=Kayu Pokok Epal
|
||||
Apple Wood Planks=Papan Kayu Epal
|
||||
Apple Tree Sapling=Anak Pokok Epal
|
||||
Apple Tree Leaves=Daun Pokok Epal
|
||||
Apple=Epal
|
||||
Apple Marker=Penanda Epal
|
||||
Jungle Tree=Kayu Pokok Hutan
|
||||
Jungle Wood Planks=Papan Kayu Hutan
|
||||
Jungle Tree Leaves=Daun Pokok Hutan
|
||||
Jungle Tree Sapling=Anak Pokok Hutan
|
||||
Emergent Jungle Tree Sapling=Anak Pokok Hutan Kembang
|
||||
Pine Tree=Kayu Pokok Pain
|
||||
Pine Wood Planks=Papan Kayu Pain
|
||||
Pine Needles=Daun Pokok Pain
|
||||
Pine Tree Sapling=Anak Pokok Pain
|
||||
Acacia Tree=Kayu Pokok Akasia
|
||||
Acacia Wood Planks=Papan Kayu Akasia
|
||||
Acacia Tree Leaves=Daun Pokok Akasia
|
||||
Acacia Tree Sapling=Anak Pokok Akasia
|
||||
Aspen Tree=Kayu Pokok Aspen
|
||||
Aspen Wood Planks=Papan Kayu Aspen
|
||||
Aspen Tree Leaves=Daun Pokok Aspen
|
||||
Aspen Tree Sapling=Anak Pokok Aspen
|
||||
Coal Ore=Bijih Batu Arang
|
||||
Coal Block=Bongkah Batu Arang
|
||||
Iron Ore=Bijih Besi
|
||||
Steel Block=Bongkah Keluli
|
||||
Copper Ore=Bijih Tembaga
|
||||
Copper Block=Bongkah Tembaga
|
||||
Tin Ore=Bijih Timah
|
||||
Tin Block=Bongkah Timah
|
||||
Bronze Block=Bongkah Gangsa
|
||||
Mese Ore=Bijih Mese
|
||||
Mese Block=Bongkah Mese
|
||||
Gold Ore=Bijih Emas
|
||||
Gold Block=Bongkah Emas
|
||||
Diamond Ore=Bijih Intan
|
||||
Diamond Block=Bongkah Intan
|
||||
Cactus=Kaktus
|
||||
Large Cactus Seedling=Benih Kaktus Besar
|
||||
Papyrus=Papirus
|
||||
Dry Shrub=Pokok Renek Kering
|
||||
Jungle Grass=Rumput Hutan
|
||||
Grass=Rumput
|
||||
Dry Grass=Rumput Kering
|
||||
Fern=Paku Pakis
|
||||
Marram Grass=Rumput Maram
|
||||
Bush Stem=Batang Belukar
|
||||
Bush Leaves=Daun Belukar
|
||||
Bush Sapling=Anak Belukar
|
||||
Blueberry Bush Leaves with Berries=Daun Belukar Beri Biru Berberi
|
||||
Blueberry Bush Leaves=Daun Belukar Beri Biru
|
||||
Blueberry Bush Sapling=Anak Belukar Beri Biru
|
||||
Acacia Bush Stem=Batang Belukar Akasia
|
||||
Acacia Bush Leaves=Daun Belukar Akasia
|
||||
Acacia Bush Sapling=Anak Belukar Akasia
|
||||
Pine Bush Stem=Batang Belukar Pain
|
||||
Pine Bush Needles=Daun Belukar Pain
|
||||
Pine Bush Sapling=Anak Belukar Pain
|
||||
Kelp=Kelpa
|
||||
Green Coral=Batu Karang Hijau
|
||||
Pink Coral=Batu Karang Merah Jambu
|
||||
Cyan Coral=Batu Karang Biru Kehijauan
|
||||
Brown Coral=Batu Karang Perang
|
||||
Orange Coral=Batu Karang Jingga
|
||||
Coral Skeleton= Rangka Karang
|
||||
Water Source=Sumber Air
|
||||
Flowing Water=Air Mengalir
|
||||
River Water Source=Sumber Air Sungai
|
||||
Flowing River Water=Air Sungai Mengalir
|
||||
Lava Source=Sumber Lava
|
||||
Flowing Lava=Lava Mengalir
|
||||
Empty Bookshelf=Rak Buku Kosong
|
||||
Bookshelf (@1 written, @2 empty books)=Rak Buku (@1 buku bertulis, @2 buku kosong)
|
||||
Bookshelf=Rak Buku
|
||||
Text too long=Tulisan terlalu panjang
|
||||
Wooden Sign=Papan Tanda Kayu
|
||||
Steel Sign=Papan Tanda Keluli
|
||||
Wooden Ladder=Tangga Panjat Kayu
|
||||
Steel Ladder=Tangga Panjat Keluli
|
||||
Apple Wood Fence=Pagar Kayu Epal
|
||||
Acacia Wood Fence=Pagar Kayu Akasia
|
||||
Jungle Wood Fence=Pagar Kayu Hutan
|
||||
Pine Wood Fence=Pagar Kayu Pain
|
||||
Aspen Wood Fence=Pagar Kayu Aspen
|
||||
Apple Wood Fence Rail=Pagar Rel Kayu Epal
|
||||
Acacia Wood Fence Rail=Pagar Rel Kayu Akasia
|
||||
Jungle Wood Fence Rail=Pagar Rel Kayu Hutan
|
||||
Pine Wood Fence Rail=Pagar Rel Kayu Pain
|
||||
Aspen Wood Fence Rail=Pagar Rel Kayu Aspen
|
||||
Glass=Kaca
|
||||
Obsidian Glass=Kaca Obsidia
|
||||
Brick Block=Bongkah Bata
|
||||
Mese Lamp=Lampu Mese
|
||||
Mese Post Light=Lampu Tiang Mese
|
||||
Cloud=Awan
|
||||
Wooden Pickaxe=Beliung Kayu
|
||||
Stone Pickaxe=Beliung Batu
|
||||
Bronze Pickaxe=Beliung Gangsa
|
||||
Steel Pickaxe=Beliung Keluli
|
||||
Mese Pickaxe=Beliung Mese
|
||||
Diamond Pickaxe=Beliung Intan
|
||||
Wooden Shovel=Penyodok Kayu
|
||||
Stone Shovel=Penyodok Batu
|
||||
Bronze Shovel=Penyodok Gangsa
|
||||
Steel Shovel=Penyodok Keluli
|
||||
Mese Shovel=Penyodok Mese
|
||||
Diamond Shovel=Penyodok Intan
|
||||
Wooden Axe=Kapak Kayu
|
||||
Stone Axe=Kapak Batu
|
||||
Bronze Axe=Kapak Gangsa
|
||||
Steel Axe=Kapak Keluli
|
||||
Mese Axe=Kapak Mese
|
||||
Diamond Axe=Kapak Intan
|
||||
Wooden Sword=Pedang Kayu
|
||||
Stone Sword=Pedang Batu
|
||||
Bronze Sword=Pedang Gangsa
|
||||
Steel Sword=Pedang Keluli
|
||||
Mese Sword=Pedang Mese
|
||||
Diamond Sword=Pedang Intan
|
||||
Key=Kunci
|
||||
Torch=Obor
|
||||
@1 will intersect protection on growth.=@1 akan masuk kawasan perlindungan lain apabila ia tumbuh.
|
||||
Title:=Tajuk:
|
||||
Contents:=Kandungan:
|
||||
Save=Simpan
|
||||
by @1=oleh @1
|
||||
Page @1 of @2=Ms. @1 / @2
|
||||
"@1"="@1"
|
|
@ -0,0 +1,211 @@
|
|||
# textdomain: default
|
||||
Locked Chest=Заблокированный Сундук
|
||||
Locked Chest (owned by @1)=Заблокированный Сундук (владелец: @1)
|
||||
You do not own this chest.=Вы не владелец этого сундука.
|
||||
a locked chest=заблокированный сундук
|
||||
Chest=Сундук
|
||||
Stick=Палка
|
||||
Paper=Бумага
|
||||
"@1" by @2="@1" @2
|
||||
Book=Книга
|
||||
Book with Text=Книга с Текстом
|
||||
Skeleton Key=Ключ Скелета
|
||||
Key to @1's @2=Ключ к @2 от @1
|
||||
Coal Lump=Кусок Угля
|
||||
Iron Lump=Кусок Железа
|
||||
Copper Lump=Кусок Меди
|
||||
Tin Lump=Кусок Олова
|
||||
Mese Crystal=Кристалл Месе
|
||||
Gold Lump=Кусок Золота
|
||||
Diamond=Алмаз
|
||||
Clay Lump=Ком Глины
|
||||
Steel Ingot=Железный Брусок
|
||||
Copper Ingot=Медный Брусок
|
||||
Tin Ingot=Оловянный Брусок
|
||||
Bronze Ingot=Бронзовый Брусок
|
||||
Gold Ingot=Золотой Брусок
|
||||
Mese Crystal Fragment=Осколок Кристалла Месе
|
||||
Clay Brick=Глиняный Кирпич
|
||||
Obsidian Shard=Обсидиановый Осколок
|
||||
Flint=Огниво
|
||||
Blueberries=Черника
|
||||
Furnace is empty=Печь пустая
|
||||
100% (output full)=100% (полное приготовление)
|
||||
@1%=@1%
|
||||
Empty=Пустое
|
||||
Not cookable=Не может быть приготовлено
|
||||
Furnace active=Печь зажжена
|
||||
Furnace inactive=Печь не зажжена
|
||||
(Item: @1; Fuel: @2)=(Предмет: @1; Топливо: @2)
|
||||
Furnace=Печь
|
||||
Stone=Камень
|
||||
Cobblestone=Булыжник
|
||||
Stone Brick=Каменный Кирпич
|
||||
Stone Block=Каменный Блок
|
||||
Mossy Cobblestone=Мшистый Булыжник
|
||||
Desert Stone=Пустынный Камень
|
||||
Desert Cobblestone=Пустынный Булыжник
|
||||
Desert Stone Brick=Пустынный Каменный Кирпич
|
||||
Desert Stone Block=Пустынный Каменный Блок
|
||||
Sandstone=Песчаник
|
||||
Sandstone Brick=Песчаниковый Кирпич
|
||||
Sandstone Block=Песчаниковый Блок
|
||||
Desert Sandstone=Пустынный Песчаник
|
||||
Desert Sandstone Brick=Пустынный Песчаниковый Кирпич
|
||||
Desert Sandstone Block=Пустынный Песчаниковый Блок
|
||||
Silver Sandstone=Серебряный Песчаник
|
||||
Silver Sandstone Brick=Серебряный Песчаниковый Кирпич
|
||||
Silver Sandstone Block=Серебряный Песчаниковый Блок
|
||||
Obsidian=Обсидиан
|
||||
Obsidian Brick=Обсидиановый Кирпич
|
||||
Obsidian Block=Обсидиановый Блок
|
||||
Dirt=Земля
|
||||
Dirt with Grass=Земля с Травой
|
||||
Dirt with Grass and Footsteps=Земля с Травой и Следами
|
||||
Dirt with Dry Grass=Земля с Сухой Травой
|
||||
Dirt with Snow=Земля Со Снегом
|
||||
Dirt with Rainforest Litter=Земля с Тропической Подстилкой
|
||||
Dirt with Coniferous Litter=Земля с Сосновой Подстилкой
|
||||
Dry Dirt=Сухая Земля
|
||||
Dry Dirt with Dry Grass=Сухая Земля с Сухой Травой
|
||||
Permafrost=Замороженная Почва
|
||||
Permafrost with Stones=Замороженная Почва с Камнями
|
||||
Permafrost with Moss=Замороженная Почва с Мхом
|
||||
Sand=Песок
|
||||
Desert Sand=Пустынный Песок
|
||||
Silver Sand=Серебряный Песок
|
||||
Gravel=Гравий
|
||||
Clay=Глиняный Блок
|
||||
Snow=Снег
|
||||
Snow Block=Снежный Блок
|
||||
Ice=Лёд
|
||||
Cave Ice=Пещерный Лёд
|
||||
Apple Tree=Яблоневый Ствол
|
||||
Apple Wood Planks=Яблоневые Деревянные Доски
|
||||
Apple Tree Sapling=Яблоневый Саженец
|
||||
Apple Tree Leaves=Яблоневая Листва
|
||||
Apple=Яблоко
|
||||
Apple Marker=Яблочная Метка
|
||||
Jungle Tree=Ствол Тропического Дерева
|
||||
Jungle Wood Planks=Деревянные Доски Тропического Дерева
|
||||
Jungle Tree Leaves=Листва Тропического Дерева
|
||||
Jungle Tree Sapling=Саженец Тропического Дерева
|
||||
Emergent Jungle Tree Sapling=Выросший Саженец Тропического Дерева
|
||||
Pine Tree=Сосновый Ствол
|
||||
Pine Wood Planks=Сосновые Деревянные Доски
|
||||
Pine Needles=Сосновая Хвоя
|
||||
Pine Tree Sapling=Сосновый Саженец
|
||||
Acacia Tree=Ствол Акации
|
||||
Acacia Wood Planks=Деревянные Доски Акации
|
||||
Acacia Tree Leaves=Листва Акации
|
||||
Acacia Tree Sapling=Саженец Акации
|
||||
Aspen Tree=Осиновый Ствол
|
||||
Aspen Wood Planks=Осиновые Деревянные Доски
|
||||
Aspen Tree Leaves=Осиновая Листва
|
||||
Aspen Tree Sapling=Осиновый Саженец
|
||||
Coal Ore=Уголь
|
||||
Coal Block=Угольный Блок
|
||||
Iron Ore=Железная Руда
|
||||
Steel Block=Стальной Блок
|
||||
Copper Ore=Медная Руда
|
||||
Copper Block=Медный Блок
|
||||
Tin Ore=Оловянная Руда
|
||||
Tin Block=Оловянный Блок
|
||||
Bronze Block=Бронзовый Блок
|
||||
Mese Ore=Месевая Руда
|
||||
Mese Block=Месевый Блок
|
||||
Gold Ore=Золотая Руда
|
||||
Gold Block=Золотой Блок
|
||||
Diamond Ore=Алмаз
|
||||
Diamond Block=Алмазный Блок
|
||||
Cactus=Кактус
|
||||
Large Cactus Seedling=Кактусовый Саженец
|
||||
Papyrus=Папирус
|
||||
Dry Shrub=Сухой Куст
|
||||
Jungle Grass=Тропическая Трава
|
||||
Grass=Трава
|
||||
Dry Grass=Сухая Трава
|
||||
Fern=Папоротник
|
||||
Marram Grass=Песколюб
|
||||
Bush Stem=Ствол Яблочного Деревца
|
||||
Bush Leaves=Листья Яблочного Деревца
|
||||
Bush Sapling=Саженца яблочного деревца
|
||||
Blueberry Bush Leaves with Berries=Куст Черники с Ягодами
|
||||
Blueberry Bush Leaves=Куст Черники
|
||||
Blueberry Bush Sapling=Саженца Куста Черники
|
||||
Acacia Bush Stem=Ствол Деревца Акации
|
||||
Acacia Bush Leaves=Листья Деревца Акации
|
||||
Acacia Bush Sapling=Саженца Деревца Акации
|
||||
Pine Bush Stem=Сосновое Деревце
|
||||
Pine Bush Needles=Хвоя Соснового Деревца
|
||||
Pine Bush Sapling=Саженца Соснового Деревца
|
||||
Kelp=Ламинария
|
||||
Green Coral=Зеленый Коралл
|
||||
Pink Coral=Розовый Коралл
|
||||
Cyan Coral=Голубой Коралл
|
||||
Brown Coral=Бурый Коралл
|
||||
Orange Coral=Оранжевый Коралл
|
||||
Coral Skeleton=Коралловый Остов
|
||||
Water Source=Водный Источник
|
||||
Flowing Water=Текущая Вода
|
||||
River Water Source=Речной Водный Источник
|
||||
Flowing River Water=Текущая Речная Вода
|
||||
Lava Source=Лавовый Источник
|
||||
Flowing Lava=Текущая Лава
|
||||
Empty Bookshelf=Пустая Книжная Полка
|
||||
Bookshelf (@1 written, @2 empty books)=Книжная Полка (@1 написано, @2 чистые книги)
|
||||
Bookshelf=Книжная Полка
|
||||
Text too long=Текст слишком длинный
|
||||
Wooden Sign=Деревянная Табличка
|
||||
Steel Sign=Стальная Табличка
|
||||
Wooden Ladder=Деревянная Лестница
|
||||
Steel Ladder=Стальная Лестница
|
||||
Apple Wood Fence=Яблоневый Деревянный Забор
|
||||
Acacia Wood Fence=Деревянный Забор Из Акации
|
||||
Jungle Wood Fence=Деревянный Забор Из Тропического Дерева
|
||||
Pine Wood Fence=Сосновый Деревянный Забор
|
||||
Aspen Wood Fence=Осиновый Деревянный Забор
|
||||
Apple Wood Fence Rail=Яблоневый Деревянный Реечный Забор
|
||||
Acacia Wood Fence Rail=Деревянный Реечный Забор Из Акации
|
||||
Jungle Wood Fence Rail=Деревянный Реечный Забор Из Тропического Дерева
|
||||
Pine Wood Fence Rail=Сосновый Деревянный Реечный Забор
|
||||
Aspen Wood Fence Rail=Осиновый Деревянный Реечный Забор
|
||||
Glass=Стекло
|
||||
Obsidian Glass=Обсидиановое Стекло
|
||||
Brick Block=Кирпичный Блок
|
||||
Mese Lamp=Месе Лампа
|
||||
Mese Post Light=Столб с Месе Фонарем
|
||||
Cloud=Облако
|
||||
Wooden Pickaxe=Деревянная Кирка
|
||||
Stone Pickaxe=Каменная Кирка
|
||||
Bronze Pickaxe=Бронзовая Кирка
|
||||
Steel Pickaxe=Стальная Кирка
|
||||
Mese Pickaxe=Месе Кирка
|
||||
Diamond Pickaxe=Алмазная Кирка
|
||||
Wooden Shovel=Деревянная Лопата
|
||||
Stone Shovel=Каменная Лопата
|
||||
Bronze Shovel=Бронзовая Лопата
|
||||
Steel Shovel=Стальная Лопата
|
||||
Mese Shovel=Месе Лопата
|
||||
Diamond Shovel=Алмазная Лопата
|
||||
Wooden Axe=Деревянный Топор
|
||||
Stone Axe=Каменный Топор
|
||||
Bronze Axe=Бронзовый Топор
|
||||
Steel Axe=Стальной Топор
|
||||
Mese Axe=Месе Топор
|
||||
Diamond Axe=Алмазный Топор
|
||||
Wooden Sword=Деревянный Меч
|
||||
Stone Sword=Каменный Меч
|
||||
Bronze Sword=Бронзовый Меч
|
||||
Steel Sword=Стальной Меч
|
||||
Mese Sword=Месе Меч
|
||||
Diamond Sword=Алмазный Меч
|
||||
Key=Ключ
|
||||
Torch=Факел
|
||||
@1 will intersect protection on growth.=@1 пересечёт защиту по росту.
|
||||
Title:=Заголовок:
|
||||
Contents:=Содержимое:
|
||||
Save=Сохранить
|
||||
by @1=@1
|
||||
Page @1 of @2=Страница @1 из @2
|
||||
"@1"="@1"
|
|
@ -0,0 +1,211 @@
|
|||
## textdomain: default
|
||||
Locked Chest=Låst kista
|
||||
Locked Chest (owned by @1)=Låst kista (Ägd av @1)
|
||||
You do not own this chest.=Du äger inte denna kistan.
|
||||
a locked chest=en låst kista
|
||||
Chest=Kista
|
||||
Stick=Pinne
|
||||
Paper=Papper
|
||||
"@1" by @2="@1" av @2
|
||||
Book=Bok
|
||||
Book with Text=Bok med text
|
||||
Skeleton Key=Skelett Nyckel
|
||||
Key to @1's @2=Nyckel till @1s @2
|
||||
Coal Lump=Kol Klumo
|
||||
Iron Lump=Järn Klump
|
||||
Copper Lump=Koppar Klump
|
||||
Tin Lump=Tenn Klump
|
||||
Mese Crystal=Mese Kristall
|
||||
Gold Lump=Guld Klump
|
||||
Diamond=Diamant
|
||||
Clay Lump=Lerklump
|
||||
Steel Ingot=Stål tacka
|
||||
Copper Ingot=Koppar tacka
|
||||
Tin Ingot=Tenn tacka
|
||||
Bronze Ingot=Brons tacka
|
||||
Gold Ingot=Guld tacka
|
||||
Mese Crystal Fragment=Mese Kristall Fragment
|
||||
Clay Brick=Tegelsten
|
||||
Obsidian Shard=Obsidian Skärva
|
||||
Flint=Flinta
|
||||
Blueberries=Blåbär
|
||||
Furnace is empty=Ugnen är tom
|
||||
100% (output full)=100% (utgången full)
|
||||
@1%=@1%
|
||||
Empty=Tom
|
||||
Not cookable=Inte kokbar
|
||||
Furnace active=Ugn aktiv
|
||||
Furnace inactive=Ugn inaktiv
|
||||
(Item: @1; Fuel: @2)=(Sak: @1; Bränsle: @2)
|
||||
Furnace=Ugn
|
||||
Stone=Sten
|
||||
Cobblestone=Kullersten
|
||||
Stone Brick=Stentegel
|
||||
Stone Block=Sten block
|
||||
Mossy Cobblestone=Mossig kullersten
|
||||
Desert Stone=Öken sten
|
||||
Desert Cobblestone=Öken kullersten
|
||||
Desert Stone Brick=Öken stentegel
|
||||
Desert Stone Block=Öken sten block
|
||||
Sandstone=Sandsten
|
||||
Sandstone Brick=Sandstenstegel
|
||||
Sandstone Block=Sandsten block
|
||||
Desert Sandstone=Öken sandsten
|
||||
Desert Sandstone Brick=Öken Sandstenstegel
|
||||
Desert Sandstone Block=Öken sandsten block
|
||||
Silver Sandstone=Silver sandsten
|
||||
Silver Sandstone Brick=Silver Sandstenstegel
|
||||
Silver Sandstone Block=Silver sandsten block
|
||||
Obsidian=Obsidian
|
||||
Obsidian Brick=Obsidiantegel
|
||||
Obsidian Block=Obsidian block
|
||||
Dirt=Jord
|
||||
Dirt with Grass=Jord med gräs
|
||||
Dirt with Grass and Footsteps=Jord med gräs och fotsteg
|
||||
Dirt with Dry Grass=Jord med torrt gräs
|
||||
Dirt with Snow=Jord med snö
|
||||
Dirt with Rainforest Litter=Jord med regnskogströ
|
||||
Dirt with Coniferous Litter=Jord med Barrträd
|
||||
Dry Dirt=Torr jord
|
||||
Dry Dirt with Dry Grass=Torr jord med torrt gräs
|
||||
Permafrost=Permafrost
|
||||
Permafrost with Stones=Permafrost med sten
|
||||
Permafrost with Moss=Permafrost med mossa
|
||||
Sand=Sand
|
||||
Desert Sand=Öken sand
|
||||
Silver Sand=Silver sand
|
||||
Gravel=Grus
|
||||
Clay=Lera
|
||||
Snow=Snö
|
||||
Snow Block=Snö block
|
||||
Ice=Is
|
||||
Cave Ice=Grott Is
|
||||
Apple Tree=Äpple Träd
|
||||
Apple Wood Planks=Äpple Plankor
|
||||
Apple Tree Sapling=Äpple Planta
|
||||
Apple Tree Leaves=Äpple Löv
|
||||
Apple=Äpple
|
||||
Apple Marker=Äpple Markör
|
||||
Jungle Tree=Djungel Träd
|
||||
Jungle Wood Planks=Djungel Plankor
|
||||
Jungle Tree Leaves=Djungel Löv
|
||||
Jungle Tree Sapling=Djungel Planta
|
||||
Emergent Jungle Tree Sapling=Nybliven Djungel Planta
|
||||
Pine Tree=Tall
|
||||
Pine Wood Planks= Tall Plankor
|
||||
Pine Needles=Granbarr
|
||||
Pine Tree Sapling=Tall Planta
|
||||
Acacia Tree=Akacia Träd
|
||||
Acacia Wood Planks=Akacia Plankor
|
||||
Acacia Tree Leaves=Akacia Löv
|
||||
Acacia Tree Sapling=Akacia Planta
|
||||
Aspen Tree=Asp
|
||||
Aspen Wood Planks=Asp Plankor
|
||||
Aspen Tree Leaves=Asp Löv
|
||||
Aspen Tree Sapling=Asp Planta
|
||||
Coal Ore=Kol Malm
|
||||
Coal Block=Kol Block
|
||||
Iron Ore=Järn Malm
|
||||
Steel Block=Stål Block
|
||||
Copper Ore=Koppar Malm
|
||||
Copper Block=Koppar Block
|
||||
Tin Ore=Tenn Malm
|
||||
Tin Block=Tenn Block
|
||||
Bronze Block=Brons Block
|
||||
Mese Ore=Mese Malm
|
||||
Mese Block=Mese Block
|
||||
Gold Ore=Guld Malm
|
||||
Gold Block=Guld Block
|
||||
Diamond Ore=Diamant Malm
|
||||
Diamond Block=Diamant Block
|
||||
Cactus=Kaktus
|
||||
Large Cactus Seedling=Stor kaktusplanta
|
||||
Papyrus=Papyrus
|
||||
Dry Shrub=Torr Buske
|
||||
Jungle Grass=Djungel Gräs
|
||||
Grass=Gräs
|
||||
Dry Grass=Torrt Gräs
|
||||
Fern=Ormbunke
|
||||
Marram Grass=Marram Gräs
|
||||
Bush Stem=Busk Stam
|
||||
Bush Leaves=Busk Löv
|
||||
Bush Sapling=Busk Planta
|
||||
Blueberry Bush Leaves with Berries=Blåbärsbusks Löv med Bär
|
||||
Blueberry Bush Leaves=Blåbärsbusks Löv
|
||||
Blueberry Bush Sapling=Blåbärsbusks Plantga
|
||||
Acacia Bush Stem=Akacia Busks Stam
|
||||
Acacia Bush Leaves=Akacia Busks Löv
|
||||
Acacia Bush Sapling=Akacia Busks Planta
|
||||
Pine Bush Stem=Tall Busks Stam
|
||||
Pine Bush Needles=Tall Busks Granbarr
|
||||
Pine Bush Sapling=Tall Busks Planta
|
||||
Kelp=Brunalg
|
||||
Green Coral=Grön Korall
|
||||
Pink Coral=Rosa Korall
|
||||
Cyan Coral=Cyan Korall
|
||||
Brown Coral=Brun Korall
|
||||
Orange Coral=Orange Korall
|
||||
Coral Skeleton=Korall Skelett
|
||||
Water Source=Vattenkälla
|
||||
Flowing Water=Flödande Vatten
|
||||
River Water Source=Flodvattenkälla
|
||||
Flowing River Water=Flödande Flodvatten
|
||||
Lava Source=Lavakälla
|
||||
Flowing Lava=Flödande Lava
|
||||
Empty Bookshelf=Tom Bokhylla
|
||||
Bookshelf (@1 written, @2 empty books)=Bokhylla (@1 skriva, @2 tomma böcker)
|
||||
Bookshelf=Bokhylla
|
||||
Text too long=Text för lång
|
||||
Wooden Sign=Trä Skylt
|
||||
Steel Sign=Stål Skylt
|
||||
Wooden Ladder=Trä Stege
|
||||
Steel Ladder=Stål Stege
|
||||
Apple Wood Fence=Äpple Trä Staket
|
||||
Acacia Wood Fence=Akacia Trä Staket
|
||||
Jungle Wood Fence=Djungel Trä Staket
|
||||
Pine Wood Fence=Tall Trä Staket
|
||||
Aspen Wood Fence=Asp Trä Staket
|
||||
Apple Wood Fence Rail=Äpple Trä Staket Pinne
|
||||
Acacia Wood Fence Rail=Akacia Trä Staket Pinne
|
||||
Jungle Wood Fence Rail=Djungel Trä Staket Pinne
|
||||
Pine Wood Fence Rail=Tall Trä Staket Pinne
|
||||
Aspen Wood Fence Rail=Asp Trä Staket Pinne
|
||||
Glass=Glas
|
||||
Obsidian Glass=Obsidian Glas
|
||||
Brick Block=Tegelstens Block
|
||||
Mese Lamp=Mese Lampa
|
||||
Mese Post Light=Mese Postljus
|
||||
Cloud=Moln
|
||||
Wooden Pickaxe=Trä Hacka
|
||||
Stone Pickaxe=Sten Hacka
|
||||
Bronze Pickaxe=Brons Hacka
|
||||
Steel Pickaxe=Stål Hacka
|
||||
Mese Pickaxe=Mese Hacka
|
||||
Diamond Pickaxe=Diamant Hacka
|
||||
Wooden Shovel=Trä Spade
|
||||
Stone Shovel=Sten Spade
|
||||
Bronze Shovel=Brons Spade
|
||||
Steel Shovel=Stål Spade
|
||||
Mese Shovel=Mese Spade
|
||||
Diamond Shovel=Diamant Spade
|
||||
Wooden Axe=Trä Yxa
|
||||
Stone Axe=Sten Yxa
|
||||
Bronze Axe=Brons Yxa
|
||||
Steel Axe=Stål Yxa
|
||||
Mese Axe=Mese Yxa
|
||||
Diamond Axe=Diamant Yxa
|
||||
Wooden Sword=Trä Svärd
|
||||
Stone Sword=Sten Svärd
|
||||
Bronze Sword=Brons Svärd
|
||||
Steel Sword=Stål Svärd
|
||||
Mese Sword=Mese Svärd
|
||||
Diamond Sword=Diamant Svärd
|
||||
Key=Nyckel
|
||||
Torch=Fakla
|
||||
@1 will intersect protection on growth.=@1 kommer korsa skyddet mot tillväxt.
|
||||
Title:=Titel:
|
||||
Contents:=Innehåll:
|
||||
Save=Spara
|
||||
by @1=av @1
|
||||
Page @1 of @2=Sida @1 av @2
|
||||
"@1"="@1"
|
|
@ -0,0 +1,211 @@
|
|||
# textdomain: default
|
||||
Locked Chest=已上锁的箱子
|
||||
Locked Chest (owned by @1)=已上锁的箱子(属于@1所有)
|
||||
You do not own this chest.=这个箱子不属于你所有。
|
||||
a locked chest=一个已上锁的箱子
|
||||
Chest=箱子
|
||||
Stick=棒
|
||||
Paper=纸
|
||||
"@1" by @2="@1" by @2
|
||||
Book=书
|
||||
Book with Text=带文字的书
|
||||
Skeleton Key=万能钥匙
|
||||
Key to @1's @2=@1的@2的钥匙
|
||||
Coal Lump=煤块
|
||||
Iron Lump=铁块
|
||||
Copper Lump=铜块
|
||||
Tin Lump=锡块
|
||||
Mese Crystal=黄石晶体
|
||||
Gold Lump=金块
|
||||
Diamond=钻石
|
||||
Clay Lump=粘土块
|
||||
Steel Ingot=铁锭
|
||||
Copper Ingot=铜锭
|
||||
Tin Ingot=锡锭
|
||||
Bronze Ingot=青铜锭
|
||||
Gold Ingot=金锭
|
||||
Mese Crystal Fragment=黄石晶体碎片
|
||||
Clay Brick=粘土砖
|
||||
Obsidian Shard=黑曜石碎片
|
||||
Flint=燧石
|
||||
Blueberries=蓝莓
|
||||
Furnace is empty=熔炉是空的
|
||||
100% (output full)=100%(输出已满)
|
||||
@1%=@1%
|
||||
Empty=空
|
||||
Not cookable=不可烹饪
|
||||
Furnace active=熔炉正在运转
|
||||
Furnace inactive=熔炉未使用
|
||||
(Item: @1; Fuel: @2)=(项目:@1;燃料:@2)
|
||||
Furnace=熔炉
|
||||
Stone=石
|
||||
Cobblestone=鹅卵石
|
||||
Stone Brick=石砖
|
||||
Stone Block=石方块
|
||||
Mossy Cobblestone=苔藓覆盖的鹅卵石
|
||||
Desert Stone=沙漠石
|
||||
Desert Cobblestone=沙漠鹅卵石
|
||||
Desert Stone Brick=沙漠鹅卵石砖
|
||||
Desert Stone Block=沙漠鹅卵石方块
|
||||
Sandstone=砂岩
|
||||
Sandstone Brick=砂岩砖
|
||||
Sandstone Block=砂岩方块
|
||||
Desert Sandstone=沙漠砂岩
|
||||
Desert Sandstone Brick=沙漠砂岩砖
|
||||
Desert Sandstone Block=沙漠砂岩方块
|
||||
Silver Sandstone=银砂岩
|
||||
Silver Sandstone Brick=银砂岩砖
|
||||
Silver Sandstone Block=银砂岩方块
|
||||
Obsidian=黑曜石
|
||||
Obsidian Brick=黑曜石砖
|
||||
Obsidian Block=黑曜石方块
|
||||
Dirt=土
|
||||
Dirt with Grass=带草的土
|
||||
Dirt with Grass and Footsteps=带草的土及脚印
|
||||
Dirt with Dry Grass=带干草的土
|
||||
Dirt with Snow=带雪的土
|
||||
Dirt with Rainforest Litter=雨林腐土
|
||||
Dirt with Coniferous Litter=针叶林腐土
|
||||
Dry Dirt=干土
|
||||
Dry Dirt with Dry Grass=干土和干草
|
||||
Permafrost=多年冻土
|
||||
Permafrost with Stones=带石头的多年冻土
|
||||
Permafrost with Moss=生苔的多年冻土
|
||||
Sand=沙
|
||||
Desert Sand=沙漠沙
|
||||
Silver Sand=银沙
|
||||
Gravel=沙砾
|
||||
Clay=粘土
|
||||
Snow=雪
|
||||
Snow Block=雪方块
|
||||
Ice=冰
|
||||
Cave Ice=洞穴冰
|
||||
Apple Tree=苹果树
|
||||
Apple Wood Planks=苹果树木板
|
||||
Apple Tree Sapling=苹果树苗
|
||||
Apple Tree Leaves=苹果树叶
|
||||
Apple=苹果
|
||||
Apple Marker=苹果标记
|
||||
Jungle Tree=丛林树
|
||||
Jungle Wood Planks=丛林树木板
|
||||
Jungle Tree Leaves=丛林树叶
|
||||
Jungle Tree Sapling=丛林树苗
|
||||
Emergent Jungle Tree Sapling=应急丛林树苗
|
||||
Pine Tree=松树
|
||||
Pine Wood Planks=松树木板
|
||||
Pine Needles=松针
|
||||
Pine Tree Sapling=松树树苗
|
||||
Acacia Tree=相思树
|
||||
Acacia Wood Planks=相思树木板
|
||||
Acacia Tree Leaves=相思树叶
|
||||
Acacia Tree Sapling=相思树树苗
|
||||
Aspen Tree=白杨树
|
||||
Aspen Wood Planks=白杨树木板
|
||||
Aspen Tree Leaves=白杨树叶
|
||||
Aspen Tree Sapling=白杨树树苗
|
||||
Coal Ore=煤炭矿石
|
||||
Coal Block=煤炭方块
|
||||
Iron Ore=铁矿石
|
||||
Steel Block=钢方块
|
||||
Copper Ore=铜矿石
|
||||
Copper Block=铜方块
|
||||
Tin Ore=锡矿石
|
||||
Tin Block=锡方块
|
||||
Bronze Block=青铜方块
|
||||
Mese Ore=黄石矿石
|
||||
Mese Block=黄石方块
|
||||
Gold Ore=金矿石
|
||||
Gold Block=金方块
|
||||
Diamond Ore=钻石矿石
|
||||
Diamond Block=钻石方块
|
||||
Cactus=仙人掌
|
||||
Large Cactus Seedling=大仙人掌苗
|
||||
Papyrus=莎草纸
|
||||
Dry Shrub=干灌木
|
||||
Jungle Grass=丛林草
|
||||
Grass=草
|
||||
Dry Grass=干草
|
||||
Fern=蕨
|
||||
Marram Grass=滨草
|
||||
Bush Stem=灌木
|
||||
Bush Leaves=灌木叶
|
||||
Bush Sapling=灌木苗
|
||||
Blueberry Bush Leaves with Berries=蓝莓灌木叶与浆果
|
||||
Blueberry Bush Leaves=蓝莓灌木叶
|
||||
Blueberry Bush Sapling=蓝莓灌木苗
|
||||
Acacia Bush Stem=相思灌木
|
||||
Acacia Bush Leaves=相思灌木叶
|
||||
Acacia Bush Sapling=相思灌木苗
|
||||
Pine Bush Stem=松树灌木
|
||||
Pine Bush Needles=松树灌木针
|
||||
Pine Bush Sapling=松树灌木苗
|
||||
Kelp=海带
|
||||
Green Coral=绿珊瑚
|
||||
Pink Coral=淡红珊瑚
|
||||
Cyan Coral=青珊瑚
|
||||
Brown Coral=棕珊瑚
|
||||
Orange Coral=橙珊瑚
|
||||
Coral Skeleton=珊瑚骨架
|
||||
Water Source=水方块
|
||||
Flowing Water=流动的水
|
||||
River Water Source=河水方块
|
||||
Flowing River Water=流动的河水
|
||||
Lava Source=岩浆方块
|
||||
Flowing Lava=流动的岩浆
|
||||
Empty Bookshelf=空书架
|
||||
Bookshelf (@1 written, @2 empty books)=书架(@1本有字的书,@2本空书)
|
||||
Bookshelf=书架
|
||||
Text too long=文字太长
|
||||
Wooden Sign=木牌
|
||||
Steel Sign=铁牌
|
||||
Wooden Ladder=木梯子
|
||||
Steel Ladder=铁梯子
|
||||
Apple Wood Fence=苹果木栅栏
|
||||
Acacia Wood Fence=相思木栅栏
|
||||
Jungle Wood Fence=丛林木栅栏
|
||||
Pine Wood Fence=松木栅栏
|
||||
Aspen Wood Fence=白杨木栅栏
|
||||
Apple Wood Fence Rail=苹果木栏杆
|
||||
Acacia Wood Fence Rail=相思木栏杆
|
||||
Jungle Wood Fence Rail=丛林木栏杆
|
||||
Pine Wood Fence Rail=松木栏杆
|
||||
Aspen Wood Fence Rail=白杨木栏杆
|
||||
Glass=玻璃
|
||||
Obsidian Glass=黑曜石玻璃
|
||||
Brick Block=砖方块
|
||||
Mese Lamp=黄石灯
|
||||
Mese Post Light=黄石柱灯
|
||||
Cloud=云
|
||||
Wooden Pickaxe=木镐
|
||||
Stone Pickaxe=石镐
|
||||
Bronze Pickaxe=青铜镐
|
||||
Steel Pickaxe=铁镐
|
||||
Mese Pickaxe=黄石镐
|
||||
Diamond Pickaxe=钻石镐
|
||||
Wooden Shovel=木铲
|
||||
Stone Shovel=石铲
|
||||
Bronze Shovel=青铜铲
|
||||
Steel Shovel=铁铲
|
||||
Mese Shovel=黄石铲
|
||||
Diamond Shovel=钻石铲
|
||||
Wooden Axe=木斧
|
||||
Stone Axe=石斧
|
||||
Bronze Axe=青铜斧
|
||||
Steel Axe=铁斧
|
||||
Mese Axe=黄石斧
|
||||
Diamond Axe=钻石斧
|
||||
Wooden Sword=木剑
|
||||
Stone Sword=石剑
|
||||
Bronze Sword=青铜剑
|
||||
Steel Sword=铁剑
|
||||
Mese Sword=黄石剑
|
||||
Diamond Sword=钻石剑
|
||||
Key=钥匙
|
||||
Torch=火把
|
||||
@1 will intersect protection on growth.=@1将与增长的保护相交。
|
||||
Title:=标题:
|
||||
Contents:=内容:
|
||||
Save=保存
|
||||
by @1=由@1
|
||||
Page @1 of @2=第@1页,共@2页。
|
||||
"@1"="@1"
|
|
@ -0,0 +1,211 @@
|
|||
# textdomain: default
|
||||
Locked Chest=已上鎖的箱子
|
||||
Locked Chest (owned by @1)=已上鎖的箱子(屬於@1所有)
|
||||
You do not own this chest.=這個箱子不屬於你所有。
|
||||
a locked chest=一個已上鎖的箱子
|
||||
Chest=箱子
|
||||
Stick=棒
|
||||
Paper=紙
|
||||
"@1" by @2="@1" by @2
|
||||
Book=書
|
||||
Book with Text=帶文字的書
|
||||
Skeleton Key=萬能鑰匙
|
||||
Key to @1's @2=@1的@2的鑰匙
|
||||
Coal Lump=煤塊
|
||||
Iron Lump=鐵塊
|
||||
Copper Lump=銅塊
|
||||
Tin Lump=錫塊
|
||||
Mese Crystal=黃石晶體
|
||||
Gold Lump=金塊
|
||||
Diamond=鑽石
|
||||
Clay Lump=粘土塊
|
||||
Steel Ingot=鐵錠
|
||||
Copper Ingot=銅錠
|
||||
Tin Ingot=錫錠
|
||||
Bronze Ingot=青銅錠
|
||||
Gold Ingot=金錠
|
||||
Mese Crystal Fragment=黃石晶體碎片
|
||||
Clay Brick=粘土磚
|
||||
Obsidian Shard=黑曜石碎片
|
||||
Flint=燧石
|
||||
Blueberries=藍莓
|
||||
Furnace is empty=熔爐是空的
|
||||
100% (output full)=100%(輸出已滿)
|
||||
@1%=@1%
|
||||
Empty=空
|
||||
Not cookable=不可烹飪
|
||||
Furnace active=熔爐正在運轉
|
||||
Furnace inactive=熔爐未使用
|
||||
(Item: @1; Fuel: @2)=(項目:@1;燃料:@2)
|
||||
Furnace=熔爐
|
||||
Stone=石
|
||||
Cobblestone=鵝卵石
|
||||
Stone Brick=石磚
|
||||
Stone Block=石方塊
|
||||
Mossy Cobblestone=苔蘚覆蓋的鵝卵石
|
||||
Desert Stone=沙漠石
|
||||
Desert Cobblestone=沙漠鵝卵石
|
||||
Desert Stone Brick=沙漠鵝卵石磚
|
||||
Desert Stone Block=沙漠鵝卵石方塊
|
||||
Sandstone=砂岩
|
||||
Sandstone Brick=砂岩磚
|
||||
Sandstone Block=砂岩方塊
|
||||
Desert Sandstone=沙漠砂岩
|
||||
Desert Sandstone Brick=沙漠砂岩磚
|
||||
Desert Sandstone Block=沙漠砂岩方塊
|
||||
Silver Sandstone=銀砂岩
|
||||
Silver Sandstone Brick=銀砂岩磚
|
||||
Silver Sandstone Block=銀砂岩方塊
|
||||
Obsidian=黑曜石
|
||||
Obsidian Brick=黑曜石磚
|
||||
Obsidian Block=黑曜石方塊
|
||||
Dirt=土
|
||||
Dirt with Grass=帶草的土
|
||||
Dirt with Grass and Footsteps=帶草的土及腳印
|
||||
Dirt with Dry Grass=帶乾草的土
|
||||
Dirt with Snow=帶雪的土
|
||||
Dirt with Rainforest Litter=雨林腐土
|
||||
Dirt with Coniferous Litter=針葉林腐土
|
||||
Dry Dirt=乾土
|
||||
Dry Dirt with Dry Grass=乾土和乾草
|
||||
Permafrost=多年凍土
|
||||
Permafrost with Stones=帶石頭的多年凍土
|
||||
Permafrost with Moss=生苔的多年凍土
|
||||
Sand=沙
|
||||
Desert Sand=沙漠沙
|
||||
Silver Sand=銀沙
|
||||
Gravel=沙礫
|
||||
Clay=粘土
|
||||
Snow=雪
|
||||
Snow Block=雪方塊
|
||||
Ice=冰
|
||||
Cave Ice=洞穴冰
|
||||
Apple Tree=蘋果樹
|
||||
Apple Wood Planks=蘋果樹木板
|
||||
Apple Tree Sapling=蘋果樹苗
|
||||
Apple Tree Leaves=蘋果樹葉
|
||||
Apple=蘋果
|
||||
Apple Marker=蘋果標記
|
||||
Jungle Tree=叢林樹
|
||||
Jungle Wood Planks=叢林樹木板
|
||||
Jungle Tree Leaves=叢林樹葉
|
||||
Jungle Tree Sapling=叢林樹苗
|
||||
Emergent Jungle Tree Sapling=應急叢林樹苗
|
||||
Pine Tree=松樹
|
||||
Pine Wood Planks=松樹木板
|
||||
Pine Needles=松針
|
||||
Pine Tree Sapling=松樹樹苗
|
||||
Acacia Tree=相思樹
|
||||
Acacia Wood Planks=相思樹木板
|
||||
Acacia Tree Leaves=相思樹葉
|
||||
Acacia Tree Sapling=相思樹樹苗
|
||||
Aspen Tree=白楊樹
|
||||
Aspen Wood Planks=白楊樹木板
|
||||
Aspen Tree Leaves=白楊樹葉
|
||||
Aspen Tree Sapling=白楊樹樹苗
|
||||
Coal Ore=煤炭礦石
|
||||
Coal Block=煤炭方塊
|
||||
Iron Ore=鐵礦石
|
||||
Steel Block=鋼方塊
|
||||
Copper Ore=銅礦石
|
||||
Copper Block=銅方塊
|
||||
Tin Ore=錫礦石
|
||||
Tin Block=錫方塊
|
||||
Bronze Block=青銅方塊
|
||||
Mese Ore=黃石礦石
|
||||
Mese Block=黃石方塊
|
||||
Gold Ore=金礦石
|
||||
Gold Block=金方塊
|
||||
Diamond Ore=鑽石礦石
|
||||
Diamond Block=鑽石方塊
|
||||
Cactus=仙人掌
|
||||
Large Cactus Seedling=大仙人掌苗
|
||||
Papyrus=莎草紙
|
||||
Dry Shrub=幹灌木
|
||||
Jungle Grass=叢林草
|
||||
Grass=草
|
||||
Dry Grass=乾草
|
||||
Fern=蕨
|
||||
Marram Grass=濱草
|
||||
Bush Stem=灌木
|
||||
Bush Leaves=灌木葉
|
||||
Bush Sapling=灌木苗
|
||||
Blueberry Bush Leaves with Berries=藍莓灌木葉與漿果
|
||||
Blueberry Bush Leaves=藍莓灌木葉
|
||||
Blueberry Bush Sapling=藍莓灌木苗
|
||||
Acacia Bush Stem=相思灌木
|
||||
Acacia Bush Leaves=相思灌木葉
|
||||
Acacia Bush Sapling=相思灌木苗
|
||||
Pine Bush Stem=松樹灌木
|
||||
Pine Bush Needles=松樹灌木針
|
||||
Pine Bush Sapling=松樹灌木苗
|
||||
Kelp=海帶
|
||||
Green Coral=綠珊瑚
|
||||
Pink Coral=淡紅珊瑚
|
||||
Cyan Coral=青珊瑚
|
||||
Brown Coral=棕珊瑚
|
||||
Orange Coral=橙珊瑚
|
||||
Coral Skeleton=珊瑚骨架
|
||||
Water Source=水方塊
|
||||
Flowing Water=流動的水
|
||||
River Water Source=河水方塊
|
||||
Flowing River Water=流動的河水
|
||||
Lava Source=岩漿方塊
|
||||
Flowing Lava=流動的岩漿
|
||||
Empty Bookshelf=空書架
|
||||
Bookshelf (@1 written, @2 empty books)=書架(@1本有字的書,@2本空書)
|
||||
Bookshelf=書架
|
||||
Text too long=文字太長
|
||||
Wooden Sign=木牌
|
||||
Steel Sign=鐵牌
|
||||
Wooden Ladder=木梯子
|
||||
Steel Ladder=鐵梯子
|
||||
Apple Wood Fence=蘋果木柵欄
|
||||
Acacia Wood Fence=相思木柵欄
|
||||
Jungle Wood Fence=叢林木柵欄
|
||||
Pine Wood Fence=松木柵欄
|
||||
Aspen Wood Fence=白楊木柵欄
|
||||
Apple Wood Fence Rail=蘋果木欄杆
|
||||
Acacia Wood Fence Rail=相思木欄杆
|
||||
Jungle Wood Fence Rail=叢林木欄杆
|
||||
Pine Wood Fence Rail=松木欄杆
|
||||
Aspen Wood Fence Rail=白楊木欄杆
|
||||
Glass=玻璃
|
||||
Obsidian Glass=黑曜石玻璃
|
||||
Brick Block=磚方塊
|
||||
Mese Lamp=黃石燈
|
||||
Mese Post Light=黃石柱燈
|
||||
Cloud=雲
|
||||
Wooden Pickaxe=木鎬
|
||||
Stone Pickaxe=石鎬
|
||||
Bronze Pickaxe=青銅鎬
|
||||
Steel Pickaxe=鐵鎬
|
||||
Mese Pickaxe=黃石鎬
|
||||
Diamond Pickaxe=鑽石鎬
|
||||
Wooden Shovel=木鏟
|
||||
Stone Shovel=石鏟
|
||||
Bronze Shovel=青銅鏟
|
||||
Steel Shovel=鐵鏟
|
||||
Mese Shovel=黃石鏟
|
||||
Diamond Shovel=鑽石鏟
|
||||
Wooden Axe=木斧
|
||||
Stone Axe=石斧
|
||||
Bronze Axe=青銅斧
|
||||
Steel Axe=鐵斧
|
||||
Mese Axe=黃石斧
|
||||
Diamond Axe=鑽石斧
|
||||
Wooden Sword=木劍
|
||||
Stone Sword=石劍
|
||||
Bronze Sword=青銅劍
|
||||
Steel Sword=鐵劍
|
||||
Mese Sword=黃石劍
|
||||
Diamond Sword=鑽石劍
|
||||
Key=鑰匙
|
||||
Torch=火把
|
||||
@1 will intersect protection on growth.=@1將與增長的保護相交。
|
||||
Title:=標題:
|
||||
Contents:=內容:
|
||||
Save=保存
|
||||
by @1=由@1
|
||||
Page @1 of @2=第@1頁,共@2頁。
|
||||
"@1"="@1"
|
|
@ -576,7 +576,7 @@ function default.register_ores()
|
|||
-- Only where default:dirt is present as surface material
|
||||
biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest",
|
||||
"deciduous_forest", "deciduous_forest_shore", "rainforest",
|
||||
"rainforest_swamp", "floatland_coniferous_forest"}
|
||||
"rainforest_swamp"}
|
||||
})
|
||||
|
||||
-- Gravel
|
||||
|
@ -890,7 +890,7 @@ end
|
|||
|
||||
-- All mapgens except mgv6
|
||||
|
||||
function default.register_biomes(upper_limit)
|
||||
function default.register_biomes()
|
||||
|
||||
-- Icesheet
|
||||
|
||||
|
@ -909,7 +909,7 @@ function default.register_biomes(upper_limit)
|
|||
depth_riverbed = 2,
|
||||
node_dungeon = "default:ice",
|
||||
node_dungeon_stair = "stairs:stair_ice",
|
||||
y_max = upper_limit,
|
||||
y_max = 31000,
|
||||
y_min = -8,
|
||||
heat_point = 0,
|
||||
humidity_point = 73,
|
||||
|
@ -956,7 +956,7 @@ function default.register_biomes(upper_limit)
|
|||
node_dungeon = "default:cobble",
|
||||
node_dungeon_alt = "default:mossycobble",
|
||||
node_dungeon_stair = "stairs:stair_cobble",
|
||||
y_max = upper_limit,
|
||||
y_max = 31000,
|
||||
y_min = 47,
|
||||
heat_point = 0,
|
||||
humidity_point = 40,
|
||||
|
@ -1043,7 +1043,7 @@ function default.register_biomes(upper_limit)
|
|||
node_dungeon = "default:cobble",
|
||||
node_dungeon_alt = "default:mossycobble",
|
||||
node_dungeon_stair = "stairs:stair_cobble",
|
||||
y_max = upper_limit,
|
||||
y_max = 31000,
|
||||
y_min = 4,
|
||||
heat_point = 25,
|
||||
humidity_point = 70,
|
||||
|
@ -1095,7 +1095,7 @@ function default.register_biomes(upper_limit)
|
|||
node_dungeon = "default:cobble",
|
||||
node_dungeon_alt = "default:mossycobble",
|
||||
node_dungeon_stair = "stairs:stair_cobble",
|
||||
y_max = upper_limit,
|
||||
y_max = 31000,
|
||||
y_min = 4,
|
||||
heat_point = 20,
|
||||
humidity_point = 35,
|
||||
|
@ -1146,7 +1146,7 @@ function default.register_biomes(upper_limit)
|
|||
node_dungeon = "default:cobble",
|
||||
node_dungeon_alt = "default:mossycobble",
|
||||
node_dungeon_stair = "stairs:stair_cobble",
|
||||
y_max = upper_limit,
|
||||
y_max = 31000,
|
||||
y_min = 6,
|
||||
heat_point = 50,
|
||||
humidity_point = 35,
|
||||
|
@ -1213,7 +1213,7 @@ function default.register_biomes(upper_limit)
|
|||
node_dungeon = "default:cobble",
|
||||
node_dungeon_alt = "default:mossycobble",
|
||||
node_dungeon_stair = "stairs:stair_cobble",
|
||||
y_max = upper_limit,
|
||||
y_max = 31000,
|
||||
y_min = 6,
|
||||
heat_point = 45,
|
||||
humidity_point = 70,
|
||||
|
@ -1280,7 +1280,7 @@ function default.register_biomes(upper_limit)
|
|||
node_dungeon = "default:cobble",
|
||||
node_dungeon_alt = "default:mossycobble",
|
||||
node_dungeon_stair = "stairs:stair_cobble",
|
||||
y_max = upper_limit,
|
||||
y_max = 31000,
|
||||
y_min = 1,
|
||||
heat_point = 60,
|
||||
humidity_point = 68,
|
||||
|
@ -1347,7 +1347,7 @@ function default.register_biomes(upper_limit)
|
|||
depth_riverbed = 2,
|
||||
node_dungeon = "default:desert_stone",
|
||||
node_dungeon_stair = "stairs:stair_desert_stone",
|
||||
y_max = upper_limit,
|
||||
y_max = 31000,
|
||||
y_min = 4,
|
||||
heat_point = 92,
|
||||
humidity_point = 16,
|
||||
|
@ -1397,7 +1397,7 @@ function default.register_biomes(upper_limit)
|
|||
depth_riverbed = 2,
|
||||
node_dungeon = "default:sandstonebrick",
|
||||
node_dungeon_stair = "stairs:stair_sandstone_block",
|
||||
y_max = upper_limit,
|
||||
y_max = 31000,
|
||||
y_min = 4,
|
||||
heat_point = 60,
|
||||
humidity_point = 0,
|
||||
|
@ -1446,7 +1446,7 @@ function default.register_biomes(upper_limit)
|
|||
node_dungeon = "default:cobble",
|
||||
node_dungeon_alt = "default:mossycobble",
|
||||
node_dungeon_stair = "stairs:stair_cobble",
|
||||
y_max = upper_limit,
|
||||
y_max = 31000,
|
||||
y_min = 4,
|
||||
heat_point = 40,
|
||||
humidity_point = 0,
|
||||
|
@ -1496,7 +1496,7 @@ function default.register_biomes(upper_limit)
|
|||
node_dungeon = "default:cobble",
|
||||
node_dungeon_alt = "default:mossycobble",
|
||||
node_dungeon_stair = "stairs:stair_cobble",
|
||||
y_max = upper_limit,
|
||||
y_max = 31000,
|
||||
y_min = 1,
|
||||
heat_point = 89,
|
||||
humidity_point = 42,
|
||||
|
@ -1563,7 +1563,7 @@ function default.register_biomes(upper_limit)
|
|||
node_dungeon = "default:cobble",
|
||||
node_dungeon_alt = "default:mossycobble",
|
||||
node_dungeon_stair = "stairs:stair_cobble",
|
||||
y_max = upper_limit,
|
||||
y_max = 31000,
|
||||
y_min = 1,
|
||||
heat_point = 86,
|
||||
humidity_point = 65,
|
||||
|
@ -1619,59 +1619,6 @@ function default.register_biomes(upper_limit)
|
|||
end
|
||||
|
||||
|
||||
-- Biomes for floatlands
|
||||
|
||||
-- TODO Temporary simple biomes to be replaced by special floatland biomes later.
|
||||
|
||||
function default.register_floatland_biomes(floatland_level, shadow_limit)
|
||||
|
||||
minetest.register_biome({
|
||||
name = "floatland_grassland",
|
||||
node_top = "default:dirt_with_grass",
|
||||
depth_top = 1,
|
||||
node_filler = "default:dirt",
|
||||
depth_filler = 1,
|
||||
node_dungeon = "default:cobble",
|
||||
node_dungeon_alt = "default:mossycobble",
|
||||
node_dungeon_stair = "stairs:stair_cobble",
|
||||
y_max = 31000,
|
||||
y_min = floatland_level + 2,
|
||||
heat_point = 50,
|
||||
humidity_point = 25,
|
||||
})
|
||||
|
||||
minetest.register_biome({
|
||||
name = "floatland_coniferous_forest",
|
||||
node_top = "default:dirt_with_coniferous_litter",
|
||||
depth_top = 1,
|
||||
node_filler = "default:dirt",
|
||||
depth_filler = 3,
|
||||
node_dungeon = "default:cobble",
|
||||
node_dungeon_alt = "default:mossycobble",
|
||||
node_dungeon_stair = "stairs:stair_cobble",
|
||||
y_max = 31000,
|
||||
y_min = floatland_level + 2,
|
||||
heat_point = 50,
|
||||
humidity_point = 75,
|
||||
})
|
||||
|
||||
minetest.register_biome({
|
||||
name = "floatland_ocean",
|
||||
node_top = "default:sand",
|
||||
depth_top = 1,
|
||||
node_filler = "default:sand",
|
||||
depth_filler = 3,
|
||||
node_dungeon = "default:cobble",
|
||||
node_dungeon_alt = "default:mossycobble",
|
||||
node_dungeon_stair = "stairs:stair_cobble",
|
||||
y_max = floatland_level + 1,
|
||||
y_min = shadow_limit,
|
||||
heat_point = 50,
|
||||
humidity_point = 50,
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
--
|
||||
-- Register decorations
|
||||
--
|
||||
|
@ -1787,7 +1734,7 @@ local function register_grass_decoration(offset, scale, length)
|
|||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
biomes = {"grassland", "deciduous_forest", "floatland_grassland"},
|
||||
biomes = {"grassland", "deciduous_forest"},
|
||||
y_max = 31000,
|
||||
y_min = 1,
|
||||
decoration = "default:grass_" .. length,
|
||||
|
@ -1829,7 +1776,7 @@ local function register_fern_decoration(seed, length)
|
|||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
biomes = {"coniferous_forest", "floatland_coniferous_forest"},
|
||||
biomes = {"coniferous_forest"},
|
||||
y_max = 31000,
|
||||
y_min = 6,
|
||||
decoration = "default:fern_" .. length,
|
||||
|
@ -1944,11 +1891,35 @@ function default.register_decorations()
|
|||
minetest.register_decoration({
|
||||
name = "default:jungle_tree",
|
||||
deco_type = "schematic",
|
||||
place_on = {"default:dirt_with_rainforest_litter", "default:dirt"},
|
||||
place_on = {"default:dirt_with_rainforest_litter"},
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.1,
|
||||
biomes = {"rainforest", "rainforest_swamp"},
|
||||
biomes = {"rainforest"},
|
||||
y_max = 31000,
|
||||
y_min = 1,
|
||||
schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
rotation = "random",
|
||||
})
|
||||
|
||||
-- Swamp jungle trees
|
||||
|
||||
minetest.register_decoration({
|
||||
name = "default:jungle_tree(swamp)",
|
||||
deco_type = "schematic",
|
||||
place_on = {"default:dirt"},
|
||||
sidelen = 16,
|
||||
-- Noise tuned to place swamp trees where papyrus is absent
|
||||
noise_params = {
|
||||
offset = 0.0,
|
||||
scale = -0.1,
|
||||
spread = {x = 200, y = 200, z = 200},
|
||||
seed = 354,
|
||||
octaves = 1,
|
||||
persist = 0.5
|
||||
},
|
||||
biomes = {"rainforest_swamp"},
|
||||
y_max = 0,
|
||||
y_min = -1,
|
||||
schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts",
|
||||
flags = "place_center_x, place_center_z",
|
||||
|
@ -1962,7 +1933,7 @@ function default.register_decorations()
|
|||
place_offset_y = 1,
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.005,
|
||||
biomes = {"rainforest", "rainforest_swamp"},
|
||||
biomes = {"rainforest"},
|
||||
y_max = 31000,
|
||||
y_min = 1,
|
||||
schematic = minetest.get_modpath("default") .. "/schematics/jungle_log.mts",
|
||||
|
@ -1987,7 +1958,7 @@ function default.register_decorations()
|
|||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"},
|
||||
biomes = {"taiga", "coniferous_forest"},
|
||||
y_max = 31000,
|
||||
y_min = 4,
|
||||
schematic = minetest.get_modpath("default") .. "/schematics/pine_tree.mts",
|
||||
|
@ -2007,7 +1978,7 @@ function default.register_decorations()
|
|||
octaves = 3,
|
||||
persist = 0.66
|
||||
},
|
||||
biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"},
|
||||
biomes = {"taiga", "coniferous_forest"},
|
||||
y_max = 31000,
|
||||
y_min = 4,
|
||||
schematic = minetest.get_modpath("default") .. "/schematics/small_pine_tree.mts",
|
||||
|
@ -2021,7 +1992,7 @@ function default.register_decorations()
|
|||
place_offset_y = 1,
|
||||
sidelen = 80,
|
||||
fill_ratio = 0.0018,
|
||||
biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"},
|
||||
biomes = {"taiga", "coniferous_forest"},
|
||||
y_max = 31000,
|
||||
y_min = 4,
|
||||
schematic = minetest.get_modpath("default") .. "/schematics/pine_log.mts",
|
||||
|
@ -2172,8 +2143,10 @@ function default.register_decorations()
|
|||
|
||||
-- Papyrus
|
||||
|
||||
-- Dirt version for rainforest swamp
|
||||
|
||||
minetest.register_decoration({
|
||||
name = "default:papyrus",
|
||||
name = "default:papyrus_on_dirt",
|
||||
deco_type = "schematic",
|
||||
place_on = {"default:dirt"},
|
||||
sidelen = 16,
|
||||
|
@ -2185,10 +2158,32 @@ function default.register_decorations()
|
|||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
biomes = {"rainforest_swamp"},
|
||||
y_max = 0,
|
||||
y_min = 0,
|
||||
schematic = minetest.get_modpath("default") .. "/schematics/papyrus_on_dirt.mts",
|
||||
})
|
||||
|
||||
-- Dry dirt version for savanna shore
|
||||
|
||||
minetest.register_decoration({
|
||||
name = "default:papyrus_on_dry_dirt",
|
||||
deco_type = "schematic",
|
||||
place_on = {"default:dry_dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.3,
|
||||
scale = 0.7,
|
||||
spread = {x = 200, y = 200, z = 200},
|
||||
seed = 354,
|
||||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
biomes = {"savanna_shore"},
|
||||
y_max = 0,
|
||||
y_min = 0,
|
||||
schematic = minetest.get_modpath("default") .. "/schematics/papyrus.mts",
|
||||
schematic = minetest.get_modpath("default") ..
|
||||
"/schematics/papyrus_on_dry_dirt.mts",
|
||||
})
|
||||
|
||||
-- Bush
|
||||
|
@ -2206,8 +2201,7 @@ function default.register_decorations()
|
|||
octaves = 3,
|
||||
persist = 0.7,
|
||||
},
|
||||
biomes = {"grassland", "deciduous_forest",
|
||||
"floatland_grassland"},
|
||||
biomes = {"grassland", "deciduous_forest"},
|
||||
y_max = 31000,
|
||||
y_min = 1,
|
||||
schematic = minetest.get_modpath("default") .. "/schematics/bush.mts",
|
||||
|
@ -2479,22 +2473,9 @@ end
|
|||
|
||||
|
||||
--
|
||||
-- Detect mapgen, flags and parameters to select functions
|
||||
-- Detect mapgen to select functions
|
||||
--
|
||||
|
||||
-- Get setting or default
|
||||
local mgv7_spflags = minetest.get_mapgen_setting("mgv7_spflags") or
|
||||
"mountains, ridges, nofloatlands, caverns"
|
||||
local captures_float = string.match(mgv7_spflags, "floatlands")
|
||||
local captures_nofloat = string.match(mgv7_spflags, "nofloatlands")
|
||||
|
||||
-- Get setting or default
|
||||
-- Make global for mods to use to register floatland biomes
|
||||
default.mgv7_floatland_level =
|
||||
minetest.get_mapgen_setting("mgv7_floatland_level") or 1280
|
||||
default.mgv7_shadow_limit =
|
||||
minetest.get_mapgen_setting("mgv7_shadow_limit") or 1024
|
||||
|
||||
minetest.clear_registered_biomes()
|
||||
minetest.clear_registered_ores()
|
||||
minetest.clear_registered_decorations()
|
||||
|
@ -2504,19 +2485,8 @@ local mg_name = minetest.get_mapgen_setting("mg_name")
|
|||
if mg_name == "v6" then
|
||||
default.register_mgv6_ores()
|
||||
default.register_mgv6_decorations()
|
||||
-- Need to check for 'nofloatlands' because that contains
|
||||
-- 'floatlands' which makes the second condition true.
|
||||
elseif mg_name == "v7" and
|
||||
captures_float == "floatlands" and
|
||||
captures_nofloat ~= "nofloatlands" then
|
||||
-- Mgv7 with floatlands and floatland biomes
|
||||
default.register_biomes(default.mgv7_shadow_limit - 1)
|
||||
default.register_floatland_biomes(
|
||||
default.mgv7_floatland_level, default.mgv7_shadow_limit)
|
||||
default.register_ores()
|
||||
default.register_decorations()
|
||||
else
|
||||
default.register_biomes(31000)
|
||||
default.register_biomes()
|
||||
default.register_ores()
|
||||
default.register_decorations()
|
||||
end
|
||||
|
|
|
@ -2031,7 +2031,7 @@ local function coral_on_place(itemstack, placer, pointed_thing)
|
|||
local def_under = minetest.registered_nodes[node_under.name]
|
||||
|
||||
if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then
|
||||
return def_under.on_rightclick(pos_under, node_under.name,
|
||||
return def_under.on_rightclick(pos_under, node_under,
|
||||
placer, itemstack, pointed_thing) or itemstack
|
||||
end
|
||||
|
||||
|
@ -2203,7 +2203,7 @@ minetest.register_node("default:water_source", {
|
|||
},
|
||||
},
|
||||
},
|
||||
alpha = 160,
|
||||
alpha = 191,
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
pointable = false,
|
||||
|
@ -2234,7 +2234,7 @@ minetest.register_node("default:water_flowing", {
|
|||
type = "vertical_frames",
|
||||
aspect_w = 16,
|
||||
aspect_h = 16,
|
||||
length = 0.8,
|
||||
length = 0.5,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -2244,11 +2244,11 @@ minetest.register_node("default:water_flowing", {
|
|||
type = "vertical_frames",
|
||||
aspect_w = 16,
|
||||
aspect_h = 16,
|
||||
length = 0.8,
|
||||
length = 0.5,
|
||||
},
|
||||
},
|
||||
},
|
||||
alpha = 160,
|
||||
alpha = 191,
|
||||
paramtype = "light",
|
||||
paramtype2 = "flowingliquid",
|
||||
walkable = false,
|
||||
|
@ -2330,7 +2330,7 @@ minetest.register_node("default:river_water_flowing", {
|
|||
type = "vertical_frames",
|
||||
aspect_w = 16,
|
||||
aspect_h = 16,
|
||||
length = 0.8,
|
||||
length = 0.5,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -2340,7 +2340,7 @@ minetest.register_node("default:river_water_flowing", {
|
|||
type = "vertical_frames",
|
||||
aspect_w = 16,
|
||||
aspect_h = 16,
|
||||
length = 0.8,
|
||||
length = 0.5,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 411 B After Width: | Height: | Size: 411 B |
Before Width: | Height: | Size: 175 B After Width: | Height: | Size: 175 B |
|
@ -402,6 +402,57 @@ minetest.register_tool("default:sword_diamond", {
|
|||
groups = {sword = 1}
|
||||
})
|
||||
|
||||
--
|
||||
-- Register Craft Recipies
|
||||
--
|
||||
|
||||
local craft_ingreds = {
|
||||
wood = "group:wood",
|
||||
stone = "group:stone",
|
||||
steel = "default:steel_ingot",
|
||||
bronze = "default:bronze_ingot",
|
||||
mese = "default:mese_crystal",
|
||||
diamond = "default:diamond"
|
||||
}
|
||||
|
||||
for name, mat in pairs(craft_ingreds) do
|
||||
minetest.register_craft({
|
||||
output = "default:pick_".. name,
|
||||
recipe = {
|
||||
{mat, mat, mat},
|
||||
{"", "group:stick", ""},
|
||||
{"", "group:stick", ""}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:shovel_".. name,
|
||||
recipe = {
|
||||
{mat},
|
||||
{"group:stick"},
|
||||
{"group:stick"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:axe_".. name,
|
||||
recipe = {
|
||||
{mat, mat},
|
||||
{mat, "group:stick"},
|
||||
{"", "group:stick"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:sword_".. name,
|
||||
recipe = {
|
||||
{mat},
|
||||
{mat},
|
||||
{"group:stick"}
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_tool("default:key", {
|
||||
description = S("Key"),
|
||||
inventory_image = "default_key.png",
|
||||
|
@ -441,3 +492,27 @@ minetest.register_tool("default:key", {
|
|||
return nil
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:pick_wood",
|
||||
burntime = 6,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:shovel_wood",
|
||||
burntime = 4,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:axe_wood",
|
||||
burntime = 6,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:sword_wood",
|
||||
burntime = 5,
|
||||
})
|
||||
|
|
|
@ -11,7 +11,8 @@ local function on_flood(pos, oldnode, newnode)
|
|||
nodedef.groups.igniter and nodedef.groups.igniter > 0) then
|
||||
minetest.sound_play(
|
||||
"default_cool_lava",
|
||||
{pos = pos, max_hear_distance = 16, gain = 0.1}
|
||||
{pos = pos, max_hear_distance = 16, gain = 0.1},
|
||||
true
|
||||
)
|
||||
end
|
||||
-- Remove the torch node
|
||||
|
@ -70,6 +71,7 @@ minetest.register_node("default:torch", {
|
|||
end,
|
||||
floodable = true,
|
||||
on_flood = on_flood,
|
||||
on_rotate = false
|
||||
})
|
||||
|
||||
minetest.register_node("default:torch_wall", {
|
||||
|
@ -93,6 +95,7 @@ minetest.register_node("default:torch_wall", {
|
|||
sounds = default.node_sound_wood_defaults(),
|
||||
floodable = true,
|
||||
on_flood = on_flood,
|
||||
on_rotate = false
|
||||
})
|
||||
|
||||
minetest.register_node("default:torch_ceiling", {
|
||||
|
@ -116,6 +119,7 @@ minetest.register_node("default:torch_ceiling", {
|
|||
sounds = default.node_sound_wood_defaults(),
|
||||
floodable = true,
|
||||
on_flood = on_flood,
|
||||
on_rotate = false
|
||||
})
|
||||
|
||||
minetest.register_lbm({
|
||||
|
@ -134,3 +138,17 @@ minetest.register_lbm({
|
|||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:torch 4",
|
||||
recipe = {
|
||||
{"default:coal_lump"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "default:torch",
|
||||
burntime = 4,
|
||||
})
|
||||
|
|
|
@ -0,0 +1,87 @@
|
|||
Minetest Game mod: doors
|
||||
========================
|
||||
See license.txt for license information.
|
||||
|
||||
Authors of source code
|
||||
----------------------
|
||||
Originally by PilzAdam (MIT)
|
||||
|
||||
Modified by BlockMen (MIT): Added sounds, glass doors (glass, obsidian glass) and trapdoor.
|
||||
|
||||
Modified by sofar (sofar@foo-projects.org) (MIT):
|
||||
Added Steel trapdoor.
|
||||
Re-implemented most of the door algorithms, added meshes, UV wrapped texture.
|
||||
Added doors API to facilitate coding mods accessing and operating doors.
|
||||
Added Fence Gate model, code, and sounds.
|
||||
|
||||
Various Minetest developers and contributors (MIT)
|
||||
|
||||
|
||||
Authors of media (textures)
|
||||
---------------------------
|
||||
Following textures created by Fernando Zapata (CC BY-SA 3.0):
|
||||
door_wood.png
|
||||
door_wood_a.png
|
||||
door_wood_a_r.png
|
||||
door_wood_b.png
|
||||
door_wood_b_r.png
|
||||
|
||||
Following textures created by BlockMen (CC BY-SA 3.0):
|
||||
door_trapdoor.png
|
||||
door_obsidian_glass_side.png
|
||||
|
||||
Following textures created by celeron55 (CC BY-SA 3.0):
|
||||
door_glass_a.png
|
||||
door_glass_b.png
|
||||
|
||||
Following textures created by PenguinDad (CC BY-SA 4.0):
|
||||
door_glass.png
|
||||
door_obsidian_glass.png
|
||||
|
||||
Following textures created by sofar (CC-BY-SA-3.0):
|
||||
doors_trapdoor_steel.png
|
||||
|
||||
Following textures created by paramat (CC-BY-SA-3.0):
|
||||
door_trapdoor_side.png
|
||||
doors_trapdoor_steel_side.png
|
||||
|
||||
Obsidian door textures by red-001 based on textures by Pilzadam and BlockMen (CC BY-SA 3.0):
|
||||
door_obsidian_glass.png
|
||||
|
||||
Glass door textures by Krock and paramat based on textures by VanessaE (CC BY-SA 3.0):
|
||||
doors_door_glass.png
|
||||
doors_item_glass.png
|
||||
|
||||
All other textures (created by PilzAdam) (CC BY-SA 3.0):
|
||||
|
||||
Door textures were converted to the new texture map by sofar, paramat and
|
||||
red-001, under the same license as the originals.
|
||||
|
||||
|
||||
Authors of media (models)
|
||||
-------------------------
|
||||
Door 3d models by sofar (CC-BY-SA-3.0)
|
||||
- door_a.obj
|
||||
- door_b.obj
|
||||
Fence gate models by sofar (CC-BY-SA-3.0)
|
||||
- fencegate_open.obj
|
||||
- fencegate_closed.obj
|
||||
|
||||
|
||||
Authors of media (sounds)
|
||||
-------------------------
|
||||
Opening-Sound created by CGEffex (CC BY 3.0), modified by BlockMen
|
||||
door_open.ogg
|
||||
Closing-Sound created by bennstir (CC BY 3.0)
|
||||
door_close.ogg
|
||||
fencegate_open.ogg:
|
||||
http://www.freesound.org/people/mhtaylor67/sounds/126041/ - (CC0 1.0)
|
||||
fencegate_close.ogg:
|
||||
http://www.freesound.org/people/BarkersPinhead/sounds/274807/ - (CC-BY-3.0)
|
||||
http://www.freesound.org/people/rivernile7/sounds/249573/ - (CC-BY-3.0)
|
||||
Steel door sounds open & close (CC-BY-3.0) by HazMatt
|
||||
- http://www.freesound.org/people/HazMattt/sounds/187283/
|
||||
doors_steel_door_open.ogg
|
||||
doors_steel_door_close.ogg
|
||||
doors_glass_door_open.ogg, doors_glass_door_close.ogg:
|
||||
https://www.freesound.org/people/SkeetMasterFunk69/sounds/235546/ (CC0 1.0)
|
|
@ -0,0 +1,882 @@
|
|||
-- doors/init.lua
|
||||
|
||||
-- our API object
|
||||
doors = {}
|
||||
|
||||
doors.registered_doors = {}
|
||||
doors.registered_trapdoors = {}
|
||||
|
||||
-- Load support for MT game translation.
|
||||
local S = minetest.get_translator("doors")
|
||||
|
||||
|
||||
local function replace_old_owner_information(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local owner = meta:get_string("doors_owner")
|
||||
if owner and owner ~= "" then
|
||||
meta:set_string("owner", owner)
|
||||
meta:set_string("doors_owner", "")
|
||||
end
|
||||
end
|
||||
|
||||
-- returns an object to a door object or nil
|
||||
function doors.get(pos)
|
||||
local node_name = minetest.get_node(pos).name
|
||||
if doors.registered_doors[node_name] then
|
||||
-- A normal upright door
|
||||
return {
|
||||
pos = pos,
|
||||
open = function(self, player)
|
||||
if self:state() then
|
||||
return false
|
||||
end
|
||||
return doors.door_toggle(self.pos, nil, player)
|
||||
end,
|
||||
close = function(self, player)
|
||||
if not self:state() then
|
||||
return false
|
||||
end
|
||||
return doors.door_toggle(self.pos, nil, player)
|
||||
end,
|
||||
toggle = function(self, player)
|
||||
return doors.door_toggle(self.pos, nil, player)
|
||||
end,
|
||||
state = function(self)
|
||||
local state = minetest.get_meta(self.pos):get_int("state")
|
||||
return state %2 == 1
|
||||
end
|
||||
}
|
||||
elseif doors.registered_trapdoors[node_name] then
|
||||
-- A trapdoor
|
||||
return {
|
||||
pos = pos,
|
||||
open = function(self, player)
|
||||
if self:state() then
|
||||
return false
|
||||
end
|
||||
return doors.trapdoor_toggle(self.pos, nil, player)
|
||||
end,
|
||||
close = function(self, player)
|
||||
if not self:state() then
|
||||
return false
|
||||
end
|
||||
return doors.trapdoor_toggle(self.pos, nil, player)
|
||||
end,
|
||||
toggle = function(self, player)
|
||||
return doors.trapdoor_toggle(self.pos, nil, player)
|
||||
end,
|
||||
state = function(self)
|
||||
return minetest.get_node(self.pos).name:sub(-5) == "_open"
|
||||
end
|
||||
}
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
-- this hidden node is placed on top of the bottom, and prevents
|
||||
-- nodes from being placed in the top half of the door.
|
||||
minetest.register_node("doors:hidden", {
|
||||
description = S("Hidden Door Segment"),
|
||||
-- can't use airlike otherwise falling nodes will turn to entities
|
||||
-- and will be forever stuck until door is removed.
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
sunlight_propagates = true,
|
||||
-- has to be walkable for falling nodes to stop falling.
|
||||
walkable = true,
|
||||
pointable = false,
|
||||
diggable = false,
|
||||
buildable_to = false,
|
||||
floodable = false,
|
||||
drop = "",
|
||||
groups = {not_in_creative_inventory = 1},
|
||||
on_blast = function() end,
|
||||
tiles = {"doors_blank.png"},
|
||||
-- 1px transparent block inside door hinge near node top.
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-15/32, 13/32, -15/32, -13/32, 1/2, -13/32},
|
||||
},
|
||||
-- collision_box needed otherise selection box would be full node size
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {-15/32, 13/32, -15/32, -13/32, 1/2, -13/32},
|
||||
},
|
||||
})
|
||||
|
||||
-- table used to aid door opening/closing
|
||||
local transform = {
|
||||
{
|
||||
{v = "_a", param2 = 3},
|
||||
{v = "_a", param2 = 0},
|
||||
{v = "_a", param2 = 1},
|
||||
{v = "_a", param2 = 2},
|
||||
},
|
||||
{
|
||||
{v = "_b", param2 = 1},
|
||||
{v = "_b", param2 = 2},
|
||||
{v = "_b", param2 = 3},
|
||||
{v = "_b", param2 = 0},
|
||||
},
|
||||
{
|
||||
{v = "_b", param2 = 1},
|
||||
{v = "_b", param2 = 2},
|
||||
{v = "_b", param2 = 3},
|
||||
{v = "_b", param2 = 0},
|
||||
},
|
||||
{
|
||||
{v = "_a", param2 = 3},
|
||||
{v = "_a", param2 = 0},
|
||||
{v = "_a", param2 = 1},
|
||||
{v = "_a", param2 = 2},
|
||||
},
|
||||
}
|
||||
|
||||
function doors.door_toggle(pos, node, clicker)
|
||||
local meta = minetest.get_meta(pos)
|
||||
node = node or minetest.get_node(pos)
|
||||
local def = minetest.registered_nodes[node.name]
|
||||
local name = def.door.name
|
||||
|
||||
local state = meta:get_string("state")
|
||||
if state == "" then
|
||||
-- fix up lvm-placed right-hinged doors, default closed
|
||||
if node.name:sub(-2) == "_b" then
|
||||
state = 2
|
||||
else
|
||||
state = 0
|
||||
end
|
||||
else
|
||||
state = tonumber(state)
|
||||
end
|
||||
|
||||
replace_old_owner_information(pos)
|
||||
|
||||
if clicker and not default.can_interact_with_node(clicker, pos) then
|
||||
return false
|
||||
end
|
||||
|
||||
-- until Lua-5.2 we have no bitwise operators :(
|
||||
if state % 2 == 1 then
|
||||
state = state - 1
|
||||
else
|
||||
state = state + 1
|
||||
end
|
||||
|
||||
local dir = node.param2
|
||||
|
||||
-- It's possible param2 is messed up, so, validate before using
|
||||
-- the input data. This indicates something may have rotated
|
||||
-- the door, even though that is not supported.
|
||||
if not transform[state + 1] or not transform[state + 1][dir + 1] then
|
||||
return false
|
||||
end
|
||||
|
||||
if state % 2 == 0 then
|
||||
minetest.sound_play(def.door.sounds[1],
|
||||
{pos = pos, gain = 0.3, max_hear_distance = 10}, true)
|
||||
else
|
||||
minetest.sound_play(def.door.sounds[2],
|
||||
{pos = pos, gain = 0.3, max_hear_distance = 10}, true)
|
||||
end
|
||||
|
||||
minetest.swap_node(pos, {
|
||||
name = name .. transform[state + 1][dir+1].v,
|
||||
param2 = transform[state + 1][dir+1].param2
|
||||
})
|
||||
meta:set_int("state", state)
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
local function on_place_node(place_to, newnode,
|
||||
placer, oldnode, itemstack, pointed_thing)
|
||||
-- Run script hook
|
||||
for _, callback in ipairs(minetest.registered_on_placenodes) do
|
||||
-- Deepcopy pos, node and pointed_thing because callback can modify them
|
||||
local place_to_copy = {x = place_to.x, y = place_to.y, z = place_to.z}
|
||||
local newnode_copy =
|
||||
{name = newnode.name, param1 = newnode.param1, param2 = newnode.param2}
|
||||
local oldnode_copy =
|
||||
{name = oldnode.name, param1 = oldnode.param1, param2 = oldnode.param2}
|
||||
local pointed_thing_copy = {
|
||||
type = pointed_thing.type,
|
||||
above = vector.new(pointed_thing.above),
|
||||
under = vector.new(pointed_thing.under),
|
||||
ref = pointed_thing.ref,
|
||||
}
|
||||
callback(place_to_copy, newnode_copy, placer,
|
||||
oldnode_copy, itemstack, pointed_thing_copy)
|
||||
end
|
||||
end
|
||||
|
||||
local function can_dig_door(pos, digger)
|
||||
replace_old_owner_information(pos)
|
||||
return default.can_interact_with_node(digger, pos)
|
||||
end
|
||||
|
||||
function doors.register(name, def)
|
||||
if not name:find(":") then
|
||||
name = "doors:" .. name
|
||||
end
|
||||
|
||||
-- replace old doors of this type automatically
|
||||
minetest.register_lbm({
|
||||
name = ":doors:replace_" .. name:gsub(":", "_"),
|
||||
nodenames = {name.."_b_1", name.."_b_2"},
|
||||
action = function(pos, node)
|
||||
local l = tonumber(node.name:sub(-1))
|
||||
local meta = minetest.get_meta(pos)
|
||||
local h = meta:get_int("right") + 1
|
||||
local p2 = node.param2
|
||||
local replace = {
|
||||
{{type = "a", state = 0}, {type = "a", state = 3}},
|
||||
{{type = "b", state = 1}, {type = "b", state = 2}}
|
||||
}
|
||||
local new = replace[l][h]
|
||||
-- retain infotext and doors_owner fields
|
||||
minetest.swap_node(pos, {name = name .. "_" .. new.type, param2 = p2})
|
||||
meta:set_int("state", new.state)
|
||||
-- properly place doors:hidden at the right spot
|
||||
local p3 = p2
|
||||
if new.state >= 2 then
|
||||
p3 = (p3 + 3) % 4
|
||||
end
|
||||
if new.state % 2 == 1 then
|
||||
if new.state >= 2 then
|
||||
p3 = (p3 + 1) % 4
|
||||
else
|
||||
p3 = (p3 + 3) % 4
|
||||
end
|
||||
end
|
||||
-- wipe meta on top node as it's unused
|
||||
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z},
|
||||
{name = "doors:hidden", param2 = p3})
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_craftitem(":" .. name, {
|
||||
description = def.description,
|
||||
inventory_image = def.inventory_image,
|
||||
groups = table.copy(def.groups),
|
||||
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local pos
|
||||
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
local node = minetest.get_node(pointed_thing.under)
|
||||
local pdef = minetest.registered_nodes[node.name]
|
||||
if pdef and pdef.on_rightclick and
|
||||
not (placer and placer:is_player() and
|
||||
placer:get_player_control().sneak) then
|
||||
return pdef.on_rightclick(pointed_thing.under,
|
||||
node, placer, itemstack, pointed_thing)
|
||||
end
|
||||
|
||||
if pdef and pdef.buildable_to then
|
||||
pos = pointed_thing.under
|
||||
else
|
||||
pos = pointed_thing.above
|
||||
node = minetest.get_node(pos)
|
||||
pdef = minetest.registered_nodes[node.name]
|
||||
if not pdef or not pdef.buildable_to then
|
||||
return itemstack
|
||||
end
|
||||
end
|
||||
|
||||
local above = {x = pos.x, y = pos.y + 1, z = pos.z}
|
||||
local top_node = minetest.get_node_or_nil(above)
|
||||
local topdef = top_node and minetest.registered_nodes[top_node.name]
|
||||
|
||||
if not topdef or not topdef.buildable_to then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
local pn = placer and placer:get_player_name() or ""
|
||||
if minetest.is_protected(pos, pn) or minetest.is_protected(above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
local dir = placer and minetest.dir_to_facedir(placer:get_look_dir()) or 0
|
||||
|
||||
local ref = {
|
||||
{x = -1, y = 0, z = 0},
|
||||
{x = 0, y = 0, z = 1},
|
||||
{x = 1, y = 0, z = 0},
|
||||
{x = 0, y = 0, z = -1},
|
||||
}
|
||||
|
||||
local aside = {
|
||||
x = pos.x + ref[dir + 1].x,
|
||||
y = pos.y + ref[dir + 1].y,
|
||||
z = pos.z + ref[dir + 1].z,
|
||||
}
|
||||
|
||||
local state = 0
|
||||
if minetest.get_item_group(minetest.get_node(aside).name, "door") == 1 then
|
||||
state = state + 2
|
||||
minetest.set_node(pos, {name = name .. "_b", param2 = dir})
|
||||
minetest.set_node(above, {name = "doors:hidden", param2 = (dir + 3) % 4})
|
||||
else
|
||||
minetest.set_node(pos, {name = name .. "_a", param2 = dir})
|
||||
minetest.set_node(above, {name = "doors:hidden", param2 = dir})
|
||||
end
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_int("state", state)
|
||||
|
||||
if def.protected then
|
||||
meta:set_string("owner", pn)
|
||||
meta:set_string("infotext", def.description .. "\n" .. S("Owned by @1", pn))
|
||||
end
|
||||
|
||||
if not (creative and creative.is_enabled_for and creative.is_enabled_for(pn)) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
|
||||
minetest.sound_play(def.sounds.place, {pos = pos}, true)
|
||||
|
||||
on_place_node(pos, minetest.get_node(pos),
|
||||
placer, node, itemstack, pointed_thing)
|
||||
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
def.inventory_image = nil
|
||||
|
||||
if def.recipe then
|
||||
minetest.register_craft({
|
||||
output = name,
|
||||
recipe = def.recipe,
|
||||
})
|
||||
end
|
||||
def.recipe = nil
|
||||
|
||||
if not def.sounds then
|
||||
def.sounds = default.node_sound_wood_defaults()
|
||||
end
|
||||
|
||||
if not def.sound_open then
|
||||
def.sound_open = "doors_door_open"
|
||||
end
|
||||
|
||||
if not def.sound_close then
|
||||
def.sound_close = "doors_door_close"
|
||||
end
|
||||
|
||||
def.groups.not_in_creative_inventory = 1
|
||||
def.groups.door = 1
|
||||
def.drop = name
|
||||
def.door = {
|
||||
name = name,
|
||||
sounds = { def.sound_close, def.sound_open },
|
||||
}
|
||||
if not def.on_rightclick then
|
||||
def.on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
doors.door_toggle(pos, node, clicker)
|
||||
return itemstack
|
||||
end
|
||||
end
|
||||
def.after_dig_node = function(pos, node, meta, digger)
|
||||
minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z})
|
||||
minetest.check_for_falling({x = pos.x, y = pos.y + 1, z = pos.z})
|
||||
end
|
||||
def.on_rotate = function(pos, node, user, mode, new_param2)
|
||||
return false
|
||||
end
|
||||
|
||||
if def.protected then
|
||||
def.can_dig = can_dig_door
|
||||
def.on_blast = function() end
|
||||
def.on_key_use = function(pos, player)
|
||||
local door = doors.get(pos)
|
||||
door:toggle(player)
|
||||
end
|
||||
def.on_skeleton_key_use = function(pos, player, newsecret)
|
||||
replace_old_owner_information(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local owner = meta:get_string("owner")
|
||||
local pname = player:get_player_name()
|
||||
|
||||
-- verify placer is owner of lockable door
|
||||
if owner ~= pname then
|
||||
minetest.record_protection_violation(pos, pname)
|
||||
minetest.chat_send_player(pname, S("You do not own this locked door."))
|
||||
return nil
|
||||
end
|
||||
|
||||
local secret = meta:get_string("key_lock_secret")
|
||||
if secret == "" then
|
||||
secret = newsecret
|
||||
meta:set_string("key_lock_secret", secret)
|
||||
end
|
||||
|
||||
return secret, S("a locked door"), owner
|
||||
end
|
||||
def.node_dig_prediction = ""
|
||||
else
|
||||
def.on_blast = function(pos, intensity)
|
||||
minetest.remove_node(pos)
|
||||
-- hidden node doesn't get blasted away.
|
||||
minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z})
|
||||
return {name}
|
||||
end
|
||||
end
|
||||
|
||||
def.on_destruct = function(pos)
|
||||
minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z})
|
||||
end
|
||||
|
||||
def.drawtype = "mesh"
|
||||
def.paramtype = "light"
|
||||
def.paramtype2 = "facedir"
|
||||
def.sunlight_propagates = true
|
||||
def.walkable = true
|
||||
def.is_ground_content = false
|
||||
def.buildable_to = false
|
||||
def.selection_box = {type = "fixed", fixed = {-1/2,-1/2,-1/2,1/2,3/2,-6/16}}
|
||||
def.collision_box = {type = "fixed", fixed = {-1/2,-1/2,-1/2,1/2,3/2,-6/16}}
|
||||
|
||||
def.mesh = "door_a.obj"
|
||||
minetest.register_node(":" .. name .. "_a", def)
|
||||
|
||||
def.mesh = "door_b.obj"
|
||||
minetest.register_node(":" .. name .. "_b", def)
|
||||
|
||||
doors.registered_doors[name .. "_a"] = true
|
||||
doors.registered_doors[name .. "_b"] = true
|
||||
end
|
||||
|
||||
doors.register("door_wood", {
|
||||
tiles = {{ name = "doors_door_wood.png", backface_culling = true }},
|
||||
description = S("Wooden Door"),
|
||||
inventory_image = "doors_item_wood.png",
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
|
||||
recipe = {
|
||||
{"group:wood", "group:wood"},
|
||||
{"group:wood", "group:wood"},
|
||||
{"group:wood", "group:wood"},
|
||||
}
|
||||
})
|
||||
|
||||
doors.register("door_steel", {
|
||||
tiles = {{name = "doors_door_steel.png", backface_culling = true}},
|
||||
description = S("Steel Door"),
|
||||
inventory_image = "doors_item_steel.png",
|
||||
protected = true,
|
||||
groups = {cracky = 1, level = 2},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
sound_open = "doors_steel_door_open",
|
||||
sound_close = "doors_steel_door_close",
|
||||
recipe = {
|
||||
{"default:steel_ingot", "default:steel_ingot"},
|
||||
{"default:steel_ingot", "default:steel_ingot"},
|
||||
{"default:steel_ingot", "default:steel_ingot"},
|
||||
}
|
||||
})
|
||||
|
||||
doors.register("door_glass", {
|
||||
tiles = {"doors_door_glass.png"},
|
||||
description = S("Glass Door"),
|
||||
inventory_image = "doors_item_glass.png",
|
||||
groups = {cracky=3, oddly_breakable_by_hand=3},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
sound_open = "doors_glass_door_open",
|
||||
sound_close = "doors_glass_door_close",
|
||||
recipe = {
|
||||
{"default:glass", "default:glass"},
|
||||
{"default:glass", "default:glass"},
|
||||
{"default:glass", "default:glass"},
|
||||
}
|
||||
})
|
||||
|
||||
doors.register("door_obsidian_glass", {
|
||||
tiles = {"doors_door_obsidian_glass.png"},
|
||||
description = S("Obsidian Glass Door"),
|
||||
inventory_image = "doors_item_obsidian_glass.png",
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
sound_open = "doors_glass_door_open",
|
||||
sound_close = "doors_glass_door_close",
|
||||
recipe = {
|
||||
{"default:obsidian_glass", "default:obsidian_glass"},
|
||||
{"default:obsidian_glass", "default:obsidian_glass"},
|
||||
{"default:obsidian_glass", "default:obsidian_glass"},
|
||||
},
|
||||
})
|
||||
|
||||
-- Capture mods using the old API as best as possible.
|
||||
function doors.register_door(name, def)
|
||||
if def.only_placer_can_open then
|
||||
def.protected = true
|
||||
end
|
||||
def.only_placer_can_open = nil
|
||||
|
||||
local i = name:find(":")
|
||||
local modname = name:sub(1, i - 1)
|
||||
if not def.tiles then
|
||||
if def.protected then
|
||||
def.tiles = {{name = "doors_door_steel.png", backface_culling = true}}
|
||||
else
|
||||
def.tiles = {{name = "doors_door_wood.png", backface_culling = true}}
|
||||
end
|
||||
minetest.log("warning", modname .. " registered door \"" .. name .. "\" " ..
|
||||
"using deprecated API method \"doors.register_door()\" but " ..
|
||||
"did not provide the \"tiles\" parameter. A fallback tiledef " ..
|
||||
"will be used instead.")
|
||||
end
|
||||
|
||||
doors.register(name, def)
|
||||
end
|
||||
|
||||
----trapdoor----
|
||||
|
||||
function doors.trapdoor_toggle(pos, node, clicker)
|
||||
node = node or minetest.get_node(pos)
|
||||
|
||||
replace_old_owner_information(pos)
|
||||
|
||||
if clicker and not default.can_interact_with_node(clicker, pos) then
|
||||
return false
|
||||
end
|
||||
|
||||
local def = minetest.registered_nodes[node.name]
|
||||
|
||||
if string.sub(node.name, -5) == "_open" then
|
||||
minetest.sound_play(def.sound_close,
|
||||
{pos = pos, gain = 0.3, max_hear_distance = 10}, true)
|
||||
minetest.swap_node(pos, {name = string.sub(node.name, 1,
|
||||
string.len(node.name) - 5), param1 = node.param1, param2 = node.param2})
|
||||
else
|
||||
minetest.sound_play(def.sound_open,
|
||||
{pos = pos, gain = 0.3, max_hear_distance = 10}, true)
|
||||
minetest.swap_node(pos, {name = node.name .. "_open",
|
||||
param1 = node.param1, param2 = node.param2})
|
||||
end
|
||||
end
|
||||
|
||||
function doors.register_trapdoor(name, def)
|
||||
if not name:find(":") then
|
||||
name = "doors:" .. name
|
||||
end
|
||||
|
||||
local name_closed = name
|
||||
local name_opened = name.."_open"
|
||||
|
||||
def.on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
doors.trapdoor_toggle(pos, node, clicker)
|
||||
return itemstack
|
||||
end
|
||||
|
||||
-- Common trapdoor configuration
|
||||
def.drawtype = "nodebox"
|
||||
def.paramtype = "light"
|
||||
def.paramtype2 = "facedir"
|
||||
def.is_ground_content = false
|
||||
|
||||
if def.protected then
|
||||
def.can_dig = can_dig_door
|
||||
def.after_place_node = function(pos, placer, itemstack, pointed_thing)
|
||||
local pn = placer:get_player_name()
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("owner", pn)
|
||||
meta:set_string("infotext", def.description .. "\n" .. S("Owned by @1", pn))
|
||||
|
||||
return (creative and creative.is_enabled_for and creative.is_enabled_for(pn))
|
||||
end
|
||||
|
||||
def.on_blast = function() end
|
||||
def.on_key_use = function(pos, player)
|
||||
local door = doors.get(pos)
|
||||
door:toggle(player)
|
||||
end
|
||||
def.on_skeleton_key_use = function(pos, player, newsecret)
|
||||
replace_old_owner_information(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local owner = meta:get_string("owner")
|
||||
local pname = player:get_player_name()
|
||||
|
||||
-- verify placer is owner of lockable door
|
||||
if owner ~= pname then
|
||||
minetest.record_protection_violation(pos, pname)
|
||||
minetest.chat_send_player(pname, S("You do not own this trapdoor."))
|
||||
return nil
|
||||
end
|
||||
|
||||
local secret = meta:get_string("key_lock_secret")
|
||||
if secret == "" then
|
||||
secret = newsecret
|
||||
meta:set_string("key_lock_secret", secret)
|
||||
end
|
||||
|
||||
return secret, S("a locked trapdoor"), owner
|
||||
end
|
||||
def.node_dig_prediction = ""
|
||||
else
|
||||
def.on_blast = function(pos, intensity)
|
||||
minetest.remove_node(pos)
|
||||
return {name}
|
||||
end
|
||||
end
|
||||
|
||||
if not def.sounds then
|
||||
def.sounds = default.node_sound_wood_defaults()
|
||||
end
|
||||
|
||||
if not def.sound_open then
|
||||
def.sound_open = "doors_door_open"
|
||||
end
|
||||
|
||||
if not def.sound_close then
|
||||
def.sound_close = "doors_door_close"
|
||||
end
|
||||
|
||||
local def_opened = table.copy(def)
|
||||
local def_closed = table.copy(def)
|
||||
|
||||
def_closed.node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5}
|
||||
}
|
||||
def_closed.selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5}
|
||||
}
|
||||
def_closed.tiles = {
|
||||
def.tile_front,
|
||||
def.tile_front .. '^[transformFY',
|
||||
def.tile_side,
|
||||
def.tile_side,
|
||||
def.tile_side,
|
||||
def.tile_side
|
||||
}
|
||||
|
||||
def_opened.node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5}
|
||||
}
|
||||
def_opened.selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5}
|
||||
}
|
||||
def_opened.tiles = {
|
||||
def.tile_side,
|
||||
def.tile_side .. '^[transform2',
|
||||
def.tile_side .. '^[transform3',
|
||||
def.tile_side .. '^[transform1',
|
||||
def.tile_front .. '^[transform46',
|
||||
def.tile_front .. '^[transform6'
|
||||
}
|
||||
|
||||
def_opened.drop = name_closed
|
||||
def_opened.groups.not_in_creative_inventory = 1
|
||||
|
||||
minetest.register_node(name_opened, def_opened)
|
||||
minetest.register_node(name_closed, def_closed)
|
||||
|
||||
doors.registered_trapdoors[name_opened] = true
|
||||
doors.registered_trapdoors[name_closed] = true
|
||||
end
|
||||
|
||||
doors.register_trapdoor("doors:trapdoor", {
|
||||
description = S("Wooden Trapdoor"),
|
||||
inventory_image = "doors_trapdoor.png",
|
||||
wield_image = "doors_trapdoor.png",
|
||||
tile_front = "doors_trapdoor.png",
|
||||
tile_side = "doors_trapdoor_side.png",
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, door = 1},
|
||||
})
|
||||
|
||||
doors.register_trapdoor("doors:trapdoor_steel", {
|
||||
description = S("Steel Trapdoor"),
|
||||
inventory_image = "doors_trapdoor_steel.png",
|
||||
wield_image = "doors_trapdoor_steel.png",
|
||||
tile_front = "doors_trapdoor_steel.png",
|
||||
tile_side = "doors_trapdoor_steel_side.png",
|
||||
protected = true,
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
sound_open = "doors_steel_door_open",
|
||||
sound_close = "doors_steel_door_close",
|
||||
groups = {cracky = 1, level = 2, door = 1},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "doors:trapdoor 2",
|
||||
recipe = {
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
{"", "", ""},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "doors:trapdoor_steel",
|
||||
recipe = {
|
||||
{"default:steel_ingot", "default:steel_ingot"},
|
||||
{"default:steel_ingot", "default:steel_ingot"},
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
----fence gate----
|
||||
local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0
|
||||
|
||||
function doors.register_fencegate(name, def)
|
||||
local fence = {
|
||||
description = def.description,
|
||||
drawtype = "mesh",
|
||||
tiles = {},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = false,
|
||||
drop = name .. "_closed",
|
||||
connect_sides = {"left", "right"},
|
||||
groups = def.groups,
|
||||
sounds = def.sounds,
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
local node_def = minetest.registered_nodes[node.name]
|
||||
minetest.swap_node(pos, {name = node_def.gate, param2 = node.param2})
|
||||
minetest.sound_play(node_def.sound, {pos = pos, gain = 0.3,
|
||||
max_hear_distance = 8}, true)
|
||||
return itemstack
|
||||
end,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4}
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
if type(def.texture) == "string" then
|
||||
fence.tiles[1] = {name = def.texture, backface_culling = true}
|
||||
elseif def.texture.backface_culling == nil then
|
||||
fence.tiles[1] = table.copy(def.texture)
|
||||
fence.tiles[1].backface_culling = true
|
||||
else
|
||||
fence.tiles[1] = def.texture
|
||||
end
|
||||
|
||||
if not fence.sounds then
|
||||
fence.sounds = default.node_sound_wood_defaults()
|
||||
end
|
||||
|
||||
fence.groups.fence = 1
|
||||
|
||||
local fence_closed = table.copy(fence)
|
||||
fence_closed.mesh = "doors_fencegate_closed.obj"
|
||||
fence_closed.gate = name .. "_open"
|
||||
fence_closed.sound = "doors_fencegate_open"
|
||||
fence_closed.collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {-1/2, -1/2, -1/8, 1/2, 1/2 + fence_collision_extra, 1/8}
|
||||
}
|
||||
|
||||
local fence_open = table.copy(fence)
|
||||
fence_open.mesh = "doors_fencegate_open.obj"
|
||||
fence_open.gate = name .. "_closed"
|
||||
fence_open.sound = "doors_fencegate_close"
|
||||
fence_open.groups.not_in_creative_inventory = 1
|
||||
fence_open.collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {{-1/2, -1/2, -1/8, -3/8, 1/2 + fence_collision_extra, 1/8},
|
||||
{-1/2, -3/8, -1/2, -3/8, 3/8, 0 }}
|
||||
}
|
||||
|
||||
minetest.register_node(":" .. name .. "_closed", fence_closed)
|
||||
minetest.register_node(":" .. name .. "_open", fence_open)
|
||||
|
||||
minetest.register_craft({
|
||||
output = name .. "_closed",
|
||||
recipe = {
|
||||
{"group:stick", def.material, "group:stick"},
|
||||
{"group:stick", def.material, "group:stick"}
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
doors.register_fencegate("doors:gate_wood", {
|
||||
description = S("Apple Wood Fence Gate"),
|
||||
texture = "default_wood.png",
|
||||
material = "default:wood",
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
|
||||
})
|
||||
|
||||
doors.register_fencegate("doors:gate_acacia_wood", {
|
||||
description = S("Acacia Wood Fence Gate"),
|
||||
texture = "default_acacia_wood.png",
|
||||
material = "default:acacia_wood",
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
|
||||
})
|
||||
|
||||
doors.register_fencegate("doors:gate_junglewood", {
|
||||
description = S("Jungle Wood Fence Gate"),
|
||||
texture = "default_junglewood.png",
|
||||
material = "default:junglewood",
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
|
||||
})
|
||||
|
||||
doors.register_fencegate("doors:gate_pine_wood", {
|
||||
description = S("Pine Wood Fence Gate"),
|
||||
texture = "default_pine_wood.png",
|
||||
material = "default:pine_wood",
|
||||
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}
|
||||
})
|
||||
|
||||
doors.register_fencegate("doors:gate_aspen_wood", {
|
||||
description = S("Aspen Wood Fence Gate"),
|
||||
texture = "default_aspen_wood.png",
|
||||
material = "default:aspen_wood",
|
||||
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}
|
||||
})
|
||||
|
||||
|
||||
----fuels----
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:trapdoor",
|
||||
burntime = 7,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:door_wood",
|
||||
burntime = 14,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:gate_wood_closed",
|
||||
burntime = 7,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:gate_acacia_wood_closed",
|
||||
burntime = 8,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:gate_junglewood_closed",
|
||||
burntime = 9,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:gate_pine_wood_closed",
|
||||
burntime = 6,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:gate_aspen_wood_closed",
|
||||
burntime = 5,
|
||||
})
|
|
@ -0,0 +1,164 @@
|
|||
License of source code
|
||||
----------------------
|
||||
|
||||
The MIT License (MIT)
|
||||
Copyright (C) 2012-2016 PilzAdam
|
||||
Copyright (C) 2014-2016 BlockMen
|
||||
Copyright (C) 2015-2016 sofar (sofar@foo-projects.org)
|
||||
Copyright (C) 2012-2016 Various Minetest developers and contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
||||
software and associated documentation files (the "Software"), to deal in the Software
|
||||
without restriction, including without limitation the rights to use, copy, modify, merge,
|
||||
publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or
|
||||
substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
|
||||
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
For more details:
|
||||
https://opensource.org/licenses/MIT
|
||||
|
||||
|
||||
Licenses of media (textures, models and sounds)
|
||||
-----------------------------------------------
|
||||
|
||||
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
|
||||
Copyright (C) 2011-2016 Fernando Zapata
|
||||
Copyright (C) 2014-2016 celeron55
|
||||
Copyright (C) 2012-2016 PilzAdam
|
||||
Copyright (C) 2014-2016 BlockMen
|
||||
Copyright (C) 2015-2016 sofar
|
||||
Copyright (C) 2016 red-001
|
||||
Copyright (C) 2016 paramat
|
||||
|
||||
You are free to:
|
||||
Share — copy and redistribute the material in any medium or format.
|
||||
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
|
||||
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
||||
|
||||
Under the following terms:
|
||||
|
||||
Attribution — You must give appropriate credit, provide a link to the license, and
|
||||
indicate if changes were made. You may do so in any reasonable manner, but not in any way
|
||||
that suggests the licensor endorses you or your use.
|
||||
|
||||
ShareAlike — If you remix, transform, or build upon the material, you must distribute
|
||||
your contributions under the same license as the original.
|
||||
|
||||
No additional restrictions — You may not apply legal terms or technological measures that
|
||||
legally restrict others from doing anything the license permits.
|
||||
|
||||
Notices:
|
||||
|
||||
You do not have to comply with the license for elements of the material in the public
|
||||
domain or where your use is permitted by an applicable exception or limitation.
|
||||
No warranties are given. The license may not give you all of the permissions necessary
|
||||
for your intended use. For example, other rights such as publicity, privacy, or moral
|
||||
rights may limit how you use the material.
|
||||
|
||||
For more details:
|
||||
http://creativecommons.org/licenses/by-sa/3.0/
|
||||
|
||||
-----------------------
|
||||
|
||||
Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
|
||||
Copyright (C) 2014-2016 PenguinDad
|
||||
|
||||
You are free to:
|
||||
Share — copy and redistribute the material in any medium or format.
|
||||
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
|
||||
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
||||
|
||||
Under the following terms:
|
||||
|
||||
Attribution — You must give appropriate credit, provide a link to the license, and
|
||||
indicate if changes were made. You may do so in any reasonable manner, but not in any way
|
||||
that suggests the licensor endorses you or your use.
|
||||
|
||||
ShareAlike — If you remix, transform, or build upon the material, you must distribute
|
||||
your contributions under the same license as the original.
|
||||
|
||||
No additional restrictions — You may not apply legal terms or technological measures that
|
||||
legally restrict others from doing anything the license permits.
|
||||
|
||||
Notices:
|
||||
|
||||
You do not have to comply with the license for elements of the material in the public
|
||||
domain or where your use is permitted by an applicable exception or limitation.
|
||||
No warranties are given. The license may not give you all of the permissions necessary
|
||||
for your intended use. For example, other rights such as publicity, privacy, or moral
|
||||
rights may limit how you use the material.
|
||||
|
||||
For more details:
|
||||
http://creativecommons.org/licenses/by-sa/4.0/
|
||||
|
||||
-----------------------
|
||||
|
||||
Attribution 3.0 Unported (CC BY 3.0)
|
||||
Copyright (C) 2014 CGEffex
|
||||
Copyright (C) 2014 bennstir
|
||||
Copyright (C) 2016 BarkersPinhead
|
||||
Copyright (C) 2016 rivernile7
|
||||
Copyright (C) 2016 HazMatt
|
||||
|
||||
You are free to:
|
||||
Share — copy and redistribute the material in any medium or format.
|
||||
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
|
||||
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
||||
|
||||
Under the following terms:
|
||||
|
||||
Attribution — You must give appropriate credit, provide a link to the license, and
|
||||
indicate if changes were made. You may do so in any reasonable manner, but not in any way
|
||||
that suggests the licensor endorses you or your use.
|
||||
|
||||
No additional restrictions — You may not apply legal terms or technological measures that
|
||||
legally restrict others from doing anything the license permits.
|
||||
|
||||
Notices:
|
||||
|
||||
You do not have to comply with the license for elements of the material in the public
|
||||
domain or where your use is permitted by an applicable exception or limitation.
|
||||
No warranties are given. The license may not give you all of the permissions necessary
|
||||
for your intended use. For example, other rights such as publicity, privacy, or moral
|
||||
rights may limit how you use the material.
|
||||
|
||||
For more details:
|
||||
http://creativecommons.org/licenses/by/3.0/
|
||||
|
||||
-----------------------
|
||||
|
||||
CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
|
||||
mhtaylor67
|
||||
SkeetMasterFunk69
|
||||
|
||||
No Copyright
|
||||
|
||||
The person who associated a work with this deed has dedicated the work to the public
|
||||
domain by waiving all of his or her rights to the work worldwide under copyright law,
|
||||
including all related and neighboring rights, to the extent allowed by law.
|
||||
|
||||
You can copy, modify, distribute and perform the work, even for commercial purposes, all
|
||||
without asking permission. See Other Information below.
|
||||
|
||||
Other Information
|
||||
|
||||
In no way are the patent or trademark rights of any person affected by CC0, nor are the
|
||||
rights that other persons may have in the work or in how the work is used, such as
|
||||
publicity or privacy rights.
|
||||
Unless expressly stated otherwise, the person who associated a work with this deed makes
|
||||
no warranties about the work, and disclaims liability for all uses of the work, to the
|
||||
fullest extent permitted by applicable law.
|
||||
When using or citing the work, you should not imply endorsement by the author or the
|
||||
affirmer.
|
||||
|
||||
For more details:
|
||||
https://creativecommons.org/publicdomain/zero/1.0/
|
|
@ -0,0 +1,18 @@
|
|||
# textdomain: doors
|
||||
Hidden Door Segment=Verborgenes Türsegment
|
||||
Owned by @1=Eigentum von @1
|
||||
You do not own this locked door.=Diese abgeschlossene Tür gehört Ihnen nicht.
|
||||
a locked door=eine abgeschlossene Tür
|
||||
Wooden Door=Holztür
|
||||
Steel Door=Stahltür
|
||||
Glass Door=Glastür
|
||||
Obsidian Glass Door=Obsidianglastür
|
||||
You do not own this trapdoor.=Diese Falltür gehört Ihnen nicht.
|
||||
a locked trapdoor=eine abgeschlossene Falltür
|
||||
Wooden Trapdoor=Holzfalltür
|
||||
Steel Trapdoor=Stahlfalltür
|
||||
Apple Wood Fence Gate=Apfelholzzauntor
|
||||
Acacia Wood Fence Gate=Akazienholzzauntor
|
||||
Jungle Wood Fence Gate=Dschungelholzzauntor
|
||||
Pine Wood Fence Gate=Kiefernholzzauntor
|
||||
Aspen Wood Fence Gate=Espenholzzauntor
|
|
@ -0,0 +1,18 @@
|
|||
# textdomain: doors
|
||||
Hidden Door Segment=Segmento de puerta oculta
|
||||
Owned by @1=Propiedad de @1
|
||||
You do not own this locked door.=Esta puerta cerrada no te pertenece.
|
||||
a locked door=una puerta cerrada
|
||||
Wooden Door=Puerta de madera
|
||||
Steel Door=Puerta de acero
|
||||
Glass Door=Puerta de vidrio
|
||||
Obsidian Glass Door=Puerta de vidrio de obsidiana
|
||||
You do not own this trapdoor.=Esta trampilla no te pertenece.
|
||||
a locked trapdoor=una trampilla cerrada
|
||||
Wooden Trapdoor=Trampilla de madera
|
||||
Steel Trapdoor=Trampilla de acero
|
||||
Apple Wood Fence Gate=Puerta de cerca de manzano
|
||||
Acacia Wood Fence Gate=Puerta de cerca de acacia
|
||||
Jungle Wood Fence Gate=Puerta de cerca de madera tropical
|
||||
Pine Wood Fence Gate=Puerta de cerca de pino
|
||||
Aspen Wood Fence Gate=Puerta de cerca de álamo
|
|
@ -0,0 +1,18 @@
|
|||
# textdomain: doors
|
||||
Hidden Door Segment=Segment de porte cachée
|
||||
Owned by @1=Possédée par @1
|
||||
You do not own this locked door.=Cette porte vérouillée ne vous appartient pas.
|
||||
a locked door=une porte verouillée
|
||||
Wooden Door=Porte en bois
|
||||
Steel Door=Porte en acier
|
||||
Glass Door=Porte en verre
|
||||
Obsidian Glass Door=Porte en verre d'obsidienne
|
||||
You do not own this trapdoor.=Vous ne possédez pas cette trappe.
|
||||
a locked trapdoor=une trappe verouillée
|
||||
Wooden Trapdoor=Trappe en bois
|
||||
Steel Trapdoor=Trappe en acier
|
||||
Apple Wood Fence Gate=Porte de clôture en bois de pommier
|
||||
Acacia Wood Fence Gate=Porte de clôture en bois d'acacia
|
||||
Jungle Wood Fence Gate=Porte de clôture en bois de la jungle
|
||||
Pine Wood Fence Gate=Porte de clôture en bois de pin
|
||||
Aspen Wood Fence Gate=Porte de clôture en bois de tremble
|
|
@ -0,0 +1,19 @@
|
|||
# textdomain: doors
|
||||
Hidden Door Segment=Segmento di porta nascosto
|
||||
Owned by @1=Di proprietà di @1
|
||||
You do not own this locked door.=Non sei il proprietario di questa porta chiusa a chiave.
|
||||
a locked door=una porta chiusa a chiave
|
||||
Wooden Door=Porta di legno
|
||||
Steel Door=Porta d'acciacio
|
||||
Glass Door=Porta di vetro
|
||||
Obsidian Glass Door=Porta di vetro d'ossidiana
|
||||
Owned by @1=Di proprietà di @1
|
||||
You do not own this trapdoor.=Non sei il proprietario di questa botola.
|
||||
a locked trapdoor=una botola chiusa a chiave
|
||||
Wooden Trapdoor=Botola di legno
|
||||
Steel Trapdoor=Botola d'acciaio
|
||||
Apple Wood Fence Gate=Cancello della recinzione di legno di melo
|
||||
Acacia Wood Fence Gate=Cancello della recinzione di legno d'acacia
|
||||
Jungle Wood Fence Gate=Cancello della recinzione di legno della giungla
|
||||
Pine Wood Fence Gate=Cancello della recinzione di legno di pino
|
||||
Aspen Wood Fence Gate=Cancello della recinzione di legno di pioppo
|
|
@ -0,0 +1,18 @@
|
|||
# textdomain: doors
|
||||
Hidden Door Segment=Segmen Pintu Tersembunyi
|
||||
Owned by @1=Milik @1
|
||||
You do not own this locked door.=Anda bukan pemilik pintu berkunci ini.
|
||||
a locked door=pintu berkunci
|
||||
Wooden Door=Pintu Kayu
|
||||
Steel Door=Pintu Keluli
|
||||
Glass Door=Pintu Kaca
|
||||
Obsidian Glass Door=Pintu Kaca Obsidia
|
||||
You do not own this trapdoor.=Anda bukan pemilik pintu kolong ini.
|
||||
a locked trapdoor=pintu kolong berkunci
|
||||
Wooden Trapdoor=Pintu Kolong Kayu
|
||||
Steel Trapdoor=Pintu Kolong Keluli
|
||||
Apple Wood Fence Gate=Pintu Pagar Kayu Epal
|
||||
Acacia Wood Fence Gate=Pintu Pagar Kayu Akasia
|
||||
Jungle Wood Fence Gate=Pintu Pagar Kayu Hutan
|
||||
Pine Wood Fence Gate=Pintu Pagar Kayu Pain
|
||||
Aspen Wood Fence Gate=Pintu Pagar Kayu Aspen
|
|
@ -0,0 +1,18 @@
|
|||
# textdomain: doors
|
||||
Hidden Door Segment=Спрятанная Часть Двери
|
||||
Owned by @1=Владелец: @1
|
||||
You do not own this locked door.=Вы не владелец этой заблокированной двери.
|
||||
a locked door=заблокированная дверь
|
||||
Wooden Door=Деревянная Дверь
|
||||
Steel Door=Стальная Дверь
|
||||
Glass Door=Стеклянная Дверь
|
||||
Obsidian Glass Door=Дверь Из Обсидианового Стекла
|
||||
You do not own this trapdoor.=Вы не владелец этого люка.
|
||||
a locked trapdoor=заблокированный люк
|
||||
Wooden Trapdoor=Деревянный Люк
|
||||
Steel Trapdoor=Стальной Люк
|
||||
Apple Wood Fence Gate=Яблоневая Деревянная Калитка
|
||||
Acacia Wood Fence Gate=Деревянная Калитка Из Акации
|
||||
Jungle Wood Fence Gate=Деревянная Калитка Из Тропического Дерева
|
||||
Pine Wood Fence Gate=Сосновая Деревянная Калитка
|
||||
Aspen Wood Fence Gate=Осиновая Деревянная Калитка
|
|
@ -0,0 +1,19 @@
|
|||
# textdomain: doors
|
||||
Hidden Door Segment=Dold dörrsegment
|
||||
Owned by @1=Ägd av @1
|
||||
You do not own this locked door.=Du äger inte denna låsta dörr.
|
||||
a locked door=en låst dörr
|
||||
Wooden Door=Trä Dörr
|
||||
Steel Door=Stål Dörr
|
||||
Glass Door=Glas Dörr
|
||||
Obsidian Glass Door=Obsidian Glas Dörr
|
||||
Owned by @1=Ägd av @1
|
||||
You do not own this trapdoor.=Du äger inte denna fallucka
|
||||
a locked trapdoor=en låst fallucka
|
||||
Wooden Trapdoor=Trä Fallucka
|
||||
Steel Trapdoor=Stål Fallucka
|
||||
Apple Wood Fence Gate=Äpple Trä Fallucka
|
||||
Acacia Wood Fence Gate=Akacia Trä Fallucka
|
||||
Jungle Wood Fence Gate=Djungel Trä Fallucka
|
||||
Pine Wood Fence Gate=Tall Trä Fallucka
|
||||
Aspen Wood Fence Gate=Asp Trä Fallucka
|
|
@ -0,0 +1,18 @@
|
|||
# textdomain: doors
|
||||
Hidden Door Segment=隐藏门段
|
||||
Owned by @1=由@1拥有
|
||||
You do not own this locked door.=这个门不属于你所有。
|
||||
a locked door=一扇已上锁的门
|
||||
Wooden Door=木门
|
||||
Steel Door=铁门
|
||||
Glass Door=玻璃门
|
||||
Obsidian Glass Door=黑曜石玻璃门
|
||||
You do not own this trapdoor.=这个活板门不属于你所有。
|
||||
a locked trapdoor=一扇已上锁的活板门
|
||||
Wooden Trapdoor=木活板门
|
||||
Steel Trapdoor=铁活板门
|
||||
Apple Wood Fence Gate=用苹果树做的木栅栏门
|
||||
Acacia Wood Fence Gate=相思木栅栏门
|
||||
Jungle Wood Fence Gate=丛林木栅栏门
|
||||
Pine Wood Fence Gate=松木栅栏门
|
||||
Aspen Wood Fence Gate=白杨木栅栏门
|
|
@ -0,0 +1,18 @@
|
|||
# textdomain: doors
|
||||
Hidden Door Segment=隱藏門段
|
||||
Owned by @1=由@1擁有
|
||||
You do not own this locked door.=這個門不屬於你所有。
|
||||
a locked door=一扇已上鎖的門
|
||||
Wooden Door=木門
|
||||
Steel Door=鐵門
|
||||
Glass Door=玻璃門
|
||||
Obsidian Glass Door=黑曜石玻璃門
|
||||
You do not own this trapdoor.=這個活板門不屬於你所有。
|
||||
a locked trapdoor=一扇已上鎖的活板門
|
||||
Wooden Trapdoor=木活板門
|
||||
Steel Trapdoor=鐵活板門
|
||||
Apple Wood Fence Gate=用蘋果樹做的木柵欄門
|
||||
Acacia Wood Fence Gate=相思木柵欄門
|
||||
Jungle Wood Fence Gate=叢林木柵欄門
|
||||
Pine Wood Fence Gate=松木柵欄門
|
||||
Aspen Wood Fence Gate=白楊木柵欄門
|
|
@ -0,0 +1,18 @@
|
|||
# textdomain: doors
|
||||
Hidden Door Segment=
|
||||
Owned by @1=
|
||||
You do not own this locked door.=
|
||||
a locked door=
|
||||
Wooden Door=
|
||||
Steel Door=
|
||||
Glass Door=
|
||||
Obsidian Glass Door=
|
||||
You do not own this trapdoor.=
|
||||
a locked trapdoor=
|
||||
Wooden Trapdoor=
|
||||
Steel Trapdoor=
|
||||
Apple Wood Fence Gate=
|
||||
Acacia Wood Fence Gate=
|
||||
Jungle Wood Fence Gate=
|
||||
Pine Wood Fence Gate=
|
||||
Aspen Wood Fence Gate=
|
|
@ -0,0 +1,4 @@
|
|||
name = doors
|
||||
description = Minetest Game mod: doors
|
||||
depends = default
|
||||
optional_depends = screwdriver
|
|
@ -0,0 +1,40 @@
|
|||
# Blender v2.76 (sub 0) OBJ File: 'door_a.blend'
|
||||
# www.blender.org
|
||||
mtllib door_a.mtl
|
||||
o Cube_Cube.001
|
||||
v 0.499000 -0.499000 -0.499000
|
||||
v 0.499000 1.499000 -0.499000
|
||||
v 0.499000 -0.499000 -0.375000
|
||||
v 0.499000 1.499000 -0.375000
|
||||
v -0.499000 -0.499000 -0.499000
|
||||
v -0.499000 1.499000 -0.499000
|
||||
v -0.499000 -0.499000 -0.375000
|
||||
v -0.499000 1.499000 -0.375000
|
||||
vt 0.842105 1.000000
|
||||
vt 0.894737 1.000000
|
||||
vt 0.894737 0.000000
|
||||
vt 0.842105 0.000000
|
||||
vt 0.421053 1.000000
|
||||
vt 0.421053 0.000000
|
||||
vt 0.947368 1.000000
|
||||
vt 0.947368 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.947368 0.500000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
usemtl None
|
||||
s off
|
||||
f 2/1/1 4/2/1 3/3/1 1/4/1
|
||||
f 4/5/2 8/1/2 7/4/2 3/6/2
|
||||
f 8/2/3 6/7/3 5/8/3 7/3/3
|
||||
f 6/9/4 2/5/4 1/6/4 5/10/4
|
||||
f 1/11/5 3/12/5 7/7/5 5/13/5
|
||||
f 6/14/6 8/8/6 4/12/6 2/11/6
|
|
@ -0,0 +1,40 @@
|
|||
# Blender v2.76 (sub 0) OBJ File: 'door_b.blend'
|
||||
# www.blender.org
|
||||
mtllib door_b.mtl
|
||||
o Cube_Cube.001
|
||||
v -0.499000 -0.499000 -0.499000
|
||||
v -0.499000 1.499000 -0.499000
|
||||
v -0.499000 -0.499000 -0.375000
|
||||
v -0.499000 1.499000 -0.375000
|
||||
v 0.499000 -0.499000 -0.499000
|
||||
v 0.499000 1.499000 -0.499000
|
||||
v 0.499000 -0.499000 -0.375000
|
||||
v 0.499000 1.499000 -0.375000
|
||||
vt 0.842105 1.000000
|
||||
vt 0.842105 0.000000
|
||||
vt 0.894737 0.000000
|
||||
vt 0.894737 1.000000
|
||||
vt 0.421053 1.000000
|
||||
vt 0.421053 0.000000
|
||||
vt 0.947368 0.000000
|
||||
vt 0.947368 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.947368 0.500000
|
||||
vt 1.000000 1.000000
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
usemtl None
|
||||
s off
|
||||
f 2/1/1 1/2/1 3/3/1 4/4/1
|
||||
f 4/5/2 3/6/2 7/2/2 8/1/2
|
||||
f 8/4/3 7/3/3 5/7/3 6/8/3
|
||||
f 6/9/4 5/10/4 1/6/4 2/5/4
|
||||
f 1/11/5 5/12/5 7/13/5 3/7/5
|
||||
f 6/8/6 2/13/6 4/12/6 8/14/6
|
|
@ -0,0 +1,106 @@
|
|||
# Blender v2.76 (sub 0) OBJ File: 'gate_closed.blend'
|
||||
# www.blender.org
|
||||
mtllib gate_closed.mtl
|
||||
o Cube_Cube.001
|
||||
v -0.625000 -0.500000 0.125000
|
||||
v -0.625000 0.500100 0.125000
|
||||
v -0.625000 -0.500000 -0.125000
|
||||
v -0.625000 0.500100 -0.125000
|
||||
v -0.375000 -0.500000 0.125000
|
||||
v -0.375000 0.500100 0.125000
|
||||
v -0.375000 -0.500000 -0.125000
|
||||
v -0.375000 0.500100 -0.125000
|
||||
v 0.375000 -0.500000 0.125000
|
||||
v 0.375000 0.500100 0.125000
|
||||
v 0.375000 -0.500000 -0.125000
|
||||
v 0.375000 0.500100 -0.125000
|
||||
v 0.625000 -0.500000 0.125000
|
||||
v 0.625000 0.500100 0.125000
|
||||
v 0.625000 -0.500000 -0.125000
|
||||
v 0.625000 0.500100 -0.125000
|
||||
v -0.375000 0.187500 0.062500
|
||||
v -0.375000 0.312500 0.062500
|
||||
v -0.375000 0.187500 -0.062500
|
||||
v -0.375000 0.312500 -0.062500
|
||||
v 0.375000 0.187500 0.062500
|
||||
v 0.375000 0.312500 0.062500
|
||||
v 0.375000 0.187500 -0.062500
|
||||
v 0.375000 0.312500 -0.062500
|
||||
v -0.374831 0.187348 0.062500
|
||||
v -0.156342 0.187363 0.062500
|
||||
v -0.374831 0.187348 -0.062500
|
||||
v -0.156342 0.187363 -0.062500
|
||||
v 0.374981 -0.343683 0.062500
|
||||
v 0.375065 -0.187304 0.062500
|
||||
v 0.374981 -0.343683 -0.062500
|
||||
v 0.375065 -0.187304 -0.062500
|
||||
vt 0.000000 0.750000
|
||||
vt 0.000000 0.500000
|
||||
vt 1.000000 0.500000
|
||||
vt 1.000000 0.750000
|
||||
vt 1.000000 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 1.000000 -0.000000
|
||||
vt 1.000000 0.250000
|
||||
vt 0.000000 0.250000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.250000 0.000000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.250000 0.750000
|
||||
vt 0.250000 1.000000
|
||||
vt 0.500000 -0.000000
|
||||
vt 0.500000 0.250000
|
||||
vt 0.500000 0.750000
|
||||
vt 0.500000 1.000000
|
||||
vt 1.000000 0.625000
|
||||
vt 0.000000 0.625000
|
||||
vt 1.000000 0.875000
|
||||
vt 0.000000 0.875000
|
||||
vt -0.000000 0.687500
|
||||
vt 0.000000 0.562500
|
||||
vt 1.000000 0.562500
|
||||
vt 1.000000 0.687500
|
||||
vt 0.813740 0.249033
|
||||
vt 0.201557 0.249293
|
||||
vt 0.120995 0.125498
|
||||
vt 0.987404 0.125469
|
||||
vt 0.125000 0.375000
|
||||
vt 0.812500 0.375000
|
||||
vt 0.937500 0.500000
|
||||
vt 0.062500 0.500000
|
||||
vt 0.000000 0.125000
|
||||
vt 1.000000 0.125000
|
||||
vt 0.312500 0.437500
|
||||
vt 0.312500 0.312500
|
||||
vt 1.000000 0.312500
|
||||
vt 1.000000 0.437500
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
vn -0.578000 -0.816100 0.000000
|
||||
vn 0.576200 0.817300 0.000000
|
||||
usemtl None
|
||||
s off
|
||||
f 2/1/1 4/2/1 3/3/1 1/4/1
|
||||
f 4/4/2 8/5/2 7/6/2 3/1/2
|
||||
f 8/7/3 6/8/3 5/9/3 7/10/3
|
||||
f 6/2/4 2/9/4 1/8/4 5/3/4
|
||||
f 1/9/5 3/10/5 7/11/5 5/12/5
|
||||
f 6/6/6 8/1/6 4/13/6 2/14/6
|
||||
f 10/1/1 12/2/1 11/3/1 9/4/1
|
||||
f 12/2/2 16/9/2 15/8/2 11/3/2
|
||||
f 16/7/3 14/8/3 13/9/3 15/10/3
|
||||
f 14/4/4 10/5/4 9/6/4 13/1/4
|
||||
f 9/12/5 11/11/5 15/15/5 13/16/5
|
||||
f 14/14/6 16/13/6 12/17/6 10/18/6
|
||||
f 20/2/2 24/3/2 23/19/2 19/20/2
|
||||
f 22/1/4 18/4/4 17/21/4 21/22/4
|
||||
f 17/23/5 19/24/5 23/25/5 21/26/5
|
||||
f 22/21/6 24/5/6 20/6/6 18/22/6
|
||||
f 28/27/2 32/28/2 31/29/2 27/30/2
|
||||
f 30/31/4 26/32/4 25/33/4 29/34/4
|
||||
f 25/35/7 27/10/7 31/7/7 29/36/7
|
||||
f 30/37/8 32/38/8 28/39/8 26/40/8
|
|
@ -0,0 +1,112 @@
|
|||
# Blender v2.76 (sub 0) OBJ File: 'gate_open.blend'
|
||||
# www.blender.org
|
||||
mtllib gate_open.mtl
|
||||
o Cube_Cube.001
|
||||
v -0.625000 -0.500000 0.125000
|
||||
v -0.625000 0.500100 0.125000
|
||||
v -0.625000 -0.500000 -0.125000
|
||||
v -0.625000 0.500100 -0.125000
|
||||
v -0.375000 -0.500000 0.125000
|
||||
v -0.375000 0.500100 0.125000
|
||||
v -0.375000 -0.500000 -0.125000
|
||||
v -0.375000 0.500100 -0.125000
|
||||
v 0.375000 -0.500000 0.125000
|
||||
v 0.375000 0.500100 0.125000
|
||||
v 0.375000 -0.500000 -0.125000
|
||||
v 0.375000 0.500100 -0.125000
|
||||
v 0.625000 -0.500000 0.125000
|
||||
v 0.625000 0.500100 0.125000
|
||||
v 0.625000 -0.500000 -0.125000
|
||||
v 0.625000 0.500100 -0.125000
|
||||
v 0.434859 0.187500 -0.872359
|
||||
v 0.434859 0.312500 -0.872359
|
||||
v 0.559859 0.187500 -0.872359
|
||||
v 0.559859 0.312500 -0.872359
|
||||
v 0.434859 0.187500 -0.122359
|
||||
v 0.434859 0.312500 -0.122359
|
||||
v 0.559859 0.187500 -0.122359
|
||||
v 0.559859 0.312500 -0.122359
|
||||
v 0.434859 0.187348 -0.872190
|
||||
v 0.434859 0.187363 -0.653701
|
||||
v 0.559859 0.187348 -0.872190
|
||||
v 0.559859 0.187363 -0.653701
|
||||
v 0.434859 -0.343683 -0.122379
|
||||
v 0.434859 -0.187304 -0.122294
|
||||
v 0.559859 -0.343683 -0.122379
|
||||
v 0.559859 -0.187304 -0.122294
|
||||
v 0.499560 -0.442900 0.005495
|
||||
vt 0.000000 0.750000
|
||||
vt 0.000000 0.500000
|
||||
vt 1.000000 0.500000
|
||||
vt 1.000000 0.750000
|
||||
vt 1.000000 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 1.000000 -0.000000
|
||||
vt 1.000000 0.250000
|
||||
vt 0.000000 0.250000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.250000 0.000000
|
||||
vt 0.250000 0.250000
|
||||
vt 0.250000 0.750000
|
||||
vt 0.250000 1.000000
|
||||
vt 0.500000 -0.000000
|
||||
vt 0.500000 0.250000
|
||||
vt 0.500000 0.750000
|
||||
vt 0.500000 1.000000
|
||||
vt 1.000000 0.625000
|
||||
vt 0.000000 0.625000
|
||||
vt 1.000000 0.875000
|
||||
vt 0.000000 0.875000
|
||||
vt -0.000000 0.687500
|
||||
vt 0.000000 0.562500
|
||||
vt 1.000000 0.562500
|
||||
vt 1.000000 0.687500
|
||||
vt 0.813740 0.249033
|
||||
vt 0.201557 0.249293
|
||||
vt 0.120995 0.125498
|
||||
vt 0.987404 0.125469
|
||||
vt 0.125000 0.375000
|
||||
vt 0.812500 0.375000
|
||||
vt 0.937500 0.500000
|
||||
vt 0.062500 0.500000
|
||||
vt 0.000000 0.125000
|
||||
vt 1.000000 0.125000
|
||||
vt 0.312500 0.437500
|
||||
vt 0.312500 0.312500
|
||||
vt 1.000000 0.312500
|
||||
vt 1.000000 0.437500
|
||||
vt 0.312500 0.625000
|
||||
vt 0.312500 0.500000
|
||||
vt 0.187500 0.500000
|
||||
vt 0.187500 0.625000
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
vn 0.000000 -0.816100 -0.578000
|
||||
vn 0.000000 0.817300 0.576200
|
||||
usemtl None
|
||||
s off
|
||||
f 2/1/1 4/2/1 3/3/1 1/4/1
|
||||
f 4/4/2 8/5/2 7/6/2 3/1/2
|
||||
f 8/7/3 6/8/3 5/9/3 7/10/3
|
||||
f 6/2/4 2/9/4 1/8/4 5/3/4
|
||||
f 1/9/5 3/10/5 7/11/5 5/12/5
|
||||
f 6/6/6 8/1/6 4/13/6 2/14/6
|
||||
f 10/1/1 12/2/1 11/3/1 9/4/1
|
||||
f 12/2/2 16/9/2 15/8/2 11/3/2
|
||||
f 16/7/3 14/8/3 13/9/3 15/10/3
|
||||
f 14/4/4 10/5/4 9/6/4 13/1/4
|
||||
f 9/12/5 11/11/5 15/15/5 13/16/5
|
||||
f 14/14/6 16/13/6 12/17/6 10/18/6
|
||||
f 20/2/3 24/3/3 23/19/3 19/20/3
|
||||
f 22/1/1 18/4/1 17/21/1 21/22/1
|
||||
f 17/23/5 19/24/5 23/25/5 21/26/5
|
||||
f 22/21/6 24/5/6 20/6/6 18/22/6
|
||||
f 28/27/3 32/28/3 31/29/3 27/30/3
|
||||
f 30/31/1 26/32/1 25/33/1 29/34/1
|
||||
f 25/35/7 27/10/7 31/7/7 29/36/7
|
||||
f 30/37/8 32/38/8 28/39/8 26/40/8
|
||||
f 17/41/2 18/42/2 20/43/2 19/44/2
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue