1
0
mirror of https://github.com/minetest/minetest_game.git synced 2025-06-28 20:56:02 +02:00

89 Commits
5.1.0 ... 5.3.0

Author SHA1 Message Date
8c01a5b288 Add Indonesian translations (#2693) 2020-06-29 18:41:50 +02:00
7cac67f097 TNT centre node adheres to protection
Make sure tnt.boom() doesnt replace centre node when explode_centre is true and ignore_protection is false.

Fixes: https://github.com/minetest/minetest_game/issues/2663
2020-06-28 15:50:46 +02:00
0648252056 Update German translation 2020-06-28 15:50:00 +02:00
8855490b7f Update translation templates 2020-06-26 14:41:30 +02:00
3257780b32 farming: Update Spanish translation (#2701) 2020-06-25 12:35:36 +02:00
b2d0f0ac8d Update nodes papyrus can grow on, include default:dry_dirt (#2705)
Fixes papyrus not growing on savanna dirt.
Also updates the nodes papyrus can grow on, which were incorrect for a long time.
2020-06-21 23:24:56 +01:00
e8a7e75319 Make dry grass spread on default:dirt again (#2687) 2020-06-16 20:42:45 +01:00
d03d7e9bdc Change brake rail to red (#2692) 2020-06-12 23:37:23 +02:00
af045dcd8b sethome: Do not write empty homes file 2020-06-10 20:29:50 +02:00
6d2a897e1b creative: Update for compatibility with minetest.creative_is_enabled (#2691) 2020-06-07 00:15:35 +02:00
b1ab8d5123 Implement searching for translated names in creative inventory (#2675) 2020-06-05 14:29:34 +02:00
6e345cf136 Use node particles for TNT explosions (#2695) 2020-06-02 12:48:56 +02:00
e849d54572 carts: Fix item collection (#2689) 2020-05-29 22:54:47 +02:00
0662f96284 Reduce hud icons size to 12x12 pixels (#2669) 2020-05-28 11:12:15 +02:00
84da00acd4 Add node particles when leafdecay removes a node (#2686) 2020-05-25 15:56:23 +02:00
3452938c76 Carts: Re-add erroneously removed driver reset
carts:manage_attachment does not handle the driver value of the cart,
hence carts could not be used by another player until it's replaced.
2020-05-16 19:26:28 +02:00
b787fcf7e4 Carts: Reset player view and attachment table on death
Fixes #2681
2020-05-15 19:04:38 +02:00
e5a7af1c4a Add wild cotton plant in savanna as a source of cotton seeds (#2617)
Junglegrass is unchanged as a source of cotton seeds for now, but
probably should be removed as a source in future, as players get
used to the new source.
2020-05-14 23:49:17 +01:00
b3d91a487d Add new dry shrub texture by Extex101 (#2680) 2020-05-14 22:33:53 +01:00
16c950f688 doors: Update Italian translation (#2670) 2020-05-11 23:13:00 +02:00
e5b54c6ead Switch TNT explosions to use add_player_velocity (#2674) 2020-05-10 14:10:29 +02:00
3f42c6c243 Add oddly_breakable_by_hand to glass stairs and slabs 2020-05-10 13:37:37 +02:00
ef45a8e148 doors: Remove unnecessary nodebox and empty texture (#2662) 2020-05-04 19:20:01 +02:00
d88e551071 Fix cart inventory image rendering (#2666)
Before it was rendering the side on both the side and the front of the minetest.inventorycube
2020-04-30 19:51:39 +02:00
190f7fdac9 Add a missing article to the sign action message (#2651) 2020-04-29 21:11:21 +02:00
33eb7cee2a Fix flammable item entities crashing (#2659) 2020-04-24 21:12:40 +02:00
189d2d9fb1 Fix door model UV for open and close (#2372)
Introduce _c and _d door types to correctly render the texture faces for the open and closed state.
2020-04-24 21:04:00 +02:00
81c5b6b399 beds: Use player_api functions instead of default (#2654) 2020-04-23 22:19:58 +02:00
52c6921cb2 Make default:snow collisionbox half of nodebox height (#2647) 2020-04-14 19:09:24 +02:00
bd64188ee5 Override builtin item entity the portable way 2020-04-14 13:31:25 +02:00
fb18a5b20d Make default.chest.register_chest() usable for other mods (#2127) 2020-04-13 20:26:44 +02:00
ea4ce80f7c Make straw stairs usable as fuel (#2627) 2020-04-13 11:34:10 +02:00
36b2bcb5f3 Add Basic Fire Description (#2568) 2020-04-11 20:50:49 +02:00
695f98f213 player_api: Remove local variable (#2640) 2020-04-08 20:40:19 +02:00
545ec0741c Fix creative category sorting in certain cases 2020-04-08 17:25:09 +02:00
c1f41720fc Fix crash on TNT explosions if tnt is disabled 2020-04-08 17:24:10 +02:00
14a385d68c trees: Reduce local variables (#2637) 2020-04-07 19:36:03 +02:00
03c9aed221 Fire mod: Code cleanup, compress textures 2020-04-06 21:09:39 +01:00
720b24ed2d Weather mod: Tune cloud density variation
Previously, cloud density was too low at medium humidity.
Tune cloud density variation to match the default/classic value at
humidity midvalue 50.
Tune the lower limit of cloud density that occurs at extreme low
humidity.
Increase minimum cloud thickness to 2 nodes.
Add comments.
2020-04-06 21:05:07 +01:00
4243d28846 Clarify descriptions of dry grass, dry dirt 2020-04-06 21:03:57 +01:00
7d230fdbf8 Enable player animation when Right Click (#2622) 2020-04-06 15:22:08 +02:00
7fc7fa4843 Transform brick top texture to align bricks correctly (#2607) 2020-04-06 15:19:52 +02:00
05fad37b3c Sort items into correct categories (#2612) 2020-04-06 15:15:50 +02:00
8863527bb6 Fix respawn not working at all when suitable position was not found
The player should always be teleported away when they die and
we can still fall back to the engine spawning code.
2020-04-04 13:06:40 +02:00
fbbc7fc996 player_api: Prevent knockback when player is set as attached
This is not directly related to player models but fits well
as a convenience feature in player_api.
2020-03-17 22:08:36 +01:00
b9dc758fef xpanes: fix code style (#2618) 2020-03-15 15:12:21 +01:00
8b3b92dfdf xpanes: remove unused textures (#2614) 2020-03-07 20:25:43 +01:00
07a8067348 Fix TNT mod crash when entities disappear during explosion (#2616) 2020-03-06 21:51:19 +01:00
3a863053c0 Dungeon loot: Warn on unknown registered loot items (#2613) 2020-03-06 21:51:07 +01:00
91ac075cff Update Chinese Translation, Add Traditional Chinese Translation (#2596) 2020-03-02 21:53:12 +01:00
fe9cdba0ec Creative: Skip redundant refreshes, fix reset button (#2611)
Skips redundant calls to creative.update_creative_inventory and fixes the 'Reset' button which double-refreshed the filter cache.
2020-03-02 21:41:42 +01:00
8d9aa07752 Sort loot registration into respective mods (#2602) 2020-02-23 14:41:13 +01:00
34b410319e Increase speed of flowing water/river water animations
To visually match the 1 node per second spread of flowing water.
2020-02-14 00:01:15 +00:00
3ea648f5bf Disallow screwdriver rotating torches, to avoid bad torch rotations 2020-02-11 03:58:41 +00:00
232cc2bd1c Add log for seeds on place 2020-02-10 22:00:40 +01:00
db632b67bf Fix missing papyrus in savanna, add a dry dirt version
Papyrus was missing from the dry dirt 'savanna_shore' biome due to
only being placed on dirt. A mistake made when changing savanna
dirt to dry dirt.

Rename existing papyrus schematic to 'papyrus_on_dirt' and only
place in the 'rainforest_swamp' biome.
Add a new papyrus schematic 'papyrus_on_dry_dirt', placed in the
'savanna' biome.
2020-02-09 01:34:17 +00:00
1420376e32 Fix french translation of snow block slab 2020-02-08 21:06:17 +00:00
9bf64b61c2 Fix simple bed height, make player lay down just above it, not inside it 2020-02-08 03:11:44 +00:00
f255e36d78 Add traditional Chinese translation (#2579) 2020-02-06 20:15:13 +01:00
d3e26dba18 Convert minetest.sound_play uses to ephemeral 2020-02-05 22:24:23 +01:00
DS
176ddba176 Reset spawn position on bed destruction 2020-01-26 18:59:44 +01:00
eac4795326 Update Chinese translation (#2563)
rail = 轨道 / 栏杆
grass = 草

and, mese color is yellow, so i translate it to "黄石"。(Chinese words without MESE)
2020-01-25 16:55:14 +01:00
da39bae50e Add zh_CN translation 2020-01-22 19:09:38 +01:00
7e9a54abaf Replace Russian translation of Pickaxe (#2556) 2020-01-09 19:09:06 +01:00
beb0aefa2d Make can_interact_with_node() check for key group instead of default:key 2020-01-06 21:16:33 +00:00
1940961d63 Move duplicate recipe from books to default.register_craft_metadata_copy()
This allows mods to easily implement the same behaviour, e.g. for letters.
2020-01-04 00:09:58 +00:00
6e32287a42 Move crafting, cooking and fuel recipes into corresponding files 2020-01-01 01:38:06 +00:00
1082466796 Rename core to minetest (#2552) 2019-12-29 12:28:30 +01:00
258332578a Player model: Add bobbing to walk animation, more subtle standing animation 2019-12-23 02:14:25 +00:00
150122bfe7 Remove Mapgen V7 floatland biome code
In preparation for a new Mapgen V7 floatland implementation.
2019-12-18 23:59:45 +00:00
d04b709181 Add missing 'weather' mod documentation to minetest.conf.example 2019-12-18 22:32:09 +00:00
c0335e24c9 Convert grass footstep sounds from stereo to mono 2019-12-18 22:31:29 +00:00
f176ba4873 Make tool crafting recipes more compact, move to tools.lua 2019-12-16 00:29:33 +00:00
5b21d1de34 README: Use correct link, make link clickable 2019-12-04 20:38:01 +00:00
710605687b Add Malay translation 2019-11-30 17:31:40 +01:00
10dce79451 Add Swedish translation 2019-11-30 17:31:29 +01:00
0f764bf447 Coral 'on place': Pass node to 'on rightclick', not node name 2019-11-28 02:01:19 +00:00
00a8bd521a Fix popping sound in default_grass_footstep (#2538) 2019-11-25 10:50:20 +01:00
2f6d0bf267 Add 4th item row to creative inventory. Align search, trash, page navigation 2019-11-23 21:35:02 +00:00
d9f8c6cc43 Escape translated text in 'beds' mod formspec 2019-11-22 21:47:47 +00:00
5b1875ef41 Papyrus: Add to the rainforest swamp biome
Previously, papyrus was limited to the savanna biome.
Rainforest is a suitable habitat for papyrus.
Makes papyrus a little less difficult to find.
Move swamp jungletrees into a separate registration, to allow
applying distribution by perlin noise to keep these away from
papyrus areas.

Fix error: Remove non-functional 'rainforest swamp' from the
biome list for the jungle log decoration. It is not placed in
swamps due to the 'y max/min' and 'place on' parameters.
2019-11-15 19:47:14 +00:00
5017f3b614 Weather: Replace deprecated get2d with get_2d 2019-11-13 19:59:58 +01:00
6fea665fcc Add Russian translation (#2525) 2019-10-24 21:54:20 +02:00
dd71dcbcf6 boats: Improve physics by implementing drag and friction forces
Implement drag force according to the equation:
drag_force = drag_coefficient * speed ^2
Also add a small constant force to implement friction force.
2019-10-24 03:47:28 +01:00
f9a9e87af6 Improve creative inventory search (#2523) 2019-10-22 22:46:19 +02:00
7caa5d36f2 Move hotbar code/textures, and damage sound, from player_api to default
These are unrelated to the Player API and player object.
All other GUI/HUD code and textures are in default.
All other engine hardcoded sounds are in default.
The player_api mod is highly likely to be used unchanged in new games,
so logical grouping of content will help the creation of new games.
2019-10-18 02:43:06 +01:00
7c1fd9c24e Add initial 'weather' mod to vary cloud density, thickness, velocity 2019-10-15 00:38:41 +01:00
ef7df329d2 Fix duplicate background in formspec prepend (#2524) 2019-10-14 22:53:57 +02:00
6042e963f7 Increase (ocean) water opacity to 191 2019-10-12 18:35:56 +02:00
262 changed files with 4923 additions and 1320 deletions

View File

@ -3,7 +3,7 @@ allow_defined_top = true
read_globals = {
"DIR_DELIM",
"minetest", "core",
"minetest",
"dump",
"vector",
"VoxelManip", "VoxelArea",
@ -12,11 +12,16 @@ read_globals = {
"Settings",
"unpack",
-- Silence errors about custom table methods.
table = { fields = { "copy", "indexof" } }
table = { fields = { "copy", "indexof" } },
-- Silence warnings about accessing undefined fields of global 'math'
math = { fields = { "sign" } }
}
-- Overwrites minetest.handle_node_drops
files["mods/creative/init.lua"].globals = { "minetest" }
-- Overwrites minetest.calculate_knockback
files["mods/player_api/api.lua"].globals = { "minetest" }
-- Don't report on legacy definitions of globals.
files["mods/default/legacy.lua"].global = false

View File

@ -2,8 +2,10 @@
The default game bundled in the Minetest engine.
For further information, check [this forum topic](https://forum.minetest.net/viewtopic.php?f=15&t=9724).
Also see the [Minetest Wiki](https://wiki.minetest.net/Subgames/Minetest_Game) for more information.
For further information, check
[this forum topic](https://forum.minetest.net/viewtopic.php?f=15&t=9724).
Also see the [Minetest Wiki](https://wiki.minetest.net/Subgames/Minetest_Game)
for more information.
## Installation
@ -13,8 +15,7 @@ place it in .. minetest/games/
- GNU/Linux: If you use a system-wide installation place
it in ~/.minetest/games/.
The Minetest engine can be found at
[GitHub](https://github.com/minetest/minetest).
The Minetest engine can be found at [GitHub](https://github.com/minetest/minetest).
For further information or help, see:
https://wiki.minetest.net/Installing_Mods
@ -26,8 +27,8 @@ master HEAD of the Minetest engine.
Additionally, when the Minetest engine is tagged to be a certain version (e.g.
0.4.10), Minetest Game is tagged with the version too.
When stable releases are made, Minetest Game and the Minetest engine is packaged and made available at
https://minetest.net/downloads/
When stable releases are made, Minetest Game and the Minetest engine is packaged
and made available at [www.minetest.net](https://www.minetest.net/downloads/).
## Licensing

View File

@ -93,16 +93,21 @@ For example,
is used to show all tools. Name is used in the sfinv page name, title is the
human readable title.
`is_enabled_for` is used to check whether a player is in creative mode:
creative.is_enabled_for(name)
Override this to allow per-player game modes.
Creative provides `creative.is_enabled_for(name)`, which is identical in
functionality to the engine's `minetest.creative_is_enabled(name)`.
Its use is deprecated and it should also not be overriden.
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
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
----------
@ -129,12 +134,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.
* Key: The name of the player.
* Value: A table containing information about the chest the player is looking at.
e.g `{ pos = {1, 1, 1}, sound = null, swap = "chest" }`
e.g `{ pos = {1, 1, 1}, sound = null, swap = "default:chest" }`
`default.chest.register_chest(name, def)`
* Registers new chest
* `name` Name for chest
* `name` Name for chest e.g. "default:chest"
* `def` See [#Chest Definition]
### Chest Definition
@ -424,7 +429,7 @@ Give Initial Stuff API
Players API
-----------
The player API can register player models and update the player's appearence
The player API can register player models and update the player's appearance.
* `player_api.register_model(name, def)`
* Register a new model to be used by players
@ -457,6 +462,12 @@ The player API can register player models and update the player's appearence
* Any of the fields of the returned table may be nil.
* player: PlayerRef
* `player_api.player_attached`
* A table that maps a player name to a boolean.
* If the value for a given player is set to true, the default player
animations (walking, digging, ...) will no longer be updated.
Knockback from damage is also prevented for that player.
### Model Definition
{
@ -467,7 +478,7 @@ The player API can register player models and update the player's appearence
-- <anim_name> = {x = <start_frame>, y = <end_frame>},
foo = {x = 0, y = 19},
bar = {x = 20, y = 39},
-- ...
-- ...
},
collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, -- In nodes from feet position
stepheight = 0.6, -- In nodes
@ -1055,3 +1066,11 @@ for the wielded skeleton key.
if `nil` is returned, it is assumed that the wielder did not have
permissions to create a key for this node, and no key is created.
`default.register_craft_metadata_copy(ingredient, result)`
----------------------------------------------------------
This function registers a shapeless recipe that takes `ingredient`
and `result` as input and outputs `result`.
The metadata of the input `result` is copied to the output `result`.

View File

@ -71,3 +71,7 @@ default:torch 99,default:cobble 99
# Whether river water source nodes create flowing sounds.
# Helps rivers create more sound, especially on level sections.
#river_source_sounds = false
# Enable cloud variation by the 'weather' mod.
# Non-functional in V6 or Singlenode mapgens.
#enable_weather = true

View File

@ -17,6 +17,8 @@ local function destruct_bed(pos, n)
reverse = not reverse
minetest.remove_node(other)
minetest.check_for_falling(other)
beds.remove_spawns_at(pos)
beds.remove_spawns_at(other)
else
reverse = not reverse
end

View File

@ -79,10 +79,10 @@ beds.register_bed("beds:bed", {
}
},
nodebox = {
bottom = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5},
top = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5},
bottom = {-0.5, -0.5, -0.5, 0.5, 0.0625, 0.5},
top = {-0.5, -0.5, -0.5, 0.5, 0.0625, 0.5},
},
selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.06, 1.5},
selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.0625, 1.5},
recipe = {
{"wool:white", "wool:white", "wool:white"},
{"group:wood", "group:wood", "group:wood"}

View File

@ -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
@ -90,12 +90,18 @@ local function lay_down(player, pos, bed_pos, state, skip)
local yaw, param2 = get_look_yaw(bed_pos)
player:set_look_horizontal(yaw)
local dir = minetest.facedir_to_dir(param2)
local p = {x = bed_pos.x + dir.x / 2, y = bed_pos.y, z = bed_pos.z + dir.z / 2}
-- p.y is just above the nodebox height of the 'Simple Bed' (the highest bed),
-- to avoid sinking down through the bed.
local p = {
x = bed_pos.x + dir.x / 2,
y = bed_pos.y + 0.07,
z = bed_pos.z + dir.z / 2
}
player:set_physics_override(0, 0, 0)
player:set_pos(p)
default.player_attached[name] = true
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)

View File

@ -2,7 +2,7 @@
-- Load support for MT game translation.
local S = minetest.get_translator("beds")
local esc = minetest.formspec_escape
beds = {}
beds.player = {}
@ -14,7 +14,7 @@ beds.get_translator = S
beds.formspec = "size[8,11;true]" ..
"no_prepend[]" ..
"bgcolor[#080808BB;true]" ..
"button_exit[2,10;4,0.75;leave;" .. S("Leave Bed") .. "]"
"button_exit[2,10;4,0.75;leave;" .. esc(S("Leave Bed")) .. "]"
local modpath = minetest.get_modpath("beds")

View File

@ -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

View File

@ -0,0 +1,8 @@
# textdomain: beds
Fancy Bed=Katil Beragam
Simple Bed=Katil Biasa
Leave Bed=Bangun
Good morning.=Selamat pagi.
@1 of @2 players are in bed=@1 daripada @2 pemain sedang tidur
Force night skip=Paksa langkau malam
You can only sleep at night.=Anda hanya boleh tidur pada waktu malam.

View File

@ -0,0 +1,8 @@
# textdomain: beds
Fancy Bed=Детализированная Кровать
Simple Bed=Обычная Кровать
Leave Bed=Встать с кровати
Good morning.=Доброе утро.
@1 of @2 players are in bed=@1 из @2 игроков в кровати
Force night skip=Пропустить ночь
You can only sleep at night.=Вы можете спать только ночью.

View File

@ -0,0 +1,8 @@
# textdomain: beds
Fancy Bed=Fin säng
Simple Bed=Enkel Säng
Leave Bed=Lämna Säng
Good morning.= God morgon.
@1 of @2 players are in bed=@1 av @2 spelar försöker sover.
Force night skip=Tvinga över natten
You can only sleep at night.=Du kan bara sova på natten.

View File

@ -0,0 +1,8 @@
# textdomain: beds
Fancy Bed=花式床
Simple Bed=简易床
Leave Bed=离开床
Good morning.=早安!
@1 of @2 players are in bed=@2位玩家中的@1位在床上
Force night skip=强制跳过夜晚
You can only sleep at night.=你只能在晚上睡觉。

View File

@ -0,0 +1,9 @@
# textdomain: beds
Fancy Bed=花式床
Simple Bed=簡易床
Leave Bed=離開床
Good morning.=早安!
@1 of @2 players are in bed=@2位玩家中的@1位在床上
Force night skip=強制跳過夜晚
You can only sleep at night.=你只能在晚上睡覺。

View File

@ -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=

View File

@ -61,3 +61,12 @@ function beds.set_spawns()
end
beds.save_spawns()
end
function beds.remove_spawns_at(pos)
for name, p in pairs(beds.spawn) do
if vector.equals(vector.round(p), pos) then
beds.spawn[name] = nil
end
end
beds.save_spawns()
end

View File

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

View File

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

View File

@ -0,0 +1,3 @@
# textdomain: binoculars
Binoculars=Бинокль
Use with 'Zoom' key=Используется с привилегией 'Zoom'

View File

@ -0,0 +1,3 @@
# textdomain: binoculars
Binoculars=Kikare
Use with 'Zoom' key=Används med 'Zoom' knappen

View File

@ -0,0 +1,3 @@
# textdomain: binoculars
Binoculars=望远镜
Use with 'Zoom' key=与“缩放”键一起使用

View File

@ -0,0 +1,3 @@
# textdomain: binoculars
Binoculars=望遠鏡
Use with 'Zoom' key=與“縮放”鍵一起使用

View File

@ -13,15 +13,6 @@ local function is_water(pos)
end
local function get_sign(i)
if i == 0 then
return 0
else
return i / math.abs(i)
end
end
local function get_velocity(v, yaw, y)
local x = -math.sin(yaw) * v
local z = math.cos(yaw) * v
@ -146,7 +137,7 @@ end
function boat.on_step(self, dtime)
self.v = get_v(self.object:get_velocity()) * get_sign(self.v)
self.v = get_v(self.object:get_velocity()) * math.sign(self.v)
if self.driver then
local driver_objref = minetest.get_player_by_name(self.driver)
if driver_objref then
@ -157,13 +148,13 @@ function boat.on_step(self, dtime)
minetest.chat_send_player(self.driver, S("Boat cruise mode on"))
end
elseif ctrl.down then
self.v = self.v - dtime * 1.8
self.v = self.v - dtime * 2.0
if self.auto then
self.auto = false
minetest.chat_send_player(self.driver, S("Boat cruise mode off"))
end
elseif ctrl.up or self.auto then
self.v = self.v + dtime * 1.8
self.v = self.v + dtime * 2.0
end
if ctrl.left then
if self.v < -0.001 then
@ -185,15 +176,14 @@ function boat.on_step(self, dtime)
self.object:set_pos(self.object:get_pos())
return
end
local s = get_sign(self.v)
self.v = self.v - dtime * 0.6 * s
if s ~= get_sign(self.v) then
self.object:set_velocity({x = 0, y = 0, z = 0})
-- We need to preserve velocity sign to properly apply drag force
-- while moving backward
local drag = dtime * math.sign(self.v) * (0.01 + 0.0796 * self.v * self.v)
-- If drag is larger than velocity, then stop horizontal movement
if math.abs(self.v) <= math.abs(drag) then
self.v = 0
return
end
if math.abs(self.v) > 5 then
self.v = 5 * get_sign(self.v)
else
self.v = self.v - drag
end
local p = self.object:get_pos()

View File

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

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat cruise mode on=Mod bot layar makan angin dibolehkan
Boat cruise mode off=Mod bot layar makan angin dilumpuhkan
Boat=Bot

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat cruise mode on=Режим путешествия на лодке включен
Boat cruise mode off=Режим путешествия на лодке выключен
Boat=Лодка

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat cruise mode on=Båtkryssningsläge på
Boat cruise mode off=Båtkryssningsläge av
Boat=Båt

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat cruise mode on=巡航模式开启
Boat cruise mode off=巡航模式关闭
Boat=船

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat cruise mode on=巡航模式開啟
Boat cruise mode off=巡航模式關閉
Boat=船

View File

@ -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

View File

@ -0,0 +1,8 @@
# textdomain: bones
Bones=Tulang
@1's old bones=Tulang lama @1
@1 died at @2.=@1 mati di @2.
@1 died at @2, and dropped their inventory.=@1 mati di @2, dan menjatuhkan inventorinya.
@1 died at @2, and bones were placed.=@1 mati di @2, dan tulang diletakkan.
@1's fresh bones=Tulang segar @1
@1's bones=Tulang @1

View File

@ -0,0 +1,8 @@
# textdomain: bones
Bones=Кости
@1's old bones=Старые кости @1
@1 died at @2.=@1 умер в @2.
@1 died at @2, and dropped their inventory.=@1 умер в @2 и потерял содержимое своего инвентаря.
@1 died at @2, and bones were placed.=@1 умер в @2, помещены кости.
@1's fresh bones=новые кости @1
@1's bones=кости @1

View File

@ -0,0 +1,8 @@
# textdomain: bones
Bones=Ben
@1's old bones=@1s Gamla ben
@1 died at @2.=@1 dog på @a.
@1 died at @2, and dropped their inventory.=@1 dog på @a, och tappade deras saker.
@1 died at @2, and bones were placed.=@1 dog på @2, och deras ben var placerade.
@1's fresh bones=@1s färska ben
@1's bones=@1s ben

View File

@ -0,0 +1,8 @@
# textdomain: bones
Bones=骨骸
@1's old bones=@1的旧骨骸
@1 died at @2.=@1在@2死亡。
@1 died at @2, and dropped their inventory.=@1在@2死亡丢掉了物品栏。
@1 died at @2, and bones were placed.=@1在@2死亡骨骸被放置。
@1's fresh bones=@1的新鲜骨骸
@1's bones=@1的骨骸

View File

@ -0,0 +1,8 @@
# textdomain: bones
Bones=骨骸
@1's old bones=@1的舊骨骸
@1 died at @2.=@1在@2死亡。
@1 died at @2, and dropped their inventory.=@1在@2死亡丟掉了物品欄。
@1 died at @2, and bones were placed.=@1在@2死亡骨骸被放置。
@1's fresh bones=@1的新鮮骨骸
@1's bones=@1的骨骸

View File

@ -225,3 +225,16 @@ minetest.register_craft({
replacements = {{"bucket:bucket_lava", "bucket:bucket_empty"}},
})
-- Register buckets as dungeon loot
if minetest.global_exists("dungeon_loot") then
dungeon_loot.register({
{name = "bucket:bucket_empty", chance = 0.55},
-- water in deserts/ice or above ground, lava otherwise
{name = "bucket:bucket_water", chance = 0.45,
types = {"sandstone", "desert", "ice"}},
{name = "bucket:bucket_water", chance = 0.45, y = {0, 32768},
types = {"normal"}},
{name = "bucket:bucket_lava", chance = 0.45, y = {-32768, -1},
types = {"normal"}},
})
end

View File

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

View File

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

View File

@ -0,0 +1,5 @@
# textdomain: bucket
Empty Bucket=Пустое Ведро
Water Bucket=Ведро с Водой
River Water Bucket=Ведро с Речной Водой
Lava Bucket=Ведро с Лавой

View File

@ -0,0 +1,5 @@
# textdomain: bucket
Empty Bucket=Tom hink
Water Bucket=Vatten hink
River Water Bucket=Flodvatten hink
Lava Bucket=Lava hink

View File

@ -0,0 +1,5 @@
# textdomain: bucket
Empty Bucket=空桶
Water Bucket=水桶
River Water Bucket=河水桶
Lava Bucket=岩浆桶

View File

@ -0,0 +1,5 @@
# textdomain: bucket
Empty Bucket=空桶
Water Bucket=水桶
River Water Bucket=河水桶
Lava Bucket=岩漿桶

View File

@ -1,3 +1,4 @@
name = bucket
description = Minetest Game mod: bucket
depends = default
optional_depends = dungeon_loot

0
mods/bucket/textures/bucket.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 205 B

After

Width:  |  Height:  |  Size: 205 B

View File

@ -102,7 +102,7 @@ minetest.register_decoration({
place_offset_y = 2,
sidelen = 80,
fill_ratio = 0.005,
biomes = {"grassland", "deciduous_forest", "floatland_grassland"},
biomes = {"grassland", "deciduous_forest"},
y_max = 31000,
y_min = 1,
decoration = {

View File

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

View File

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

View File

@ -0,0 +1,4 @@
# textdomain: butterflies
White Butterfly=Белая Бабочка
Red Butterfly=Красная Бабочка
Violet Butterfly=Фиолетовая Бабочка

View File

@ -0,0 +1,4 @@
# textdomain: butterflies
White Butterfly=Vit fjäril
Red Butterfly=Röd fjäril
Violet Butterfly=Violett fjäril

View File

@ -0,0 +1,4 @@
# textdomain: butterflies
White Butterfly=白蝴蝶
Red Butterfly=红蝴蝶
Violet Butterfly=紫蝴蝶

View File

@ -0,0 +1,4 @@
# textdomain: butterflies
White Butterfly=白蝴蝶
Red Butterfly=紅蝴蝶
Violet Butterfly=紫蝴蝶

View File

@ -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
@ -414,7 +414,7 @@ minetest.register_craftitem("carts:cart", {
end
minetest.sound_play({name = "default_place_node_metal", gain = 0.5},
{pos = pointed_thing.above})
{pos = pointed_thing.above}, true)
if not (creative and creative.is_enabled_for
and creative.is_enabled_for(placer:get_player_name())) then

View File

@ -19,3 +19,10 @@ carts.path_distance_max = 3
dofile(carts.modpath.."/functions.lua")
dofile(carts.modpath.."/rails.lua")
dofile(carts.modpath.."/cart_entity.lua")
-- Register rails as dungeon loot
if minetest.global_exists("dungeon_loot") then
dungeon_loot.register({
name = "carts:rail", chance = 0.35, count = {1, 6}
})
end

View File

@ -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)

View File

@ -0,0 +1,6 @@
# textdomain: carts
Cart=Pedati
(Sneak+Click to pick up)=(Selinap+Klik untuk ambil balik)
Rail=Landasan
Powered Rail=Landasan Berkuasa
Brake Rail=Landasan Brek

View File

@ -0,0 +1,6 @@
# textdomain: carts
Cart=Вагонетка
(Sneak+Click to pick up)=(Пригнитесь и кликните по вагонетке, чтобы забрать)
Rail=Рельса
Powered Rail=Механизированная Рельса
Brake Rail=Рельса с тормозом

View File

@ -0,0 +1,6 @@
# textdomain: carts
Cart=Vagn
(Sneak+Click to pick up)=(Shift+Klicka för att plocka upp)
Rail=Räls
Powered Rail=Aktiverad räls
Brake Rail=Broms räls

View File

@ -0,0 +1,6 @@
# textdomain: carts
Cart=矿车
(Sneak+Click to pick up)=(潜行+单击以捡起)
Rail=铁轨
Powered Rail=动力铁轨
Brake Rail=制动铁轨

View File

@ -0,0 +1,6 @@
# textdomain: carts
Cart=礦車
(Sneak+Click to pick up)=(潛行+單擊以撿起)
Rail=鐵軌
Powered Rail=動力鐵軌
Brake Rail=制動鐵軌

View File

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

View File

@ -1,3 +1,4 @@
name = carts
description = Carts (formerly boost_cart)
depends = default, player_api
optional_depends = dungeon_loot

Binary file not shown.

Before

Width:  |  Height:  |  Size: 684 B

After

Width:  |  Height:  |  Size: 456 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 618 B

After

Width:  |  Height:  |  Size: 436 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 660 B

After

Width:  |  Height:  |  Size: 494 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 698 B

After

Width:  |  Height:  |  Size: 434 B

View File

@ -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.

View File

@ -25,7 +25,9 @@ function creative.init_creative_inventory(player)
player_inventory[player_name] = {
size = 0,
filter = "",
start_i = 0
start_i = 0,
old_filter = nil, -- use only for caching in update_creative_inventory
old_content = nil
}
minetest.create_detached_inventory("creative_" .. player_name, {
@ -59,22 +61,64 @@ 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
end
if s:lower():find(filter, 1, true) then
return #s - #filter
end
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)
local creative_list = {}
local inv = player_inventory[player_name] or
creative.init_creative_inventory(minetest.get_player_by_name(player_name))
local player_inv = minetest.get_inventory({type = "detached", name = "creative_" .. player_name})
if inv.filter == inv.old_filter and tab_content == inv.old_content then
return
end
inv.old_filter = inv.filter
inv.old_content = tab_content
local items = inventory_cache[tab_content] or init_creative_cache(tab_content)
local 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
if def.name:find(inv.filter, 1, true) or
def.description:lower():find(inv.filter, 1, true) 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 match value first so closer matches appear earlier
order[name] = string.format("%02d", m) .. name
end
end
table.sort(creative_list)
table.sort(creative_list, function(a, b) return order[a] < order[b] end)
player_inv:set_size("main", #creative_list)
player_inv:set_list("main", creative_list)
inv.size = #creative_list
@ -105,21 +149,20 @@ function creative.register_tab(name, title, items)
local player_name = player:get_player_name()
creative.update_creative_inventory(player_name, items)
local inv = player_inventory[player_name]
local start_i = inv.start_i or 0
local pagenum = math.floor(start_i / (3*8) + 1)
local pagemax = math.ceil(inv.size / (3*8))
local pagenum = math.floor(inv.start_i / (4*8) + 1)
local pagemax = math.ceil(inv.size / (4*8))
local esc = minetest.formspec_escape
return sfinv.make_formspec(player, context,
"label[6.2,3.35;" .. minetest.colorize("#FFFF00", tostring(pagenum)) .. " / " .. tostring(pagemax) .. "]" ..
"label[5.8,4.15;" .. minetest.colorize("#FFFF00", tostring(pagenum)) .. " / " .. tostring(pagemax) .. "]" ..
[[
image[4.06,3.4;0.8,0.8;creative_trash_icon.png]
image[4.08,4.2;0.8,0.8;creative_trash_icon.png]
listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]
list[detached:creative_trash;main;4,3.3;1,1;]
list[detached:creative_trash;main;4.02,4.1;1,1;]
listring[]
image_button[5.4,3.25;0.8,0.8;creative_prev_icon.png;creative_prev;]
image_button[7.2,3.25;0.8,0.8;creative_next_icon.png;creative_next;]
image_button[2.1,3.25;0.8,0.8;creative_search_icon.png;creative_search;]
image_button[2.75,3.25;0.8,0.8;creative_clear_icon.png;creative_clear;]
image_button[5,4.05;0.8,0.8;creative_prev_icon.png;creative_prev;]
image_button[7.2,4.05;0.8,0.8;creative_next_icon.png;creative_next;]
image_button[2.63,4.05;0.8,0.8;creative_search_icon.png;creative_search;]
image_button[3.25,4.05;0.8,0.8;creative_clear_icon.png;creative_clear;]
]] ..
"tooltip[creative_search;" .. esc(S("Search")) .. "]" ..
"tooltip[creative_clear;" .. esc(S("Reset")) .. "]" ..
@ -127,9 +170,9 @@ function creative.register_tab(name, title, items)
"tooltip[creative_next;" .. esc(S("Next page")) .. "]" ..
"listring[current_player;main]" ..
"field_close_on_enter[creative_filter;false]" ..
"field[0.3,3.5;2.2,1;creative_filter;;" .. esc(inv.filter) .. "]" ..
"field[0.3,4.2;2.8,1.2;creative_filter;;" .. esc(inv.filter) .. "]" ..
"listring[detached:creative_" .. player_name .. ";main]" ..
"list[detached:creative_" .. player_name .. ";main;0,0;8,3;" .. tostring(start_i) .. "]" ..
"list[detached:creative_" .. player_name .. ";main;0,0;8,4;" .. tostring(inv.start_i) .. "]" ..
creative.formspec_add, true)
end,
on_enter = function(self, player, context)
@ -147,27 +190,25 @@ function creative.register_tab(name, title, items)
if fields.creative_clear then
inv.start_i = 0
inv.filter = ""
creative.update_creative_inventory(player_name, items)
sfinv.set_player_inventory_formspec(player, context)
elseif fields.creative_search or
fields.key_enter_field == "creative_filter" then
inv.start_i = 0
inv.filter = fields.creative_filter:lower()
creative.update_creative_inventory(player_name, items)
sfinv.set_player_inventory_formspec(player, context)
elseif not fields.quit then
local start_i = inv.start_i or 0
if fields.creative_prev then
start_i = start_i - 3*8
start_i = start_i - 4*8
if start_i < 0 then
start_i = inv.size - (inv.size % (3*8))
start_i = inv.size - (inv.size % (4*8))
if inv.size == start_i then
start_i = math.max(0, inv.size - (3*8))
start_i = math.max(0, inv.size - (4*8))
end
end
elseif fields.creative_next then
start_i = start_i + 3*8
start_i = start_i + 4*8
if start_i >= inv.size then
start_i = 0
end
@ -180,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)

View File

@ -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

View File

@ -0,0 +1,10 @@
# textdomain: creative
Allow player to use creative inventory=Benarkan pemain menggunakan inventori kreatif
Search=Cari
Reset=Set semula
Previous page=Halaman sebelumnya
Next page=Halaman seterusnya
All=Semua
Nodes=Nod
Tools=Alatan
Items=Item

View File

@ -0,0 +1,10 @@
# textdomain: creative
Allow player to use creative inventory=Разрешить игроку использовать творческий инвентарь
Search=Поиск
Reset=Сброс
Previous page=Предыдущая страница
Next page=Следующая страница
All=Всё
Nodes=Ноды
Tools=Инструменты
Items=Предметы

View File

@ -0,0 +1,10 @@
# textdomain: creative
Allow player to use creative inventory=Tilllåt spelare att används kreativa saker
Search=Sök
Reset=Återställ
Previous page=Förra sidan
Next page=Nästa sidan
All=Alla
Nodes=Noder
Tools=Verktyg
Items=Saker

View File

@ -0,0 +1,10 @@
# textdomain: creative
Allow player to use creative inventory=允许玩家使用创造模式物品栏
Search=搜索
Reset=重置
Previous page=上一页
Next page=下一页
All=所有
Nodes=节点
Tools=工具
Items=物品

View File

@ -0,0 +1,10 @@
# textdomain: creative
Allow player to use creative inventory=允許玩家使用創造模式物品欄
Search=搜索
Reset=重置
Previous page=上一頁
Next page=下一頁
All=所有
Nodes=節點
Tools=工具
Items=物品

View File

@ -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=

View File

@ -123,6 +123,8 @@ paramat (CC BY-SA 3.0):
default_fence_rail_junglewood
default_fence_rail_pine_wood
default_fence_rail_wood -- Derived from a texture by BlockMen (CC BY-SA 3.0)
gui_hotbar.png
gui_hotbar_selected.png
TumeniNodes (CC BY-SA 3.0):
default_desert_cobble.png -- Derived from a texture by brunob.santos (CC BY-SA 3.0)
@ -149,8 +151,10 @@ BlockMen (CC BY-SA 3.0):
default_chest_top.png
default_mineral_mese.png
default_meselamp.png
bubble.png
gui_*.png
gui_formbg.png
gui_furnace_arrow_bg.png
gui_furnace_arrow_fg.png
gui_hb_bg.png
sofar (CC BY-SA 3.0):
default_aspen_sapling
@ -191,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
@ -248,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
@ -330,6 +336,10 @@ http://freesound.org/people/Ryding/sounds/94337/
Ferk (CC0 1.0):
default_item_smoke.ogg, based on a sound by http://opengameart.org/users/bart
sonictechtonic (CC BY 3.0):
https://www.freesound.org/people/sonictechtonic/sounds/241872/
player_damage.ogg
Models
------

View File

@ -44,9 +44,10 @@ 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})
minetest.sound_play(sound, {gain = 0.3, pos = pos,
max_hear_distance = 10}, true)
end
default.chest.open_chests = {}
@ -75,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"
@ -128,10 +130,10 @@ function default.chest.register_chest(name, d)
end
minetest.sound_play(def.sound_open, {gain = 0.3,
pos = pos, max_hear_distance = 10})
pos = pos, max_hear_distance = 10}, true)
if not default.chest.chest_lid_obstructed(pos) then
minetest.swap_node(pos,
{ name = "default:" .. name .. "_open",
{ name = name .. "_open",
param2 = node.param2 })
end
minetest.after(0.2, minetest.show_formspec,
@ -199,10 +201,10 @@ function default.chest.register_chest(name, d)
end
def.on_rightclick = function(pos, node, clicker)
minetest.sound_play(def.sound_open, {gain = 0.3, pos = pos,
max_hear_distance = 10})
max_hear_distance = 10}, true)
if not default.chest.chest_lid_obstructed(pos) then
minetest.swap_node(pos, {
name = "default:" .. name .. "_open",
name = name .. "_open",
param2 = node.param2 })
end
minetest.after(0.2, minetest.show_formspec,
@ -214,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
@ -247,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",
@ -264,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",
@ -302,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",
@ -318,3 +322,39 @@ default.chest.register_chest("chest_locked", {
groups = {choppy = 2, oddly_breakable_by_hand = 2},
protected = true,
})
minetest.register_craft({
output = "default:chest",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"group:wood", "", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
}
})
minetest.register_craft({
output = "default:chest_locked",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"group:wood", "default:steel_ingot", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
}
})
minetest.register_craft( {
type = "shapeless",
output = "default:chest_locked",
recipe = {"default:chest", "default:steel_ingot"},
})
minetest.register_craft({
type = "fuel",
recipe = "default:chest",
burntime = 30,
})
minetest.register_craft({
type = "fuel",
recipe = "default:chest_locked",
burntime = 30,
})

View File

@ -56,13 +56,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "default:stick 4",
recipe = {
{"group:wood"},
}
})
minetest.register_craft({
output = "default:sign_wall_steel 3",
recipe = {
@ -81,273 +74,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "default:torch 4",
recipe = {
{"default:coal_lump"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:pick_wood",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"", "group:stick", ""},
{"", "group:stick", ""},
}
})
minetest.register_craft({
output = "default:pick_stone",
recipe = {
{"group:stone", "group:stone", "group:stone"},
{"", "group:stick", ""},
{"", "group:stick", ""},
}
})
minetest.register_craft({
output = "default:pick_steel",
recipe = {
{"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
{"", "group:stick", ""},
{"", "group:stick", ""},
}
})
minetest.register_craft({
output = "default:pick_bronze",
recipe = {
{"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"},
{"", "group:stick", ""},
{"", "group:stick", ""},
}
})
minetest.register_craft({
output = "default:pick_mese",
recipe = {
{"default:mese_crystal", "default:mese_crystal", "default:mese_crystal"},
{"", "group:stick", ""},
{"", "group:stick", ""},
}
})
minetest.register_craft({
output = "default:pick_diamond",
recipe = {
{"default:diamond", "default:diamond", "default:diamond"},
{"", "group:stick", ""},
{"", "group:stick", ""},
}
})
minetest.register_craft({
output = "default:shovel_wood",
recipe = {
{"group:wood"},
{"group:stick"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:shovel_stone",
recipe = {
{"group:stone"},
{"group:stick"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:shovel_steel",
recipe = {
{"default:steel_ingot"},
{"group:stick"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:shovel_bronze",
recipe = {
{"default:bronze_ingot"},
{"group:stick"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:shovel_mese",
recipe = {
{"default:mese_crystal"},
{"group:stick"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:shovel_diamond",
recipe = {
{"default:diamond"},
{"group:stick"},
{"group:stick"},
}
})
-- Axes
-- Recipes face left to match appearence in textures and inventory
minetest.register_craft({
output = "default:axe_wood",
recipe = {
{"group:wood", "group:wood"},
{"group:wood", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "default:axe_stone",
recipe = {
{"group:stone", "group:stone"},
{"group:stone", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "default:axe_steel",
recipe = {
{"default:steel_ingot", "default:steel_ingot"},
{"default:steel_ingot", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "default:axe_bronze",
recipe = {
{"default:bronze_ingot", "default:bronze_ingot"},
{"default:bronze_ingot", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "default:axe_mese",
recipe = {
{"default:mese_crystal", "default:mese_crystal"},
{"default:mese_crystal", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "default:axe_diamond",
recipe = {
{"default:diamond", "default:diamond"},
{"default:diamond", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "default:sword_wood",
recipe = {
{"group:wood"},
{"group:wood"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:sword_stone",
recipe = {
{"group:stone"},
{"group:stone"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:sword_steel",
recipe = {
{"default:steel_ingot"},
{"default:steel_ingot"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:sword_bronze",
recipe = {
{"default:bronze_ingot"},
{"default:bronze_ingot"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:sword_mese",
recipe = {
{"default:mese_crystal"},
{"default:mese_crystal"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:sword_diamond",
recipe = {
{"default:diamond"},
{"default:diamond"},
{"group:stick"},
}
})
minetest.register_craft({
output = "default:skeleton_key",
recipe = {
{"default:gold_ingot"},
}
})
minetest.register_craft({
output = "default:chest",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"group:wood", "", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
}
})
minetest.register_craft({
output = "default:chest_locked",
recipe = {
{"group:wood", "group:wood", "group:wood"},
{"group:wood", "default:steel_ingot", "group:wood"},
{"group:wood", "group:wood", "group:wood"},
}
})
minetest.register_craft( {
type = "shapeless",
output = "default:chest_locked",
recipe = {"default:chest", "default:steel_ingot"},
})
minetest.register_craft({
output = "default:furnace",
recipe = {
{"group:stone", "group:stone", "group:stone"},
{"group:stone", "", "group:stone"},
{"group:stone", "group:stone", "group:stone"},
}
})
minetest.register_craft({
output = "default:coalblock",
recipe = {
@ -357,13 +83,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "default:coal_lump 9",
recipe = {
{"default:coalblock"},
}
})
minetest.register_craft({
output = "default:steelblock",
recipe = {
@ -373,13 +92,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "default:steel_ingot 9",
recipe = {
{"default:steelblock"},
}
})
minetest.register_craft({
output = "default:copperblock",
recipe = {
@ -389,13 +101,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "default:copper_ingot 9",
recipe = {
{"default:copperblock"},
}
})
minetest.register_craft({
output = "default:tinblock",
recipe = {
@ -405,22 +110,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "default:tin_ingot 9",
recipe = {
{"default:tinblock"},
}
})
minetest.register_craft({
output = "default:bronze_ingot 9",
recipe = {
{"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"},
{"default:copper_ingot", "default:tin_ingot", "default:copper_ingot"},
{"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"},
}
})
minetest.register_craft({
output = "default:bronzeblock",
recipe = {
@ -446,13 +135,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "default:gold_ingot 9",
recipe = {
{"default:goldblock"},
}
})
minetest.register_craft({
output = "default:diamondblock",
recipe = {
@ -462,13 +144,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "default:diamond 9",
recipe = {
{"default:diamondblock"},
}
})
minetest.register_craft({
output = "default:sandstone",
recipe = {
@ -573,13 +248,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "default:clay_lump 4",
recipe = {
{"default:clay"},
}
})
minetest.register_craft({
output = "default:brick",
recipe = {
@ -588,29 +256,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "default:clay_brick 4",
recipe = {
{"default:brick"},
}
})
minetest.register_craft({
output = "default:paper",
recipe = {
{"default:papyrus", "default:papyrus", "default:papyrus"},
}
})
minetest.register_craft({
output = "default:book",
recipe = {
{"default:paper"},
{"default:paper"},
{"default:paper"},
}
})
minetest.register_craft({
output = "default:bookshelf",
recipe = {
@ -647,29 +292,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "default:mese_crystal 9",
recipe = {
{"default:mese"},
}
})
minetest.register_craft({
output = "default:mese_crystal_fragment 9",
recipe = {
{"default:mese_crystal"},
}
})
minetest.register_craft({
output = "default:mese_crystal",
recipe = {
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
}
})
minetest.register_craft({
output = "default:meselamp",
recipe = {
@ -687,13 +309,6 @@ minetest.register_craft({
}
})
minetest.register_craft({
output = "default:obsidian_shard 9",
recipe = {
{"default:obsidian"}
}
})
minetest.register_craft({
output = "default:obsidian",
recipe = {
@ -833,50 +448,6 @@ minetest.register_craft({
recipe = "default:desert_cobble",
})
minetest.register_craft({
type = "cooking",
output = "default:steel_ingot",
recipe = "default:iron_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:copper_ingot",
recipe = "default:copper_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:tin_ingot",
recipe = "default:tin_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:gold_ingot",
recipe = "default:gold_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:clay_brick",
recipe = "default:clay_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:gold_ingot",
recipe = "default:skeleton_key",
cooktime = 5,
})
minetest.register_craft({
type = "cooking",
output = "default:gold_ingot",
recipe = "default:key",
cooktime = 5,
})
--
-- Fuels
@ -1005,7 +576,6 @@ minetest.register_craft({
burntime = 7,
})
minetest.register_craft({
type = "fuel",
recipe = "default:fence_aspen_wood",
@ -1067,7 +637,6 @@ minetest.register_craft({
burntime = 7,
})
minetest.register_craft({
type = "fuel",
recipe = "default:bush_stem",
@ -1134,36 +703,12 @@ minetest.register_craft({
burntime = 60,
})
minetest.register_craft({
type = "fuel",
recipe = "default:torch",
burntime = 4,
})
minetest.register_craft({
type = "fuel",
recipe = "default:sign_wall_wood",
burntime = 10,
})
minetest.register_craft({
type = "fuel",
recipe = "default:chest",
burntime = 30,
})
minetest.register_craft({
type = "fuel",
recipe = "default:chest_locked",
burntime = 30,
})
minetest.register_craft({
type = "fuel",
recipe = "default:coal_lump",
burntime = 40,
})
minetest.register_craft({
type = "fuel",
recipe = "default:coalblock",
@ -1194,57 +739,8 @@ minetest.register_craft({
burntime = 2,
})
minetest.register_craft({
type = "fuel",
recipe = "default:paper",
burntime = 1,
})
minetest.register_craft({
type = "fuel",
recipe = "default:book",
burntime = 3,
})
minetest.register_craft({
type = "fuel",
recipe = "default:book_written",
burntime = 3,
})
minetest.register_craft({
type = "fuel",
recipe = "default:dry_shrub",
burntime = 2,
})
minetest.register_craft({
type = "fuel",
recipe = "group:stick",
burntime = 1,
})
minetest.register_craft({
type = "fuel",
recipe = "default:pick_wood",
burntime = 6,
})
minetest.register_craft({
type = "fuel",
recipe = "default:shovel_wood",
burntime = 4,
})
minetest.register_craft({
type = "fuel",
recipe = "default:axe_wood",
burntime = 6,
})
minetest.register_craft({
type = "fuel",
recipe = "default:sword_wood",
burntime = 5,
})

View File

@ -3,19 +3,6 @@
-- support for MT game translation.
local S = default.get_translator
minetest.register_craftitem("default:stick", {
description = S("Stick"),
inventory_image = "default_stick.png",
groups = {stick = 1, flammable = 2},
})
minetest.register_craftitem("default:paper", {
description = S("Paper"),
inventory_image = "default_paper.png",
groups = {flammable = 3},
})
local lpp = 14 -- Lines per book's page
local function book_on_use(itemstack, user)
local player_name = user:get_player_name()
@ -158,54 +145,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
player:set_wielded_item(stack)
end)
minetest.register_craftitem("default:book", {
description = S("Book"),
inventory_image = "default_book.png",
groups = {book = 1, flammable = 3},
on_use = book_on_use,
})
minetest.register_craftitem("default:book_written", {
description = S("Book with Text"),
inventory_image = "default_book_written.png",
groups = {book = 1, not_in_creative_inventory = 1, flammable = 3},
stack_max = 1,
on_use = book_on_use,
})
minetest.register_craft({
type = "shapeless",
output = "default:book_written",
recipe = {"default:book", "default:book_written"}
})
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
if itemstack:get_name() ~= "default:book_written" then
return
end
local original
local index
for i = 1, player:get_inventory():get_size("craft") do
if old_craft_grid[i]:get_name() == "default:book_written" then
original = old_craft_grid[i]
index = i
end
end
if not original then
return
end
local copymeta = original:get_meta():to_table()
-- copy of the book held by player's mouse cursor
itemstack:get_meta():from_table(copymeta)
-- put the book with metadata back in the craft grid
craft_inv:set_stack("craft", index, original)
end)
minetest.register_craftitem("default:skeleton_key", {
description = S("Skeleton Key"),
inventory_image = "default_key_skeleton.png",
groups = {key = 1},
on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type ~= "node" then
return itemstack
@ -258,91 +200,9 @@ minetest.register_craftitem("default:skeleton_key", {
end
})
minetest.register_craftitem("default:coal_lump", {
description = S("Coal Lump"),
inventory_image = "default_coal_lump.png",
groups = {coal = 1, flammable = 1}
})
minetest.register_craftitem("default:iron_lump", {
description = S("Iron Lump"),
inventory_image = "default_iron_lump.png"
})
minetest.register_craftitem("default:copper_lump", {
description = S("Copper Lump"),
inventory_image = "default_copper_lump.png"
})
minetest.register_craftitem("default:tin_lump", {
description = S("Tin Lump"),
inventory_image = "default_tin_lump.png"
})
minetest.register_craftitem("default:mese_crystal", {
description = S("Mese Crystal"),
inventory_image = "default_mese_crystal.png",
})
minetest.register_craftitem("default:gold_lump", {
description = S("Gold Lump"),
inventory_image = "default_gold_lump.png"
})
minetest.register_craftitem("default:diamond", {
description = S("Diamond"),
inventory_image = "default_diamond.png",
})
minetest.register_craftitem("default:clay_lump", {
description = S("Clay Lump"),
inventory_image = "default_clay_lump.png",
})
minetest.register_craftitem("default:steel_ingot", {
description = S("Steel Ingot"),
inventory_image = "default_steel_ingot.png"
})
minetest.register_craftitem("default:copper_ingot", {
description = S("Copper Ingot"),
inventory_image = "default_copper_ingot.png"
})
minetest.register_craftitem("default:tin_ingot", {
description = S("Tin Ingot"),
inventory_image = "default_tin_ingot.png"
})
minetest.register_craftitem("default:bronze_ingot", {
description = S("Bronze Ingot"),
inventory_image = "default_bronze_ingot.png"
})
minetest.register_craftitem("default:gold_ingot", {
description = S("Gold Ingot"),
inventory_image = "default_gold_ingot.png"
})
minetest.register_craftitem("default:mese_crystal_fragment", {
description = S("Mese Crystal Fragment"),
inventory_image = "default_mese_crystal_fragment.png",
})
minetest.register_craftitem("default:clay_brick", {
description = S("Clay Brick"),
inventory_image = "default_clay_brick.png",
})
minetest.register_craftitem("default:obsidian_shard", {
description = S("Obsidian Shard"),
inventory_image = "default_obsidian_shard.png",
})
minetest.register_craftitem("default:flint", {
description = S("Flint"),
inventory_image = "default_flint.png"
})
--
-- Craftitem registry
--
minetest.register_craftitem("default:blueberries", {
description = S("Blueberries"),
@ -350,3 +210,329 @@ minetest.register_craftitem("default:blueberries", {
groups = {food_blueberries = 1, food_berry = 1},
on_use = minetest.item_eat(2),
})
minetest.register_craftitem("default:book", {
description = S("Book"),
inventory_image = "default_book.png",
groups = {book = 1, flammable = 3},
on_use = book_on_use,
})
minetest.register_craftitem("default:book_written", {
description = S("Book with Text"),
inventory_image = "default_book_written.png",
groups = {book = 1, not_in_creative_inventory = 1, flammable = 3},
stack_max = 1,
on_use = book_on_use,
})
minetest.register_craftitem("default:bronze_ingot", {
description = S("Bronze Ingot"),
inventory_image = "default_bronze_ingot.png"
})
minetest.register_craftitem("default:clay_brick", {
description = S("Clay Brick"),
inventory_image = "default_clay_brick.png",
})
minetest.register_craftitem("default:clay_lump", {
description = S("Clay Lump"),
inventory_image = "default_clay_lump.png",
})
minetest.register_craftitem("default:coal_lump", {
description = S("Coal Lump"),
inventory_image = "default_coal_lump.png",
groups = {coal = 1, flammable = 1}
})
minetest.register_craftitem("default:copper_ingot", {
description = S("Copper Ingot"),
inventory_image = "default_copper_ingot.png"
})
minetest.register_craftitem("default:copper_lump", {
description = S("Copper Lump"),
inventory_image = "default_copper_lump.png"
})
minetest.register_craftitem("default:diamond", {
description = S("Diamond"),
inventory_image = "default_diamond.png",
})
minetest.register_craftitem("default:flint", {
description = S("Flint"),
inventory_image = "default_flint.png"
})
minetest.register_craftitem("default:gold_ingot", {
description = S("Gold Ingot"),
inventory_image = "default_gold_ingot.png"
})
minetest.register_craftitem("default:gold_lump", {
description = S("Gold Lump"),
inventory_image = "default_gold_lump.png"
})
minetest.register_craftitem("default:iron_lump", {
description = S("Iron Lump"),
inventory_image = "default_iron_lump.png"
})
minetest.register_craftitem("default:mese_crystal", {
description = S("Mese Crystal"),
inventory_image = "default_mese_crystal.png",
})
minetest.register_craftitem("default:mese_crystal_fragment", {
description = S("Mese Crystal Fragment"),
inventory_image = "default_mese_crystal_fragment.png",
})
minetest.register_craftitem("default:obsidian_shard", {
description = S("Obsidian Shard"),
inventory_image = "default_obsidian_shard.png",
})
minetest.register_craftitem("default:paper", {
description = S("Paper"),
inventory_image = "default_paper.png",
groups = {flammable = 3},
})
minetest.register_craftitem("default:steel_ingot", {
description = S("Steel Ingot"),
inventory_image = "default_steel_ingot.png"
})
minetest.register_craftitem("default:stick", {
description = S("Stick"),
inventory_image = "default_stick.png",
groups = {stick = 1, flammable = 2},
})
minetest.register_craftitem("default:tin_ingot", {
description = S("Tin Ingot"),
inventory_image = "default_tin_ingot.png"
})
minetest.register_craftitem("default:tin_lump", {
description = S("Tin Lump"),
inventory_image = "default_tin_lump.png"
})
--
-- Crafting recipes
--
minetest.register_craft({
output = "default:book",
recipe = {
{"default:paper"},
{"default:paper"},
{"default:paper"},
}
})
default.register_craft_metadata_copy("default:book", "default:book_written")
minetest.register_craft({
output = "default:bronze_ingot 9",
recipe = {
{"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"},
{"default:copper_ingot", "default:tin_ingot", "default:copper_ingot"},
{"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"},
}
})
minetest.register_craft({
output = "default:clay_brick 4",
recipe = {
{"default:brick"},
}
})
minetest.register_craft({
output = "default:clay_lump 4",
recipe = {
{"default:clay"},
}
})
minetest.register_craft({
output = "default:coal_lump 9",
recipe = {
{"default:coalblock"},
}
})
minetest.register_craft({
output = "default:copper_ingot 9",
recipe = {
{"default:copperblock"},
}
})
minetest.register_craft({
output = "default:diamond 9",
recipe = {
{"default:diamondblock"},
}
})
minetest.register_craft({
output = "default:gold_ingot 9",
recipe = {
{"default:goldblock"},
}
})
minetest.register_craft({
output = "default:mese_crystal",
recipe = {
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
}
})
minetest.register_craft({
output = "default:mese_crystal 9",
recipe = {
{"default:mese"},
}
})
minetest.register_craft({
output = "default:mese_crystal_fragment 9",
recipe = {
{"default:mese_crystal"},
}
})
minetest.register_craft({
output = "default:obsidian_shard 9",
recipe = {
{"default:obsidian"}
}
})
minetest.register_craft({
output = "default:paper",
recipe = {
{"default:papyrus", "default:papyrus", "default:papyrus"},
}
})
minetest.register_craft({
output = "default:skeleton_key",
recipe = {
{"default:gold_ingot"},
}
})
minetest.register_craft({
output = "default:steel_ingot 9",
recipe = {
{"default:steelblock"},
}
})
minetest.register_craft({
output = "default:stick 4",
recipe = {
{"group:wood"},
}
})
minetest.register_craft({
output = "default:tin_ingot 9",
recipe = {
{"default:tinblock"},
}
})
--
-- Cooking recipes
--
minetest.register_craft({
type = "cooking",
output = "default:clay_brick",
recipe = "default:clay_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:copper_ingot",
recipe = "default:copper_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:gold_ingot",
recipe = "default:gold_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:gold_ingot",
recipe = "default:key",
cooktime = 5,
})
minetest.register_craft({
type = "cooking",
output = "default:gold_ingot",
recipe = "default:skeleton_key",
cooktime = 5,
})
minetest.register_craft({
type = "cooking",
output = "default:steel_ingot",
recipe = "default:iron_lump",
})
minetest.register_craft({
type = "cooking",
output = "default:tin_ingot",
recipe = "default:tin_lump",
})
--
-- Fuels
--
minetest.register_craft({
type = "fuel",
recipe = "default:book",
burntime = 3,
})
minetest.register_craft({
type = "fuel",
recipe = "default:book_written",
burntime = 3,
})
minetest.register_craft({
type = "fuel",
recipe = "default:coal_lump",
burntime = 40,
})
minetest.register_craft({
type = "fuel",
recipe = "default:paper",
burntime = 1,
})
minetest.register_craft({
type = "fuel",
recipe = "group:stick",
burntime = 1,
})

View File

@ -141,7 +141,7 @@ default.cool_lava = function(pos, node)
minetest.set_node(pos, {name = "default:stone"})
end
minetest.sound_play("default_cool_lava",
{pos = pos, max_hear_distance = 16, gain = 0.25})
{pos = pos, max_hear_distance = 16, gain = 0.25}, true)
end
if minetest.settings:get_bool("enable_lavacooling") ~= false then
@ -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
})
@ -581,6 +617,40 @@ minetest.register_abm({
end
})
--
-- Register a craft to copy the metadata of items
--
function default.register_craft_metadata_copy(ingredient, result)
minetest.register_craft({
type = "shapeless",
output = result,
recipe = {ingredient, result}
})
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
if itemstack:get_name() ~= result then
return
end
local original
local index
for i = 1, #old_craft_grid do
if old_craft_grid[i]:get_name() == result then
original = old_craft_grid[i]
index = i
end
end
if not original then
return
end
local copymeta = original:get_meta():to_table()
itemstack:get_meta():from_table(copymeta)
-- put the book with metadata back in the craft grid
craft_inv:set_stack("craft", index, original)
end)
end
--
-- NOTICE: This method is not an official part of the API yet.
@ -605,7 +675,7 @@ function default.can_interact_with_node(player, pos)
-- Is player wielding the right key?
local item = player:get_wielded_item()
if item:get_name() == "default:key" then
if minetest.get_item_group(item:get_name(), "key") == 1 then
local key_meta = item:get_meta()
if key_meta:get_string("secret") == "" then

View File

@ -352,3 +352,12 @@ minetest.register_node("default:furnace_active", {
allow_metadata_inventory_move = allow_metadata_inventory_move,
allow_metadata_inventory_take = allow_metadata_inventory_take,
})
minetest.register_craft({
output = "default:furnace",
recipe = {
{"group:stone", "group:stone", "group:stone"},
{"group:stone", "", "group:stone"},
{"group:stone", "group:stone", "group:stone"},
}
})

View File

@ -14,11 +14,22 @@ default.get_translator = S
-- GUI related stuff
minetest.register_on_joinplayer(function(player)
player:set_formspec_prepend([[
-- Set formspec prepend
local formspec = [[
bgcolor[#080808BB;true]
background[5,5;1,1;gui_formbg.png;true]
background9[5,5;1,1;gui_formbg.png;true;10]
listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] ]])
listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] ]]
local name = player:get_player_name()
local info = minetest.get_player_information(name)
if info.formspec_version > 1 then
formspec = formspec .. "background9[5,5;1,1;gui_formbg.png;true;10]"
else
formspec = formspec .. "background[5,5;1,1;gui_formbg.png;true]"
end
player:set_formspec_prepend(formspec)
-- Set hotbar textures
player:hud_set_hotbar_image("gui_hotbar.png")
player:hud_set_hotbar_selected_image("gui_hotbar_selected.png")
end)
function default.get_hotbar_bg(x,y)

View File

@ -15,12 +15,12 @@ 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,
})
}, true)
minetest.add_particlespawner({
amount = 3,
time = 0.1,
@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,211 @@
# textdomain: default
Locked Chest=Peti Berkunci
Locked Chest (owned by @1)=Peti Berkunci (milik @1)
You do not own this chest.=Ini bukan peti milik anda.
a locked chest=peti berkunci
Chest=Peti
Stick=Serpihan Kayu
Paper=Kertas
"@1" by @2="@1" oleh @2
Book=Buku
Book with Text=Buku Bertulisan
Skeleton Key=Kunci Induk
Key to @1's @2=Kunci @2 milik @1
Coal Lump=Longgokan Batu Arang
Iron Lump=Longgokan Besi
Copper Lump=Longgokan Tembaga
Tin Lump=Longgokan Timah
Mese Crystal=Kristal Mese
Gold Lump=Longgokan Emas
Diamond=Berlian
Clay Lump=Longgokan Tanah Liat
Steel Ingot=Jongkong Keluli
Copper Ingot=Jongkong Tembaga
Tin Ingot=Jongkong Timah
Bronze Ingot=Jongkong Gangsa
Gold Ingot=Jongkong Emas
Mese Crystal Fragment=Serpihan Mese
Clay Brick=Bata Tanah Liat
Obsidian Shard=Serpihan Obsidia
Flint=Batu Api
Blueberries=Beri Biru
Furnace is empty=Relau masih kosong
100% (output full)=100% (keluaran penuh)
@1%=@1%
Empty=Kosong
Not cookable=Tidak boleh dimasak
Furnace active=Relau aktif
Furnace inactive=Relau tidak aktif
(Item: @1; Fuel: @2)=(Item: @1; Bahan api: @2)
Furnace=Relau
Stone=Batu
Cobblestone=Batu Buntar
Stone Brick=Bata Batu
Stone Block=Bongkah Batu
Mossy Cobblestone=Batu Buntar Berlumut
Desert Stone=Batu Gurun
Desert Cobblestone=Batu Buntar Gurun
Desert Stone Brick=Bata Batu Gurun
Desert Stone Block=Bongkah Batu Gurun
Sandstone=Batu Pasir
Sandstone Brick=Bata Batu Pasir
Sandstone Block=Bongkah Batu Pasir
Desert Sandstone=Batu Pasir Gurun
Desert Sandstone Brick=Bata Batu Pasir Gurun
Desert Sandstone Block=Bongkah Batu Pasir Gurun
Silver Sandstone=Batu Pasir Perak
Silver Sandstone Brick=Bata Batu Pasir Perak
Silver Sandstone Block=Bongkah Batu Pasir Perak
Obsidian=Obsidia
Obsidian Brick=Bata Obsidia
Obsidian Block=Bongkah Obsidia
Dirt=Tanah
Dirt with Grass=Tanah Berumput
Dirt with Grass and Footsteps=Tanah Berumput dan Tapak Kaki
Dirt with Dry Grass=Tanah Berumput Kering
Dirt with Snow=Tanah Bersalji
Dirt with Rainforest Litter=Tanah Bersarap Hutan Hujan
Dirt with Coniferous Litter=Tanah Bersarap Hutan Konifer
Dry Dirt=Tanah Kering
Dry Dirt with Dry Grass=Tanah Kering Berumput Kering
Permafrost=Ibun Abadi
Permafrost with Stones=Ibun Abadi Berbatu
Permafrost with Moss=Ibun Abadi Berlumut
Sand=Pasir
Desert Sand=Pasir Gurun
Silver Sand=Pasir Perak
Gravel=Kelikir
Clay=Tanah Liat
Snow=Salji
Snow Block=Bongkah Salji
Ice=Ais
Cave Ice=Ais Gua
Apple Tree=Kayu Pokok Epal
Apple Wood Planks=Papan Kayu Epal
Apple Tree Sapling=Anak Pokok Epal
Apple Tree Leaves=Daun Pokok Epal
Apple=Epal
Apple Marker=Penanda Epal
Jungle Tree=Kayu Pokok Hutan
Jungle Wood Planks=Papan Kayu Hutan
Jungle Tree Leaves=Daun Pokok Hutan
Jungle Tree Sapling=Anak Pokok Hutan
Emergent Jungle Tree Sapling=Anak Pokok Hutan Kembang
Pine Tree=Kayu Pokok Pain
Pine Wood Planks=Papan Kayu Pain
Pine Needles=Daun Pokok Pain
Pine Tree Sapling=Anak Pokok Pain
Acacia Tree=Kayu Pokok Akasia
Acacia Wood Planks=Papan Kayu Akasia
Acacia Tree Leaves=Daun Pokok Akasia
Acacia Tree Sapling=Anak Pokok Akasia
Aspen Tree=Kayu Pokok Aspen
Aspen Wood Planks=Papan Kayu Aspen
Aspen Tree Leaves=Daun Pokok Aspen
Aspen Tree Sapling=Anak Pokok Aspen
Coal Ore=Bijih Batu Arang
Coal Block=Bongkah Batu Arang
Iron Ore=Bijih Besi
Steel Block=Bongkah Keluli
Copper Ore=Bijih Tembaga
Copper Block=Bongkah Tembaga
Tin Ore=Bijih Timah
Tin Block=Bongkah Timah
Bronze Block=Bongkah Gangsa
Mese Ore=Bijih Mese
Mese Block=Bongkah Mese
Gold Ore=Bijih Emas
Gold Block=Bongkah Emas
Diamond Ore=Bijih Intan
Diamond Block=Bongkah Intan
Cactus=Kaktus
Large Cactus Seedling=Benih Kaktus Besar
Papyrus=Papirus
Dry Shrub=Pokok Renek Kering
Jungle Grass=Rumput Hutan
Grass=Rumput
Dry Grass=Rumput Kering
Fern=Paku Pakis
Marram Grass=Rumput Maram
Bush Stem=Batang Belukar
Bush Leaves=Daun Belukar
Bush Sapling=Anak Belukar
Blueberry Bush Leaves with Berries=Daun Belukar Beri Biru Berberi
Blueberry Bush Leaves=Daun Belukar Beri Biru
Blueberry Bush Sapling=Anak Belukar Beri Biru
Acacia Bush Stem=Batang Belukar Akasia
Acacia Bush Leaves=Daun Belukar Akasia
Acacia Bush Sapling=Anak Belukar Akasia
Pine Bush Stem=Batang Belukar Pain
Pine Bush Needles=Daun Belukar Pain
Pine Bush Sapling=Anak Belukar Pain
Kelp=Kelpa
Green Coral=Batu Karang Hijau
Pink Coral=Batu Karang Merah Jambu
Cyan Coral=Batu Karang Biru Kehijauan
Brown Coral=Batu Karang Perang
Orange Coral=Batu Karang Jingga
Coral Skeleton= Rangka Karang
Water Source=Sumber Air
Flowing Water=Air Mengalir
River Water Source=Sumber Air Sungai
Flowing River Water=Air Sungai Mengalir
Lava Source=Sumber Lava
Flowing Lava=Lava Mengalir
Empty Bookshelf=Rak Buku Kosong
Bookshelf (@1 written, @2 empty books)=Rak Buku (@1 buku bertulis, @2 buku kosong)
Bookshelf=Rak Buku
Text too long=Tulisan terlalu panjang
Wooden Sign=Papan Tanda Kayu
Steel Sign=Papan Tanda Keluli
Wooden Ladder=Tangga Panjat Kayu
Steel Ladder=Tangga Panjat Keluli
Apple Wood Fence=Pagar Kayu Epal
Acacia Wood Fence=Pagar Kayu Akasia
Jungle Wood Fence=Pagar Kayu Hutan
Pine Wood Fence=Pagar Kayu Pain
Aspen Wood Fence=Pagar Kayu Aspen
Apple Wood Fence Rail=Pagar Rel Kayu Epal
Acacia Wood Fence Rail=Pagar Rel Kayu Akasia
Jungle Wood Fence Rail=Pagar Rel Kayu Hutan
Pine Wood Fence Rail=Pagar Rel Kayu Pain
Aspen Wood Fence Rail=Pagar Rel Kayu Aspen
Glass=Kaca
Obsidian Glass=Kaca Obsidia
Brick Block=Bongkah Bata
Mese Lamp=Lampu Mese
Mese Post Light=Lampu Tiang Mese
Cloud=Awan
Wooden Pickaxe=Beliung Kayu
Stone Pickaxe=Beliung Batu
Bronze Pickaxe=Beliung Gangsa
Steel Pickaxe=Beliung Keluli
Mese Pickaxe=Beliung Mese
Diamond Pickaxe=Beliung Intan
Wooden Shovel=Penyodok Kayu
Stone Shovel=Penyodok Batu
Bronze Shovel=Penyodok Gangsa
Steel Shovel=Penyodok Keluli
Mese Shovel=Penyodok Mese
Diamond Shovel=Penyodok Intan
Wooden Axe=Kapak Kayu
Stone Axe=Kapak Batu
Bronze Axe=Kapak Gangsa
Steel Axe=Kapak Keluli
Mese Axe=Kapak Mese
Diamond Axe=Kapak Intan
Wooden Sword=Pedang Kayu
Stone Sword=Pedang Batu
Bronze Sword=Pedang Gangsa
Steel Sword=Pedang Keluli
Mese Sword=Pedang Mese
Diamond Sword=Pedang Intan
Key=Kunci
Torch=Obor
@1 will intersect protection on growth.=@1 akan masuk kawasan perlindungan lain apabila ia tumbuh.
Title:=Tajuk:
Contents:=Kandungan:
Save=Simpan
by @1=oleh @1
Page @1 of @2=Ms. @1 / @2
"@1"="@1"

View File

@ -0,0 +1,211 @@
# textdomain: default
Locked Chest=Заблокированный Сундук
Locked Chest (owned by @1)=Заблокированный Сундук (владелец: @1)
You do not own this chest.=Вы не владелец этого сундука.
a locked chest=заблокированный сундук
Chest=Сундук
Stick=Палка
Paper=Бумага
"@1" by @2="@1" @2
Book=Книга
Book with Text=Книга с Текстом
Skeleton Key=Ключ Скелета
Key to @1's @2=Ключ к @2 от @1
Coal Lump=Кусок Угля
Iron Lump=Кусок Железа
Copper Lump=Кусок Меди
Tin Lump=Кусок Олова
Mese Crystal=Кристалл Месе
Gold Lump=Кусок Золота
Diamond=Алмаз
Clay Lump=Ком Глины
Steel Ingot=Железный Брусок
Copper Ingot=Медный Брусок
Tin Ingot=Оловянный Брусок
Bronze Ingot=Бронзовый Брусок
Gold Ingot=Золотой Брусок
Mese Crystal Fragment=Осколок Кристалла Месе
Clay Brick=Глиняный Кирпич
Obsidian Shard=Обсидиановый Осколок
Flint=Огниво
Blueberries=Черника
Furnace is empty=Печь пустая
100% (output full)=100% (полное приготовление)
@1%=@1%
Empty=Пустое
Not cookable=Не может быть приготовлено
Furnace active=Печь зажжена
Furnace inactive=Печь не зажжена
(Item: @1; Fuel: @2)=(Предмет: @1; Топливо: @2)
Furnace=Печь
Stone=Камень
Cobblestone=Булыжник
Stone Brick=Каменный Кирпич
Stone Block=Каменный Блок
Mossy Cobblestone=Мшистый Булыжник
Desert Stone=Пустынный Камень
Desert Cobblestone=Пустынный Булыжник
Desert Stone Brick=Пустынный Каменный Кирпич
Desert Stone Block=Пустынный Каменный Блок
Sandstone=Песчаник
Sandstone Brick=Песчаниковый Кирпич
Sandstone Block=Песчаниковый Блок
Desert Sandstone=Пустынный Песчаник
Desert Sandstone Brick=Пустынный Песчаниковый Кирпич
Desert Sandstone Block=Пустынный Песчаниковый Блок
Silver Sandstone=Серебряный Песчаник
Silver Sandstone Brick=Серебряный Песчаниковый Кирпич
Silver Sandstone Block=Серебряный Песчаниковый Блок
Obsidian=Обсидиан
Obsidian Brick=Обсидиановый Кирпич
Obsidian Block=Обсидиановый Блок
Dirt=Земля
Dirt with Grass=Земля с Травой
Dirt with Grass and Footsteps=Земля с Травой и Следами
Dirt with Dry Grass=Земля с Сухой Травой
Dirt with Snow=Земля Со Снегом
Dirt with Rainforest Litter=Земля с Тропической Подстилкой
Dirt with Coniferous Litter=Земля с Сосновой Подстилкой
Dry Dirt=Сухая Земля
Dry Dirt with Dry Grass=Сухая Земля с Сухой Травой
Permafrost=Замороженная Почва
Permafrost with Stones=Замороженная Почва с Камнями
Permafrost with Moss=Замороженная Почва с Мхом
Sand=Песок
Desert Sand=Пустынный Песок
Silver Sand=Серебряный Песок
Gravel=Гравий
Clay=Глиняный Блок
Snow=Снег
Snow Block=Снежный Блок
Ice=Лёд
Cave Ice=Пещерный Лёд
Apple Tree=Яблоневый Ствол
Apple Wood Planks=Яблоневые Деревянные Доски
Apple Tree Sapling=Яблоневый Саженец
Apple Tree Leaves=Яблоневая Листва
Apple=Яблоко
Apple Marker=Яблочная Метка
Jungle Tree=Ствол Тропического Дерева
Jungle Wood Planks=Деревянные Доски Тропического Дерева
Jungle Tree Leaves=Листва Тропического Дерева
Jungle Tree Sapling=Саженец Тропического Дерева
Emergent Jungle Tree Sapling=Выросший Саженец Тропического Дерева
Pine Tree=Сосновый Ствол
Pine Wood Planks=Сосновые Деревянные Доски
Pine Needles=Сосновая Хвоя
Pine Tree Sapling=Сосновый Саженец
Acacia Tree=Ствол Акации
Acacia Wood Planks=Деревянные Доски Акации
Acacia Tree Leaves=Листва Акации
Acacia Tree Sapling=Саженец Акации
Aspen Tree=Осиновый Ствол
Aspen Wood Planks=Осиновые Деревянные Доски
Aspen Tree Leaves=Осиновая Листва
Aspen Tree Sapling=Осиновый Саженец
Coal Ore=Уголь
Coal Block=Угольный Блок
Iron Ore=Железная Руда
Steel Block=Стальной Блок
Copper Ore=Медная Руда
Copper Block=Медный Блок
Tin Ore=Оловянная Руда
Tin Block=Оловянный Блок
Bronze Block=Бронзовый Блок
Mese Ore=Месевая Руда
Mese Block=Месевый Блок
Gold Ore=Золотая Руда
Gold Block=Золотой Блок
Diamond Ore=Алмаз
Diamond Block=Алмазный Блок
Cactus=Кактус
Large Cactus Seedling=Кактусовый Саженец
Papyrus=Папирус
Dry Shrub=Сухой Куст
Jungle Grass=Тропическая Трава
Grass=Трава
Dry Grass=Сухая Трава
Fern=Папоротник
Marram Grass=Песколюб
Bush Stem=Ствол Яблочного Деревца
Bush Leaves=Листья Яблочного Деревца
Bush Sapling=Саженца яблочного деревца
Blueberry Bush Leaves with Berries=Куст Черники с Ягодами
Blueberry Bush Leaves=Куст Черники
Blueberry Bush Sapling=Саженца Куста Черники
Acacia Bush Stem=Ствол Деревца Акации
Acacia Bush Leaves=Листья Деревца Акации
Acacia Bush Sapling=Саженца Деревца Акации
Pine Bush Stem=Сосновое Деревце
Pine Bush Needles=Хвоя Соснового Деревца
Pine Bush Sapling=Саженца Соснового Деревца
Kelp=Ламинария
Green Coral=Зеленый Коралл
Pink Coral=Розовый Коралл
Cyan Coral=Голубой Коралл
Brown Coral=Бурый Коралл
Orange Coral=Оранжевый Коралл
Coral Skeleton=Коралловый Остов
Water Source=Водный Источник
Flowing Water=Текущая Вода
River Water Source=Речной Водный Источник
Flowing River Water=Текущая Речная Вода
Lava Source=Лавовый Источник
Flowing Lava=Текущая Лава
Empty Bookshelf=Пустая Книжная Полка
Bookshelf (@1 written, @2 empty books)=Книжная Полка (@1 написано, @2 чистые книги)
Bookshelf=Книжная Полка
Text too long=Текст слишком длинный
Wooden Sign=Деревянная Табличка
Steel Sign=Стальная Табличка
Wooden Ladder=Деревянная Лестница
Steel Ladder=Стальная Лестница
Apple Wood Fence=Яблоневый Деревянный Забор
Acacia Wood Fence=Деревянный Забор Из Акации
Jungle Wood Fence=Деревянный Забор Из Тропического Дерева
Pine Wood Fence=Сосновый Деревянный Забор
Aspen Wood Fence=Осиновый Деревянный Забор
Apple Wood Fence Rail=Яблоневый Деревянный Реечный Забор
Acacia Wood Fence Rail=Деревянный Реечный Забор Из Акации
Jungle Wood Fence Rail=Деревянный Реечный Забор Из Тропического Дерева
Pine Wood Fence Rail=Сосновый Деревянный Реечный Забор
Aspen Wood Fence Rail=Осиновый Деревянный Реечный Забор
Glass=Стекло
Obsidian Glass=Обсидиановое Стекло
Brick Block=Кирпичный Блок
Mese Lamp=Месе Лампа
Mese Post Light=Столб с Месе Фонарем
Cloud=Облако
Wooden Pickaxe=Деревянная Кирка
Stone Pickaxe=Каменная Кирка
Bronze Pickaxe=Бронзовая Кирка
Steel Pickaxe=Стальная Кирка
Mese Pickaxe=Месе Кирка
Diamond Pickaxe=Алмазная Кирка
Wooden Shovel=Деревянная Лопата
Stone Shovel=Каменная Лопата
Bronze Shovel=Бронзовая Лопата
Steel Shovel=Стальная Лопата
Mese Shovel=Месе Лопата
Diamond Shovel=Алмазная Лопата
Wooden Axe=Деревянный Топор
Stone Axe=Каменный Топор
Bronze Axe=Бронзовый Топор
Steel Axe=Стальной Топор
Mese Axe=Месе Топор
Diamond Axe=Алмазный Топор
Wooden Sword=Деревянный Меч
Stone Sword=Каменный Меч
Bronze Sword=Бронзовый Меч
Steel Sword=Стальной Меч
Mese Sword=Месе Меч
Diamond Sword=Алмазный Меч
Key=Ключ
Torch=Факел
@1 will intersect protection on growth.=@1 пересечёт защиту по росту.
Title:=Заголовок:
Contents:=Содержимое:
Save=Сохранить
by @1=@1
Page @1 of @2=Страница @1 из @2
"@1"="@1"

View File

@ -0,0 +1,211 @@
## textdomain: default
Locked Chest=Låst kista
Locked Chest (owned by @1)=Låst kista (Ägd av @1)
You do not own this chest.=Du äger inte denna kistan.
a locked chest=en låst kista
Chest=Kista
Stick=Pinne
Paper=Papper
"@1" by @2="@1" av @2
Book=Bok
Book with Text=Bok med text
Skeleton Key=Skelett Nyckel
Key to @1's @2=Nyckel till @1s @2
Coal Lump=Kol Klumo
Iron Lump=Järn Klump
Copper Lump=Koppar Klump
Tin Lump=Tenn Klump
Mese Crystal=Mese Kristall
Gold Lump=Guld Klump
Diamond=Diamant
Clay Lump=Lerklump
Steel Ingot=Stål tacka
Copper Ingot=Koppar tacka
Tin Ingot=Tenn tacka
Bronze Ingot=Brons tacka
Gold Ingot=Guld tacka
Mese Crystal Fragment=Mese Kristall Fragment
Clay Brick=Tegelsten
Obsidian Shard=Obsidian Skärva
Flint=Flinta
Blueberries=Blåbär
Furnace is empty=Ugnen är tom
100% (output full)=100% (utgången full)
@1%=@1%
Empty=Tom
Not cookable=Inte kokbar
Furnace active=Ugn aktiv
Furnace inactive=Ugn inaktiv
(Item: @1; Fuel: @2)=(Sak: @1; Bränsle: @2)
Furnace=Ugn
Stone=Sten
Cobblestone=Kullersten
Stone Brick=Stentegel
Stone Block=Sten block
Mossy Cobblestone=Mossig kullersten
Desert Stone=Öken sten
Desert Cobblestone=Öken kullersten
Desert Stone Brick=Öken stentegel
Desert Stone Block=Öken sten block
Sandstone=Sandsten
Sandstone Brick=Sandstenstegel
Sandstone Block=Sandsten block
Desert Sandstone=Öken sandsten
Desert Sandstone Brick=Öken Sandstenstegel
Desert Sandstone Block=Öken sandsten block
Silver Sandstone=Silver sandsten
Silver Sandstone Brick=Silver Sandstenstegel
Silver Sandstone Block=Silver sandsten block
Obsidian=Obsidian
Obsidian Brick=Obsidiantegel
Obsidian Block=Obsidian block
Dirt=Jord
Dirt with Grass=Jord med gräs
Dirt with Grass and Footsteps=Jord med gräs och fotsteg
Dirt with Dry Grass=Jord med torrt gräs
Dirt with Snow=Jord med snö
Dirt with Rainforest Litter=Jord med regnskogströ
Dirt with Coniferous Litter=Jord med Barrträd
Dry Dirt=Torr jord
Dry Dirt with Dry Grass=Torr jord med torrt gräs
Permafrost=Permafrost
Permafrost with Stones=Permafrost med sten
Permafrost with Moss=Permafrost med mossa
Sand=Sand
Desert Sand=Öken sand
Silver Sand=Silver sand
Gravel=Grus
Clay=Lera
Snow=Snö
Snow Block=Snö block
Ice=Is
Cave Ice=Grott Is
Apple Tree=Äpple Träd
Apple Wood Planks=Äpple Plankor
Apple Tree Sapling=Äpple Planta
Apple Tree Leaves=Äpple Löv
Apple=Äpple
Apple Marker=Äpple Markör
Jungle Tree=Djungel Träd
Jungle Wood Planks=Djungel Plankor
Jungle Tree Leaves=Djungel Löv
Jungle Tree Sapling=Djungel Planta
Emergent Jungle Tree Sapling=Nybliven Djungel Planta
Pine Tree=Tall
Pine Wood Planks= Tall Plankor
Pine Needles=Granbarr
Pine Tree Sapling=Tall Planta
Acacia Tree=Akacia Träd
Acacia Wood Planks=Akacia Plankor
Acacia Tree Leaves=Akacia Löv
Acacia Tree Sapling=Akacia Planta
Aspen Tree=Asp
Aspen Wood Planks=Asp Plankor
Aspen Tree Leaves=Asp Löv
Aspen Tree Sapling=Asp Planta
Coal Ore=Kol Malm
Coal Block=Kol Block
Iron Ore=Järn Malm
Steel Block=Stål Block
Copper Ore=Koppar Malm
Copper Block=Koppar Block
Tin Ore=Tenn Malm
Tin Block=Tenn Block
Bronze Block=Brons Block
Mese Ore=Mese Malm
Mese Block=Mese Block
Gold Ore=Guld Malm
Gold Block=Guld Block
Diamond Ore=Diamant Malm
Diamond Block=Diamant Block
Cactus=Kaktus
Large Cactus Seedling=Stor kaktusplanta
Papyrus=Papyrus
Dry Shrub=Torr Buske
Jungle Grass=Djungel Gräs
Grass=Gräs
Dry Grass=Torrt Gräs
Fern=Ormbunke
Marram Grass=Marram Gräs
Bush Stem=Busk Stam
Bush Leaves=Busk Löv
Bush Sapling=Busk Planta
Blueberry Bush Leaves with Berries=Blåbärsbusks Löv med Bär
Blueberry Bush Leaves=Blåbärsbusks Löv
Blueberry Bush Sapling=Blåbärsbusks Plantga
Acacia Bush Stem=Akacia Busks Stam
Acacia Bush Leaves=Akacia Busks Löv
Acacia Bush Sapling=Akacia Busks Planta
Pine Bush Stem=Tall Busks Stam
Pine Bush Needles=Tall Busks Granbarr
Pine Bush Sapling=Tall Busks Planta
Kelp=Brunalg
Green Coral=Grön Korall
Pink Coral=Rosa Korall
Cyan Coral=Cyan Korall
Brown Coral=Brun Korall
Orange Coral=Orange Korall
Coral Skeleton=Korall Skelett
Water Source=Vattenkälla
Flowing Water=Flödande Vatten
River Water Source=Flodvattenkälla
Flowing River Water=Flödande Flodvatten
Lava Source=Lavakälla
Flowing Lava=Flödande Lava
Empty Bookshelf=Tom Bokhylla
Bookshelf (@1 written, @2 empty books)=Bokhylla (@1 skriva, @2 tomma böcker)
Bookshelf=Bokhylla
Text too long=Text för lång
Wooden Sign=Trä Skylt
Steel Sign=Stål Skylt
Wooden Ladder=Trä Stege
Steel Ladder=Stål Stege
Apple Wood Fence=Äpple Trä Staket
Acacia Wood Fence=Akacia Trä Staket
Jungle Wood Fence=Djungel Trä Staket
Pine Wood Fence=Tall Trä Staket
Aspen Wood Fence=Asp Trä Staket
Apple Wood Fence Rail=Äpple Trä Staket Pinne
Acacia Wood Fence Rail=Akacia Trä Staket Pinne
Jungle Wood Fence Rail=Djungel Trä Staket Pinne
Pine Wood Fence Rail=Tall Trä Staket Pinne
Aspen Wood Fence Rail=Asp Trä Staket Pinne
Glass=Glas
Obsidian Glass=Obsidian Glas
Brick Block=Tegelstens Block
Mese Lamp=Mese Lampa
Mese Post Light=Mese Postljus
Cloud=Moln
Wooden Pickaxe=Trä Hacka
Stone Pickaxe=Sten Hacka
Bronze Pickaxe=Brons Hacka
Steel Pickaxe=Stål Hacka
Mese Pickaxe=Mese Hacka
Diamond Pickaxe=Diamant Hacka
Wooden Shovel=Trä Spade
Stone Shovel=Sten Spade
Bronze Shovel=Brons Spade
Steel Shovel=Stål Spade
Mese Shovel=Mese Spade
Diamond Shovel=Diamant Spade
Wooden Axe=Trä Yxa
Stone Axe=Sten Yxa
Bronze Axe=Brons Yxa
Steel Axe=Stål Yxa
Mese Axe=Mese Yxa
Diamond Axe=Diamant Yxa
Wooden Sword=Trä Svärd
Stone Sword=Sten Svärd
Bronze Sword=Brons Svärd
Steel Sword=Stål Svärd
Mese Sword=Mese Svärd
Diamond Sword=Diamant Svärd
Key=Nyckel
Torch=Fakla
@1 will intersect protection on growth.=@1 kommer korsa skyddet mot tillväxt.
Title:=Titel:
Contents:=Innehåll:
Save=Spara
by @1=av @1
Page @1 of @2=Sida @1 av @2
"@1"="@1"

View File

@ -0,0 +1,211 @@
# textdomain: default
Locked Chest=已上锁的箱子
Locked Chest (owned by @1)=已上锁的箱子(属于@1所有
You do not own this chest.=这个箱子不属于你所有。
a locked chest=一个已上锁的箱子
Chest=箱子
Stick=棒
Paper=纸
"@1" by @2="@1" by @2
Book=书
Book with Text=带文字的书
Skeleton Key=万能钥匙
Key to @1's @2=@1的@2的钥匙
Coal Lump=煤块
Iron Lump=铁块
Copper Lump=铜块
Tin Lump=锡块
Mese Crystal=黄石晶体
Gold Lump=金块
Diamond=钻石
Clay Lump=粘土块
Steel Ingot=铁锭
Copper Ingot=铜锭
Tin Ingot=锡锭
Bronze Ingot=青铜锭
Gold Ingot=金锭
Mese Crystal Fragment=黄石晶体碎片
Clay Brick=粘土砖
Obsidian Shard=黑曜石碎片
Flint=燧石
Blueberries=蓝莓
Furnace is empty=熔炉是空的
100% (output full)=100输出已满
@1%=@1%
Empty=空
Not cookable=不可烹饪
Furnace active=熔炉正在运转
Furnace inactive=熔炉未使用
(Item: @1; Fuel: @2)=(项目:@1;燃料:@2
Furnace=熔炉
Stone=石
Cobblestone=鹅卵石
Stone Brick=石砖
Stone Block=石方块
Mossy Cobblestone=苔藓覆盖的鹅卵石
Desert Stone=沙漠石
Desert Cobblestone=沙漠鹅卵石
Desert Stone Brick=沙漠鹅卵石砖
Desert Stone Block=沙漠鹅卵石方块
Sandstone=砂岩
Sandstone Brick=砂岩砖
Sandstone Block=砂岩方块
Desert Sandstone=沙漠砂岩
Desert Sandstone Brick=沙漠砂岩砖
Desert Sandstone Block=沙漠砂岩方块
Silver Sandstone=银砂岩
Silver Sandstone Brick=银砂岩砖
Silver Sandstone Block=银砂岩方块
Obsidian=黑曜石
Obsidian Brick=黑曜石砖
Obsidian Block=黑曜石方块
Dirt=土
Dirt with Grass=带草的土
Dirt with Grass and Footsteps=带草的土及脚印
Dirt with Dry Grass=带干草的土
Dirt with Snow=带雪的土
Dirt with Rainforest Litter=雨林腐土
Dirt with Coniferous Litter=针叶林腐土
Dry Dirt=干土
Dry Dirt with Dry Grass=干土和干草
Permafrost=多年冻土
Permafrost with Stones=带石头的多年冻土
Permafrost with Moss=生苔的多年冻土
Sand=沙
Desert Sand=沙漠沙
Silver Sand=银沙
Gravel=沙砾
Clay=粘土
Snow=雪
Snow Block=雪方块
Ice=冰
Cave Ice=洞穴冰
Apple Tree=苹果树
Apple Wood Planks=苹果树木板
Apple Tree Sapling=苹果树苗
Apple Tree Leaves=苹果树叶
Apple=苹果
Apple Marker=苹果标记
Jungle Tree=丛林树
Jungle Wood Planks=丛林树木板
Jungle Tree Leaves=丛林树叶
Jungle Tree Sapling=丛林树苗
Emergent Jungle Tree Sapling=应急丛林树苗
Pine Tree=松树
Pine Wood Planks=松树木板
Pine Needles=松针
Pine Tree Sapling=松树树苗
Acacia Tree=相思树
Acacia Wood Planks=相思树木板
Acacia Tree Leaves=相思树叶
Acacia Tree Sapling=相思树树苗
Aspen Tree=白杨树
Aspen Wood Planks=白杨树木板
Aspen Tree Leaves=白杨树叶
Aspen Tree Sapling=白杨树树苗
Coal Ore=煤炭矿石
Coal Block=煤炭方块
Iron Ore=铁矿石
Steel Block=钢方块
Copper Ore=铜矿石
Copper Block=铜方块
Tin Ore=锡矿石
Tin Block=锡方块
Bronze Block=青铜方块
Mese Ore=黄石矿石
Mese Block=黄石方块
Gold Ore=金矿石
Gold Block=金方块
Diamond Ore=钻石矿石
Diamond Block=钻石方块
Cactus=仙人掌
Large Cactus Seedling=大仙人掌苗
Papyrus=莎草纸
Dry Shrub=干灌木
Jungle Grass=丛林草
Grass=草
Dry Grass=干草
Fern=蕨
Marram Grass=滨草
Bush Stem=灌木
Bush Leaves=灌木叶
Bush Sapling=灌木苗
Blueberry Bush Leaves with Berries=蓝莓灌木叶与浆果
Blueberry Bush Leaves=蓝莓灌木叶
Blueberry Bush Sapling=蓝莓灌木苗
Acacia Bush Stem=相思灌木
Acacia Bush Leaves=相思灌木叶
Acacia Bush Sapling=相思灌木苗
Pine Bush Stem=松树灌木
Pine Bush Needles=松树灌木针
Pine Bush Sapling=松树灌木苗
Kelp=海带
Green Coral=绿珊瑚
Pink Coral=淡红珊瑚
Cyan Coral=青珊瑚
Brown Coral=棕珊瑚
Orange Coral=橙珊瑚
Coral Skeleton=珊瑚骨架
Water Source=水方块
Flowing Water=流动的水
River Water Source=河水方块
Flowing River Water=流动的河水
Lava Source=岩浆方块
Flowing Lava=流动的岩浆
Empty Bookshelf=空书架
Bookshelf (@1 written, @2 empty books)=书架(@1本有字的书@2本空书
Bookshelf=书架
Text too long=文字太长
Wooden Sign=木牌
Steel Sign=铁牌
Wooden Ladder=木梯子
Steel Ladder=铁梯子
Apple Wood Fence=苹果木栅栏
Acacia Wood Fence=相思木栅栏
Jungle Wood Fence=丛林木栅栏
Pine Wood Fence=松木栅栏
Aspen Wood Fence=白杨木栅栏
Apple Wood Fence Rail=苹果木栏杆
Acacia Wood Fence Rail=相思木栏杆
Jungle Wood Fence Rail=丛林木栏杆
Pine Wood Fence Rail=松木栏杆
Aspen Wood Fence Rail=白杨木栏杆
Glass=玻璃
Obsidian Glass=黑曜石玻璃
Brick Block=砖方块
Mese Lamp=黄石灯
Mese Post Light=黄石柱灯
Cloud=云
Wooden Pickaxe=木镐
Stone Pickaxe=石镐
Bronze Pickaxe=青铜镐
Steel Pickaxe=铁镐
Mese Pickaxe=黄石镐
Diamond Pickaxe=钻石镐
Wooden Shovel=木铲
Stone Shovel=石铲
Bronze Shovel=青铜铲
Steel Shovel=铁铲
Mese Shovel=黄石铲
Diamond Shovel=钻石铲
Wooden Axe=木斧
Stone Axe=石斧
Bronze Axe=青铜斧
Steel Axe=铁斧
Mese Axe=黄石斧
Diamond Axe=钻石斧
Wooden Sword=木剑
Stone Sword=石剑
Bronze Sword=青铜剑
Steel Sword=铁剑
Mese Sword=黄石剑
Diamond Sword=钻石剑
Key=钥匙
Torch=火把
@1 will intersect protection on growth.=@1将与增长的保护相交。
Title:=标题:
Contents:=内容:
Save=保存
by @1=由@1
Page @1 of @2=第@1页共@2页。
"@1"="@1"

View File

@ -0,0 +1,211 @@
# textdomain: default
Locked Chest=已上鎖的箱子
Locked Chest (owned by @1)=已上鎖的箱子(屬於@1所有
You do not own this chest.=這個箱子不屬於你所有。
a locked chest=一個已上鎖的箱子
Chest=箱子
Stick=棒
Paper=紙
"@1" by @2="@1" by @2
Book=書
Book with Text=帶文字的書
Skeleton Key=萬能鑰匙
Key to @1's @2=@1的@2的鑰匙
Coal Lump=煤塊
Iron Lump=鐵塊
Copper Lump=銅塊
Tin Lump=錫塊
Mese Crystal=黃石晶體
Gold Lump=金塊
Diamond=鑽石
Clay Lump=粘土塊
Steel Ingot=鐵錠
Copper Ingot=銅錠
Tin Ingot=錫錠
Bronze Ingot=青銅錠
Gold Ingot=金錠
Mese Crystal Fragment=黃石晶體碎片
Clay Brick=粘土磚
Obsidian Shard=黑曜石碎片
Flint=燧石
Blueberries=藍莓
Furnace is empty=熔爐是空的
100% (output full)=100輸出已滿
@1%=@1%
Empty=空
Not cookable=不可烹飪
Furnace active=熔爐正在運轉
Furnace inactive=熔爐未使用
(Item: @1; Fuel: @2)=(項目:@1;燃料:@2
Furnace=熔爐
Stone=石
Cobblestone=鵝卵石
Stone Brick=石磚
Stone Block=石方塊
Mossy Cobblestone=苔蘚覆蓋的鵝卵石
Desert Stone=沙漠石
Desert Cobblestone=沙漠鵝卵石
Desert Stone Brick=沙漠鵝卵石磚
Desert Stone Block=沙漠鵝卵石方塊
Sandstone=砂岩
Sandstone Brick=砂岩磚
Sandstone Block=砂岩方塊
Desert Sandstone=沙漠砂岩
Desert Sandstone Brick=沙漠砂岩磚
Desert Sandstone Block=沙漠砂岩方塊
Silver Sandstone=銀砂岩
Silver Sandstone Brick=銀砂岩磚
Silver Sandstone Block=銀砂岩方塊
Obsidian=黑曜石
Obsidian Brick=黑曜石磚
Obsidian Block=黑曜石方塊
Dirt=土
Dirt with Grass=帶草的土
Dirt with Grass and Footsteps=帶草的土及腳印
Dirt with Dry Grass=帶乾草的土
Dirt with Snow=帶雪的土
Dirt with Rainforest Litter=雨林腐土
Dirt with Coniferous Litter=針葉林腐土
Dry Dirt=乾土
Dry Dirt with Dry Grass=乾土和乾草
Permafrost=多年凍土
Permafrost with Stones=帶石頭的多年凍土
Permafrost with Moss=生苔的多年凍土
Sand=沙
Desert Sand=沙漠沙
Silver Sand=銀沙
Gravel=沙礫
Clay=粘土
Snow=雪
Snow Block=雪方塊
Ice=冰
Cave Ice=洞穴冰
Apple Tree=蘋果樹
Apple Wood Planks=蘋果樹木板
Apple Tree Sapling=蘋果樹苗
Apple Tree Leaves=蘋果樹葉
Apple=蘋果
Apple Marker=蘋果標記
Jungle Tree=叢林樹
Jungle Wood Planks=叢林樹木板
Jungle Tree Leaves=叢林樹葉
Jungle Tree Sapling=叢林樹苗
Emergent Jungle Tree Sapling=應急叢林樹苗
Pine Tree=松樹
Pine Wood Planks=松樹木板
Pine Needles=松針
Pine Tree Sapling=松樹樹苗
Acacia Tree=相思樹
Acacia Wood Planks=相思樹木板
Acacia Tree Leaves=相思樹葉
Acacia Tree Sapling=相思樹樹苗
Aspen Tree=白楊樹
Aspen Wood Planks=白楊樹木板
Aspen Tree Leaves=白楊樹葉
Aspen Tree Sapling=白楊樹樹苗
Coal Ore=煤炭礦石
Coal Block=煤炭方塊
Iron Ore=鐵礦石
Steel Block=鋼方塊
Copper Ore=銅礦石
Copper Block=銅方塊
Tin Ore=錫礦石
Tin Block=錫方塊
Bronze Block=青銅方塊
Mese Ore=黃石礦石
Mese Block=黃石方塊
Gold Ore=金礦石
Gold Block=金方塊
Diamond Ore=鑽石礦石
Diamond Block=鑽石方塊
Cactus=仙人掌
Large Cactus Seedling=大仙人掌苗
Papyrus=莎草紙
Dry Shrub=幹灌木
Jungle Grass=叢林草
Grass=草
Dry Grass=乾草
Fern=蕨
Marram Grass=濱草
Bush Stem=灌木
Bush Leaves=灌木葉
Bush Sapling=灌木苗
Blueberry Bush Leaves with Berries=藍莓灌木葉與漿果
Blueberry Bush Leaves=藍莓灌木葉
Blueberry Bush Sapling=藍莓灌木苗
Acacia Bush Stem=相思灌木
Acacia Bush Leaves=相思灌木葉
Acacia Bush Sapling=相思灌木苗
Pine Bush Stem=松樹灌木
Pine Bush Needles=松樹灌木針
Pine Bush Sapling=松樹灌木苗
Kelp=海帶
Green Coral=綠珊瑚
Pink Coral=淡紅珊瑚
Cyan Coral=青珊瑚
Brown Coral=棕珊瑚
Orange Coral=橙珊瑚
Coral Skeleton=珊瑚骨架
Water Source=水方塊
Flowing Water=流動的水
River Water Source=河水方塊
Flowing River Water=流動的河水
Lava Source=岩漿方塊
Flowing Lava=流動的岩漿
Empty Bookshelf=空書架
Bookshelf (@1 written, @2 empty books)=書架(@1本有字的書@2本空書
Bookshelf=書架
Text too long=文字太長
Wooden Sign=木牌
Steel Sign=鐵牌
Wooden Ladder=木梯子
Steel Ladder=鐵梯子
Apple Wood Fence=蘋果木柵欄
Acacia Wood Fence=相思木柵欄
Jungle Wood Fence=叢林木柵欄
Pine Wood Fence=松木柵欄
Aspen Wood Fence=白楊木柵欄
Apple Wood Fence Rail=蘋果木欄杆
Acacia Wood Fence Rail=相思木欄杆
Jungle Wood Fence Rail=叢林木欄杆
Pine Wood Fence Rail=松木欄杆
Aspen Wood Fence Rail=白楊木欄杆
Glass=玻璃
Obsidian Glass=黑曜石玻璃
Brick Block=磚方塊
Mese Lamp=黃石燈
Mese Post Light=黃石柱燈
Cloud=雲
Wooden Pickaxe=木鎬
Stone Pickaxe=石鎬
Bronze Pickaxe=青銅鎬
Steel Pickaxe=鐵鎬
Mese Pickaxe=黃石鎬
Diamond Pickaxe=鑽石鎬
Wooden Shovel=木鏟
Stone Shovel=石鏟
Bronze Shovel=青銅鏟
Steel Shovel=鐵鏟
Mese Shovel=黃石鏟
Diamond Shovel=鑽石鏟
Wooden Axe=木斧
Stone Axe=石斧
Bronze Axe=青銅斧
Steel Axe=鐵斧
Mese Axe=黃石斧
Diamond Axe=鑽石斧
Wooden Sword=木劍
Stone Sword=石劍
Bronze Sword=青銅劍
Steel Sword=鐵劍
Mese Sword=黃石劍
Diamond Sword=鑽石劍
Key=鑰匙
Torch=火把
@1 will intersect protection on growth.=@1將與增長的保護相交。
Title:=標題:
Contents:=內容:
Save=保存
by @1=由@1
Page @1 of @2=第@1頁共@2頁。
"@1"="@1"

View File

@ -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=

View File

@ -576,7 +576,7 @@ function default.register_ores()
-- Only where default:dirt is present as surface material
biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest",
"deciduous_forest", "deciduous_forest_shore", "rainforest",
"rainforest_swamp", "floatland_coniferous_forest"}
"rainforest_swamp"}
})
-- Gravel
@ -890,7 +890,7 @@ end
-- All mapgens except mgv6
function default.register_biomes(upper_limit)
function default.register_biomes()
-- Icesheet
@ -909,7 +909,7 @@ function default.register_biomes(upper_limit)
depth_riverbed = 2,
node_dungeon = "default:ice",
node_dungeon_stair = "stairs:stair_ice",
y_max = upper_limit,
y_max = 31000,
y_min = -8,
heat_point = 0,
humidity_point = 73,
@ -956,7 +956,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit,
y_max = 31000,
y_min = 47,
heat_point = 0,
humidity_point = 40,
@ -1043,7 +1043,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit,
y_max = 31000,
y_min = 4,
heat_point = 25,
humidity_point = 70,
@ -1095,7 +1095,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit,
y_max = 31000,
y_min = 4,
heat_point = 20,
humidity_point = 35,
@ -1146,7 +1146,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit,
y_max = 31000,
y_min = 6,
heat_point = 50,
humidity_point = 35,
@ -1213,7 +1213,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit,
y_max = 31000,
y_min = 6,
heat_point = 45,
humidity_point = 70,
@ -1280,7 +1280,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit,
y_max = 31000,
y_min = 1,
heat_point = 60,
humidity_point = 68,
@ -1347,7 +1347,7 @@ function default.register_biomes(upper_limit)
depth_riverbed = 2,
node_dungeon = "default:desert_stone",
node_dungeon_stair = "stairs:stair_desert_stone",
y_max = upper_limit,
y_max = 31000,
y_min = 4,
heat_point = 92,
humidity_point = 16,
@ -1397,7 +1397,7 @@ function default.register_biomes(upper_limit)
depth_riverbed = 2,
node_dungeon = "default:sandstonebrick",
node_dungeon_stair = "stairs:stair_sandstone_block",
y_max = upper_limit,
y_max = 31000,
y_min = 4,
heat_point = 60,
humidity_point = 0,
@ -1446,7 +1446,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit,
y_max = 31000,
y_min = 4,
heat_point = 40,
humidity_point = 0,
@ -1496,7 +1496,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit,
y_max = 31000,
y_min = 1,
heat_point = 89,
humidity_point = 42,
@ -1563,7 +1563,7 @@ function default.register_biomes(upper_limit)
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = upper_limit,
y_max = 31000,
y_min = 1,
heat_point = 86,
humidity_point = 65,
@ -1619,59 +1619,6 @@ function default.register_biomes(upper_limit)
end
-- Biomes for floatlands
-- TODO Temporary simple biomes to be replaced by special floatland biomes later.
function default.register_floatland_biomes(floatland_level, shadow_limit)
minetest.register_biome({
name = "floatland_grassland",
node_top = "default:dirt_with_grass",
depth_top = 1,
node_filler = "default:dirt",
depth_filler = 1,
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = 31000,
y_min = floatland_level + 2,
heat_point = 50,
humidity_point = 25,
})
minetest.register_biome({
name = "floatland_coniferous_forest",
node_top = "default:dirt_with_coniferous_litter",
depth_top = 1,
node_filler = "default:dirt",
depth_filler = 3,
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = 31000,
y_min = floatland_level + 2,
heat_point = 50,
humidity_point = 75,
})
minetest.register_biome({
name = "floatland_ocean",
node_top = "default:sand",
depth_top = 1,
node_filler = "default:sand",
depth_filler = 3,
node_dungeon = "default:cobble",
node_dungeon_alt = "default:mossycobble",
node_dungeon_stair = "stairs:stair_cobble",
y_max = floatland_level + 1,
y_min = shadow_limit,
heat_point = 50,
humidity_point = 50,
})
end
--
-- Register decorations
--
@ -1787,7 +1734,7 @@ local function register_grass_decoration(offset, scale, length)
octaves = 3,
persist = 0.6
},
biomes = {"grassland", "deciduous_forest", "floatland_grassland"},
biomes = {"grassland", "deciduous_forest"},
y_max = 31000,
y_min = 1,
decoration = "default:grass_" .. length,
@ -1829,7 +1776,7 @@ local function register_fern_decoration(seed, length)
octaves = 3,
persist = 0.7
},
biomes = {"coniferous_forest", "floatland_coniferous_forest"},
biomes = {"coniferous_forest"},
y_max = 31000,
y_min = 6,
decoration = "default:fern_" .. length,
@ -1944,11 +1891,35 @@ function default.register_decorations()
minetest.register_decoration({
name = "default:jungle_tree",
deco_type = "schematic",
place_on = {"default:dirt_with_rainforest_litter", "default:dirt"},
place_on = {"default:dirt_with_rainforest_litter"},
sidelen = 80,
fill_ratio = 0.1,
biomes = {"rainforest", "rainforest_swamp"},
biomes = {"rainforest"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts",
flags = "place_center_x, place_center_z",
rotation = "random",
})
-- Swamp jungle trees
minetest.register_decoration({
name = "default:jungle_tree(swamp)",
deco_type = "schematic",
place_on = {"default:dirt"},
sidelen = 16,
-- Noise tuned to place swamp trees where papyrus is absent
noise_params = {
offset = 0.0,
scale = -0.1,
spread = {x = 200, y = 200, z = 200},
seed = 354,
octaves = 1,
persist = 0.5
},
biomes = {"rainforest_swamp"},
y_max = 0,
y_min = -1,
schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts",
flags = "place_center_x, place_center_z",
@ -1962,7 +1933,7 @@ function default.register_decorations()
place_offset_y = 1,
sidelen = 80,
fill_ratio = 0.005,
biomes = {"rainforest", "rainforest_swamp"},
biomes = {"rainforest"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("default") .. "/schematics/jungle_log.mts",
@ -1987,7 +1958,7 @@ function default.register_decorations()
octaves = 3,
persist = 0.66
},
biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"},
biomes = {"taiga", "coniferous_forest"},
y_max = 31000,
y_min = 4,
schematic = minetest.get_modpath("default") .. "/schematics/pine_tree.mts",
@ -2007,7 +1978,7 @@ function default.register_decorations()
octaves = 3,
persist = 0.66
},
biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"},
biomes = {"taiga", "coniferous_forest"},
y_max = 31000,
y_min = 4,
schematic = minetest.get_modpath("default") .. "/schematics/small_pine_tree.mts",
@ -2021,7 +1992,7 @@ function default.register_decorations()
place_offset_y = 1,
sidelen = 80,
fill_ratio = 0.0018,
biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"},
biomes = {"taiga", "coniferous_forest"},
y_max = 31000,
y_min = 4,
schematic = minetest.get_modpath("default") .. "/schematics/pine_log.mts",
@ -2172,8 +2143,10 @@ function default.register_decorations()
-- Papyrus
-- Dirt version for rainforest swamp
minetest.register_decoration({
name = "default:papyrus",
name = "default:papyrus_on_dirt",
deco_type = "schematic",
place_on = {"default:dirt"},
sidelen = 16,
@ -2185,10 +2158,32 @@ function default.register_decorations()
octaves = 3,
persist = 0.7
},
biomes = {"rainforest_swamp"},
y_max = 0,
y_min = 0,
schematic = minetest.get_modpath("default") .. "/schematics/papyrus_on_dirt.mts",
})
-- Dry dirt version for savanna shore
minetest.register_decoration({
name = "default:papyrus_on_dry_dirt",
deco_type = "schematic",
place_on = {"default:dry_dirt"},
sidelen = 16,
noise_params = {
offset = -0.3,
scale = 0.7,
spread = {x = 200, y = 200, z = 200},
seed = 354,
octaves = 3,
persist = 0.7
},
biomes = {"savanna_shore"},
y_max = 0,
y_min = 0,
schematic = minetest.get_modpath("default") .. "/schematics/papyrus.mts",
schematic = minetest.get_modpath("default") ..
"/schematics/papyrus_on_dry_dirt.mts",
})
-- Bush
@ -2206,8 +2201,7 @@ function default.register_decorations()
octaves = 3,
persist = 0.7,
},
biomes = {"grassland", "deciduous_forest",
"floatland_grassland"},
biomes = {"grassland", "deciduous_forest"},
y_max = 31000,
y_min = 1,
schematic = minetest.get_modpath("default") .. "/schematics/bush.mts",
@ -2479,22 +2473,9 @@ end
--
-- Detect mapgen, flags and parameters to select functions
-- Detect mapgen to select functions
--
-- Get setting or default
local mgv7_spflags = minetest.get_mapgen_setting("mgv7_spflags") or
"mountains, ridges, nofloatlands, caverns"
local captures_float = string.match(mgv7_spflags, "floatlands")
local captures_nofloat = string.match(mgv7_spflags, "nofloatlands")
-- Get setting or default
-- Make global for mods to use to register floatland biomes
default.mgv7_floatland_level =
minetest.get_mapgen_setting("mgv7_floatland_level") or 1280
default.mgv7_shadow_limit =
minetest.get_mapgen_setting("mgv7_shadow_limit") or 1024
minetest.clear_registered_biomes()
minetest.clear_registered_ores()
minetest.clear_registered_decorations()
@ -2504,19 +2485,8 @@ local mg_name = minetest.get_mapgen_setting("mg_name")
if mg_name == "v6" then
default.register_mgv6_ores()
default.register_mgv6_decorations()
-- Need to check for 'nofloatlands' because that contains
-- 'floatlands' which makes the second condition true.
elseif mg_name == "v7" and
captures_float == "floatlands" and
captures_nofloat ~= "nofloatlands" then
-- Mgv7 with floatlands and floatland biomes
default.register_biomes(default.mgv7_shadow_limit - 1)
default.register_floatland_biomes(
default.mgv7_floatland_level, default.mgv7_shadow_limit)
default.register_ores()
default.register_decorations()
else
default.register_biomes(31000)
default.register_biomes()
default.register_ores()
default.register_decorations()
end

View File

@ -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"},
@ -2031,7 +2031,7 @@ local function coral_on_place(itemstack, placer, pointed_thing)
local def_under = minetest.registered_nodes[node_under.name]
if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then
return def_under.on_rightclick(pos_under, node_under.name,
return def_under.on_rightclick(pos_under, node_under,
placer, itemstack, pointed_thing) or itemstack
end
@ -2203,7 +2203,7 @@ minetest.register_node("default:water_source", {
},
},
},
alpha = 160,
alpha = 191,
paramtype = "light",
walkable = false,
pointable = false,
@ -2234,7 +2234,7 @@ minetest.register_node("default:water_flowing", {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 0.8,
length = 0.5,
},
},
{
@ -2244,11 +2244,11 @@ minetest.register_node("default:water_flowing", {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 0.8,
length = 0.5,
},
},
},
alpha = 160,
alpha = 191,
paramtype = "light",
paramtype2 = "flowingliquid",
walkable = false,
@ -2330,7 +2330,7 @@ minetest.register_node("default:river_water_flowing", {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 0.8,
length = 0.5,
},
},
{
@ -2340,7 +2340,7 @@ minetest.register_node("default:river_water_flowing", {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 0.8,
length = 0.5,
},
},
},
@ -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(),

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 459 B

After

Width:  |  Height:  |  Size: 331 B

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