Regnum 3.5.3 upload
|
@ -74,10 +74,10 @@ local function lay_down(player, pos, bed_pos, state, skip)
|
|||
-- physics, eye_offset, etc
|
||||
player:set_eye_offset({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
|
||||
player:set_look_horizontal(math.random(1, 180) / 100)
|
||||
default.player_attached[name] = false
|
||||
player_api.player_attached[name] = false
|
||||
player:set_physics_override(1, 1, 1)
|
||||
hud_flags.wielditem = true
|
||||
default.player_set_animation(player, "stand" , 30)
|
||||
player_api.set_animation(player, "stand" , 30)
|
||||
|
||||
-- lay down
|
||||
else
|
||||
|
@ -99,9 +99,9 @@ local function lay_down(player, pos, bed_pos, state, skip)
|
|||
}
|
||||
player:set_physics_override(0, 0, 0)
|
||||
player:set_pos(p)
|
||||
default.player_attached[name] = true
|
||||
player_api.player_attached[name] = true
|
||||
hud_flags.wielditem = false
|
||||
default.player_set_animation(player, "lay" , 0)
|
||||
player_api.set_animation(player, "lay" , 0)
|
||||
end
|
||||
|
||||
player:hud_set_flags(hud_flags)
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: beds
|
||||
Leave Bed=Tinggalkan Dipan
|
||||
Good morning.=Selamat pagi.
|
||||
@1 of @2 players are in bed=@1 dari @2 pemain sedang tidur
|
||||
Force night skip=Paksa lewati malam
|
||||
You can only sleep at night.=Anda hanya boleh tidur pada waktu malam.
|
||||
Fancy Bed=Dipan Mewah
|
||||
Simple Bed=Dipan Sederhana
|
|
@ -1,8 +1,8 @@
|
|||
# textdomain: beds
|
||||
Fancy Bed=
|
||||
Simple Bed=
|
||||
Leave Bed=
|
||||
Good morning.=
|
||||
@1 of @2 players are in bed=
|
||||
Force night skip=
|
||||
You can only sleep at night.=
|
||||
Fancy Bed=
|
||||
Simple Bed=
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
# textdomain: binoculars
|
||||
Binoculars=Binokular
|
||||
Use with 'Zoom' key=Pakai dengan tombol 'Zum'
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: boats
|
||||
Boat cruise mode on=Mode perahu jelajah nyala
|
||||
Boat cruise mode off=Mode perahu jelajah mati
|
||||
Boat=Perahu
|
|
@ -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 meninggalkan barangnya.
|
||||
@1 died at @2, and bones were placed.=@1 mati di @2 dan tulangnya diletakkan.
|
||||
@1's fresh bones=Tulang segar @1
|
||||
@1's bones=Tulang @1
|
|
@ -0,0 +1,5 @@
|
|||
# textdomain: bucket
|
||||
Empty Bucket=Ember Kosong
|
||||
Water Bucket=Ember Air
|
||||
River Water Bucket=Ember Air Sungai
|
||||
Lava Bucket=Ember Lava
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: butterflies
|
||||
White Butterfly=Kupu-Kupu Putih
|
||||
Red Butterfly=Kupu-Kupu Merah
|
||||
Violet Butterfly=Kupu-Kupu Ungu
|
|
@ -67,6 +67,7 @@ end
|
|||
function cart_entity:on_detach_child(child)
|
||||
if child and child:get_player_name() == self.driver then
|
||||
self.driver = nil
|
||||
carts:manage_attachment(child, nil)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -327,11 +328,10 @@ local function rail_on_step(self, dtime)
|
|||
if self.punched then
|
||||
-- Collect dropped items
|
||||
for _, obj_ in pairs(minetest.get_objects_inside_radius(pos, 1)) do
|
||||
if not obj_:is_player() and
|
||||
obj_:get_luaentity() and
|
||||
not obj_:get_luaentity().physical_state and
|
||||
obj_:get_luaentity().name == "__builtin:item" then
|
||||
|
||||
local ent = obj_:get_luaentity()
|
||||
-- Careful here: physical_state and disable_physics are item-internal APIs
|
||||
if ent and ent.name == "__builtin:item" and ent.physical_state then
|
||||
ent:disable_physics()
|
||||
obj_:set_attach(self.object, "", {x=0, y=0, z=0}, {x=0, y=0, z=0})
|
||||
self.attached_items[#self.attached_items + 1] = obj_
|
||||
end
|
||||
|
@ -389,7 +389,7 @@ minetest.register_entity("carts:cart", cart_entity)
|
|||
|
||||
minetest.register_craftitem("carts:cart", {
|
||||
description = S("Cart") .. "\n" .. S("(Sneak+Click to pick up)"),
|
||||
inventory_image = minetest.inventorycube("carts_cart_top.png", "carts_cart_side.png", "carts_cart_side.png"),
|
||||
inventory_image = minetest.inventorycube("carts_cart_top.png", "carts_cart_front.png", "carts_cart_side.png"),
|
||||
wield_image = "carts_cart_side.png",
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local under = pointed_thing.under
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
# textdomain: carts
|
||||
Rail=Rel
|
||||
Powered Rail=Rel Bertenaga
|
||||
Brake Rail=Rel Rem
|
||||
Cart=Kereta
|
||||
(Sneak+Click to pick up)=(selinap + klik untuk ambil)
|
|
@ -1,6 +1,6 @@
|
|||
# textdomain: carts
|
||||
Cart=
|
||||
(Sneak+Click to pick up)=
|
||||
Rail=
|
||||
Powered Rail=
|
||||
Brake Rail=
|
||||
Cart=
|
||||
(Sneak+Click to pick up)=
|
||||
|
|
Before Width: | Height: | Size: 684 B After Width: | Height: | Size: 456 B |
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 436 B |
Before Width: | Height: | Size: 660 B After Width: | Height: | Size: 494 B |
Before Width: | Height: | Size: 698 B After Width: | Height: | Size: 434 B |
|
@ -27,16 +27,25 @@ minetest.register_privilege("creative", {
|
|||
on_revoke = update_sfinv,
|
||||
})
|
||||
|
||||
local creative_mode_cache = minetest.settings:get_bool("creative_mode")
|
||||
-- Override the engine's creative mode function
|
||||
local old_is_creative_enabled = minetest.is_creative_enabled
|
||||
|
||||
function minetest.is_creative_enabled(name)
|
||||
if name == "" then
|
||||
return old_is_creative_enabled(name)
|
||||
end
|
||||
return minetest.check_player_privs(name, {creative = true}) or
|
||||
old_is_creative_enabled(name)
|
||||
end
|
||||
|
||||
-- For backwards compatibility:
|
||||
function creative.is_enabled_for(name)
|
||||
return creative_mode_cache or
|
||||
minetest.check_player_privs(name, {creative = true})
|
||||
return minetest.is_creative_enabled(name)
|
||||
end
|
||||
|
||||
dofile(minetest.get_modpath("creative") .. "/inventory.lua")
|
||||
|
||||
if creative_mode_cache then
|
||||
if minetest.is_creative_enabled("") then
|
||||
-- Dig time is modified according to difference (leveldiff) between tool
|
||||
-- 'maxlevel' and node 'level'. Digtime is divided by the larger of
|
||||
-- leveldiff and 1.
|
||||
|
|
|
@ -61,6 +61,7 @@ function creative.init_creative_inventory(player)
|
|||
return player_inventory[player_name]
|
||||
end
|
||||
|
||||
local NO_MATCH = 999
|
||||
local function match(s, filter)
|
||||
if filter == "" then
|
||||
return 0
|
||||
|
@ -68,7 +69,15 @@ local function match(s, filter)
|
|||
if s:lower():find(filter, 1, true) then
|
||||
return #s - #filter
|
||||
end
|
||||
return nil
|
||||
return NO_MATCH
|
||||
end
|
||||
|
||||
local function description(def, lang_code)
|
||||
local s = def.description
|
||||
if lang_code then
|
||||
s = minetest.get_translated_string(lang_code, s)
|
||||
end
|
||||
return s:gsub("\n.*", "") -- First line only
|
||||
end
|
||||
|
||||
function creative.update_creative_inventory(player_name, tab_content)
|
||||
|
@ -84,13 +93,26 @@ function creative.update_creative_inventory(player_name, tab_content)
|
|||
|
||||
local items = inventory_cache[tab_content] or init_creative_cache(tab_content)
|
||||
|
||||
local lang
|
||||
local player_info = minetest.get_player_information(player_name)
|
||||
if player_info and player_info.lang_code ~= "" then
|
||||
lang = player_info.lang_code
|
||||
end
|
||||
|
||||
local creative_list = {}
|
||||
local order = {}
|
||||
for name, def in pairs(items) do
|
||||
local m = match(def.description, inv.filter) or match(def.name, inv.filter)
|
||||
if m then
|
||||
local m = match(description(def), inv.filter)
|
||||
if m > 0 then
|
||||
m = math.min(m, match(description(def, lang), inv.filter))
|
||||
end
|
||||
if m > 0 then
|
||||
m = math.min(m, match(name, inv.filter))
|
||||
end
|
||||
|
||||
if m < NO_MATCH then
|
||||
creative_list[#creative_list+1] = name
|
||||
-- Sort by description length first so closer matches appear earlier
|
||||
-- Sort by match value first so closer matches appear earlier
|
||||
order[name] = string.format("%02d", m) .. name
|
||||
end
|
||||
end
|
||||
|
@ -199,10 +221,30 @@ function creative.register_tab(name, title, items)
|
|||
})
|
||||
end
|
||||
|
||||
-- Sort registered items
|
||||
local registered_nodes = {}
|
||||
local registered_tools = {}
|
||||
local registered_craftitems = {}
|
||||
|
||||
minetest.register_on_mods_loaded(function()
|
||||
for name, def in pairs(minetest.registered_items) do
|
||||
local group = def.groups or {}
|
||||
|
||||
local nogroup = not (group.node or group.tool or group.craftitem)
|
||||
if group.node or (nogroup and minetest.registered_nodes[name]) then
|
||||
registered_nodes[name] = def
|
||||
elseif group.tool or (nogroup and minetest.registered_tools[name]) then
|
||||
registered_tools[name] = def
|
||||
elseif group.craftitem or (nogroup and minetest.registered_craftitems[name]) then
|
||||
registered_craftitems[name] = def
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
creative.register_tab("all", S("All"), minetest.registered_items)
|
||||
creative.register_tab("nodes", S("Nodes"), minetest.registered_nodes)
|
||||
creative.register_tab("tools", S("Tools"), minetest.registered_tools)
|
||||
creative.register_tab("craftitems", S("Items"), minetest.registered_craftitems)
|
||||
creative.register_tab("nodes", S("Nodes"), registered_nodes)
|
||||
creative.register_tab("tools", S("Tools"), registered_tools)
|
||||
creative.register_tab("craftitems", S("Items"), registered_craftitems)
|
||||
|
||||
local old_homepage_name = sfinv.get_homepage_name
|
||||
function sfinv.get_homepage_name(player)
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
# textdomain: creative
|
||||
Search=Cari
|
||||
Reset=Atur ulang
|
||||
Previous page=Halaman sebelumnya
|
||||
Next page=Halaman selanjutnya
|
||||
All=Semua
|
||||
Nodes=Nodus
|
||||
Tools=Perkakas
|
||||
Items=Barang
|
||||
Allow player to use creative inventory=Bolehkan pemain memakai inventaris kreatif
|
|
@ -1,5 +1,4 @@
|
|||
# textdomain: creative
|
||||
Allow player to use creative inventory=
|
||||
Search=
|
||||
Reset=
|
||||
Previous page=
|
||||
|
@ -8,3 +7,4 @@ All=
|
|||
Nodes=
|
||||
Tools=
|
||||
Items=
|
||||
Allow player to use creative inventory=
|
||||
|
|
|
@ -151,7 +151,6 @@ BlockMen (CC BY-SA 3.0):
|
|||
default_chest_top.png
|
||||
default_mineral_mese.png
|
||||
default_meselamp.png
|
||||
bubble.png
|
||||
gui_formbg.png
|
||||
gui_furnace_arrow_bg.png
|
||||
gui_furnace_arrow_fg.png
|
||||
|
@ -196,9 +195,6 @@ Gambit (CC BY-SA 3.0):
|
|||
asl97 (CC BY-SA 3.0):
|
||||
default_ice.png
|
||||
|
||||
KevDoy (CC BY-SA 3.0):
|
||||
heart.png
|
||||
|
||||
Pithydon (CC BY-SA 3.0)
|
||||
default_coral_brown.png
|
||||
default_coral_orange.png
|
||||
|
@ -253,6 +249,11 @@ Topywo (CC BY-SA 3.0)
|
|||
|
||||
Extex101 (CC BY-SA 3.0)
|
||||
default_large_cactus_seedling.png
|
||||
default_dry_shrub.png -- Derived from the original texture by celeron55
|
||||
|
||||
An0n3m0us (CC BY-SA 3.0):
|
||||
heart.png -- Derived from a texture by KevDoy (CC BY-SA 3.0)
|
||||
bubble.png -- Derived from a texture by BlockMen (CC BY-SA 3.0)
|
||||
|
||||
|
||||
Sounds
|
||||
|
|
|
@ -44,7 +44,7 @@ function default.chest.chest_lid_close(pn)
|
|||
end
|
||||
|
||||
local node = minetest.get_node(pos)
|
||||
minetest.after(0.2, minetest.swap_node, pos, { name = "default:" .. swap,
|
||||
minetest.after(0.2, minetest.swap_node, pos, { name = swap,
|
||||
param2 = node.param2 })
|
||||
minetest.sound_play(sound, {gain = 0.3, pos = pos,
|
||||
max_hear_distance = 10}, true)
|
||||
|
@ -76,7 +76,8 @@ minetest.register_on_leaveplayer(function(player)
|
|||
end
|
||||
end)
|
||||
|
||||
function default.chest.register_chest(name, d)
|
||||
function default.chest.register_chest(prefixed_name, d)
|
||||
local name = prefixed_name:sub(1,1) == ':' and prefixed_name:sub(2,-1) or prefixed_name
|
||||
local def = table.copy(d)
|
||||
def.drawtype = "mesh"
|
||||
def.visual = "mesh"
|
||||
|
@ -132,7 +133,7 @@ function default.chest.register_chest(name, d)
|
|||
pos = pos, max_hear_distance = 10}, true)
|
||||
if not default.chest.chest_lid_obstructed(pos) then
|
||||
minetest.swap_node(pos,
|
||||
{ name = "default:" .. name .. "_open",
|
||||
{ name = name .. "_open",
|
||||
param2 = node.param2 })
|
||||
end
|
||||
minetest.after(0.2, minetest.show_formspec,
|
||||
|
@ -203,7 +204,7 @@ function default.chest.register_chest(name, d)
|
|||
max_hear_distance = 10}, true)
|
||||
if not default.chest.chest_lid_obstructed(pos) then
|
||||
minetest.swap_node(pos, {
|
||||
name = "default:" .. name .. "_open",
|
||||
name = name .. "_open",
|
||||
param2 = node.param2 })
|
||||
end
|
||||
minetest.after(0.2, minetest.show_formspec,
|
||||
|
@ -215,7 +216,7 @@ function default.chest.register_chest(name, d)
|
|||
def.on_blast = function(pos)
|
||||
local drops = {}
|
||||
default.get_inventory_drops(pos, "main", drops)
|
||||
drops[#drops+1] = "default:" .. name
|
||||
drops[#drops+1] = name
|
||||
minetest.remove_node(pos)
|
||||
return drops
|
||||
end
|
||||
|
@ -248,7 +249,7 @@ function default.chest.register_chest(name, d)
|
|||
def_opened.tiles[i].backface_culling = true
|
||||
end
|
||||
end
|
||||
def_opened.drop = "default:" .. name
|
||||
def_opened.drop = name
|
||||
def_opened.groups.not_in_creative_inventory = 1
|
||||
def_opened.selection_box = {
|
||||
type = "fixed",
|
||||
|
@ -265,29 +266,31 @@ function default.chest.register_chest(name, d)
|
|||
def_closed.tiles[5] = def.tiles[3] -- drawtype to make them match the mesh
|
||||
def_closed.tiles[3] = def.tiles[3].."^[transformFX"
|
||||
|
||||
minetest.register_node("default:" .. name, def_closed)
|
||||
minetest.register_node("default:" .. name .. "_open", def_opened)
|
||||
minetest.register_node(prefixed_name, def_closed)
|
||||
minetest.register_node(prefixed_name .. "_open", def_opened)
|
||||
|
||||
-- convert old chests to this new variant
|
||||
minetest.register_lbm({
|
||||
label = "update chests to opening chests",
|
||||
name = "default:upgrade_" .. name .. "_v2",
|
||||
nodenames = {"default:" .. name},
|
||||
action = function(pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", nil)
|
||||
local inv = meta:get_inventory()
|
||||
local list = inv:get_list("default:chest")
|
||||
if list then
|
||||
inv:set_size("main", 8*4)
|
||||
inv:set_list("main", list)
|
||||
inv:set_list("default:chest", nil)
|
||||
if name == "default:chest" or name == "default:chest_locked" then
|
||||
minetest.register_lbm({
|
||||
label = "update chests to opening chests",
|
||||
name = "default:upgrade_" .. name:sub(9,-1) .. "_v2",
|
||||
nodenames = {name},
|
||||
action = function(pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", nil)
|
||||
local inv = meta:get_inventory()
|
||||
local list = inv:get_list("default:chest")
|
||||
if list then
|
||||
inv:set_size("main", 8*4)
|
||||
inv:set_list("main", list)
|
||||
inv:set_list("default:chest", nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
default.chest.register_chest("chest", {
|
||||
default.chest.register_chest("default:chest", {
|
||||
description = S("Chest"),
|
||||
tiles = {
|
||||
"default_chest_top.png",
|
||||
|
@ -303,7 +306,7 @@ default.chest.register_chest("chest", {
|
|||
groups = {choppy = 2, oddly_breakable_by_hand = 2},
|
||||
})
|
||||
|
||||
default.chest.register_chest("chest_locked", {
|
||||
default.chest.register_chest("default:chest_locked", {
|
||||
description = S("Locked Chest"),
|
||||
tiles = {
|
||||
"default_chest_top.png",
|
||||
|
|
|
@ -210,7 +210,12 @@ end
|
|||
function default.grow_papyrus(pos, node)
|
||||
pos.y = pos.y - 1
|
||||
local name = minetest.get_node(pos).name
|
||||
if name ~= "default:dirt_with_grass" and name ~= "default:dirt" then
|
||||
if name ~= "default:dirt" and
|
||||
name ~= "default:dirt_with_grass" and
|
||||
name ~= "default:dirt_with_dry_grass" and
|
||||
name ~= "default:dirt_with_rainforest_litter" and
|
||||
name ~= "default:dry_dirt" and
|
||||
name ~= "default:dry_dirt_with_dry_grass" then
|
||||
return
|
||||
end
|
||||
if not minetest.find_node_near(pos, 3, {"group:water"}) then
|
||||
|
@ -247,7 +252,17 @@ minetest.register_abm({
|
|||
minetest.register_abm({
|
||||
label = "Grow papyrus",
|
||||
nodenames = {"default:papyrus"},
|
||||
neighbors = {"default:dirt", "default:dirt_with_grass"},
|
||||
-- Grows on the dirt and surface dirt nodes of the biomes papyrus appears in,
|
||||
-- including the old savanna nodes.
|
||||
-- 'default:dirt_with_grass' is here only because it was allowed before.
|
||||
neighbors = {
|
||||
"default:dirt",
|
||||
"default:dirt_with_grass",
|
||||
"default:dirt_with_dry_grass",
|
||||
"default:dirt_with_rainforest_litter",
|
||||
"default:dry_dirt",
|
||||
"default:dry_dirt_with_dry_grass",
|
||||
},
|
||||
interval = 14,
|
||||
chance = 71,
|
||||
action = function(...)
|
||||
|
@ -433,6 +448,9 @@ local function leafdecay_after_destruct(pos, oldnode, def)
|
|||
end
|
||||
end
|
||||
|
||||
local movement_gravity = tonumber(
|
||||
minetest.settings:get("movement_gravity")) or 9.81
|
||||
|
||||
local function leafdecay_on_timer(pos, def)
|
||||
if minetest.find_node_near(pos, def.radius, def.trunks) then
|
||||
return false
|
||||
|
@ -459,6 +477,21 @@ local function leafdecay_on_timer(pos, def)
|
|||
|
||||
minetest.remove_node(pos)
|
||||
minetest.check_for_falling(pos)
|
||||
|
||||
-- spawn a few particles for the removed node
|
||||
minetest.add_particlespawner({
|
||||
amount = 8,
|
||||
time = 0.001,
|
||||
minpos = vector.subtract(pos, {x=0.5, y=0.5, z=0.5}),
|
||||
maxpos = vector.add(pos, {x=0.5, y=0.5, z=0.5}),
|
||||
minvel = vector.new(-0.5, -1, -0.5),
|
||||
maxvel = vector.new(0.5, 0, 0.5),
|
||||
minacc = vector.new(0, -movement_gravity, 0),
|
||||
maxacc = vector.new(0, -movement_gravity, 0),
|
||||
minsize = 0,
|
||||
maxsize = 0,
|
||||
node = node,
|
||||
})
|
||||
end
|
||||
|
||||
function default.register_leafdecay(def)
|
||||
|
@ -483,7 +516,7 @@ end
|
|||
|
||||
|
||||
--
|
||||
-- Convert dirt to something that fits the environment
|
||||
-- Convert default:dirt to something that fits the environment
|
||||
--
|
||||
|
||||
minetest.register_abm({
|
||||
|
@ -492,6 +525,7 @@ minetest.register_abm({
|
|||
neighbors = {
|
||||
"air",
|
||||
"group:grass",
|
||||
"group:dry_grass",
|
||||
"default:snow",
|
||||
},
|
||||
interval = 6,
|
||||
|
@ -520,6 +554,8 @@ minetest.register_abm({
|
|||
minetest.set_node(pos, {name = "default:dirt_with_snow"})
|
||||
elseif minetest.get_item_group(name, "grass") ~= 0 then
|
||||
minetest.set_node(pos, {name = "default:dirt_with_grass"})
|
||||
elseif minetest.get_item_group(name, "dry_grass") ~= 0 then
|
||||
minetest.set_node(pos, {name = "default:dirt_with_dry_grass"})
|
||||
end
|
||||
end
|
||||
})
|
||||
|
|
|
@ -15,8 +15,8 @@ local item = {
|
|||
|
||||
burn_up = function(self)
|
||||
-- disappear in a smoke puff
|
||||
self.object:remove()
|
||||
local p = self.object:get_pos()
|
||||
self.object:remove()
|
||||
minetest.sound_play("default_item_smoke", {
|
||||
pos = p,
|
||||
max_hear_distance = 8,
|
||||
|
@ -39,16 +39,20 @@ local item = {
|
|||
})
|
||||
end,
|
||||
|
||||
on_step = function(self, dtime)
|
||||
builtin_item.on_step(self, dtime)
|
||||
on_step = function(self, dtime, ...)
|
||||
builtin_item.on_step(self, dtime, ...)
|
||||
|
||||
if self.flammable then
|
||||
-- flammable, check for igniters
|
||||
-- flammable, check for igniters every 10 s
|
||||
self.ignite_timer = (self.ignite_timer or 0) + dtime
|
||||
if self.ignite_timer > 10 then
|
||||
self.ignite_timer = 0
|
||||
|
||||
local node = minetest.get_node_or_nil(self.object:get_pos())
|
||||
local pos = self.object:get_pos()
|
||||
if pos == nil then
|
||||
return -- object already deleted
|
||||
end
|
||||
local node = minetest.get_node_or_nil(pos)
|
||||
if not node then
|
||||
return
|
||||
end
|
||||
|
|
|
@ -51,6 +51,7 @@ Copyright (C) 2010-2018:
|
|||
Mossmanikin
|
||||
random-geek
|
||||
Extex101
|
||||
An0n3m0us
|
||||
|
||||
You are free to:
|
||||
Share — copy and redistribute the material in any medium or format.
|
||||
|
|
|
@ -62,12 +62,12 @@ Obsidian Block=Obsidianblock
|
|||
Dirt=Erde
|
||||
Dirt with Grass=Erde mit Gras
|
||||
Dirt with Grass and Footsteps=Erde mit Gras und Fußstapfen
|
||||
Dirt with Dry Grass=Erde mit trockenem Gras
|
||||
Dirt with Savanna Grass=Erde mit Savannengras
|
||||
Dirt with Snow=Erde mit Schnee
|
||||
Dirt with Rainforest Litter=Erde mit Regenwaldboden
|
||||
Dirt with Coniferous Litter=Erde mit Nadelwaldboden
|
||||
Dry Dirt=Trockene Erde
|
||||
Dry Dirt with Dry Grass=Trockene Erde mit trockenem Gras
|
||||
Savanna Dirt=Savannenerde
|
||||
Savanna Dirt with Savanna Grass=Savannenerde mit Savannengras
|
||||
Permafrost=Permafrost
|
||||
Permafrost with Stones=Permafrost mit Steinen
|
||||
Permafrost with Moss=Permafrost mit Moos
|
||||
|
@ -124,7 +124,7 @@ Papyrus=Papyrus
|
|||
Dry Shrub=Trockener Busch
|
||||
Jungle Grass=Dschungelgras
|
||||
Grass=Gras
|
||||
Dry Grass=Trockenes Gras
|
||||
Savanna Grass=Savannengras
|
||||
Fern=Farn
|
||||
Marram Grass=Dünengras
|
||||
Bush Stem=Buschstamm
|
||||
|
|
|
@ -0,0 +1,211 @@
|
|||
# textdomain: default
|
||||
Stone=Batu
|
||||
Cobblestone=Bongkahan Batu
|
||||
Stone Brick=Tembok Batu
|
||||
Stone Block=Balok Batu
|
||||
Mossy Cobblestone=Bongkahan Batu Berlumut
|
||||
Desert Stone=Batu Gurun
|
||||
Desert Cobblestone=Bongkahan Batu Gurun
|
||||
Desert Stone Brick=Tembok Batu Gurun
|
||||
Desert Stone Block=Balok Batu Gurun
|
||||
Sandstone=Batu Pasir
|
||||
Sandstone Brick=Tembok Batu Pasir
|
||||
Sandstone Block=Balok Batu Pasir
|
||||
Desert Sandstone=Batu Pasir Gurun
|
||||
Desert Sandstone Brick=Tembok Batu Pasir Gurun
|
||||
Desert Sandstone Block=Balok Batu Pasir Gurun
|
||||
Silver Sandstone=Batu Pasir Perak
|
||||
Silver Sandstone Brick=Tembok Batu Pasir Perak
|
||||
Silver Sandstone Block=Balok Batu Pasir Perak
|
||||
Obsidian=Obsidian
|
||||
Obsidian Brick=Tembok Obsidian
|
||||
Obsidian Block=Balok Obsidian
|
||||
Dirt=Tanah
|
||||
Dirt with Grass=Tanah Berumput
|
||||
Dirt with Grass and Footsteps=Tanah Berumput dan Tapak Kaki
|
||||
Dirt with Savanna Grass=Tanah Berumput Sabana
|
||||
Dirt with Snow=Tanah Bersalju
|
||||
Dirt with Rainforest Litter=Tanah Berserasah Hutan Hujan
|
||||
Dirt with Coniferous Litter=Tanah Berserasah Hutan Konifer
|
||||
Savanna Dirt=Tanah Sabana
|
||||
Savanna Dirt with Savanna Grass=Tanah Sabana Berumput Sabana
|
||||
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=Kerikil
|
||||
Clay=Semen
|
||||
Snow=Salju
|
||||
Snow Block=Balok Salju
|
||||
Ice=Es
|
||||
Cave Ice=Es Gua
|
||||
Apple Tree=Pohon Apel
|
||||
Apple Wood Planks=Papan Kayu Pohon Apel
|
||||
Apple Tree Sapling=Bibit Apel
|
||||
Apple Tree Leaves=Daun Pohon Apel
|
||||
Apple=Apel
|
||||
Apple Marker=Penanda Apel
|
||||
Jungle Tree=Pohon Hutan Rimba
|
||||
Jungle Wood Planks=Papan Kayu Pohon Rimba
|
||||
Jungle Tree Leaves=Daun Pohon Rimba
|
||||
Jungle Tree Sapling=Bibit Pohon Rimba
|
||||
Emergent Jungle Tree Sapling=Bibit Bertumbuh Pohon Rimba
|
||||
Pine Tree=Pohon Pinus
|
||||
Pine Wood Planks=Papan Kayu Pinus
|
||||
Pine Needles=Daun Pinus
|
||||
Pine Tree Sapling=Bibit Pinus
|
||||
Acacia Tree=Pohon Akasia
|
||||
Acacia Wood Planks=Papan Kayu Akasia
|
||||
Acacia Tree Leaves=Daun Akasia
|
||||
Acacia Tree Sapling=Bibit Akasia
|
||||
Aspen Tree=Pohon Aspen
|
||||
Aspen Wood Planks=Papan Kayu Aspen
|
||||
Aspen Tree Leaves=Daun Aspen
|
||||
Aspen Tree Sapling=Bibit Aspen
|
||||
Coal Ore=Bijih Batu Bara
|
||||
Coal Block=Balok Batu Bara
|
||||
Iron Ore=Biji Besi
|
||||
Steel Block=Balok Baja
|
||||
Copper Ore=Bijih Tembaga
|
||||
Copper Block=Balok Tembaga
|
||||
Tin Ore=Bijih Timah
|
||||
Tin Block=Balok Timah
|
||||
Bronze Block=Balok Perunggu
|
||||
Mese Ore=Bijih Mese
|
||||
Mese Block=Balok Mese
|
||||
Gold Ore=Bijih Emas
|
||||
Gold Block=Balok Emas
|
||||
Diamond Ore=Bijih Berlian
|
||||
Diamond Block=Balok Berlian
|
||||
Cactus=Kaktus
|
||||
Large Cactus Seedling=Bibit Kaktus Besar
|
||||
Papyrus=Papirus
|
||||
Dry Shrub=Semak Kering
|
||||
Jungle Grass=Rumput Rimba
|
||||
Grass=Rumput
|
||||
Savanna Grass=Rumput Sabana
|
||||
Fern=Pakis
|
||||
Marram Grass=Rumput Pantai
|
||||
Bush Stem=Batang Semak
|
||||
Bush Leaves=Daun Semak
|
||||
Bush Sapling=Bibit Semak
|
||||
Blueberry Bush Leaves with Berries=Daun Bluberi Berbuah
|
||||
Blueberry Bush Leaves=Daun Bluberi
|
||||
Blueberry Bush Sapling=Bibit Bluberi
|
||||
Acacia Bush Stem=Batang Semak Akasia
|
||||
Acacia Bush Leaves=Daun Semak Akasia
|
||||
Acacia Bush Sapling=Bibit Semak Akasia
|
||||
Pine Bush Stem=Batang Semak Pinus
|
||||
Pine Bush Needles=Daun Semak Pinus
|
||||
Pine Bush Sapling=Bibit Semak Pinus
|
||||
Kelp=Kelp
|
||||
Green Coral=Koral Hijau
|
||||
Pink Coral=Koral Jambon
|
||||
Cyan Coral=Koral Sian
|
||||
Brown Coral=Koral Cokelat
|
||||
Orange Coral=Koral Oranye
|
||||
Coral Skeleton=Kerangka Koral
|
||||
Water Source=Mata Air
|
||||
Flowing Water=Aliran Air
|
||||
River Water Source=Mata Air Sungai
|
||||
Flowing River Water=Aliran Air Sungai
|
||||
Lava Source=Sumber Lava
|
||||
Flowing Lava=Aliran Lava
|
||||
Empty Bookshelf=Rak Buku Kosong
|
||||
Bookshelf (@1 written, @2 empty books)=Rak Buku (@1 buku tertulis, @2 buku kosong)
|
||||
Bookshelf=Rak Buku
|
||||
Text too long=Teks terlalu panjang
|
||||
Wooden Sign=Penanda Kayu
|
||||
Steel Sign=Penanda Baja
|
||||
Wooden Ladder=Tangga Kayu
|
||||
Steel Ladder=Tangga Baja
|
||||
Apple Wood Fence=Pagar Kayu Apel
|
||||
Acacia Wood Fence=Pagar Akasia
|
||||
Jungle Wood Fence=Pagar Kayu Rimba
|
||||
Pine Wood Fence=Pagar Pinus
|
||||
Aspen Wood Fence=Pagar Aspen
|
||||
Apple Wood Fence Rail=Rel Pagar Kayu Apel
|
||||
Acacia Wood Fence Rail=Rel Pagar Akasia
|
||||
Jungle Wood Fence Rail=Rel Pagar Kayu Rimba
|
||||
Pine Wood Fence Rail=Rel Pagar Pinus
|
||||
Aspen Wood Fence Rail=Rel Pagar Aspen
|
||||
Glass=Kaca
|
||||
Obsidian Glass=Kaca Obsidian
|
||||
Brick Block=Balok Bata
|
||||
Mese Lamp=Lampu Mese
|
||||
Mese Post Light=Lampu Taman Mese
|
||||
Cloud=Awan
|
||||
@1 will intersect protection on growth.=@1 akan memotong perlindungan ketika tumbuh.
|
||||
Torch=Obor
|
||||
Wooden Pickaxe=Beliung Kayu
|
||||
Stone Pickaxe=Beliung Batu
|
||||
Bronze Pickaxe=Beliung Perunggu
|
||||
Steel Pickaxe=Beliung Baja
|
||||
Mese Pickaxe=Beliung Mese
|
||||
Diamond Pickaxe=Beliung Berlian
|
||||
Wooden Shovel=Sekop Kayu
|
||||
Stone Shovel=Sekop Batu
|
||||
Bronze Shovel=Sekop Perunggu
|
||||
Steel Shovel=Sekop Baja
|
||||
Mese Shovel=Sekop Mese
|
||||
Diamond Shovel=Sekop Berlian
|
||||
Wooden Axe=Kapak Kayu
|
||||
Stone Axe=Kapak Batu
|
||||
Bronze Axe=Kapak Perunggu
|
||||
Steel Axe=Kapak Baja
|
||||
Mese Axe=Kapak Mese
|
||||
Diamond Axe=Kapak Berlian
|
||||
Wooden Sword=Pedang Kayu
|
||||
Stone Sword=Pedang Batu
|
||||
Bronze Sword=Pedang Perunggu
|
||||
Steel Sword=Pedang Baja
|
||||
Mese Sword=Pedang Mese
|
||||
Diamond Sword=Pedang Berlian
|
||||
Key=Kunci
|
||||
Furnace is empty=Tungku kosong
|
||||
100% (output full)=100% (keluaran penuh)
|
||||
@1%=@1%
|
||||
Not cookable=Tidak bisa dimasak
|
||||
Empty=Kosong
|
||||
Furnace active=Tungku nyala
|
||||
Furnace inactive=Tungku mati
|
||||
(Item: @1; Fuel: @2)=(Barang: @1; Bahan Bakar: @2)
|
||||
Furnace=Tungku
|
||||
Title:=Judul:
|
||||
Contents:=Isi:
|
||||
Save=Simpan
|
||||
by @1=oleh @1
|
||||
Page @1 of @2=Halaman @1 dari @2
|
||||
"@1"="@1"
|
||||
"@1" by @2="@1" oleh @2
|
||||
Skeleton Key=Kunci Induk
|
||||
Key to @1's @2=Kunci @2 milik @1
|
||||
Blueberries=Bluberi
|
||||
Book=Buku
|
||||
Book with Text=Buku Tertulis
|
||||
Bronze Ingot=Perunggu Batangan
|
||||
Clay Brick=Bata
|
||||
Clay Lump=Bongkahan Semen
|
||||
Coal Lump=Bongkahan Batu Bara
|
||||
Copper Ingot=Tembaga Batangan
|
||||
Copper Lump=Bongkahan Tembaga
|
||||
Diamond=Berlian
|
||||
Flint=Batu Api
|
||||
Gold Ingot=Emas Batangan
|
||||
Gold Lump=Bongkahan Emas
|
||||
Iron Lump=Bongkahan Besi
|
||||
Mese Crystal=Kristal Mese
|
||||
Mese Crystal Fragment=Pecahan Kristal Mese
|
||||
Obsidian Shard=Pecahan Obsidian
|
||||
Paper=Kertas
|
||||
Steel Ingot=Baja Batangan
|
||||
Stick=Tongkat
|
||||
Tin Ingot=Timah Batangan
|
||||
Tin Lump=Bongkahan Timah
|
||||
Locked Chest=Peti Terkunci
|
||||
Locked Chest (owned by @1)=Peti Terkunci (milik @1)
|
||||
You do not own this chest.=Anda bukan pemilik peti ini.
|
||||
a locked chest=suatu peti terkunci
|
||||
Chest=Peti
|
|
@ -1,43 +1,4 @@
|
|||
# textdomain: default
|
||||
Locked Chest=
|
||||
Locked Chest (owned by @1)=
|
||||
You do not own this chest.=
|
||||
a locked chest=
|
||||
Chest=
|
||||
Stick=
|
||||
Paper=
|
||||
"@1" by @2=
|
||||
Book=
|
||||
Book with Text=
|
||||
Skeleton Key=
|
||||
Key to @1's @2=
|
||||
Coal Lump=
|
||||
Iron Lump=
|
||||
Copper Lump=
|
||||
Tin Lump=
|
||||
Mese Crystal=
|
||||
Gold Lump=
|
||||
Diamond=
|
||||
Clay Lump=
|
||||
Steel Ingot=
|
||||
Copper Ingot=
|
||||
Tin Ingot=
|
||||
Bronze Ingot=
|
||||
Gold Ingot=
|
||||
Mese Crystal Fragment=
|
||||
Clay Brick=
|
||||
Obsidian Shard=
|
||||
Flint=
|
||||
Blueberries=
|
||||
Furnace is empty=
|
||||
100% (output full)=
|
||||
@1%=
|
||||
Empty=
|
||||
Not cookable=
|
||||
Furnace active=
|
||||
Furnace inactive=
|
||||
(Item: @1; Fuel: @2)=
|
||||
Furnace=
|
||||
Stone=
|
||||
Cobblestone=
|
||||
Stone Brick=
|
||||
|
@ -62,12 +23,12 @@ Obsidian Block=
|
|||
Dirt=
|
||||
Dirt with Grass=
|
||||
Dirt with Grass and Footsteps=
|
||||
Dirt with Dry Grass=
|
||||
Dirt with Savanna Grass=
|
||||
Dirt with Snow=
|
||||
Dirt with Rainforest Litter=
|
||||
Dirt with Coniferous Litter=
|
||||
Dry Dirt=
|
||||
Dry Dirt with Dry Grass=
|
||||
Savanna Dirt=
|
||||
Savanna Dirt with Savanna Grass=
|
||||
Permafrost=
|
||||
Permafrost with Stones=
|
||||
Permafrost with Moss=
|
||||
|
@ -124,7 +85,7 @@ Papyrus=
|
|||
Dry Shrub=
|
||||
Jungle Grass=
|
||||
Grass=
|
||||
Dry Grass=
|
||||
Savanna Grass=
|
||||
Fern=
|
||||
Marram Grass=
|
||||
Bush Stem=
|
||||
|
@ -176,6 +137,8 @@ Brick Block=
|
|||
Mese Lamp=
|
||||
Mese Post Light=
|
||||
Cloud=
|
||||
@1 will intersect protection on growth.=
|
||||
Torch=
|
||||
Wooden Pickaxe=
|
||||
Stone Pickaxe=
|
||||
Bronze Pickaxe=
|
||||
|
@ -201,11 +164,48 @@ Steel Sword=
|
|||
Mese Sword=
|
||||
Diamond Sword=
|
||||
Key=
|
||||
Torch=
|
||||
@1 will intersect protection on growth.=
|
||||
Furnace is empty=
|
||||
100% (output full)=
|
||||
@1%=
|
||||
Not cookable=
|
||||
Empty=
|
||||
Furnace active=
|
||||
Furnace inactive=
|
||||
(Item: @1; Fuel: @2)=
|
||||
Furnace=
|
||||
Title:=
|
||||
Contents:=
|
||||
Save=
|
||||
by @1=
|
||||
Page @1 of @2=
|
||||
"@1"=
|
||||
"@1" by @2=
|
||||
Skeleton Key=
|
||||
Key to @1's @2=
|
||||
Blueberries=
|
||||
Book=
|
||||
Book with Text=
|
||||
Bronze Ingot=
|
||||
Clay Brick=
|
||||
Clay Lump=
|
||||
Coal Lump=
|
||||
Copper Ingot=
|
||||
Copper Lump=
|
||||
Diamond=
|
||||
Flint=
|
||||
Gold Ingot=
|
||||
Gold Lump=
|
||||
Iron Lump=
|
||||
Mese Crystal=
|
||||
Mese Crystal Fragment=
|
||||
Obsidian Shard=
|
||||
Paper=
|
||||
Steel Ingot=
|
||||
Stick=
|
||||
Tin Ingot=
|
||||
Tin Lump=
|
||||
Locked Chest=
|
||||
Locked Chest (owned by @1)=
|
||||
You do not own this chest.=
|
||||
a locked chest=
|
||||
Chest=
|
||||
|
|
|
@ -458,12 +458,12 @@ minetest.register_node("default:dirt_with_grass_footsteps", {
|
|||
})
|
||||
|
||||
minetest.register_node("default:dirt_with_dry_grass", {
|
||||
description = S("Dirt with Dry Grass"),
|
||||
description = S("Dirt with Savanna Grass"),
|
||||
tiles = {"default_dry_grass.png",
|
||||
"default_dirt.png",
|
||||
{name = "default_dirt.png^default_dry_grass_side.png",
|
||||
tileable_vertical = false}},
|
||||
groups = {crumbly = 3, soil = 1},
|
||||
groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1},
|
||||
drop = "default:dirt",
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name = "default_grass_footstep", gain = 0.4},
|
||||
|
@ -513,14 +513,14 @@ minetest.register_node("default:dirt_with_coniferous_litter", {
|
|||
})
|
||||
|
||||
minetest.register_node("default:dry_dirt", {
|
||||
description = S("Dry Dirt"),
|
||||
description = S("Savanna Dirt"),
|
||||
tiles = {"default_dry_dirt.png"},
|
||||
groups = {crumbly = 3, soil = 1},
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("default:dry_dirt_with_dry_grass", {
|
||||
description = S("Dry Dirt with Dry Grass"),
|
||||
description = S("Savanna Dirt with Savanna Grass"),
|
||||
tiles = {"default_dry_grass.png", "default_dry_dirt.png",
|
||||
{name = "default_dry_dirt.png^default_dry_grass_side.png",
|
||||
tileable_vertical = false}},
|
||||
|
@ -621,7 +621,7 @@ minetest.register_node("default:snow", {
|
|||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, -7 / 16, 0.5},
|
||||
{-0.5, -0.5, -0.5, 0.5, -6 / 16, 0.5},
|
||||
},
|
||||
},
|
||||
groups = {crumbly = 3, falling_node = 1, snowy = 1},
|
||||
|
@ -1497,7 +1497,7 @@ end
|
|||
|
||||
|
||||
minetest.register_node("default:dry_grass_1", {
|
||||
description = S("Dry Grass"),
|
||||
description = S("Savanna Grass"),
|
||||
drawtype = "plantlike",
|
||||
waving = 1,
|
||||
tiles = {"default_dry_grass_1.png"},
|
||||
|
@ -1526,7 +1526,7 @@ minetest.register_node("default:dry_grass_1", {
|
|||
|
||||
for i = 2, 5 do
|
||||
minetest.register_node("default:dry_grass_" .. i, {
|
||||
description = S("Dry Grass"),
|
||||
description = S("Savanna Grass"),
|
||||
drawtype = "plantlike",
|
||||
waving = 1,
|
||||
tiles = {"default_dry_grass_" .. i .. ".png"},
|
||||
|
@ -2579,12 +2579,10 @@ local function register_sign(material, desc, def)
|
|||
sounds = def.sounds,
|
||||
|
||||
on_construct = function(pos)
|
||||
--local n = minetest.get_node(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", "field[text;;${text}]")
|
||||
end,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
--print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields))
|
||||
local player_name = sender:get_player_name()
|
||||
if minetest.is_protected(pos, player_name) then
|
||||
minetest.record_protection_violation(pos, player_name)
|
||||
|
@ -2598,8 +2596,8 @@ local function register_sign(material, desc, def)
|
|||
minetest.chat_send_player(player_name, S("Text too long"))
|
||||
return
|
||||
end
|
||||
minetest.log("action", (player_name or "") .. " wrote \"" ..
|
||||
text .. "\" to sign at " .. minetest.pos_to_string(pos))
|
||||
minetest.log("action", player_name .. " wrote \"" .. text ..
|
||||
"\" to the sign at " .. minetest.pos_to_string(pos))
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("text", text)
|
||||
|
||||
|
@ -2816,7 +2814,10 @@ minetest.register_node("default:brick", {
|
|||
description = S("Brick Block"),
|
||||
paramtype2 = "facedir",
|
||||
place_param2 = 0,
|
||||
tiles = {"default_brick.png"},
|
||||
tiles = {
|
||||
"default_brick.png^[transformFX",
|
||||
"default_brick.png",
|
||||
},
|
||||
is_ground_content = false,
|
||||
groups = {cracky = 3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
|
|
Before Width: | Height: | Size: 459 B After Width: | Height: | Size: 331 B |
Before Width: | Height: | Size: 148 B After Width: | Height: | Size: 154 B |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 279 B |
|
@ -16,9 +16,7 @@ function default.can_grow(pos)
|
|||
if not node_under then
|
||||
return false
|
||||
end
|
||||
local name_under = node_under.name
|
||||
local is_soil = minetest.get_item_group(name_under, "soil")
|
||||
if is_soil == 0 then
|
||||
if minetest.get_item_group(node_under.name, "soil") == 0 then
|
||||
return false
|
||||
end
|
||||
local light_level = minetest.get_node_light(pos)
|
||||
|
|
|
@ -78,9 +78,7 @@ end
|
|||
-- 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",
|
||||
drawtype = "airlike",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
sunlight_propagates = true,
|
||||
|
@ -93,13 +91,7 @@ minetest.register_node("doors:hidden", {
|
|||
drop = "",
|
||||
groups = {not_in_creative_inventory = 1},
|
||||
on_blast = function() end,
|
||||
tiles = {"doors_blank.png"},
|
||||
-- 1px transparent block inside door hinge near node top.
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-15/32, 13/32, -15/32, -13/32, 1/2, -13/32},
|
||||
},
|
||||
-- collision_box needed otherise selection box would be full node size
|
||||
-- 1px block inside door hinge near node top
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {-15/32, 13/32, -15/32, -13/32, 1/2, -13/32},
|
||||
|
@ -115,10 +107,10 @@ local transform = {
|
|||
{v = "_a", param2 = 2},
|
||||
},
|
||||
{
|
||||
{v = "_b", param2 = 1},
|
||||
{v = "_b", param2 = 2},
|
||||
{v = "_b", param2 = 3},
|
||||
{v = "_b", param2 = 0},
|
||||
{v = "_c", param2 = 1},
|
||||
{v = "_c", param2 = 2},
|
||||
{v = "_c", param2 = 3},
|
||||
{v = "_c", param2 = 0},
|
||||
},
|
||||
{
|
||||
{v = "_b", param2 = 1},
|
||||
|
@ -127,10 +119,10 @@ local transform = {
|
|||
{v = "_b", param2 = 0},
|
||||
},
|
||||
{
|
||||
{v = "_a", param2 = 3},
|
||||
{v = "_a", param2 = 0},
|
||||
{v = "_a", param2 = 1},
|
||||
{v = "_a", param2 = 2},
|
||||
{v = "_d", param2 = 3},
|
||||
{v = "_d", param2 = 0},
|
||||
{v = "_d", param2 = 1},
|
||||
{v = "_d", param2 = 2},
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -449,15 +441,23 @@ function doors.register(name, def)
|
|||
def.mesh = "door_b.obj"
|
||||
minetest.register_node(":" .. name .. "_b", def)
|
||||
|
||||
def.mesh = "door_a2.obj"
|
||||
minetest.register_node(":" .. name .. "_c", def)
|
||||
|
||||
def.mesh = "door_b2.obj"
|
||||
minetest.register_node(":" .. name .. "_d", def)
|
||||
|
||||
doors.registered_doors[name .. "_a"] = true
|
||||
doors.registered_doors[name .. "_b"] = true
|
||||
doors.registered_doors[name .. "_c"] = true
|
||||
doors.registered_doors[name .. "_d"] = true
|
||||
end
|
||||
|
||||
doors.register("door_wood", {
|
||||
tiles = {{ name = "doors_door_wood.png", backface_culling = true }},
|
||||
description = S("Wooden Door"),
|
||||
inventory_image = "doors_item_wood.png",
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
|
||||
groups = {node = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
|
||||
recipe = {
|
||||
{"group:wood", "group:wood"},
|
||||
{"group:wood", "group:wood"},
|
||||
|
@ -470,7 +470,7 @@ doors.register("door_steel", {
|
|||
description = S("Steel Door"),
|
||||
inventory_image = "doors_item_steel.png",
|
||||
protected = true,
|
||||
groups = {cracky = 1, level = 2},
|
||||
groups = {node = 1, cracky = 1, level = 2},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
sound_open = "doors_steel_door_open",
|
||||
sound_close = "doors_steel_door_close",
|
||||
|
@ -485,7 +485,7 @@ 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},
|
||||
groups = {node = 1, cracky=3, oddly_breakable_by_hand=3},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
sound_open = "doors_glass_door_open",
|
||||
sound_close = "doors_glass_door_close",
|
||||
|
@ -500,7 +500,7 @@ 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},
|
||||
groups = {node = 1, cracky=3},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
sound_open = "doors_glass_door_open",
|
||||
sound_close = "doors_glass_door_close",
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# textdomain: doors
|
||||
Hidden Door Segment=Bagian Pintu Tersembunyi
|
||||
Owned by @1=Milik @1
|
||||
You do not own this locked door.=Anda bukan pemilik pintu terkunci ini.
|
||||
a locked door=pintu terkunci
|
||||
Wooden Door=Pintu Kayu
|
||||
Steel Door=Pintu Baja
|
||||
Glass Door=Pintu Kaca
|
||||
Obsidian Glass Door=Pintu Kaca Obsidian
|
||||
You do not own this trapdoor.=Anda bukan pemilik pintu kolong ini.
|
||||
a locked trapdoor=pintu kolong terkunci
|
||||
Wooden Trapdoor=Pintu Kolong Kayu
|
||||
Steel Trapdoor=Pintu Kolong Baja
|
||||
Apple Wood Fence Gate=Gerbang Kayu Pohon Apel
|
||||
Acacia Wood Fence Gate=Gerbang Kayu Akasia
|
||||
Jungle Wood Fence Gate=Gerbang Kayu Pohon Rimba
|
||||
Pine Wood Fence Gate=Gerbang Kayu Pinus
|
||||
Aspen Wood Fence Gate=Gerbang Kayu Aspen
|
|
@ -4,7 +4,7 @@ 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
|
||||
Steel Door=Porta d'acciaio
|
||||
Glass Door=Porta di vetro
|
||||
Obsidian Glass Door=Porta di vetro d'ossidiana
|
||||
Owned by @1=Di proprietà di @1
|
||||
|
@ -16,4 +16,4 @@ 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
|
||||
Aspen Wood Fence Gate=Cancello della recinzione di legno di pioppo
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Blender v2.76 (sub 0) OBJ File: 'door_a.blend'
|
||||
# www.blender.org
|
||||
mtllib door_a.mtl
|
||||
o Cube_Cube.001
|
||||
o door_a
|
||||
v 0.499000 -0.499000 -0.499000
|
||||
v 0.499000 1.499000 -0.499000
|
||||
v 0.499000 -0.499000 -0.375000
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
mtllib door_a2.mtl
|
||||
o door_a2
|
||||
v -0.499000 1.499000 -0.499000
|
||||
v -0.499000 -0.499000 -0.499000
|
||||
v -0.499000 -0.499000 -0.375000
|
||||
v -0.499000 1.499000 -0.375000
|
||||
v 0.499000 -0.499000 -0.375000
|
||||
v 0.499000 1.499000 -0.375000
|
||||
v 0.499000 -0.499000 -0.499000
|
||||
v 0.499000 1.499000 -0.499000
|
||||
vt 0.894737 1.000000
|
||||
vt 0.894737 0.000000
|
||||
vt 0.842105 0.000000
|
||||
vt 0.842105 1.000000
|
||||
vt 0.421052 1.000000
|
||||
vt 0.421052 0.000000
|
||||
vt 0.000001 0.000000
|
||||
vt 0.000001 1.000000
|
||||
vt 0.894737 1.000000
|
||||
vt 0.894737 0.000000
|
||||
vt 0.947368 0.000000
|
||||
vt 0.947368 1.000000
|
||||
vt 0.842105 1.000000
|
||||
vt 0.842105 0.000000
|
||||
vt 0.421052 0.000000
|
||||
vt 0.421052 1.000000
|
||||
vt 0.947368 0.000000
|
||||
vt 0.947368 0.500000
|
||||
vt 1.000000 0.500000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.947368 0.500000
|
||||
vt 0.947368 1.000000
|
||||
vn -1.0000 -0.0000 0.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
usemtl None.009
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1 4/4/1
|
||||
f 4/5/2 3/6/2 5/7/2 6/8/2
|
||||
f 6/9/3 5/10/3 7/11/3 8/12/3
|
||||
f 8/13/4 7/14/4 2/15/4 1/16/4
|
||||
f 2/17/5 7/18/5 5/19/5 3/20/5
|
||||
f 8/21/6 1/22/6 4/23/6 6/24/6
|
|
@ -1,40 +1,50 @@
|
|||
# Blender v2.76 (sub 0) OBJ File: 'door_b.blend'
|
||||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
mtllib door_b.mtl
|
||||
o Cube_Cube.001
|
||||
v -0.499000 -0.499000 -0.499000
|
||||
v -0.499000 1.499000 -0.499000
|
||||
v -0.499000 -0.499000 -0.375000
|
||||
v -0.499000 1.499000 -0.375000
|
||||
v 0.499000 -0.499000 -0.499000
|
||||
o door_b
|
||||
v 0.499000 1.499000 -0.499000
|
||||
v 0.499000 -0.499000 -0.375000
|
||||
v 0.499000 1.499000 -0.375000
|
||||
v 0.499000 -0.499000 -0.375000
|
||||
v 0.499000 -0.499000 -0.499000
|
||||
v -0.499000 1.499000 -0.375000
|
||||
v -0.499000 -0.499000 -0.375000
|
||||
v -0.499000 1.499000 -0.499000
|
||||
v -0.499000 -0.499000 -0.499000
|
||||
vt 0.894736 1.000000
|
||||
vt 0.947368 1.000000
|
||||
vt 0.947368 0.000000
|
||||
vt 0.894736 0.000000
|
||||
vt 0.842105 1.000000
|
||||
vt 0.842105 0.000000
|
||||
vt 0.894737 0.000000
|
||||
vt 0.894737 1.000000
|
||||
vt 0.421053 1.000000
|
||||
vt 0.421053 0.000000
|
||||
vt 0.947368 0.000000
|
||||
vt 0.947368 1.000000
|
||||
vt 0.842105 0.000000
|
||||
vt 0.842105 1.000000
|
||||
vt 0.894736 1.000000
|
||||
vt 0.894736 0.000000
|
||||
vt 0.842105 0.000000
|
||||
vt 0.421053 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.421053 0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.947368 0.500000
|
||||
vt 0.947368 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
usemtl None
|
||||
s off
|
||||
f 2/1/1 1/2/1 3/3/1 4/4/1
|
||||
f 4/5/2 3/6/2 7/2/2 8/1/2
|
||||
f 8/4/3 7/3/3 5/7/3 6/8/3
|
||||
f 6/9/4 5/10/4 1/6/4 2/5/4
|
||||
f 1/11/5 5/12/5 7/13/5 3/7/5
|
||||
f 6/8/6 2/13/6 4/12/6 8/14/6
|
||||
vt 1.000000 0.000000
|
||||
vt 0.947368 0.000000
|
||||
vt 0.947368 0.500000
|
||||
vt 1.000000 0.500000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
usemtl None.007
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1 4/4/1
|
||||
f 2/5/2 5/6/2 6/7/2 3/8/2
|
||||
f 5/9/3 7/10/3 8/11/3 6/12/3
|
||||
f 7/13/4 1/14/4 4/15/4 8/16/4
|
||||
f 4/17/5 3/18/5 6/19/5 8/20/5
|
||||
f 7/21/6 5/22/6 2/23/6 1/24/6
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
mtllib door_b2.mtl
|
||||
o door_b2
|
||||
v 0.499000 1.499000 -0.499000
|
||||
v 0.499000 1.499000 -0.375000
|
||||
v 0.499000 -0.499000 -0.375000
|
||||
v 0.499000 -0.499000 -0.499000
|
||||
v -0.499000 1.499000 -0.375000
|
||||
v -0.499000 -0.499000 -0.375000
|
||||
v -0.499000 1.499000 -0.499000
|
||||
v -0.499000 -0.499000 -0.499000
|
||||
vt 0.842105 1.000000
|
||||
vt 0.894737 1.000000
|
||||
vt 0.894737 0.000000
|
||||
vt 0.842105 0.000000
|
||||
vt 0.421052 1.000000
|
||||
vt 0.000001 1.000000
|
||||
vt 0.000001 0.000000
|
||||
vt 0.421052 0.000000
|
||||
vt 0.894737 1.000000
|
||||
vt 0.947368 1.000000
|
||||
vt 0.947368 0.000000
|
||||
vt 0.894737 0.000000
|
||||
vt 0.842105 1.000000
|
||||
vt 0.421052 1.000000
|
||||
vt 0.421052 0.000000
|
||||
vt 0.842105 0.000000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.947368 0.500000
|
||||
vt 0.947368 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.947368 0.000000
|
||||
vt 0.947368 0.500000
|
||||
vt 1.000000 0.500000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 -0.0000 1.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
usemtl None.010
|
||||
s 1
|
||||
f 1/1/1 2/2/1 3/3/1 4/4/1
|
||||
f 2/5/2 5/6/2 6/7/2 3/8/2
|
||||
f 5/9/3 7/10/3 8/11/3 6/12/3
|
||||
f 7/13/4 1/14/4 4/15/4 8/16/4
|
||||
f 4/17/5 3/18/5 6/19/5 8/20/5
|
||||
f 7/21/6 5/22/6 2/23/6 1/24/6
|
Before Width: | Height: | Size: 95 B |
|
@ -0,0 +1,16 @@
|
|||
# textdomain: dye
|
||||
White Dye=Pewarna Putih
|
||||
Grey Dye=Pewarna Abu
|
||||
Dark Grey Dye=Pewarna Abu Tua
|
||||
Black Dye=Pewarna Hitam
|
||||
Violet Dye=Pewarna Ungu
|
||||
Blue Dye=Pewarna Biru
|
||||
Cyan Dye=Pewarna Sian
|
||||
Dark Green Dye=Pewarna Hijau Tua
|
||||
Green Dye=Pewarna Hijau
|
||||
Yellow Dye=Pewarna Kuning
|
||||
Brown Dye=Pewarna Cokelat
|
||||
Orange Dye=Pewarna Oranye
|
||||
Red Dye=Pewarna Merah
|
||||
Magenta Dye=Pewarna Magenta
|
||||
Pink Dye=Pewarna Jambon
|
|
@ -38,3 +38,6 @@ Created by Gambit (CC BY 3.0):
|
|||
|
||||
Created by Napiophelios (CC BY-SA 3.0):
|
||||
farming_cotton.png
|
||||
|
||||
Created by Extex101 (CC BY-SA 3.0):
|
||||
farming_cotton_wild.png
|
||||
|
|
|
@ -16,7 +16,7 @@ dofile(farming.path .. "/nodes.lua")
|
|||
dofile(farming.path .. "/hoes.lua")
|
||||
|
||||
|
||||
-- WHEAT
|
||||
-- Wheat
|
||||
|
||||
farming.register_plant("farming:wheat", {
|
||||
description = S("Wheat Seed"),
|
||||
|
@ -71,6 +71,25 @@ farming.register_plant("farming:cotton", {
|
|||
groups = {flammable = 4},
|
||||
})
|
||||
|
||||
minetest.register_decoration({
|
||||
name = "farming:cotton_wild",
|
||||
deco_type = "simple",
|
||||
place_on = {"default:dry_dirt_with_dry_grass"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = -0.1,
|
||||
scale = 0.1,
|
||||
spread = {x = 50, y = 50, z = 50},
|
||||
seed = 4242,
|
||||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
biomes = {"savanna"},
|
||||
y_max = 31000,
|
||||
y_min = 1,
|
||||
decoration = "farming:cotton_wild",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("farming:string", {
|
||||
description = S("String"),
|
||||
inventory_image = "farming_string.png",
|
||||
|
@ -115,12 +134,6 @@ minetest.register_craft({
|
|||
|
||||
-- Fuels
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "farming:straw",
|
||||
burntime = 3,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "farming:wheat",
|
||||
|
@ -145,7 +158,9 @@ minetest.register_craft({
|
|||
burntime = 5,
|
||||
})
|
||||
|
||||
|
||||
-- Register farming items as dungeon loot
|
||||
|
||||
if minetest.global_exists("dungeon_loot") then
|
||||
dungeon_loot.register({
|
||||
{name = "farming:string", chance = 0.5, count = {1, 8}},
|
||||
|
|
|
@ -59,3 +59,37 @@ rights may limit how you use the material.
|
|||
|
||||
For more details:
|
||||
http://creativecommons.org/licenses/by/3.0/
|
||||
|
||||
-----------------------
|
||||
|
||||
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
|
||||
Copyright (C) 2017 Napiophelios
|
||||
Copyright (C) 2020 Extex101
|
||||
|
||||
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/
|
||||
|
|
|
@ -12,9 +12,9 @@ Cotton Seed=Baumwollsamen
|
|||
String=Faden
|
||||
Soil=Ackerboden
|
||||
Wet Soil=Nasser Ackerboden
|
||||
Dry Soil=Trockener Ackerboden
|
||||
Wet Dry Soil=Nasser trockener Ackerboden
|
||||
Desert Sand Soil=Wüsensandackerboden
|
||||
Savanna Soil=Savannenackerboden
|
||||
Wet Savanna Soil=Nasser Savannenackerboden
|
||||
Desert Sand Soil=Wüstensandackerboden
|
||||
Wet Desert Sand Soil=Nasser Wüstensandackerboden
|
||||
Straw=Stroh
|
||||
Straw Stair=Strohtreppe
|
||||
|
@ -23,3 +23,6 @@ Inner Straw Stair=Innere Strohtreppe
|
|||
Outer Straw Stair=Äußere Strohtreppe
|
||||
Wheat=Weizen
|
||||
Cotton=Baumwolle
|
||||
Hoe=Hacke
|
||||
Seed=Samen
|
||||
Wild Cotton=Wilde Baumwolle
|
||||
|
|
|
@ -23,3 +23,4 @@ Inner Straw Stair=Escalera de paja interior
|
|||
Outer Straw Stair=Escalera de paja exterior
|
||||
Wheat=Trigo
|
||||
Cotton=Algodón
|
||||
Wild Cotton=Algodón silvestre
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
# textdomain: farming
|
||||
Soil=Tanah Tanam
|
||||
Wet Soil=Tanah Tanam Basah
|
||||
Savanna Soil=Tanah Tanam Sabana
|
||||
Wet Savanna Soil=Tanah Tanam Sabana Basah
|
||||
Desert Sand Soil=Pasir Tanam Gurun
|
||||
Wet Desert Sand Soil=Pasir Tanam Gurun Basah
|
||||
Straw=Jerami
|
||||
Straw Stair=Tangga Jerami
|
||||
Inner Straw Stair=Tangga Jerami Dalam
|
||||
Outer Straw Stair=Tangga Jerami Luar
|
||||
Straw Slab=Lempengan Jerami
|
||||
Wild Cotton=Kapas Liar
|
||||
Wheat Seed=Benih Gandum
|
||||
Wheat=Gandum
|
||||
Flour=Tepung
|
||||
Bread=Roti
|
||||
Cotton Seed=Benih Kapas
|
||||
Cotton=Kapas
|
||||
String=Benang
|
||||
Wooden Hoe=Cangkul Kayu
|
||||
Stone Hoe=Cangkul Batu
|
||||
Steel Hoe=Cangkul Baja
|
||||
Bronze Hoe=Cangkul Perunggu
|
||||
Mese Hoe=Cangkul Mese
|
||||
Diamond Hoe=Cangkul Berlian
|
||||
Hoe=Cangkul
|
||||
Seed=Benih
|
|
@ -1,19 +1,8 @@
|
|||
# textdomain: farming
|
||||
Wooden Hoe=
|
||||
Stone Hoe=
|
||||
Steel Hoe=
|
||||
Bronze Hoe=
|
||||
Mese Hoe=
|
||||
Diamond Hoe=
|
||||
Wheat Seed=
|
||||
Flour=
|
||||
Bread=
|
||||
Cotton Seed=
|
||||
String=
|
||||
Soil=
|
||||
Wet Soil=
|
||||
Dry Soil=
|
||||
Wet Dry Soil=
|
||||
Savanna Soil=
|
||||
Wet Savanna Soil=
|
||||
Desert Sand Soil=
|
||||
Wet Desert Sand Soil=
|
||||
Straw=
|
||||
|
@ -21,5 +10,19 @@ Straw Stair=
|
|||
Inner Straw Stair=
|
||||
Outer Straw Stair=
|
||||
Straw Slab=
|
||||
Wild Cotton=
|
||||
Wheat Seed=
|
||||
Wheat=
|
||||
Flour=
|
||||
Bread=
|
||||
Cotton Seed=
|
||||
Cotton=
|
||||
String=
|
||||
Wooden Hoe=
|
||||
Stone Hoe=
|
||||
Steel Hoe=
|
||||
Bronze Hoe=
|
||||
Mese Hoe=
|
||||
Diamond Hoe=
|
||||
Hoe=
|
||||
Seed=
|
||||
|
|
|
@ -86,7 +86,7 @@ minetest.register_node("farming:soil_wet", {
|
|||
})
|
||||
|
||||
minetest.register_node("farming:dry_soil", {
|
||||
description = S("Dry Soil"),
|
||||
description = S("Savanna Soil"),
|
||||
tiles = {"default_dry_dirt.png^farming_soil.png", "default_dry_dirt.png"},
|
||||
drop = "default:dry_dirt",
|
||||
groups = {crumbly=3, not_in_creative_inventory=1, soil=2, grassland = 1, field = 1},
|
||||
|
@ -99,7 +99,7 @@ minetest.register_node("farming:dry_soil", {
|
|||
})
|
||||
|
||||
minetest.register_node("farming:dry_soil_wet", {
|
||||
description = S("Wet Dry Soil"),
|
||||
description = S("Wet Savanna Soil"),
|
||||
tiles = {"default_dry_dirt.png^farming_soil_wet.png", "default_dry_dirt.png^farming_soil_wet_side.png"},
|
||||
drop = "default:dry_dirt",
|
||||
groups = {crumbly=3, not_in_creative_inventory=1, soil=3, wet = 1, grassland = 1, field = 1},
|
||||
|
@ -153,6 +153,13 @@ minetest.register_node("farming:straw", {
|
|||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
-- Registered before the stairs so the stairs get fuel recipes.
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "farming:straw",
|
||||
burntime = 3,
|
||||
})
|
||||
|
||||
do
|
||||
local recipe = "farming:straw"
|
||||
local groups = {snappy = 3, flammable = 4}
|
||||
|
@ -223,20 +230,53 @@ minetest.register_abm({
|
|||
})
|
||||
|
||||
|
||||
-- Make default:grass_* occasionally drop wheat seed
|
||||
|
||||
for i = 1, 5 do
|
||||
minetest.override_item("default:grass_"..i, {drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {"farming:seed_wheat"},rarity = 5},
|
||||
{items = {"farming:seed_wheat"}, rarity = 5},
|
||||
{items = {"default:grass_1"}},
|
||||
}
|
||||
}})
|
||||
end
|
||||
|
||||
|
||||
-- Make default:junglegrass occasionally drop cotton seed.
|
||||
|
||||
-- This is the old source of cotton seeds that makes no sense. It is a leftover
|
||||
-- from Mapgen V6 where junglegrass was the only plant available to be a source.
|
||||
-- This source is kept for now to avoid disruption but should probably be
|
||||
-- removed in future as players get used to the new source.
|
||||
|
||||
minetest.override_item("default:junglegrass", {drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {"farming:seed_cotton"},rarity = 8},
|
||||
{items = {"farming:seed_cotton"}, rarity = 8},
|
||||
{items = {"default:junglegrass"}},
|
||||
}
|
||||
}})
|
||||
|
||||
|
||||
-- Wild cotton as a source of cotton seed
|
||||
|
||||
minetest.register_node("farming:cotton_wild", {
|
||||
description = S("Wild Cotton"),
|
||||
drawtype = "plantlike",
|
||||
waving = 1,
|
||||
tiles = {"farming_cotton_wild.png"},
|
||||
inventory_image = "farming_cotton_wild.png",
|
||||
wield_image = "farming_cotton_wild.png",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
groups = {snappy = 3, attached_node = 1, flammable = 4},
|
||||
drop = "farming:seed_cotton",
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-6 / 16, -8 / 16, -6 / 16, 6 / 16, 5 / 16, 6 / 16},
|
||||
},
|
||||
})
|
||||
|
|
After Width: | Height: | Size: 228 B |
|
@ -1,15 +1,12 @@
|
|||
-- fire/init.lua
|
||||
|
||||
-- Global namespace for functions
|
||||
|
||||
fire = {}
|
||||
|
||||
-- Load support for MT game translation.
|
||||
local S = minetest.get_translator("fire")
|
||||
|
||||
|
||||
-- 'Enable fire' setting
|
||||
|
||||
local fire_enabled = minetest.settings:get_bool("enable_fire")
|
||||
if fire_enabled == nil then
|
||||
-- enable_fire setting not specified, check for disable_fire
|
||||
|
@ -27,12 +24,9 @@ end
|
|||
--
|
||||
|
||||
-- Flood flame function
|
||||
|
||||
local function flood_flame(pos, oldnode, newnode)
|
||||
local function flood_flame(pos, _, newnode)
|
||||
-- Play flame extinguish sound if liquid is not an 'igniter'
|
||||
local nodedef = minetest.registered_items[newnode.name]
|
||||
if not (nodedef and nodedef.groups and
|
||||
nodedef.groups.igniter and nodedef.groups.igniter > 0) then
|
||||
if minetest.get_item_group(newnode.name, "igniter") == 0 then
|
||||
minetest.sound_play("fire_extinguish_flame",
|
||||
{pos = pos, max_hear_distance = 16, gain = 0.15}, true)
|
||||
end
|
||||
|
@ -41,19 +35,16 @@ local function flood_flame(pos, oldnode, newnode)
|
|||
end
|
||||
|
||||
-- Flame nodes
|
||||
|
||||
minetest.register_node("fire:basic_flame", {
|
||||
local fire_node = {
|
||||
drawtype = "firelike",
|
||||
tiles = {
|
||||
{
|
||||
name = "fire_basic_flame_animated.png",
|
||||
animation = {
|
||||
type = "vertical_frames",
|
||||
aspect_w = 16,
|
||||
aspect_h = 16,
|
||||
length = 1
|
||||
},
|
||||
},
|
||||
tiles = {{
|
||||
name = "fire_basic_flame_animated.png",
|
||||
animation = {
|
||||
type = "vertical_frames",
|
||||
aspect_w = 16,
|
||||
aspect_h = 16,
|
||||
length = 1
|
||||
}}
|
||||
},
|
||||
inventory_image = "fire_basic_flame.png",
|
||||
paramtype = "light",
|
||||
|
@ -63,61 +54,36 @@ minetest.register_node("fire:basic_flame", {
|
|||
sunlight_propagates = true,
|
||||
floodable = true,
|
||||
damage_per_second = 4,
|
||||
groups = {igniter = 2, dig_immediate = 3, not_in_creative_inventory = 1},
|
||||
groups = {igniter = 2, dig_immediate = 3, fire = 1},
|
||||
drop = "",
|
||||
on_flood = flood_flame
|
||||
}
|
||||
|
||||
on_timer = function(pos)
|
||||
local f = minetest.find_node_near(pos, 1, {"group:flammable"})
|
||||
if not fire_enabled or not f then
|
||||
minetest.remove_node(pos)
|
||||
return
|
||||
end
|
||||
-- Restart timer
|
||||
return true
|
||||
end,
|
||||
-- Basic flame node
|
||||
local flame_fire_node = table.copy(fire_node)
|
||||
flame_fire_node.description = S("Fire")
|
||||
flame_fire_node.groups.not_in_creative_inventory = 1
|
||||
flame_fire_node.on_timer = function(pos)
|
||||
if not minetest.find_node_near(pos, 1, {"group:flammable"}) then
|
||||
minetest.remove_node(pos)
|
||||
return
|
||||
end
|
||||
-- Restart timer
|
||||
return true
|
||||
end
|
||||
flame_fire_node.on_construct = function(pos)
|
||||
minetest.get_node_timer(pos):start(math.random(30, 60))
|
||||
end
|
||||
|
||||
on_construct = function(pos)
|
||||
if not fire_enabled then
|
||||
minetest.remove_node(pos)
|
||||
else
|
||||
minetest.get_node_timer(pos):start(math.random(30, 60))
|
||||
end
|
||||
end,
|
||||
minetest.register_node("fire:basic_flame", flame_fire_node)
|
||||
|
||||
on_flood = flood_flame,
|
||||
})
|
||||
-- Permanent flame node
|
||||
local permanent_fire_node = table.copy(fire_node)
|
||||
permanent_fire_node.description = S("Permanent Fire")
|
||||
|
||||
minetest.register_node("fire:permanent_flame", {
|
||||
description = S("Permanent Flame"),
|
||||
drawtype = "firelike",
|
||||
tiles = {
|
||||
{
|
||||
name = "fire_basic_flame_animated.png",
|
||||
animation = {
|
||||
type = "vertical_frames",
|
||||
aspect_w = 16,
|
||||
aspect_h = 16,
|
||||
length = 1
|
||||
},
|
||||
},
|
||||
},
|
||||
inventory_image = "fire_basic_flame.png",
|
||||
paramtype = "light",
|
||||
light_source = 13,
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
sunlight_propagates = true,
|
||||
floodable = true,
|
||||
damage_per_second = 4,
|
||||
groups = {igniter = 2, dig_immediate = 3},
|
||||
drop = "",
|
||||
|
||||
on_flood = flood_flame,
|
||||
})
|
||||
|
||||
|
||||
-- Flint and steel
|
||||
minetest.register_node("fire:permanent_flame", permanent_fire_node)
|
||||
|
||||
-- Flint and Steel
|
||||
minetest.register_tool("fire:flint_and_steel", {
|
||||
description = S("Flint and Steel"),
|
||||
inventory_image = "fire_flint_steel.png",
|
||||
|
@ -125,11 +91,8 @@ minetest.register_tool("fire:flint_and_steel", {
|
|||
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
local sound_pos = pointed_thing.above or user:get_pos()
|
||||
minetest.sound_play(
|
||||
"fire_flint_and_steel",
|
||||
{pos = sound_pos, gain = 0.5, max_hear_distance = 8},
|
||||
true
|
||||
)
|
||||
minetest.sound_play("fire_flint_and_steel",
|
||||
{pos = sound_pos, gain = 0.5, max_hear_distance = 8}, true)
|
||||
local player_name = user:get_player_name()
|
||||
if pointed_thing.type == "node" then
|
||||
local node_under = minetest.get_node(pointed_thing.under).name
|
||||
|
@ -153,10 +116,11 @@ minetest.register_tool("fire:flint_and_steel", {
|
|||
-- Wear tool
|
||||
local wdef = itemstack:get_definition()
|
||||
itemstack:add_wear(1000)
|
||||
|
||||
-- Tool break sound
|
||||
if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then
|
||||
minetest.sound_play(wdef.sound.breaks, {pos = sound_pos,
|
||||
gain = 0.5}, true)
|
||||
minetest.sound_play(wdef.sound.breaks,
|
||||
{pos = sound_pos, gain = 0.5}, true)
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
|
@ -170,23 +134,21 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
|
||||
-- Override coalblock to enable permanent flame above
|
||||
-- Coalblock is non-flammable to avoid unwanted basic_flame nodes
|
||||
|
||||
minetest.override_item("default:coalblock", {
|
||||
after_destruct = function(pos, oldnode)
|
||||
after_destruct = function(pos)
|
||||
pos.y = pos.y + 1
|
||||
if minetest.get_node(pos).name == "fire:permanent_flame" then
|
||||
minetest.remove_node(pos)
|
||||
end
|
||||
end,
|
||||
on_ignite = function(pos, igniter)
|
||||
on_ignite = function(pos)
|
||||
local flame_pos = {x = pos.x, y = pos.y + 1, z = pos.z}
|
||||
if minetest.get_node(flame_pos).name == "air" then
|
||||
minetest.set_node(flame_pos, {name = "fire:permanent_flame"})
|
||||
end
|
||||
end,
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
|
@ -194,24 +156,18 @@ minetest.override_item("default:coalblock", {
|
|||
-- Sound
|
||||
--
|
||||
|
||||
local flame_sound = minetest.settings:get_bool("flame_sound")
|
||||
if flame_sound == nil then
|
||||
-- Enable if no setting present
|
||||
flame_sound = true
|
||||
end
|
||||
-- Enable if no setting present
|
||||
local flame_sound = minetest.settings:get_bool("flame_sound", true)
|
||||
|
||||
if flame_sound then
|
||||
|
||||
local handles = {}
|
||||
local timer = 0
|
||||
|
||||
-- Parameters
|
||||
|
||||
local radius = 8 -- Flame node search radius around player
|
||||
local cycle = 3 -- Cycle time for sound updates
|
||||
|
||||
-- Update sound for player
|
||||
|
||||
function fire.update_player_sound(player)
|
||||
local player_name = player:get_player_name()
|
||||
-- Search for flame nodes in radius around player
|
||||
|
@ -263,16 +219,13 @@ if flame_sound then
|
|||
fposmid = vector.divide(vector.add(fposmin, fposmax), 2)
|
||||
end
|
||||
-- Play sound
|
||||
local handle = minetest.sound_play(
|
||||
"fire_fire",
|
||||
{
|
||||
pos = fposmid,
|
||||
to_player = player_name,
|
||||
gain = math.min(0.06 * (1 + flames * 0.125), 0.18),
|
||||
max_hear_distance = 32,
|
||||
loop = true, -- In case of lag
|
||||
}
|
||||
)
|
||||
local handle = minetest.sound_play("fire_fire", {
|
||||
pos = fposmid,
|
||||
to_player = player_name,
|
||||
gain = math.min(0.06 * (1 + flames * 0.125), 0.18),
|
||||
max_hear_distance = 32,
|
||||
loop = true -- In case of lag
|
||||
})
|
||||
-- Store sound handle for this player
|
||||
if handle then
|
||||
handles[player_name] = handle
|
||||
|
@ -281,7 +234,6 @@ if flame_sound then
|
|||
end
|
||||
|
||||
-- Cycle for updating players sounds
|
||||
|
||||
minetest.register_globalstep(function(dtime)
|
||||
timer = timer + dtime
|
||||
if timer < cycle then
|
||||
|
@ -296,7 +248,6 @@ if flame_sound then
|
|||
end)
|
||||
|
||||
-- Stop sound and clear handle on player leave
|
||||
|
||||
minetest.register_on_leaveplayer(function(player)
|
||||
local player_name = player:get_player_name()
|
||||
if handles[player_name] then
|
||||
|
@ -308,19 +259,14 @@ end
|
|||
|
||||
|
||||
-- Deprecated function kept temporarily to avoid crashes if mod fire nodes call it
|
||||
|
||||
function fire.update_sounds_around(pos)
|
||||
end
|
||||
|
||||
function fire.update_sounds_around() end
|
||||
|
||||
--
|
||||
-- ABMs
|
||||
--
|
||||
|
||||
if fire_enabled then
|
||||
|
||||
-- Ignite neighboring nodes, add basic flames
|
||||
|
||||
minetest.register_abm({
|
||||
label = "Ignite flame",
|
||||
nodenames = {"group:flammable"},
|
||||
|
@ -333,11 +279,10 @@ if fire_enabled then
|
|||
if p then
|
||||
minetest.set_node(p, {name = "fire:basic_flame"})
|
||||
end
|
||||
end,
|
||||
end
|
||||
})
|
||||
|
||||
-- Remove flammable nodes around basic flame
|
||||
|
||||
minetest.register_abm({
|
||||
label = "Remove flammable nodes",
|
||||
nodenames = {"fire:basic_flame"},
|
||||
|
@ -358,7 +303,6 @@ if fire_enabled then
|
|||
minetest.remove_node(p)
|
||||
minetest.check_for_falling(p)
|
||||
end
|
||||
end,
|
||||
end
|
||||
})
|
||||
|
||||
end
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# textdomain: fire
|
||||
Permanent Flame=Permanente Flamme
|
||||
Fire=Feuer
|
||||
Permanent Fire=Permanentes Feuer
|
||||
Flint and Steel=Feuerstein und Stahl
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: fire
|
||||
Fire=Api
|
||||
Permanent Fire=Api Abadi
|
||||
Flint and Steel=Pemantik
|
|
@ -1,3 +1,4 @@
|
|||
# textdomain: fire
|
||||
Permanent Flame=永久火焰
|
||||
Permanent Fire=永久火焰
|
||||
Flint and Steel=火石和钢
|
||||
Fire=火焰
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# textdomain: fire
|
||||
Permanent Flame=永久火焰
|
||||
Permanent Fire=永久火焰
|
||||
Flint and Steel=火石和鋼
|
||||
Fire=火焰
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
# textdomain: fire
|
||||
Permanent Flame=
|
||||
Fire=
|
||||
Permanent Fire=
|
||||
Flint and Steel=
|
||||
|
|
Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 594 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 459 B After Width: | Height: | Size: 205 B |
|
@ -0,0 +1,5 @@
|
|||
# textdomain: fireflies
|
||||
Firefly=Kunang-Kunang
|
||||
Hidden Firefly=Kunang-Kunang Tersembunyi
|
||||
Bug Net=Jaring Serangga
|
||||
Firefly in a Bottle=Kunang-Kunang dalam Botol
|
|
@ -0,0 +1,12 @@
|
|||
# textdomain: flowers
|
||||
Red Rose=Mawar Merah
|
||||
Orange Tulip=Tulip Oranye
|
||||
Yellow Dandelion=Dandelion Kuning
|
||||
Green Chrysanthemum=Krisan Hijau
|
||||
Blue Geranium=Geranium Biru
|
||||
Viola=Viola
|
||||
White Dandelion=Dandelion Putih
|
||||
Black Tulip=Tulip Hitam
|
||||
Red Mushroom=Jamur Merah
|
||||
Brown Mushroom=Jamur Cokelat
|
||||
Waterlily=Teratai
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: game_commands
|
||||
Kill yourself to respawn=Bunuh diri untuk bangkit kembali
|
||||
No static_spawnpoint defined=Tiada static_spawnpoint (titik bangkit statis) yang diatur
|
||||
You need to be online to be killed!=Anda harus daring untuk dibunuh!
|
|
@ -11,7 +11,8 @@ this mod will place them accordingly.
|
|||
position should be displayed correctly on every screen size.
|
||||
|
||||
## Current version
|
||||
The current version is 2.1.0.
|
||||
The current version is 2.3.2.
|
||||
It works for Minetest 5.3.0.
|
||||
|
||||
This software uses [semantic versioning](http://semver.org), as defined by version 2.0.0 of the SemVer
|
||||
standard.
|
||||
|
@ -38,6 +39,8 @@ Translations:
|
|||
* Dutch: kingoscargames
|
||||
* Italian: Hamlet
|
||||
* Malay: muhdnurhidayat
|
||||
* Russian: Imk
|
||||
* Spanish: wuniversales
|
||||
|
||||
This program is free software. It comes without any warranty, to
|
||||
the extent permitted by applicable law. You can redistribute it
|
||||
|
|
|
@ -200,6 +200,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
|
|||
text = "hudbars_bar_background.png",
|
||||
alignment = {x=1,y=1},
|
||||
offset = { x = offset.x - 1, y = offset.y - 1 },
|
||||
z_index = 0,
|
||||
})
|
||||
if textures.icon ~= nil then
|
||||
ids.icon = player:hud_add({
|
||||
|
@ -209,23 +210,11 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
|
|||
text = textures.icon,
|
||||
alignment = {x=-1,y=1},
|
||||
offset = { x = offset.x - 3, y = offset.y },
|
||||
})
|
||||
end
|
||||
elseif hb.settings.bar_type == "statbar_modern" then
|
||||
if textures.bgicon ~= nil then
|
||||
ids.bg = player:hud_add({
|
||||
hud_elem_type = "statbar",
|
||||
position = pos,
|
||||
text = textures.bgicon,
|
||||
number = bgiconnumber,
|
||||
alignment = {x=-1,y=-1},
|
||||
offset = { x = offset.x, y = offset.y },
|
||||
direction = 0,
|
||||
size = {x=24, y=24},
|
||||
z_index = 1,
|
||||
})
|
||||
end
|
||||
end
|
||||
local bar_image, bar_size
|
||||
local bar_image, bgicon, bar_size
|
||||
if hb.settings.bar_type == "progress_bar" then
|
||||
bar_image = textures.bar
|
||||
-- NOTE: Intentionally set to nil. For some reason, on some systems,
|
||||
|
@ -237,17 +226,25 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
|
|||
bar_size = nil
|
||||
elseif hb.settings.bar_type == "statbar_classic" or hb.settings.bar_type == "statbar_modern" then
|
||||
bar_image = textures.icon
|
||||
bgicon = textures.bgicon
|
||||
bar_size = {x=24, y=24}
|
||||
end
|
||||
local text2
|
||||
if hb.settings.bar_type == "statbar_modern" then
|
||||
text2 = bgicon
|
||||
end
|
||||
ids.bar = player:hud_add({
|
||||
hud_elem_type = "statbar",
|
||||
position = pos,
|
||||
text = bar_image,
|
||||
text2 = text2,
|
||||
number = barnumber,
|
||||
item = bgiconnumber,
|
||||
alignment = {x=-1,y=-1},
|
||||
offset = offset,
|
||||
direction = 0,
|
||||
size = bar_size,
|
||||
z_index = 1,
|
||||
})
|
||||
if hb.settings.bar_type == "progress_bar" then
|
||||
ids.text = player:hud_add({
|
||||
|
@ -258,6 +255,7 @@ function hb.register_hudbar(identifier, text_color, label, textures, default_sta
|
|||
number = text_color,
|
||||
direction = 0,
|
||||
offset = { x = offset.x + 2, y = offset.y - 1},
|
||||
z_index = 2,
|
||||
})
|
||||
end
|
||||
-- Do not forget to update hb.get_hudbar_state if you add new fields to the state table
|
||||
|
@ -316,6 +314,9 @@ function hb.change_hudbar(player, identifier, new_value, new_max_value, new_icon
|
|||
|
||||
local name = player:get_player_name()
|
||||
local hudtable = hb.get_hudtable(identifier)
|
||||
if not hudtable.hudstate[name] then
|
||||
return false
|
||||
end
|
||||
local value_changed, max_changed = false, false
|
||||
|
||||
if new_value ~= nil then
|
||||
|
@ -413,10 +414,9 @@ function hb.hide_hudbar(player, identifier)
|
|||
end
|
||||
player:hud_change(hudtable.hudids[name].bg, "scale", {x=0,y=0})
|
||||
player:hud_change(hudtable.hudids[name].text, "text", "")
|
||||
elseif hb.settings.bar_type == "statbar_modern" then
|
||||
player:hud_change(hudtable.hudids[name].bg, "number", 0)
|
||||
end
|
||||
player:hud_change(hudtable.hudids[name].bar, "number", 0)
|
||||
player:hud_change(hudtable.hudids[name].bar, "item", 0)
|
||||
hudtable.hudstate[name].hidden = true
|
||||
return true
|
||||
end
|
||||
|
@ -437,9 +437,10 @@ function hb.unhide_hudbar(player, identifier)
|
|||
end
|
||||
player:hud_change(hudtable.hudids[name].text, "text", make_label(hudtable.format_string, hudtable.format_string_config, hudtable.label, value, max))
|
||||
elseif hb.settings.bar_type == "statbar_modern" then
|
||||
player:hud_change(hudtable.hudids[name].bg, "number", hb.settings.statbar_length)
|
||||
player:hud_change(hudtable.hudids[name].bar, "scale", {x=1,y=1})
|
||||
end
|
||||
player:hud_change(hudtable.hudids[name].bar, "number", hb.value_to_barlength(value, max))
|
||||
player:hud_change(hudtable.hudids[name].bar, "item", hb.value_to_barlength(max, max))
|
||||
hudtable.hudstate[name].hidden = false
|
||||
return true
|
||||
end
|
||||
|
@ -495,7 +496,7 @@ local function custom_hud(player)
|
|||
local breath_max = player:get_properties().breath_max
|
||||
local hide_breath
|
||||
if breath >= breath_max and hb.settings.autohide_breath == true then hide_breath = true else hide_breath = false end
|
||||
hb.init_hudbar(player, "breath", math.min(breath, breath_max-1), breath_max-1, hide_breath or hide)
|
||||
hb.init_hudbar(player, "breath", math.min(breath, breath_max), breath_max, hide_breath or hide)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -519,7 +520,7 @@ local function update_hud(player)
|
|||
hb.hide_hudbar(player, "breath")
|
||||
else
|
||||
hb.unhide_hudbar(player, "breath")
|
||||
hb.change_hudbar(player, "breath", math.min(breath, breath_max-1), breath_max-1)
|
||||
hb.change_hudbar(player, "breath", math.min(breath, breath_max), breath_max)
|
||||
end
|
||||
--health
|
||||
update_health(player)
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: hudbars
|
||||
Health=Salud
|
||||
Breath=Aliento
|
||||
@1: @2/@3=@1: @2/@3
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: hudbars
|
||||
Health=HP
|
||||
Breath=дыхание
|
||||
@1: @2/@3=@1: @2/@3
|
|
@ -0,0 +1,3 @@
|
|||
# textdomain: map
|
||||
Mapping Kit=Alat Pemetaan
|
||||
Use with 'Minimap' key=Pakai dengan tombol 'Peta Mini'
|
|
@ -106,21 +106,15 @@ function minetest.calculate_knockback(player, ...)
|
|||
end
|
||||
|
||||
-- Check each player and apply animations
|
||||
minetest.register_globalstep(function(dtime)
|
||||
minetest.register_globalstep(function()
|
||||
for _, player in pairs(minetest.get_connected_players()) do
|
||||
local name = player:get_player_name()
|
||||
local model_name = player_model[name]
|
||||
local model = model_name and models[model_name]
|
||||
if model and not player_attached[name] then
|
||||
local controls = player:get_player_control()
|
||||
local walking = false
|
||||
local animation_speed_mod = model.animation_speed or 30
|
||||
|
||||
-- Determine if the player is walking
|
||||
if controls.up or controls.down or controls.left or controls.right then
|
||||
walking = true
|
||||
end
|
||||
|
||||
-- Determine if the player is sneaking, and reduce animation speed if so
|
||||
if controls.sneak then
|
||||
animation_speed_mod = animation_speed_mod / 2
|
||||
|
@ -129,18 +123,19 @@ minetest.register_globalstep(function(dtime)
|
|||
-- Apply animations based on what the player is doing
|
||||
if player:get_hp() == 0 then
|
||||
player_set_animation(player, "lay")
|
||||
elseif walking then
|
||||
-- Determine if the player is walking
|
||||
elseif controls.up or controls.down or controls.left or controls.right then
|
||||
if player_sneak[name] ~= controls.sneak then
|
||||
player_anim[name] = nil
|
||||
player_sneak[name] = controls.sneak
|
||||
end
|
||||
if controls.LMB then
|
||||
if controls.LMB or controls.RMB then
|
||||
player_set_animation(player, "walk_mine", animation_speed_mod)
|
||||
else
|
||||
player_set_animation(player, "walk", animation_speed_mod)
|
||||
end
|
||||
elseif controls.LMB then
|
||||
player_set_animation(player, "mine")
|
||||
elseif controls.LMB or controls.RMB then
|
||||
player_set_animation(player, "mine", animation_speed_mod)
|
||||
else
|
||||
player_set_animation(player, "stand", animation_speed_mod)
|
||||
end
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
# textdomain: screwdriver
|
||||
Screwdriver=Obeng
|
||||
(left-click rotates face, right-click rotates axis)=(klik kiri putar sisi, klik kanan putar sumbu)
|
|
@ -32,6 +32,9 @@ sethome.set = function(name, pos)
|
|||
player:set_attribute("sethome:home", minetest.pos_to_string(pos))
|
||||
|
||||
-- remove `name` from the old storage file
|
||||
if not homepos[name] then
|
||||
return true
|
||||
end
|
||||
local data = {}
|
||||
local output = io.open(homes_file, "w")
|
||||
if output then
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: sethome
|
||||
Can use /sethome and /home=Boleh pakai /sethome dan /home
|
||||
Teleport you to your home point=Teleportasi ke rumah Anda
|
||||
Teleported to home!=Teleportasi ke rumah!
|
||||
Set a home using /sethome=Atur letak rumah dengan /sethome
|
||||
Set your home point=Atur letak rumah
|
||||
Home set!=Letak rumah diatur!
|
||||
Player not found!=Pemain tidak ditemukan!
|
|
@ -0,0 +1,2 @@
|
|||
# textdomain: sfinv
|
||||
Crafting=Kerajinan
|
|
@ -1,2 +1,2 @@
|
|||
# textdomain:sfinv
|
||||
# textdomain: sfinv
|
||||
Crafting=
|
||||
|
|
|
@ -874,7 +874,7 @@ my_register_stair_and_slab(
|
|||
stairs.register_stair(
|
||||
"glass",
|
||||
"default:glass",
|
||||
{cracky = 3},
|
||||
{cracky = 3, oddly_breakable_by_hand = 3},
|
||||
{"stairs_glass_split.png", "default_glass.png",
|
||||
"stairs_glass_stairside.png^[transformFX", "stairs_glass_stairside.png",
|
||||
"default_glass.png", "stairs_glass_split.png"},
|
||||
|
@ -886,7 +886,7 @@ stairs.register_stair(
|
|||
stairs.register_slab(
|
||||
"glass",
|
||||
"default:glass",
|
||||
{cracky = 3},
|
||||
{cracky = 3, oddly_breakable_by_hand = 3},
|
||||
{"default_glass.png", "default_glass.png", "stairs_glass_split.png"},
|
||||
S("Glass Slab"),
|
||||
default.node_sound_glass_defaults(),
|
||||
|
@ -896,7 +896,7 @@ stairs.register_slab(
|
|||
stairs.register_stair_inner(
|
||||
"glass",
|
||||
"default:glass",
|
||||
{cracky = 3},
|
||||
{cracky = 3, oddly_breakable_by_hand = 3},
|
||||
{"stairs_glass_stairside.png^[transformR270", "default_glass.png",
|
||||
"stairs_glass_stairside.png^[transformFX", "default_glass.png",
|
||||
"default_glass.png", "stairs_glass_stairside.png"},
|
||||
|
@ -909,7 +909,7 @@ stairs.register_stair_inner(
|
|||
stairs.register_stair_outer(
|
||||
"glass",
|
||||
"default:glass",
|
||||
{cracky = 3},
|
||||
{cracky = 3, oddly_breakable_by_hand = 3},
|
||||
{"stairs_glass_stairside.png^[transformR90", "default_glass.png",
|
||||
"stairs_glass_outer_stairside.png", "stairs_glass_stairside.png",
|
||||
"stairs_glass_stairside.png^[transformR90","stairs_glass_outer_stairside.png"},
|
||||
|
|
|
@ -0,0 +1,145 @@
|
|||
# textdomain: stairs
|
||||
Glass Stair=Tangga Kaca
|
||||
Glass Slab=Lempengan Kaca
|
||||
Inner Glass Stair=Tangga Kaca Dalam
|
||||
Outer Glass Stair=Tangga Kaca Luar
|
||||
Obsidian Glass Stair=Tangga Kaca Obsidian
|
||||
Obsidian Glass Slab=Lempengan Kaca Obsidian
|
||||
Inner Obsidian Glass Stair=Tangga Kaca Obsidian Dalam
|
||||
Outer Obsidian Glass Stair=Tangga Kaca Obsidian Luar
|
||||
Wooden Stair=Tangga Kayu
|
||||
Inner Wooden Stair=Tangga Kayu Dalam
|
||||
Outer Wooden Stair=Tangga Kayu Luar
|
||||
Wooden Slab=Lempengan Kayu
|
||||
Jungle Wood Stair=Tangga Kayu Rimba
|
||||
Inner Jungle Wood Stair=Tangga Kayu Rimba Dalam
|
||||
Outer Jungle Wood Stair=Tangga Kayu Rimba Luar
|
||||
Jungle Wood Slab=Lempengan Kayu Rimba
|
||||
Pine Wood Stair=Tangga Kayu Pinus
|
||||
Inner Pine Wood Stair=Tangga Kayu Pinus Dalam
|
||||
Outer Pine Wood Stair=Tangga Kayu Pinus Luar
|
||||
Pine Wood Slab=Lempengan Kayu Pinus
|
||||
Acacia Wood Stair=Tangga Kayu Akasia
|
||||
Inner Acacia Wood Stair=Tangga Kayu Akasia Dalam
|
||||
Outer Acacia Wood Stair=Tangga Kayu Akasia Luar
|
||||
Acacia Wood Slab=Lempengan Kayu Akasia
|
||||
Aspen Wood Stair=Tangga Kayu Aspen
|
||||
Inner Aspen Wood Stair=Tangga Kayu Aspen Dalam
|
||||
Outer Aspen Wood Stair=Tangga Kayu Aspen Luar
|
||||
Aspen Wood Slab=Lempengan Kayu Aspen
|
||||
Stone Stair=Tangga Batu
|
||||
Inner Stone Stair=Tangga Batu Dalam
|
||||
Outer Stone Stair=Tangga Batu Luar
|
||||
Stone Slab=Lempengan Batu
|
||||
Cobblestone Stair=Tangga Bongkahan Batu
|
||||
Inner Cobblestone Stair=Tangga Bongkahan Batu Dalam
|
||||
Outer Cobblestone Stair=Tangga Bongkahan Batu Luar
|
||||
Cobblestone Slab=Lempengan Bongkahan Batu
|
||||
Mossy Cobblestone Stair=Tangga Bongkahan Batu Berlumut
|
||||
Inner Mossy Cobblestone Stair=Tangga Bongkahan Batu Berlumut Dalam
|
||||
Outer Mossy Cobblestone Stair=Tangga Bongkahan Batu Berlumut Luar
|
||||
Mossy Cobblestone Slab=Lempengan Bongkahan Batu Berlumut
|
||||
Stone Brick Stair=Tangga Tembok Batu
|
||||
Inner Stone Brick Stair=Tangga Tembok Batu Dalam
|
||||
Outer Stone Brick Stair=Tangga Tembok Batu Luar
|
||||
Stone Brick Slab=Lempengan Tembok Batu
|
||||
Stone Block Stair=Tangga Balok Batu
|
||||
Inner Stone Block Stair=Tangga Balok Batu Dalam
|
||||
Outer Stone Block Stair=Tangga Balok Batu Luar
|
||||
Stone Block Slab=Lempengan Balok Batu
|
||||
Desert Stone Stair=Tangga Batu Gurun
|
||||
Inner Desert Stone Stair=Tangga Batu Gurun Dalam
|
||||
Outer Desert Stone Stair=Tangga Batu Gurun Luar
|
||||
Desert Stone Slab=Lempengan Batu Gurun
|
||||
Desert Cobblestone Stair=Tangga Bongkahan Batu Gurun
|
||||
Inner Desert Cobblestone Stair=Tangga Bongkahan Batu Gurun Dalam
|
||||
Outer Desert Cobblestone Stair=Tangga Bongkahan Batu Gurun Luar
|
||||
Desert Cobblestone Slab=Lempengan Bongkahan Batu Gurun
|
||||
Desert Stone Brick Stair=Tangga Tembok Batu Gurun
|
||||
Inner Desert Stone Brick Stair=Tangga Tembok Batu Gurun Dalam
|
||||
Outer Desert Stone Brick Stair=Tangga Tembok Batu Gurun Luar
|
||||
Desert Stone Brick Slab=Lempengan Tembok Batu Gurun
|
||||
Desert Stone Block Stair=Tangga Balok Batu Gurun
|
||||
Inner Desert Stone Block Stair=Tangga Balok Batu Gurun Dalam
|
||||
Outer Desert Stone Block Stair=Tangga Balok Batu Gurun Luar
|
||||
Desert Stone Block Slab=Lempengan Balok Batu Gurun
|
||||
Sandstone Stair=Tangga Batu Pasir
|
||||
Inner Sandstone Stair=Tangga Batu Pasir Dalam
|
||||
Outer Sandstone Stair=Tangga Batu Pasir Luar
|
||||
Sandstone Slab=Lempengan Batu Pasir
|
||||
Sandstone Brick Stair=Tangga Tembok Batu Pasir
|
||||
Inner Sandstone Brick Stair=Tangga Tembok Batu Pasir Dalam
|
||||
Outer Sandstone Brick Stair=Tangga Tembok Batu Pasir Luar
|
||||
Sandstone Brick Slab=Lempengan Tembok Batu Pasir
|
||||
Sandstone Block Stair=Tangga Balok Batu Pasir
|
||||
Inner Sandstone Block Stair=Tangga Balok Batu Pasir Dalam
|
||||
Outer Sandstone Block Stair=Tangga Balok Batu Pasir Luar
|
||||
Sandstone Block Slab=Lempengan Balok Batu Pasir
|
||||
Desert Sandstone Stair=Tangga Batu Pasir Gurun
|
||||
Inner Desert Sandstone Stair=Tangga Batu Pasir Gurun Dalam
|
||||
Outer Desert Sandstone Stair=Tangga Batu Pasir Gurun Luar
|
||||
Desert Sandstone Slab=Lempengan Batu Pasir Gurun
|
||||
Desert Sandstone Brick Stair=Tangga Tembok Batu Pasir Gurun
|
||||
Inner Desert Sandstone Brick Stair=Tangga Tembok Batu Pasir Gurun Dalam
|
||||
Outer Desert Sandstone Brick Stair=Tangga Tembok Batu Pasir Gurun Luar
|
||||
Desert Sandstone Brick Slab=Lempengan Tembok Batu Pasir Gurun
|
||||
Desert Sandstone Block Stair=Tangga Balok Batu Pasir Gurun
|
||||
Inner Desert Sandstone Block Stair=Tangga Balok Batu Pasir Gurun Dalam
|
||||
Outer Desert Sandstone Block Stair=Tangga Balok Batu Pasir Gurun Luar
|
||||
Desert Sandstone Block Slab=Lempengan Balok Batu Pasir Gurun
|
||||
Silver Sandstone Stair=Tangga Batu Pasir Perak
|
||||
Inner Silver Sandstone Stair=Tangga Batu Pasir Perak Dalam
|
||||
Outer Silver Sandstone Stair=Tangga Batu Pasir Perak Luar
|
||||
Silver Sandstone Slab=Lempengan Batu Pasir Perak
|
||||
Silver Sandstone Brick Stair=Tangga Tembok Batu Pasir Perak
|
||||
Inner Silver Sandstone Brick Stair=Tangga Tembok Batu Pasir Perak Dalam
|
||||
Outer Silver Sandstone Brick Stair=Tangga Tembok Batu Pasir Perak Luar
|
||||
Silver Sandstone Brick Slab=Lempengan Tembok Batu Pasir Perak
|
||||
Silver Sandstone Block Stair=Tangga Balok Batu Pasir Perak
|
||||
Inner Silver Sandstone Block Stair=Tangga Balok Batu Pasir Perak Dalam
|
||||
Outer Silver Sandstone Block Stair=Tangga Balok Batu Pasir Perak Luar
|
||||
Silver Sandstone Block Slab=Lempengan Balok Batu Pasir Perak
|
||||
Obsidian Stair=Tangga Obsidian
|
||||
Inner Obsidian Stair=Tangga Obsidian Dalam
|
||||
Outer Obsidian Stair=Tangga Obsidian Luar
|
||||
Obsidian Slab=Lempengan Obsidian
|
||||
Obsidian Brick Stair=Tangga Tembok Obsidian
|
||||
Inner Obsidian Brick Stair=Tangga Tembok Obsidian Dalam
|
||||
Outer Obsidian Brick Stair=Tangga Tembok Obsidian Luar
|
||||
Obsidian Brick Slab=Lempengan Tembok Obsidian
|
||||
Obsidian Block Stair=Tangga Balok Obsidian
|
||||
Inner Obsidian Block Stair=Tangga Balok Obsidian Dalam
|
||||
Outer Obsidian Block Stair=Tangga Balok Obsidian Luar
|
||||
Obsidian Block Slab=Lempengan Balok Obsidian
|
||||
Brick Stair=Tangga Bata
|
||||
Inner Brick Stair=Tangga Bata Dalam
|
||||
Outer Brick Stair=Tangga Bata Luar
|
||||
Brick Slab=Lempengan Bata
|
||||
Steel Block Stair=Tangga Balok Baja
|
||||
Inner Steel Block Stair=Tangga Balok Baja Dalam
|
||||
Outer Steel Block Stair=Tangga Balok Baja Luar
|
||||
Steel Block Slab=Lempengan Balok Baja
|
||||
Tin Block Stair=Tangga Balok Timah
|
||||
Inner Tin Block Stair=Tangga Balok Timah Dalam
|
||||
Outer Tin Block Stair=Tangga Balok Timah Luar
|
||||
Tin Block Slab=Lempengan Balok Timah
|
||||
Copper Block Stair=Tangga Balok Tembaga
|
||||
Inner Copper Block Stair=Tangga Balok Tembaga Dalam
|
||||
Outer Copper Block Stair=Tangga Balok Tembaga Luar
|
||||
Copper Block Slab=Lempengan Balok Tembaga
|
||||
Bronze Block Stair=Tangga Balok Perunggu
|
||||
Inner Bronze Block Stair=Tangga Balok Perunggu Dalam
|
||||
Outer Bronze Block Stair=Tangga Balok Perunggu Luar
|
||||
Bronze Block Slab=Lempengan Balok Perunggu
|
||||
Gold Block Stair=Tangga Balok Emas
|
||||
Inner Gold Block Stair=Tangga Balok Emas Dalam
|
||||
Outer Gold Block Stair=Tangga Balok Emas Luar
|
||||
Gold Block Slab=Lempengan Balok Emas
|
||||
Ice Stair=Tangga Es
|
||||
Inner Ice Stair=Tangga Es Dalam
|
||||
Outer Ice Stair=Tangga Es Luar
|
||||
Ice Slab=Lempengan Es
|
||||
Snow Block Stair=Tangga Balok Salju
|
||||
Inner Snow Block Stair=Tangga Balok Salju Dalam
|
||||
Outer Snow Block Stair=Tangga Balok Salju Luar
|
||||
Snow Block Slab=Lempengan Balok Salju
|
|
@ -22,7 +22,7 @@ local tnt_radius = tonumber(minetest.settings:get("tnt_radius") or 3)
|
|||
|
||||
-- Fill a list with data for content IDs, after all nodes are registered
|
||||
local cid_data = {}
|
||||
minetest.after(0, function()
|
||||
minetest.register_on_mods_loaded(function()
|
||||
for name, def in pairs(minetest.registered_nodes) do
|
||||
cid_data[minetest.get_content_id(name)] = {
|
||||
name = name,
|
||||
|
@ -163,13 +163,9 @@ local function entity_physics(pos, radius, drops)
|
|||
|
||||
local damage = (4 / dist) * radius
|
||||
if obj:is_player() then
|
||||
-- we knock the player back 1.0 node, and slightly upwards
|
||||
-- TODO: switch to add_player_velocity() introduced in 5.1
|
||||
local dir = vector.normalize(vector.subtract(obj_pos, pos))
|
||||
local moveoff = vector.multiply(dir, dist + 1.0)
|
||||
local newpos = vector.add(pos, moveoff)
|
||||
newpos = vector.add(newpos, {x = 0, y = 0.2, z = 0})
|
||||
obj:set_pos(newpos)
|
||||
local moveoff = vector.multiply(dir, 2 / dist * radius)
|
||||
obj:add_player_velocity(moveoff)
|
||||
|
||||
obj:set_hp(obj:get_hp() - damage)
|
||||
else
|
||||
|
@ -238,12 +234,16 @@ local function add_effects(pos, radius, drops)
|
|||
-- we just dropped some items. Look at the items entities and pick
|
||||
-- one of them to use as texture
|
||||
local texture = "tnt_blast.png" --fallback texture
|
||||
local node
|
||||
local most = 0
|
||||
for name, stack in pairs(drops) do
|
||||
local count = stack:get_count()
|
||||
if count > most then
|
||||
most = count
|
||||
local def = minetest.registered_nodes[name]
|
||||
if def then
|
||||
node = { name = name }
|
||||
end
|
||||
if def and def.tiles and def.tiles[1] then
|
||||
texture = def.tiles[1]
|
||||
end
|
||||
|
@ -261,9 +261,11 @@ local function add_effects(pos, radius, drops)
|
|||
maxacc = {x = 0, y = -10, z = 0},
|
||||
minexptime = 0.8,
|
||||
maxexptime = 2.0,
|
||||
minsize = radius * 0.66,
|
||||
maxsize = radius * 2,
|
||||
minsize = radius * 0.33,
|
||||
maxsize = radius,
|
||||
texture = texture,
|
||||
-- ^ only as fallback for clients without support for `node` parameter
|
||||
node = node,
|
||||
collisiondetection = true,
|
||||
})
|
||||
end
|
||||
|
@ -292,10 +294,15 @@ local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast, owne
|
|||
local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp})
|
||||
local data = vm1:get_data()
|
||||
local count = 0
|
||||
local c_tnt = minetest.get_content_id("tnt:tnt")
|
||||
local c_tnt
|
||||
local c_tnt_burning = minetest.get_content_id("tnt:tnt_burning")
|
||||
local c_tnt_boom = minetest.get_content_id("tnt:boom")
|
||||
local c_air = minetest.get_content_id("air")
|
||||
if enable_tnt then
|
||||
c_tnt = minetest.get_content_id("tnt:tnt")
|
||||
else
|
||||
c_tnt = c_tnt_burning -- tnt is not registered if disabled
|
||||
end
|
||||
-- make sure we still have explosion even when centre node isnt tnt related
|
||||
if explode_center then
|
||||
count = 1
|
||||
|
@ -401,7 +408,7 @@ function tnt.boom(pos, def)
|
|||
def.damage_radius = def.damage_radius or def.radius * 2
|
||||
local meta = minetest.get_meta(pos)
|
||||
local owner = meta:get_string("owner")
|
||||
if not def.explode_center then
|
||||
if not def.explode_center and def.ignore_protection ~= true then
|
||||
minetest.set_node(pos, {name = "tnt:boom"})
|
||||
end
|
||||
local sound = def.sound or "tnt_explode"
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: tnt
|
||||
Gun Powder=Bubuk Mesiu
|
||||
TNT Stick=Tongkat TNT
|
||||
TNT=TNT
|
|
@ -6,7 +6,7 @@ minetest.register_on_joinplayer(function(player)
|
|||
offset = {x=0, y=10},
|
||||
alignment = {x=1, y=0},
|
||||
number = 0xFFFFFF ,
|
||||
text = "For Minetest : 5.2.0",
|
||||
text = "For Minetest : 5.3.0",
|
||||
})
|
||||
player:hud_add({
|
||||
hud_elem_type = "text",
|
||||
|
@ -14,7 +14,7 @@ minetest.register_on_joinplayer(function(player)
|
|||
offset = {x=0, y=30},
|
||||
alignment = {x=1, y=0},
|
||||
number = 0xFFFFFF ,
|
||||
text = "Game Version : 3.5.2",
|
||||
text = "Game Version : 3.5.3",
|
||||
})
|
||||
end)
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# textdomain: vessels
|
||||
Empty Vessels Shelf=
|
||||
Vessels Shelf (@1 items)=
|
||||
Vessels Shelf=
|
||||
Empty Glass Bottle=
|
||||
Empty Drinking Glass=
|
||||
Empty Heavy Steel Bottle=
|
||||
Glass Fragments=
|
||||
Empty Vessels Shelf=
|
||||
Vessels Shelf (@1 items)=
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
# textdomain: vessels
|
||||
Empty Vessels Shelf=Rak Bejana Kosong
|
||||
Vessels Shelf (@1 items)=Rak Bejana (@1 barang)
|
||||
Vessels Shelf=Rak Bejana
|
||||
Empty Glass Bottle=Botol Kaca Kosong
|
||||
Empty Drinking Glass=Gelas Minum Kosong
|
||||
Empty Heavy Steel Bottle=Botol Baja Berat Kosong
|
||||
Glass Fragments=Pecahan Kaca
|
|
@ -0,0 +1,4 @@
|
|||
# textdomain: walls
|
||||
Cobblestone Wall=Tembok Bongkahan Batu
|
||||
Mossy Cobblestone Wall=Tembok Bongkahan Batu Berlumut
|
||||
Desert Cobblestone Wall=Tembok Bongkahan Batu Gurun
|
|
@ -82,18 +82,26 @@ local function update_clouds()
|
|||
nobj_speedx = nobj_speedx or minetest.get_perlin(np_speedx)
|
||||
nobj_speedz = nobj_speedz or minetest.get_perlin(np_speedz)
|
||||
|
||||
local n_density = nobj_density:get_2d({x = time, y = 0})
|
||||
local n_thickness = nobj_thickness:get_2d({x = time, y = 0})
|
||||
local n_speedx = nobj_speedx:get_2d({x = time, y = 0})
|
||||
local n_speedz = nobj_speedz:get_2d({x = time, y = 0})
|
||||
local n_density = nobj_density:get_2d({x = time, y = 0}) -- 0 to 1
|
||||
local n_thickness = nobj_thickness:get_2d({x = time, y = 0}) -- 0 to 1
|
||||
local n_speedx = nobj_speedx:get_2d({x = time, y = 0}) -- -1 to 1
|
||||
local n_speedz = nobj_speedz:get_2d({x = time, y = 0}) -- -1 to 1
|
||||
|
||||
for _, player in ipairs(minetest.get_connected_players()) do
|
||||
local humid = minetest.get_humidity(player:get_pos())
|
||||
-- Default and classic density value is 0.4, make this happen
|
||||
-- at humidity midvalue 50 when n_density is at midvalue 0.5.
|
||||
-- density_max = 0.25 at humid = 0.
|
||||
-- density_max = 0.8 at humid = 50.
|
||||
-- density_max = 1.35 at humid = 100.
|
||||
local density_max = 0.8 + ((humid - 50) / 50) * 0.55
|
||||
player:set_clouds({
|
||||
density = rangelim(humid / 100, 0.25, 1.0) * n_density,
|
||||
-- Range limit density_max to always have occasional
|
||||
-- small scattered clouds at extreme low humidity.
|
||||
density = rangelim(density_max, 0.2, 1.0) * n_density,
|
||||
thickness = math.max(math.floor(
|
||||
rangelim(32 * humid / 100, 8, 32) * n_thickness
|
||||
), 1),
|
||||
), 2),
|
||||
speed = {x = n_speedx * 4, z = n_speedz * 4},
|
||||
})
|
||||
end
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
# textdomain: wool
|
||||
White Wool=Wol Putih
|
||||
Grey Wool=Wol Abu
|
||||
Dark Grey Wool=Wol Abu Tua
|
||||
Black Wool=Wol Hitam
|
||||
Violet Wool=Wol Ungu
|
||||
Blue Wool=Wol Biru
|
||||
Cyan Wool=Wol Sian
|
||||
Dark Green Wool=Wol Hijau Tua
|
||||
Green Wool=Wol Hijau
|
||||
Yellow Wool=Wol Kuning
|
||||
Brown Wool=Wol Cokelat
|
||||
Orange Wool=Wol Oranye
|
||||
Red Wool=Wol Merah
|
||||
Magenta Wool=Wol Magenta
|
||||
Pink Wool=Wol Jambon
|
|
@ -223,7 +223,7 @@ if minetest.get_modpath("doors") then
|
|||
description = S("Steel Bar Door"),
|
||||
inventory_image = "xpanes_item_steel_bar.png",
|
||||
protected = true,
|
||||
groups = {cracky = 1, level = 2},
|
||||
groups = {node = 1, cracky = 1, level = 2},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
sound_open = "xpanes_steel_bar_door_open",
|
||||
sound_close = "xpanes_steel_bar_door_close",
|
||||
|
@ -241,7 +241,7 @@ if minetest.get_modpath("doors") then
|
|||
tile_front = "xpanes_trapdoor_steel_bar.png",
|
||||
tile_side = "xpanes_trapdoor_steel_bar_side.png",
|
||||
protected = true,
|
||||
groups = {cracky = 1, level = 2, door = 1},
|
||||
groups = {node = 1, cracky = 1, level = 2, door = 1},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
sound_open = "xpanes_steel_bar_door_open",
|
||||
sound_close = "xpanes_steel_bar_door_close",
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
# textdomain: xpanes
|
||||
Glass Pane=Panel Kaca
|
||||
Obsidian Glass Pane=Panel Kaca Obsidian
|
||||
Steel Bars=Batang Baja
|
||||
Steel Bar Door=Pintu Batang Baja
|
||||
Steel Bar Trapdoor=Pintu Kolong Batang Baja
|