1
0
mirror of https://github.com/minetest/minetest_game.git synced 2025-06-29 21:30:26 +02:00

Compare commits

..

59 Commits

Author SHA1 Message Date
2fc9a68aa6 Merge remote-tracking branch 'upstream/stable-5' into nalc-dev 2020-05-09 01:07:25 +02:00
dcb3df0a38 Merge remote-tracking branch 'origin/stable-5' into HEAD 2020-04-05 18:48:33 +02:00
19d903e8b3 Met à jour les sons des pas dans la neige 2019-12-23 19:32:05 +01:00
721c598fbd Merge branch 'stable-5' of yunohost.local:minetest/minetest_game into nalc-dev 2019-12-23 19:08:11 +01:00
0a9e24622f Merge branch 'master' of https://github.com/minetest/minetest_game into stable-5 2019-10-12 15:53:20 +02:00
a0c658f4d1 Merge branch 'stable-5' into nalc-dev 2019-04-07 17:57:18 +02:00
9585eef042 Merge branch 'stable-5' of https://github.com/minetest/minetest_game into stable-5 2019-04-07 17:38:55 +02:00
8678265125 Dungeon loot: Avoid empty 'if' branch to satisfy lua check 2019-03-31 22:26:33 +02:00
df387e2394 Dungeon loot: Don't crash on unknown items
fixes #2228
2019-03-31 22:26:32 +02:00
2db0287652 Merge remote-tracking branch 'github/stable-5' into nalc-1.1-dev 2019-03-24 15:53:23 +01:00
806b29c2a1 Add food groups to blueberries (#2335) 2019-03-22 19:20:36 +00:00
3aa1117f4a Changements des bruitages du mod default par ceux de MFF. 2018-09-21 22:17:19 +02:00
630f24e747 Remplacement du nom du jeux. 2018-09-21 20:27:20 +02:00
d6a66860af Prevent divide by zero (#2106)
This forces all explosions to damage entities within the 1 node
range. If that needs to be disabled, the damage_radius needs to
be set to 0.
2018-05-18 12:50:47 +02:00
6d850f23a5 Flower spread ABM: Optimise
Match maximum spread density to maximum mapgen density for flowers.
Place 3 flora nodes at once instead of 1.
Change ABM chance value to 300 to match previous spread rate.
ABM becomes 3 times less intensive.
2018-05-18 12:50:47 +02:00
2c1af0861f Doors: Avoid crash on nil player in 'can dig door' 2018-05-18 12:50:47 +02:00
d2ae721235 Stairs: unbind table groups (#2036)
Unbind table groups for base block, stairs, slabs.
2018-05-18 12:50:18 +02:00
01db55cee5 default:dirt_with_snow: Re-add to soil group
Previously, saplings were not growing if the dirt they are on turned to
'dirt with snow' before growth.
Also for consistency with other dirt nodes.
2018-05-06 20:44:30 +02:00
4ba2b5179e Furnace: Fix being able to cook items without enough fuel
This was triggered when too much time had elapsed when timer was called.
Also, fix timer resolution giving free fuel time.
2018-05-06 20:44:30 +02:00
a5092c0df6 creative: Add missing tooltips. 2018-05-06 20:44:30 +02:00
575c098bae Book textures: Reset colour profiles to remove warnings 2018-05-06 20:44:22 +02:00
cddd59b578 Book textures: Replace with more original textures 2018-05-06 20:40:45 +02:00
7a4b1e0ce1 Default: Make burntimes more rational and consistent 2017-12-05 21:24:02 +01:00
0216fa08ec Add nil checks for placer 2017-11-19 23:03:38 +01:00
ca3e807d35 Creative: Make the placenode registration check for non-player placers 2017-11-19 23:03:38 +01:00
ca38bb2390 Creative: Make handle_node_drops override work for non-player diggers 2017-11-19 23:03:38 +01:00
7d07c52d09 Books: Convert \r to \n
Some files or editors may use \r instand of \n like notepad++. If you copy
text written in notepad++ and pasted into the book. The book will only have
one page.
2017-11-19 23:03:38 +01:00
532013a032 Creative: Cache inventory items on load 2017-11-19 23:03:38 +01:00
a52622669f TNT: Add tnt.boom defaults
This adds def, def.radius and def.damage_radius defaults to the
tnt.boom() function if they aren't specified on call.
2017-11-19 23:03:38 +01:00
ce5e668681 Bones: Return bones when taking the last ItemStack 2017-11-19 23:03:38 +01:00
6530fa914b Flowers: Add waterlily right-click checks
Check for on_rightclick functions of nodes when holding a waterlily.
2017-11-19 23:03:38 +01:00
86eb0e1617 Sfinv: Remove possibility of infinite loop when homepage doesn't exist 2017-11-19 23:03:38 +01:00
93fb9b36ce Sfinv: Rename navigation tabs to reduce chance of a conflict 2017-11-19 23:03:38 +01:00
09e3505ea1 Chests: Fix locked chest protection against explosions (#1886)
Fixes #1885
2017-11-19 23:03:38 +01:00
cecbfc1676 Chests: Fix open chest after player leave (#1884)
This should fix the chest staying open when a player disconnects while inside.
2017-11-19 23:03:38 +01:00
fba6f6a4cf TNT: Add explode_center flag
Add 'explode_centre' flag which when false explodes as normal and when true runs on_blast on centre node as well as dropping items.
2017-11-19 23:03:38 +01:00
6053456af1 Mushroom spread: Optimise and make overridable
Move mushroom spread ABM action into a global and overridable function.
Optimise spread code.
Reduce spread range to reduce spread through walls.
2017-11-19 23:03:38 +01:00
cc2f75b2f9 Register fence: Allow setting nodedefs to 'false' 2017-11-19 23:03:38 +01:00
b6ef71c92e TNT's tnt:boom cleanup (#1868)
The tnt:boom node doesn't actually need the on_construct and on_timer functions to remove the node after 0.4 seconds as the tnt_explode function already does this beforehand.
2017-11-19 23:03:38 +01:00
876da2fbc6 Beds: Do not crash when placing in an unknown node 2017-11-19 23:03:38 +01:00
ea45ca57a5 Lava cooling: Increase interval to 2
An excessive load has been reported caused by the node searching, so even
when no lava is present.
2017-11-19 23:03:34 +01:00
6fa3ebfa75 Carts: Check for last pathfinder predition too Minor fix to reduce cart jitter slightly 2017-11-19 22:57:28 +01:00
efe6fb6dfb TNT: Only burn visually connected powder (#1857) 2017-11-19 22:57:28 +01:00
1aeb2baa91 Creative: Prevent unauthorized item access (#1840) 2017-11-19 22:57:28 +01:00
e4d6425846 Correct farming/stairs dependency (#1838) 2017-11-19 22:57:28 +01:00
81f885795d Crafting: Remove duplicate reversed recipes (#1777)
For axes and hoes only use one recipe that matches the appearance of the texture and in inventory.
2017-11-19 22:53:53 +01:00
f3e29bc2cc Saplings: Reduce grow time to ABM equivalent
Previous times were chosen using statistical maths, but reports suggested
this was too long.
I tested by timing an ABM acting on 100 nodes, with interval and chance equal
to the old sapling ABM.
50 at 4m59s.
99 at 24m58s.
100 at 26m58s.
So choose a grow time between 5 and 25 min for tree and bush saplings.
If 'can grow' is false at grow time the timer is reset to 5 min.
2017-11-19 22:53:53 +01:00
3a72f7b84b Add backface_culling to open chests and fencegates 2017-11-19 22:53:53 +01:00
Foz
20bd4560f8 TNT: Track TNT owner in metadata for protection mods
It is useful for protection mods to know who owns an exploding
TNT block. This allows the blocks destroyed by the TNT to be
limited to the same ones the owner could destroy without using
TNT.

TNT placed within a protected area by the area owner, and later
ignited by another player will destroy within the protected area
nodes the igniter may not otherwise be able to interact with. Any
player could significantly increase the size of an explosion by
placing more TNT in an adjacent unprotected area if the original
TNT block was placed withing 1 node of such a boundary. This
feature sounds dangerous, but we are talking about TNT. Players
should use it carefully.
2017-11-19 22:53:53 +01:00
8991b9fe54 Carts: Do not connect rails with gunpowder (#1812) 2017-11-19 22:53:53 +01:00
aea6c5dd1d Stairs: Add backface culling to stair meshes
If backface culling is not specified for a tile in 'images' it is set to true.
Slabs already have backface culling due to being defined as nodeboxes (which
are then converted to meshnodes).
2017-11-19 22:53:53 +01:00
da41caca66 Chests: Check 'def' of node above chest to avoid crash
In 'chest_lid_obstructed(pos)' check for nil 'def' to avoid a crash caused by
an unknown node above the chest.
2017-11-19 22:53:14 +01:00
103af98864 Books: Also limit the max size of the title
This limits the max size of the full title of the book to `80` letters and
the size of the part thats displayed in the tooltip to `35` letters.
2017-11-19 22:53:14 +01:00
26606b0520 Books: Limit the size of books
Really large books just waste hard drive space and the engine is not designed to
handle that much data in item metadata, this can cause strange things to happen.
2017-11-19 22:52:00 +01:00
706844e8bf Books: Add nil value checks to the book formspec handler 2017-11-19 22:52:00 +01:00
a56274c230 Stairs: Use one recipe matching inventory appearence
No longer have 2 recipes for stairs, choose the one that matches the appearence
in inventory (stair rising toward the right).
Helps to reduce recipe count now that an increasing number of stairs are
being registered.
2017-11-19 22:52:00 +01:00
3512226867 Default: Revert "Default: Shorter and better ABMs"
This reverts commit e523c3a296 to re-enable
the overriding and redefinition of these global functions.
2017-11-19 17:16:32 +01:00
d5b9fee6fe Merge 0.4.16 into stable-0.4 2017-06-03 17:22:59 -04:00
437860feff Merge tag '0.4.15' into stable-0.4
0.4.15
2016-12-22 23:00:57 +01:00
144 changed files with 371 additions and 1186 deletions

View File

@ -1,3 +1,3 @@
name = Minetest Game name = Notre Ami Le Cube 1.2
author = Minetest author = Minetest and Sys4
description = Bundled by default with Minetest, and aims to be lightweight, moddable, and fairly playable without mods. description = Minetest game slightly modified by Sys4

View File

@ -93,21 +93,16 @@ For example,
is used to show all tools. Name is used in the sfinv page name, title is the is used to show all tools. Name is used in the sfinv page name, title is the
human readable title. human readable title.
Creative provides `creative.is_enabled_for(name)`, which is identical in `is_enabled_for` is used to check whether a player is in creative mode:
functionality to the engine's `minetest.creative_is_enabled(name)`.
Its use is deprecated and it should also not be overriden. creative.is_enabled_for(name)
Override this to allow per-player game modes.
The contents of `creative.formspec_add` is appended to every creative inventory The contents of `creative.formspec_add` is appended to every creative inventory
page. Mods can use it to add additional formspec elements onto the default page. Mods can use it to add additional formspec elements onto the default
creative inventory formspec to be drawn after each update. creative inventory formspec to be drawn after each update.
Group overrides can be used for any registered item, node or tool. Use one of
the groups stated below to pick which category it will appear in.
node = 1 -- Appears in the Nodes category
tool = 1 -- Appears in the Tools category
craftitem = 1 -- Appears in the Items category
Chests API Chests API
---------- ----------
@ -134,12 +129,12 @@ The chests API allows the creation of chests, which have their own inventories f
* A table indexed by player name to keep track of who opened what chest. * A table indexed by player name to keep track of who opened what chest.
* Key: The name of the player. * Key: The name of the player.
* Value: A table containing information about the chest the player is looking at. * Value: A table containing information about the chest the player is looking at.
e.g `{ pos = {1, 1, 1}, sound = null, swap = "default:chest" }` e.g `{ pos = {1, 1, 1}, sound = null, swap = "chest" }`
`default.chest.register_chest(name, def)` `default.chest.register_chest(name, def)`
* Registers new chest * Registers new chest
* `name` Name for chest e.g. "default:chest" * `name` Name for chest
* `def` See [#Chest Definition] * `def` See [#Chest Definition]
### Chest Definition ### Chest Definition

View File

@ -74,10 +74,10 @@ local function lay_down(player, pos, bed_pos, state, skip)
-- physics, eye_offset, etc -- physics, eye_offset, etc
player:set_eye_offset({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0}) 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) player:set_look_horizontal(math.random(1, 180) / 100)
player_api.player_attached[name] = false default.player_attached[name] = false
player:set_physics_override(1, 1, 1) player:set_physics_override(1, 1, 1)
hud_flags.wielditem = true hud_flags.wielditem = true
player_api.set_animation(player, "stand" , 30) default.player_set_animation(player, "stand" , 30)
-- lay down -- lay down
else else
@ -99,9 +99,9 @@ local function lay_down(player, pos, bed_pos, state, skip)
} }
player:set_physics_override(0, 0, 0) player:set_physics_override(0, 0, 0)
player:set_pos(p) player:set_pos(p)
player_api.player_attached[name] = true default.player_attached[name] = true
hud_flags.wielditem = false hud_flags.wielditem = false
player_api.set_animation(player, "lay" , 0) default.player_set_animation(player, "lay" , 0)
end end
player:hud_set_flags(hud_flags) player:hud_set_flags(hud_flags)

View File

@ -1,8 +0,0 @@
# 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

View File

@ -1,8 +1,8 @@
# textdomain: beds # textdomain: beds
Fancy Bed=
Simple Bed=
Leave Bed= Leave Bed=
Good morning.= Good morning.=
@1 of @2 players are in bed= @1 of @2 players are in bed=
Force night skip= Force night skip=
You can only sleep at night.= You can only sleep at night.=
Fancy Bed=
Simple Bed=

View File

@ -1,3 +0,0 @@
# textdomain: binoculars
Binoculars=Binokular
Use with 'Zoom' key=Pakai dengan tombol 'Zum'

View File

@ -1,4 +0,0 @@
# textdomain: boats
Boat cruise mode on=Mode perahu jelajah nyala
Boat cruise mode off=Mode perahu jelajah mati
Boat=Perahu

View File

@ -1,8 +0,0 @@
# 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

View File

@ -1,5 +0,0 @@
# textdomain: bucket
Empty Bucket=Ember Kosong
Water Bucket=Ember Air
River Water Bucket=Ember Air Sungai
Lava Bucket=Ember Lava

View File

@ -1,4 +0,0 @@
# textdomain: butterflies
White Butterfly=Kupu-Kupu Putih
Red Butterfly=Kupu-Kupu Merah
Violet Butterfly=Kupu-Kupu Ungu

View File

@ -67,7 +67,6 @@ end
function cart_entity:on_detach_child(child) function cart_entity:on_detach_child(child)
if child and child:get_player_name() == self.driver then if child and child:get_player_name() == self.driver then
self.driver = nil self.driver = nil
carts:manage_attachment(child, nil)
end end
end end
@ -328,10 +327,11 @@ local function rail_on_step(self, dtime)
if self.punched then if self.punched then
-- Collect dropped items -- Collect dropped items
for _, obj_ in pairs(minetest.get_objects_inside_radius(pos, 1)) do for _, obj_ in pairs(minetest.get_objects_inside_radius(pos, 1)) do
local ent = obj_:get_luaentity() if not obj_:is_player() and
-- Careful here: physical_state and disable_physics are item-internal APIs obj_:get_luaentity() and
if ent and ent.name == "__builtin:item" and ent.physical_state then not obj_:get_luaentity().physical_state and
ent:disable_physics() obj_:get_luaentity().name == "__builtin:item" then
obj_:set_attach(self.object, "", {x=0, y=0, z=0}, {x=0, y=0, z=0}) 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_ self.attached_items[#self.attached_items + 1] = obj_
end end
@ -389,7 +389,7 @@ minetest.register_entity("carts:cart", cart_entity)
minetest.register_craftitem("carts:cart", { minetest.register_craftitem("carts:cart", {
description = S("Cart") .. "\n" .. S("(Sneak+Click to pick up)"), description = S("Cart") .. "\n" .. S("(Sneak+Click to pick up)"),
inventory_image = minetest.inventorycube("carts_cart_top.png", "carts_cart_front.png", "carts_cart_side.png"), inventory_image = minetest.inventorycube("carts_cart_top.png", "carts_cart_side.png", "carts_cart_side.png"),
wield_image = "carts_cart_side.png", wield_image = "carts_cart_side.png",
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
local under = pointed_thing.under local under = pointed_thing.under

View File

@ -1,6 +0,0 @@
# textdomain: carts
Rail=Rel
Powered Rail=Rel Bertenaga
Brake Rail=Rel Rem
Cart=Kereta
(Sneak+Click to pick up)=(selinap + klik untuk ambil)

View File

@ -1,6 +1,6 @@
# textdomain: carts # textdomain: carts
Cart=
(Sneak+Click to pick up)=
Rail= Rail=
Powered Rail= Powered Rail=
Brake Rail= Brake Rail=
Cart=
(Sneak+Click to pick up)=

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 B

After

Width:  |  Height:  |  Size: 684 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 436 B

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 494 B

After

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 B

After

Width:  |  Height:  |  Size: 698 B

View File

@ -27,25 +27,16 @@ minetest.register_privilege("creative", {
on_revoke = update_sfinv, on_revoke = update_sfinv,
}) })
-- Override the engine's creative mode function local creative_mode_cache = minetest.settings:get_bool("creative_mode")
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) function creative.is_enabled_for(name)
return minetest.is_creative_enabled(name) return creative_mode_cache or
minetest.check_player_privs(name, {creative = true})
end end
dofile(minetest.get_modpath("creative") .. "/inventory.lua") dofile(minetest.get_modpath("creative") .. "/inventory.lua")
if minetest.is_creative_enabled("") then if creative_mode_cache then
-- Dig time is modified according to difference (leveldiff) between tool -- Dig time is modified according to difference (leveldiff) between tool
-- 'maxlevel' and node 'level'. Digtime is divided by the larger of -- 'maxlevel' and node 'level'. Digtime is divided by the larger of
-- leveldiff and 1. -- leveldiff and 1.

View File

@ -61,7 +61,6 @@ function creative.init_creative_inventory(player)
return player_inventory[player_name] return player_inventory[player_name]
end end
local NO_MATCH = 999
local function match(s, filter) local function match(s, filter)
if filter == "" then if filter == "" then
return 0 return 0
@ -69,15 +68,7 @@ local function match(s, filter)
if s:lower():find(filter, 1, true) then if s:lower():find(filter, 1, true) then
return #s - #filter return #s - #filter
end end
return NO_MATCH return nil
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 end
function creative.update_creative_inventory(player_name, tab_content) function creative.update_creative_inventory(player_name, tab_content)
@ -93,26 +84,13 @@ function creative.update_creative_inventory(player_name, tab_content)
local items = inventory_cache[tab_content] or init_creative_cache(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 creative_list = {}
local order = {} local order = {}
for name, def in pairs(items) do for name, def in pairs(items) do
local m = match(description(def), inv.filter) local m = match(def.description, inv.filter) or match(def.name, inv.filter)
if m > 0 then if m 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 creative_list[#creative_list+1] = name
-- Sort by match value first so closer matches appear earlier -- Sort by description length first so closer matches appear earlier
order[name] = string.format("%02d", m) .. name order[name] = string.format("%02d", m) .. name
end end
end end
@ -221,30 +199,10 @@ function creative.register_tab(name, title, items)
}) })
end 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("all", S("All"), minetest.registered_items)
creative.register_tab("nodes", S("Nodes"), registered_nodes) creative.register_tab("nodes", S("Nodes"), minetest.registered_nodes)
creative.register_tab("tools", S("Tools"), registered_tools) creative.register_tab("tools", S("Tools"), minetest.registered_tools)
creative.register_tab("craftitems", S("Items"), registered_craftitems) creative.register_tab("craftitems", S("Items"), minetest.registered_craftitems)
local old_homepage_name = sfinv.get_homepage_name local old_homepage_name = sfinv.get_homepage_name
function sfinv.get_homepage_name(player) function sfinv.get_homepage_name(player)

View File

@ -1,10 +0,0 @@
# 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

View File

@ -1,4 +1,5 @@
# textdomain: creative # textdomain: creative
Allow player to use creative inventory=
Search= Search=
Reset= Reset=
Previous page= Previous page=
@ -7,4 +8,3 @@ All=
Nodes= Nodes=
Tools= Tools=
Items= Items=
Allow player to use creative inventory=

View File

@ -151,6 +151,7 @@ BlockMen (CC BY-SA 3.0):
default_chest_top.png default_chest_top.png
default_mineral_mese.png default_mineral_mese.png
default_meselamp.png default_meselamp.png
bubble.png
gui_formbg.png gui_formbg.png
gui_furnace_arrow_bg.png gui_furnace_arrow_bg.png
gui_furnace_arrow_fg.png gui_furnace_arrow_fg.png
@ -195,6 +196,9 @@ Gambit (CC BY-SA 3.0):
asl97 (CC BY-SA 3.0): asl97 (CC BY-SA 3.0):
default_ice.png default_ice.png
KevDoy (CC BY-SA 3.0):
heart.png
Pithydon (CC BY-SA 3.0) Pithydon (CC BY-SA 3.0)
default_coral_brown.png default_coral_brown.png
default_coral_orange.png default_coral_orange.png
@ -249,11 +253,6 @@ Topywo (CC BY-SA 3.0)
Extex101 (CC BY-SA 3.0) Extex101 (CC BY-SA 3.0)
default_large_cactus_seedling.png 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 Sounds

View File

@ -44,7 +44,7 @@ function default.chest.chest_lid_close(pn)
end end
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
minetest.after(0.2, minetest.swap_node, pos, { name = swap, minetest.after(0.2, minetest.swap_node, pos, { name = "default:" .. swap,
param2 = node.param2 }) param2 = node.param2 })
minetest.sound_play(sound, {gain = 0.3, pos = pos, minetest.sound_play(sound, {gain = 0.3, pos = pos,
max_hear_distance = 10}, true) max_hear_distance = 10}, true)
@ -76,8 +76,7 @@ minetest.register_on_leaveplayer(function(player)
end end
end) end)
function default.chest.register_chest(prefixed_name, d) function default.chest.register_chest(name, d)
local name = prefixed_name:sub(1,1) == ':' and prefixed_name:sub(2,-1) or prefixed_name
local def = table.copy(d) local def = table.copy(d)
def.drawtype = "mesh" def.drawtype = "mesh"
def.visual = "mesh" def.visual = "mesh"
@ -133,7 +132,7 @@ function default.chest.register_chest(prefixed_name, d)
pos = pos, max_hear_distance = 10}, true) pos = pos, max_hear_distance = 10}, true)
if not default.chest.chest_lid_obstructed(pos) then if not default.chest.chest_lid_obstructed(pos) then
minetest.swap_node(pos, minetest.swap_node(pos,
{ name = name .. "_open", { name = "default:" .. name .. "_open",
param2 = node.param2 }) param2 = node.param2 })
end end
minetest.after(0.2, minetest.show_formspec, minetest.after(0.2, minetest.show_formspec,
@ -204,7 +203,7 @@ function default.chest.register_chest(prefixed_name, d)
max_hear_distance = 10}, true) max_hear_distance = 10}, true)
if not default.chest.chest_lid_obstructed(pos) then if not default.chest.chest_lid_obstructed(pos) then
minetest.swap_node(pos, { minetest.swap_node(pos, {
name = name .. "_open", name = "default:" .. name .. "_open",
param2 = node.param2 }) param2 = node.param2 })
end end
minetest.after(0.2, minetest.show_formspec, minetest.after(0.2, minetest.show_formspec,
@ -216,7 +215,7 @@ function default.chest.register_chest(prefixed_name, d)
def.on_blast = function(pos) def.on_blast = function(pos)
local drops = {} local drops = {}
default.get_inventory_drops(pos, "main", drops) default.get_inventory_drops(pos, "main", drops)
drops[#drops+1] = name drops[#drops+1] = "default:" .. name
minetest.remove_node(pos) minetest.remove_node(pos)
return drops return drops
end end
@ -249,7 +248,7 @@ function default.chest.register_chest(prefixed_name, d)
def_opened.tiles[i].backface_culling = true def_opened.tiles[i].backface_culling = true
end end
end end
def_opened.drop = name def_opened.drop = "default:" .. name
def_opened.groups.not_in_creative_inventory = 1 def_opened.groups.not_in_creative_inventory = 1
def_opened.selection_box = { def_opened.selection_box = {
type = "fixed", type = "fixed",
@ -266,31 +265,29 @@ function default.chest.register_chest(prefixed_name, d)
def_closed.tiles[5] = def.tiles[3] -- drawtype to make them match the mesh def_closed.tiles[5] = def.tiles[3] -- drawtype to make them match the mesh
def_closed.tiles[3] = def.tiles[3].."^[transformFX" def_closed.tiles[3] = def.tiles[3].."^[transformFX"
minetest.register_node(prefixed_name, def_closed) minetest.register_node("default:" .. name, def_closed)
minetest.register_node(prefixed_name .. "_open", def_opened) minetest.register_node("default:" .. name .. "_open", def_opened)
-- convert old chests to this new variant -- convert old chests to this new variant
if name == "default:chest" or name == "default:chest_locked" then minetest.register_lbm({
minetest.register_lbm({ label = "update chests to opening chests",
label = "update chests to opening chests", name = "default:upgrade_" .. name .. "_v2",
name = "default:upgrade_" .. name:sub(9,-1) .. "_v2", nodenames = {"default:" .. name},
nodenames = {name}, action = function(pos, node)
action = function(pos, node) local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos) meta:set_string("formspec", nil)
meta:set_string("formspec", nil) local inv = meta:get_inventory()
local inv = meta:get_inventory() local list = inv:get_list("default:chest")
local list = inv:get_list("default:chest") if list then
if list then inv:set_size("main", 8*4)
inv:set_size("main", 8*4) inv:set_list("main", list)
inv:set_list("main", list) inv:set_list("default:chest", nil)
inv:set_list("default:chest", nil)
end
end end
}) end
end })
end end
default.chest.register_chest("default:chest", { default.chest.register_chest("chest", {
description = S("Chest"), description = S("Chest"),
tiles = { tiles = {
"default_chest_top.png", "default_chest_top.png",
@ -306,7 +303,7 @@ default.chest.register_chest("default:chest", {
groups = {choppy = 2, oddly_breakable_by_hand = 2}, groups = {choppy = 2, oddly_breakable_by_hand = 2},
}) })
default.chest.register_chest("default:chest_locked", { default.chest.register_chest("chest_locked", {
description = S("Locked Chest"), description = S("Locked Chest"),
tiles = { tiles = {
"default_chest_top.png", "default_chest_top.png",

View File

@ -210,12 +210,7 @@ end
function default.grow_papyrus(pos, node) function default.grow_papyrus(pos, node)
pos.y = pos.y - 1 pos.y = pos.y - 1
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
if name ~= "default:dirt" and if name ~= "default:dirt_with_grass" and name ~= "default:dirt" then
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 return
end end
if not minetest.find_node_near(pos, 3, {"group:water"}) then if not minetest.find_node_near(pos, 3, {"group:water"}) then
@ -252,17 +247,7 @@ minetest.register_abm({
minetest.register_abm({ minetest.register_abm({
label = "Grow papyrus", label = "Grow papyrus",
nodenames = {"default:papyrus"}, nodenames = {"default:papyrus"},
-- Grows on the dirt and surface dirt nodes of the biomes papyrus appears in, neighbors = {"default:dirt", "default:dirt_with_grass"},
-- 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, interval = 14,
chance = 71, chance = 71,
action = function(...) action = function(...)
@ -448,9 +433,6 @@ local function leafdecay_after_destruct(pos, oldnode, def)
end end
end end
local movement_gravity = tonumber(
minetest.settings:get("movement_gravity")) or 9.81
local function leafdecay_on_timer(pos, def) local function leafdecay_on_timer(pos, def)
if minetest.find_node_near(pos, def.radius, def.trunks) then if minetest.find_node_near(pos, def.radius, def.trunks) then
return false return false
@ -477,21 +459,6 @@ local function leafdecay_on_timer(pos, def)
minetest.remove_node(pos) minetest.remove_node(pos)
minetest.check_for_falling(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 end
function default.register_leafdecay(def) function default.register_leafdecay(def)
@ -516,7 +483,7 @@ end
-- --
-- Convert default:dirt to something that fits the environment -- Convert dirt to something that fits the environment
-- --
minetest.register_abm({ minetest.register_abm({
@ -525,7 +492,6 @@ minetest.register_abm({
neighbors = { neighbors = {
"air", "air",
"group:grass", "group:grass",
"group:dry_grass",
"default:snow", "default:snow",
}, },
interval = 6, interval = 6,
@ -554,8 +520,6 @@ minetest.register_abm({
minetest.set_node(pos, {name = "default:dirt_with_snow"}) minetest.set_node(pos, {name = "default:dirt_with_snow"})
elseif minetest.get_item_group(name, "grass") ~= 0 then elseif minetest.get_item_group(name, "grass") ~= 0 then
minetest.set_node(pos, {name = "default:dirt_with_grass"}) 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
end end
}) })

View File

@ -15,8 +15,8 @@ local item = {
burn_up = function(self) burn_up = function(self)
-- disappear in a smoke puff -- disappear in a smoke puff
local p = self.object:get_pos()
self.object:remove() self.object:remove()
local p = self.object:get_pos()
minetest.sound_play("default_item_smoke", { minetest.sound_play("default_item_smoke", {
pos = p, pos = p,
max_hear_distance = 8, max_hear_distance = 8,
@ -39,20 +39,16 @@ local item = {
}) })
end, end,
on_step = function(self, dtime, ...) on_step = function(self, dtime)
builtin_item.on_step(self, dtime, ...) builtin_item.on_step(self, dtime)
if self.flammable then if self.flammable then
-- flammable, check for igniters every 10 s -- flammable, check for igniters
self.ignite_timer = (self.ignite_timer or 0) + dtime self.ignite_timer = (self.ignite_timer or 0) + dtime
if self.ignite_timer > 10 then if self.ignite_timer > 10 then
self.ignite_timer = 0 self.ignite_timer = 0
local pos = self.object:get_pos() local node = minetest.get_node_or_nil(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 if not node then
return return
end end

View File

@ -51,7 +51,6 @@ Copyright (C) 2010-2018:
Mossmanikin Mossmanikin
random-geek random-geek
Extex101 Extex101
An0n3m0us
You are free to: You are free to:
Share — copy and redistribute the material in any medium or format. Share — copy and redistribute the material in any medium or format.

View File

@ -62,12 +62,12 @@ Obsidian Block=Obsidianblock
Dirt=Erde Dirt=Erde
Dirt with Grass=Erde mit Gras Dirt with Grass=Erde mit Gras
Dirt with Grass and Footsteps=Erde mit Gras und Fußstapfen Dirt with Grass and Footsteps=Erde mit Gras und Fußstapfen
Dirt with Savanna Grass=Erde mit Savannengras Dirt with Dry Grass=Erde mit trockenem Gras
Dirt with Snow=Erde mit Schnee Dirt with Snow=Erde mit Schnee
Dirt with Rainforest Litter=Erde mit Regenwaldboden Dirt with Rainforest Litter=Erde mit Regenwaldboden
Dirt with Coniferous Litter=Erde mit Nadelwaldboden Dirt with Coniferous Litter=Erde mit Nadelwaldboden
Savanna Dirt=Savannenerde Dry Dirt=Trockene Erde
Savanna Dirt with Savanna Grass=Savannenerde mit Savannengras Dry Dirt with Dry Grass=Trockene Erde mit trockenem Gras
Permafrost=Permafrost Permafrost=Permafrost
Permafrost with Stones=Permafrost mit Steinen Permafrost with Stones=Permafrost mit Steinen
Permafrost with Moss=Permafrost mit Moos Permafrost with Moss=Permafrost mit Moos
@ -124,7 +124,7 @@ Papyrus=Papyrus
Dry Shrub=Trockener Busch Dry Shrub=Trockener Busch
Jungle Grass=Dschungelgras Jungle Grass=Dschungelgras
Grass=Gras Grass=Gras
Savanna Grass=Savannengras Dry Grass=Trockenes Gras
Fern=Farn Fern=Farn
Marram Grass=Dünengras Marram Grass=Dünengras
Bush Stem=Buschstamm Bush Stem=Buschstamm

View File

@ -1,211 +0,0 @@
# 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

View File

@ -1,4 +1,43 @@
# textdomain: default # 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= Stone=
Cobblestone= Cobblestone=
Stone Brick= Stone Brick=
@ -23,12 +62,12 @@ Obsidian Block=
Dirt= Dirt=
Dirt with Grass= Dirt with Grass=
Dirt with Grass and Footsteps= Dirt with Grass and Footsteps=
Dirt with Savanna Grass= Dirt with Dry Grass=
Dirt with Snow= Dirt with Snow=
Dirt with Rainforest Litter= Dirt with Rainforest Litter=
Dirt with Coniferous Litter= Dirt with Coniferous Litter=
Savanna Dirt= Dry Dirt=
Savanna Dirt with Savanna Grass= Dry Dirt with Dry Grass=
Permafrost= Permafrost=
Permafrost with Stones= Permafrost with Stones=
Permafrost with Moss= Permafrost with Moss=
@ -85,7 +124,7 @@ Papyrus=
Dry Shrub= Dry Shrub=
Jungle Grass= Jungle Grass=
Grass= Grass=
Savanna Grass= Dry Grass=
Fern= Fern=
Marram Grass= Marram Grass=
Bush Stem= Bush Stem=
@ -137,8 +176,6 @@ Brick Block=
Mese Lamp= Mese Lamp=
Mese Post Light= Mese Post Light=
Cloud= Cloud=
@1 will intersect protection on growth.=
Torch=
Wooden Pickaxe= Wooden Pickaxe=
Stone Pickaxe= Stone Pickaxe=
Bronze Pickaxe= Bronze Pickaxe=
@ -164,48 +201,11 @@ Steel Sword=
Mese Sword= Mese Sword=
Diamond Sword= Diamond Sword=
Key= Key=
Furnace is empty= Torch=
100% (output full)= @1 will intersect protection on growth.=
@1%=
Not cookable=
Empty=
Furnace active=
Furnace inactive=
(Item: @1; Fuel: @2)=
Furnace=
Title:= Title:=
Contents:= Contents:=
Save= Save=
by @1= by @1=
Page @1 of @2= Page @1 of @2=
"@1"= "@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=

View File

@ -458,12 +458,12 @@ minetest.register_node("default:dirt_with_grass_footsteps", {
}) })
minetest.register_node("default:dirt_with_dry_grass", { minetest.register_node("default:dirt_with_dry_grass", {
description = S("Dirt with Savanna Grass"), description = S("Dirt with Dry Grass"),
tiles = {"default_dry_grass.png", tiles = {"default_dry_grass.png",
"default_dirt.png", "default_dirt.png",
{name = "default_dirt.png^default_dry_grass_side.png", {name = "default_dirt.png^default_dry_grass_side.png",
tileable_vertical = false}}, tileable_vertical = false}},
groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, groups = {crumbly = 3, soil = 1},
drop = "default:dirt", drop = "default:dirt",
sounds = default.node_sound_dirt_defaults({ sounds = default.node_sound_dirt_defaults({
footstep = {name = "default_grass_footstep", gain = 0.4}, 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", { minetest.register_node("default:dry_dirt", {
description = S("Savanna Dirt"), description = S("Dry Dirt"),
tiles = {"default_dry_dirt.png"}, tiles = {"default_dry_dirt.png"},
groups = {crumbly = 3, soil = 1}, groups = {crumbly = 3, soil = 1},
sounds = default.node_sound_dirt_defaults(), sounds = default.node_sound_dirt_defaults(),
}) })
minetest.register_node("default:dry_dirt_with_dry_grass", { minetest.register_node("default:dry_dirt_with_dry_grass", {
description = S("Savanna Dirt with Savanna Grass"), description = S("Dry Dirt with Dry Grass"),
tiles = {"default_dry_grass.png", "default_dry_dirt.png", tiles = {"default_dry_grass.png", "default_dry_dirt.png",
{name = "default_dry_dirt.png^default_dry_grass_side.png", {name = "default_dry_dirt.png^default_dry_grass_side.png",
tileable_vertical = false}}, tileable_vertical = false}},
@ -621,7 +621,7 @@ minetest.register_node("default:snow", {
collision_box = { collision_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
{-0.5, -0.5, -0.5, 0.5, -6 / 16, 0.5}, {-0.5, -0.5, -0.5, 0.5, -7 / 16, 0.5},
}, },
}, },
groups = {crumbly = 3, falling_node = 1, snowy = 1}, groups = {crumbly = 3, falling_node = 1, snowy = 1},
@ -1497,7 +1497,7 @@ end
minetest.register_node("default:dry_grass_1", { minetest.register_node("default:dry_grass_1", {
description = S("Savanna Grass"), description = S("Dry Grass"),
drawtype = "plantlike", drawtype = "plantlike",
waving = 1, waving = 1,
tiles = {"default_dry_grass_1.png"}, tiles = {"default_dry_grass_1.png"},
@ -1526,7 +1526,7 @@ minetest.register_node("default:dry_grass_1", {
for i = 2, 5 do for i = 2, 5 do
minetest.register_node("default:dry_grass_" .. i, { minetest.register_node("default:dry_grass_" .. i, {
description = S("Savanna Grass"), description = S("Dry Grass"),
drawtype = "plantlike", drawtype = "plantlike",
waving = 1, waving = 1,
tiles = {"default_dry_grass_" .. i .. ".png"}, tiles = {"default_dry_grass_" .. i .. ".png"},
@ -2579,10 +2579,12 @@ local function register_sign(material, desc, def)
sounds = def.sounds, sounds = def.sounds,
on_construct = function(pos) on_construct = function(pos)
--local n = minetest.get_node(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
meta:set_string("formspec", "field[text;;${text}]") meta:set_string("formspec", "field[text;;${text}]")
end, end,
on_receive_fields = function(pos, formname, fields, sender) 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() local player_name = sender:get_player_name()
if minetest.is_protected(pos, player_name) then if minetest.is_protected(pos, player_name) then
minetest.record_protection_violation(pos, player_name) minetest.record_protection_violation(pos, player_name)
@ -2596,8 +2598,8 @@ local function register_sign(material, desc, def)
minetest.chat_send_player(player_name, S("Text too long")) minetest.chat_send_player(player_name, S("Text too long"))
return return
end end
minetest.log("action", player_name .. " wrote \"" .. text .. minetest.log("action", (player_name or "") .. " wrote \"" ..
"\" to the sign at " .. minetest.pos_to_string(pos)) text .. "\" to sign at " .. minetest.pos_to_string(pos))
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
meta:set_string("text", text) meta:set_string("text", text)
@ -2814,10 +2816,7 @@ minetest.register_node("default:brick", {
description = S("Brick Block"), description = S("Brick Block"),
paramtype2 = "facedir", paramtype2 = "facedir",
place_param2 = 0, place_param2 = 0,
tiles = { tiles = {"default_brick.png"},
"default_brick.png^[transformFX",
"default_brick.png",
},
is_ground_content = false, is_ground_content = false,
groups = {cracky = 3}, groups = {cracky = 3},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),

BIN
mods/default/sounds/default_break_glass.1.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_break_glass.2.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_break_glass.3.ogg Normal file → Executable file

Binary file not shown.

Binary file not shown.

BIN
mods/default/sounds/default_cool_lava.1.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_cool_lava.2.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_cool_lava.3.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_dig_choppy.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_dig_cracky.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_dig_crumbly.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_dig_dig_immediate.ogg Normal file → Executable file

Binary file not shown.

Binary file not shown.

BIN
mods/default/sounds/default_dirt_footstep.1.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_dirt_footstep.2.ogg Normal file → Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
mods/default/sounds/default_dug_node.1.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_dug_node.2.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_glass_footstep.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_grass_footstep.1.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_grass_footstep.2.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_grass_footstep.3.ogg Normal file → Executable file

Binary file not shown.

Binary file not shown.

BIN
mods/default/sounds/default_gravel_footstep.1.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_gravel_footstep.2.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_gravel_footstep.3.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_gravel_footstep.4.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_hard_footstep.1.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_hard_footstep.2.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_hard_footstep.3.ogg Normal file → Executable file

Binary file not shown.

Binary file not shown.

BIN
mods/default/sounds/default_metal_footstep.1.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_metal_footstep.2.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_metal_footstep.3.ogg Normal file → Executable file

Binary file not shown.

Binary file not shown.

BIN
mods/default/sounds/default_place_node.1.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_place_node.2.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_place_node.3.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_place_node_hard.1.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_place_node_hard.2.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_sand_footstep.1.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_sand_footstep.2.ogg Normal file → Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

0
mods/default/sounds/default_snow_footstep.1.ogg Normal file → Executable file
View File

0
mods/default/sounds/default_snow_footstep.2.ogg Normal file → Executable file
View File

0
mods/default/sounds/default_snow_footstep.3.ogg Normal file → Executable file
View File

0
mods/default/sounds/default_snow_footstep.4.ogg Normal file → Executable file
View File

BIN
mods/default/sounds/default_wood_footstep.1.ogg Normal file → Executable file

Binary file not shown.

BIN
mods/default/sounds/default_wood_footstep.2.ogg Normal file → Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
mods/default/sounds/lava.ogg Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
mods/default/sounds/waterfall.ogg Executable file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 B

After

Width:  |  Height:  |  Size: 459 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 B

After

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -16,7 +16,9 @@ function default.can_grow(pos)
if not node_under then if not node_under then
return false return false
end end
if minetest.get_item_group(node_under.name, "soil") == 0 then local name_under = node_under.name
local is_soil = minetest.get_item_group(name_under, "soil")
if is_soil == 0 then
return false return false
end end
local light_level = minetest.get_node_light(pos) local light_level = minetest.get_node_light(pos)

View File

@ -78,7 +78,9 @@ end
-- nodes from being placed in the top half of the door. -- nodes from being placed in the top half of the door.
minetest.register_node("doors:hidden", { minetest.register_node("doors:hidden", {
description = S("Hidden Door Segment"), description = S("Hidden Door Segment"),
drawtype = "airlike", -- can't use airlike otherwise falling nodes will turn to entities
-- and will be forever stuck until door is removed.
drawtype = "nodebox",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
sunlight_propagates = true, sunlight_propagates = true,
@ -91,7 +93,13 @@ minetest.register_node("doors:hidden", {
drop = "", drop = "",
groups = {not_in_creative_inventory = 1}, groups = {not_in_creative_inventory = 1},
on_blast = function() end, on_blast = function() end,
-- 1px block inside door hinge near node top tiles = {"doors_blank.png"},
-- 1px transparent block inside door hinge near node top.
node_box = {
type = "fixed",
fixed = {-15/32, 13/32, -15/32, -13/32, 1/2, -13/32},
},
-- collision_box needed otherise selection box would be full node size
collision_box = { collision_box = {
type = "fixed", type = "fixed",
fixed = {-15/32, 13/32, -15/32, -13/32, 1/2, -13/32}, fixed = {-15/32, 13/32, -15/32, -13/32, 1/2, -13/32},
@ -107,10 +115,10 @@ local transform = {
{v = "_a", param2 = 2}, {v = "_a", param2 = 2},
}, },
{ {
{v = "_c", param2 = 1}, {v = "_b", param2 = 1},
{v = "_c", param2 = 2}, {v = "_b", param2 = 2},
{v = "_c", param2 = 3}, {v = "_b", param2 = 3},
{v = "_c", param2 = 0}, {v = "_b", param2 = 0},
}, },
{ {
{v = "_b", param2 = 1}, {v = "_b", param2 = 1},
@ -119,10 +127,10 @@ local transform = {
{v = "_b", param2 = 0}, {v = "_b", param2 = 0},
}, },
{ {
{v = "_d", param2 = 3}, {v = "_a", param2 = 3},
{v = "_d", param2 = 0}, {v = "_a", param2 = 0},
{v = "_d", param2 = 1}, {v = "_a", param2 = 1},
{v = "_d", param2 = 2}, {v = "_a", param2 = 2},
}, },
} }
@ -441,23 +449,15 @@ function doors.register(name, def)
def.mesh = "door_b.obj" def.mesh = "door_b.obj"
minetest.register_node(":" .. name .. "_b", def) 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 .. "_a"] = true
doors.registered_doors[name .. "_b"] = true doors.registered_doors[name .. "_b"] = true
doors.registered_doors[name .. "_c"] = true
doors.registered_doors[name .. "_d"] = true
end end
doors.register("door_wood", { doors.register("door_wood", {
tiles = {{ name = "doors_door_wood.png", backface_culling = true }}, tiles = {{ name = "doors_door_wood.png", backface_culling = true }},
description = S("Wooden Door"), description = S("Wooden Door"),
inventory_image = "doors_item_wood.png", inventory_image = "doors_item_wood.png",
groups = {node = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
recipe = { recipe = {
{"group:wood", "group:wood"}, {"group:wood", "group:wood"},
{"group:wood", "group:wood"}, {"group:wood", "group:wood"},
@ -470,7 +470,7 @@ doors.register("door_steel", {
description = S("Steel Door"), description = S("Steel Door"),
inventory_image = "doors_item_steel.png", inventory_image = "doors_item_steel.png",
protected = true, protected = true,
groups = {node = 1, cracky = 1, level = 2}, groups = {cracky = 1, level = 2},
sounds = default.node_sound_metal_defaults(), sounds = default.node_sound_metal_defaults(),
sound_open = "doors_steel_door_open", sound_open = "doors_steel_door_open",
sound_close = "doors_steel_door_close", sound_close = "doors_steel_door_close",
@ -485,7 +485,7 @@ doors.register("door_glass", {
tiles = {"doors_door_glass.png"}, tiles = {"doors_door_glass.png"},
description = S("Glass Door"), description = S("Glass Door"),
inventory_image = "doors_item_glass.png", inventory_image = "doors_item_glass.png",
groups = {node = 1, cracky=3, oddly_breakable_by_hand=3}, groups = {cracky=3, oddly_breakable_by_hand=3},
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
sound_open = "doors_glass_door_open", sound_open = "doors_glass_door_open",
sound_close = "doors_glass_door_close", sound_close = "doors_glass_door_close",
@ -500,7 +500,7 @@ doors.register("door_obsidian_glass", {
tiles = {"doors_door_obsidian_glass.png"}, tiles = {"doors_door_obsidian_glass.png"},
description = S("Obsidian Glass Door"), description = S("Obsidian Glass Door"),
inventory_image = "doors_item_obsidian_glass.png", inventory_image = "doors_item_obsidian_glass.png",
groups = {node = 1, cracky=3}, groups = {cracky=3},
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
sound_open = "doors_glass_door_open", sound_open = "doors_glass_door_open",
sound_close = "doors_glass_door_close", sound_close = "doors_glass_door_close",

View File

@ -1,18 +0,0 @@
# 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

View File

@ -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. 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 a locked door=una porta chiusa a chiave
Wooden Door=Porta di legno Wooden Door=Porta di legno
Steel Door=Porta d'acciaio Steel Door=Porta d'acciacio
Glass Door=Porta di vetro Glass Door=Porta di vetro
Obsidian Glass Door=Porta di vetro d'ossidiana Obsidian Glass Door=Porta di vetro d'ossidiana
Owned by @1=Di proprietà di @1 Owned by @1=Di proprietà di @1

View File

@ -1,7 +1,7 @@
# Blender v2.76 (sub 0) OBJ File: 'door_a.blend' # Blender v2.76 (sub 0) OBJ File: 'door_a.blend'
# www.blender.org # www.blender.org
mtllib door_a.mtl mtllib door_a.mtl
o door_a o Cube_Cube.001
v 0.499000 -0.499000 -0.499000 v 0.499000 -0.499000 -0.499000
v 0.499000 1.499000 -0.499000 v 0.499000 1.499000 -0.499000
v 0.499000 -0.499000 -0.375000 v 0.499000 -0.499000 -0.375000

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