Compare commits

...

76 Commits

Author SHA1 Message Date
Yves Quemener 5baf5c1c51 And also the raw files from the weblate 2019-09-07 15:27:11 +09:00
Yves Quemener 2fd4c32ce7 Adding locales and the script used ot generate them 2019-09-07 15:26:22 +09:00
Yves Quemener 2faa769a1f Added textdomain matching mod names to calls to minetest.get_translator(...) 2019-09-07 14:01:11 +09:00
Zweihorn dad270a296 Merge after rebase and resolving conflict
M  mods/wool/init.lua
2019-09-07 14:01:11 +09:00
Zweihorn 592ed84831 Remove redundant commentary lines
M  mods/default/craftitems.lua
2019-09-07 14:01:11 +09:00
Zweihorn 6c7f03ce0f Depollute the code - 06a - delete tab to make unrelated change vanish
M  mods/flowers/init.lua
2019-09-07 14:01:11 +09:00
Zweihorn 0f80116e97 Depollute the code - 06 - Undo unrelated changes due to failed repair.
M  mods/flowers/init.lua

My related review message was:
I am utterly sorry but appears as if I mixed lines 224-230 with lines 239-245 instead of an appropriate depollute. Please clarify.
2019-09-07 14:01:11 +09:00
Zweihorn bfc11fe83c Add some more translation tags (overlooked or difficult)
M  mods/default/craftitems.lua
M  mods/default/nodes.lua
M  mods/doors/init.lua
2019-09-07 14:01:11 +09:00
Zweihorn 4d55f99548 Add function mod.get_translator to any mod with serveral lua files
M  mods/beds/beds.lua
M  mods/beds/init.lua
M  mods/carts/cart_entity.lua
M  mods/carts/init.lua
M  mods/carts/rails.lua
M  mods/creative/init.lua
M  mods/creative/inventory.lua
M  mods/default/chests.lua
M  mods/default/craftitems.lua
M  mods/default/furnace.lua
M  mods/default/init.lua
M  mods/default/nodes.lua
M  mods/default/tools.lua
M  mods/default/torch.lua
M  mods/default/trees.lua
M  mods/farming/api.lua
M  mods/farming/hoes.lua
M  mods/farming/init.lua
M  mods/farming/nodes.lua
2019-09-07 14:01:11 +09:00
Zweihorn 1d21646644 do not forget the header as bed/init.lua is not bed/bed.lua 2019-09-07 14:01:11 +09:00
Zweihorn 835ac73e0a do not break the bed formspec in translation 2019-09-07 14:01:11 +09:00
Zweihorn 1718494306 more translation tags and some code tidy for wool and dyes 2019-09-07 14:01:11 +09:00
Zweihorn 97c2de8b79 wool to make use of global dye.dyes 2019-09-07 14:01:11 +09:00
Zweihorn 3e54b6e430 Depollute the code - 04a - bloody spaces & brown mushrooms 2019-09-07 14:01:11 +09:00
Zweihorn 5c82aa3d14 Depollute the code - 04 - bloody brown mushrooms 2019-09-07 14:01:11 +09:00
Zweihorn c32552f8ef Depollute the code - 03 2019-09-07 14:01:11 +09:00
Zweihorn 4b99c82c73 Depollute the code 2019-09-07 14:01:11 +09:00
Zweihorn 4e12030bab ref luacheck whitespace 2nd run 2019-09-07 13:54:47 +09:00
Zweihorn cc3664cc82 ref luacheck whitespace warnings 2019-09-07 13:53:46 +09:00
Zweihorn f4d49861f5 Add support for MT 5 game translation 2019-09-07 13:53:46 +09:00
mbartlett21 d99a176b69 Xpanes: Use 'swap node' instead of 'set node' 2019-09-06 21:39:23 +01:00
Panquesito7 7e16ec7a2f Convert README.txt to Markdown format 2019-09-05 22:39:24 +01:00
Paramat e8097c9e87
Creative: Override the hand instead of re-registering
Allows the initial hand registration to alter the 'wield_scale' without
needing to also alter it in creative mod.
Also make default mod a dependency again, as the initial hand
registration is required.
2019-08-31 19:44:17 +01:00
Paramat 5c3e4b1d20
Spawn: Avoid spawning outside small worlds
Previously, the value of 'mapgen_limit' was not used to limit the
spawn position.
If a friendly-biome spawn point is not found within a small world,
spawn point falls back to the engine spawn point, which has a larger
chance of success.
2019-08-28 03:19:34 +01:00
TumeniNodes 553b0f9d72 Add new TNT sounds 2019-08-28 03:06:23 +01:00
Paul Ouellette 7269711911 Furnace: Improve fuel item replacement support
The output returned by `get_craft_result` has a replacements table that
contains any replacement items that could not be placed in the input
(due to the input stack having a count > 1). Put these replacements in
the dst list or drop them on the furnace.
2019-08-20 21:15:28 +02:00
coil 3a3f71aa50 Verify object is player before checking privs (#2448)
This prevents a crash when a 'nil' digger is passed by the engine to
minetest.node_dig.
2019-08-19 19:24:19 +02:00
Paramat fac8f390b1
TNT: Remove unusable sounds, use temporary placeholders 2019-08-18 19:47:06 +01:00
Paramat 4eadf80634
Sfinv: Add and use a crafting arrow texture instead of using furnace arrow 2019-08-13 21:57:32 +01:00
Paul Ouellette e5ebb36cd5 Furnace: Fix "output full" infotext 2019-08-11 16:28:02 +02:00
Paramat 2063fcd075
Make the creative mod hand dig 'dig_immediate' nodes fast
Engine change now makes this possible.
2019-08-03 20:51:58 +01:00
HybridDog a2254bd0af Warn when a mod registers a stairs node with an existing name 2019-08-01 21:55:26 +02:00
TumeniNodes 7f830124f7 Various mods: Use " " instead of ' ' for item names 2019-08-01 02:40:39 +01:00
TumeniNodes a5bde8e9ba Default: Use " " instead of ' ' for item names 2019-07-31 00:16:44 +01:00
Paramat 6716fc74ec
Add patches of bare 'dry dirt' to savanna
Tune noise to appear roughly where long dry grass is least dense and shortest.
2019-07-30 03:55:17 +01:00
TumeniNodes c32b8adaa3 Add 'dry dirt' and 'dry dirt with dry grass' nodes for savanna biome 2019-07-26 17:50:44 +01:00
TumeniNodes 4282a93a02 Creative: Add 'default' as optional dependency
Fixes bugs caused by removing 'default' as a hard dependency.
2019-07-22 02:26:52 +01:00
Paramat d16612c1cb
Add new, longer 'default_grass_side' texture
Update side texture to match the new top texture.
3/4 side coverage instead of 1/2,
2019-07-22 02:18:20 +01:00
Paramat 9fe877ef99
Creative: Remove unnecessary dependency on 'default' 2019-07-21 03:24:47 +01:00
sfan5 a81a7e0c78
Merge pull request #2322 from Calinou/travis-luacheck-color
Enable colored Luacheck output on Travis CI
2019-07-17 00:38:30 +02:00
sfan5 9b226c7045 Switch to mod.conf, delete deprecated depends.txt 2019-07-17 00:38:23 +02:00
sfan5 773011fd85 Fix potential crash when few loot items are registered 2019-07-16 23:29:29 +02:00
sfan5 c3403936d3 Fix luacheck warning 2019-07-16 23:17:14 +02:00
sfan5 b701e500aa Support for icesheet dungeons in dungeon_loot 2019-07-16 22:26:35 +02:00
sfan5 37710866f0 Switch dungeon type detection to biome name
see #2400, also removed a now unused alias
2019-07-16 22:26:35 +02:00
TumeniNodes bfb84da39c Add new 'default_grass' texture 2019-07-15 17:43:05 +01:00
Paramat 3bca295da8
New lighter, greyer permafrost texture 2019-07-13 23:35:25 +01:00
acmgit 83fb6fe872 Remove stack_max from bucket:bucket_empty 2019-07-13 17:47:45 +01:00
SmallJoker 95aaec6670 Allow opening chests when wielding corals
Code simplification by combining the on_place functions.
2019-07-12 20:01:27 +01:00
bell07 5b1d5819e5 Unify hotbar formspec for sfinv and creative
sfinv: Add lists above the content to support listrings in content.
Reuse sfinv inventory lists for creative.
2019-07-10 21:55:35 +01:00
luk3yx 3d530e0c25 intersects_protection(): Fix compatibility code 2019-07-03 19:10:39 +02:00
Paramat e7be81242b
Define dungeon nodes in biome definitions (#2400)
Icesheet ice dungeons now have ice stairs.
Remove some now-unnecessary sandstone mapgen aliases, one
remains as it is required by the dungeon loot mod.
Re-arrange mapgen aliases to separate those needed for mgv6.
2019-07-01 21:58:47 +01:00
rubenwardy a6a719967a Use 9-slice background in formspec theme 2019-06-24 00:10:13 +01:00
t0ny2 54bb0afe7f Make waterlily wave when placed on waving water 2019-06-16 22:09:36 +01:00
SmallJoker 0f771a27c3 Allow overriding default.after_place_leaves and default.grow_sapling 2019-06-07 20:35:24 +01:00
Paramat ca7c131133
Large cactus schematic: Don't force-place root node
This schematic is used for sapling-grown large cacti, so should not
destroy the sand node below, as sand nodes are in short supply in
some situations.
Like trees, only force-place the node that replaces the sapling.
2019-06-07 20:34:13 +01:00
acmgit 61bfac0fa2 Prevent potential crash caused by moss growth ABM 2019-06-02 18:50:20 +01:00
An0n3m0us e19f42d648 Add groups for tools and mushrooms (#2378) 2019-06-01 21:10:30 +02:00
Zweihorn 76a08a7058 wool: use global 'dye.dyes' table 2019-05-26 20:21:31 +01:00
Paul Ouellette 80c10cee15 Capitalize author in game.conf to match ContentDB
The author is used to track packages for updating, so it should match.
2019-05-26 20:16:52 +01:00
Paramat aee5ba64f9
Make cave liquids biome-determined
No longer use the hardcoded engine cave liquids.
Water only in '_ocean' biomes, water and lava in '_under' biomes.
2019-05-18 21:22:19 +01:00
Paramat 5c48c76aa2
Fix trapdoor side textures and orientations
Previously, opening a trapdoor caused the side textures to flip.

Fix the incorrect textures.
Also add a texture transform to a tile of the open trapdoor, such
that the closed trapdoor sides use the lower part of the texture
and the open trapdoor sides use the higher part.

Clean up some codestyle issues.
2019-05-03 23:49:07 +01:00
Paramat f21bab2ff9
Split underground biome to correspond to surface biomes
In preparation for biome-defined: dungeon materials, cave liquids,
stone type, ores, decorations.
'_ocean' biomes now extend to y = -255 to be deeper than default
mgv5 oceans, and to create 'shallow underground biomes'.
Remove unnecessary biome lists for gravel and silver sand blob ores,
as those are already defined to only appear in default:stone.
2019-04-19 21:23:26 +01:00
HybridDog 0291c6b210 Moss growth ABM: Add inner and outer cobble stairs, simplify code 2019-04-06 21:35:48 +01:00
HybridDog b20725026e flowers: Light check optimisation in mushroom spread 2019-03-31 22:20:28 +01:00
tenplus1 88d79881b8 Add food groups to blueberries (#2335) 2019-03-31 22:20:47 +02:00
HybridDog efd090228d fire: Document flammable group, a little code cleanup 2019-03-30 20:33:08 +00:00
Paramat dfe6fd6560
Restrict waving liquid shader to normal water 2019-03-27 02:17:32 +00:00
SmallJoker dd3f3b2032 Use group:stick in recipes (fixes #2306) 2019-03-24 10:59:34 +01:00
Paramat 8b5e0a914b
Dungeon loot: Avoid empty 'if' branch to satisfy lua check 2019-03-23 23:16:41 +00:00
Paramat e3cd961a15
Fix beds being undiggable after laying down 2019-03-23 23:12:44 +00:00
Niwla23 eaf6eac723 Mapping kit recipe: Use "group:stick" instead of "default:stick" 2019-03-18 22:20:24 +00:00
sfan5 02e2cab375 Dungeon loot: Don't crash on unknown items
fixes #2228
2019-03-17 13:59:10 +01:00
sofar b853c8a509 Beds: Properly count players in beds
This is a rebased and slightly rewritten version of #2125.
2019-03-10 01:43:49 +00:00
acmgit 891f00e9db Flowers: Remove stack max definition (#2324) 2019-03-05 11:59:23 +01:00
Hugo Locurcio b38b5b2357
Enable colored Luacheck output on Travis CI
This also removes the deprecated `sudo: false` option, as Travis CI
is phasing out the container-based infrastructure.
2019-02-24 19:46:48 +01:00
877 changed files with 58809 additions and 1127 deletions

View File

@ -1,5 +1,4 @@
language: generic language: generic
sudo: false
addons: addons:
apt: apt:
packages: packages:
@ -7,6 +6,6 @@ addons:
before_install: before_install:
- luarocks install --local luacheck - luarocks install --local luacheck
script: script:
- $HOME/.luarocks/bin/luacheck --no-color ./mods - $HOME/.luarocks/bin/luacheck ./mods
notifications: notifications:
email: false email: false

34
README.md Normal file
View File

@ -0,0 +1,34 @@
# Minetest Game
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.
## Installation
- Unzip the archive, rename the folder to minetest_game and
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).
For further information or help, see:
https://wiki.minetest.net/Installing_Mods
## Compatibility
The Minetest Game GitHub master HEAD is generally compatible with the GitHub
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/
## Licensing
See `LICENSE.txt`

View File

@ -1,28 +0,0 @@
Minetest Game [minetest_game]
=============================
The main game for the Minetest engine
=====================================
To use this game with the Minetest engine, insert this repository as
/games/minetest_game
The Minetest engine can be found in:
https://github.com/minetest/minetest/
Compatibility
--------------
The Minetest Game github master HEAD is generally compatible with the github
master HEAD of the Minetest engine.
Additionally, when the Minetest engine is tagged to be a certain version (eg.
0.4.10), Minetest Game is tagged with the version too.
When stable releases are made, Minetest Game is packaged and made available in
http://minetest.net/downloads/
and in case the repository has grown too much, it may be reset. In that sense,
this is not a "real" git repository. (Package maintainers please note!)
Licensing
---------
See LICENSE.txt

View File

@ -1,3 +1,3 @@
name = Minetest Game name = Minetest Game
author = minetest author = Minetest
description = Bundled by default with Minetest, and aims to be lightweight, moddable, and fairly playable without mods. description = Bundled by default with Minetest, and aims to be lightweight, moddable, and fairly playable without mods.

View File

@ -214,6 +214,8 @@ The doors mod allows modders to register custom doors and trapdoors.
inventory_image = "mod_door_inv.png", inventory_image = "mod_door_inv.png",
groups = {choppy = 2}, groups = {choppy = 2},
tiles = {"mod_door.png"}, -- UV map. tiles = {"mod_door.png"}, -- UV map.
-- The front and back of the door must be identical in appearence as they swap on
-- open/close.
recipe = craftrecipe, recipe = craftrecipe,
sounds = default.node_sound_wood_defaults(), -- optional sounds = default.node_sound_wood_defaults(), -- optional
sound_open = sound play for open door, -- optional sound_open = sound play for open door, -- optional
@ -228,7 +230,12 @@ The doors mod allows modders to register custom doors and trapdoors.
inventory_image = "mod_trapdoor_inv.png", inventory_image = "mod_trapdoor_inv.png",
groups = {choppy = 2}, groups = {choppy = 2},
tile_front = "doors_trapdoor.png", -- the texture for the front and back of the trapdoor tile_front = "doors_trapdoor.png", -- the texture for the front and back of the trapdoor
tile_side = "doors_trapdoor_side.png", -- the tiles of the four side parts of the trapdoor tile_side = "doors_trapdoor_side.png",
-- The texture for the four sides of the trapdoor.
-- The texture should have the trapdoor side drawn twice, in the lowest and highest
-- 1/8ths of the texture, both upright. The area between is not used.
-- The lower 1/8th will be used for the closed trapdoor, the higher 1/8th will be used
-- for the open trapdoor.
sounds = default.node_sound_wood_defaults(), -- optional sounds = default.node_sound_wood_defaults(), -- optional
sound_open = sound play for open door, -- optional sound_open = sound play for open door, -- optional
sound_close = sound play for close door, -- optional sound_close = sound play for close door, -- optional
@ -269,7 +276,7 @@ The mod that places chests with loot in dungeons provides an API to register add
name = "item:name", name = "item:name",
chance = 0.5, chance = 0.5,
-- ^ chance value from 0.0 to 1.0 that the item will appear in the chest when chosen -- ^ chance value from 0.0 to 1.0 that the item will appear in the chest when chosen
-- due to an extra step in the selection process, 0.5 does not(!) mean that -- Due to an extra step in the selection process, 0.5 does not(!) mean that
-- on average every second chest will have this item -- on average every second chest will have this item
count = {1, 4}, count = {1, 4},
-- ^ table with minimum and maximum amounts of this item -- ^ table with minimum and maximum amounts of this item
@ -279,7 +286,8 @@ The mod that places chests with loot in dungeons provides an API to register add
-- optional, defaults to no height restrictions -- optional, defaults to no height restrictions
types = {"desert"}, types = {"desert"},
-- ^ table with types of dungeons this item can be found in -- ^ table with types of dungeons this item can be found in
-- supported types: "normal" (the cobble/mossycobble one), "sandstone", "desert" -- supported types: "normal" (the cobble/mossycobble one), "sandstone"
-- "desert" and "ice"
-- optional, defaults to no type restrictions -- optional, defaults to no type restrictions
@ -362,6 +370,8 @@ The farming API allows you to easily register plants and hoes.
Fire API Fire API
-------- --------
Add group flammable when registering a node to make fire seek for it.
Add it to an item to make it burn up when dropped in lava or fire.
New node def property: New node def property:
`on_burn(pos)` `on_burn(pos)`

1638
locale/be.po Normal file

File diff suppressed because it is too large Load Diff

1737
locale/cs.po Normal file

File diff suppressed because it is too large Load Diff

1638
locale/de.po Normal file

File diff suppressed because it is too large Load Diff

63
locale/dispatch.py Normal file
View File

@ -0,0 +1,63 @@
# Transforms the generic po file produced by weblate into a series of
# locale/[modname].ja.tr files.
# TODO: make it work for all languages!
import os
import re
from collections import defaultdict
strings=dict()
modstr=defaultdict(list)
for modname in os.listdir("../mods/"):
for fn in os.listdir("../mods/"+modname):
if fn.endswith(".lua"):
s=open("../mods/"+modname+"/"+fn).read()
for gtstring in re.findall("S\(.*\)", s):
k=gtstring[3:-2]
strings[k]=modname
modstr[modname].append(k)
"""
for m in modstr.keys():
print(m)
for v in modstr[m]:
print("\t"+v)
"""
locales = list()
for fn in os.listdir("."):
if fn .endswith(".po"):
locales.append(fn[:-3])
print(locales)
notused=set()
for loc in locales:
matches = 0
nom = 0
msgid = None
translation = dict()
for line in open(loc+".po"):
match = re.match('[^#]*msgstr[ \t]+"(.*)"', line)
if match and msgid is not None:
translation[msgid]=match.group(1)
match = re.match('[^#]*msgid[ \t]+"(.*)"', line)
if match:
msgid = match.group(1)
if msgid in strings:
matches+=1
else:
nom+=1
notused.add(msgid)
else:
msgid=None
print("{}: {}/{}".format(loc, matches, matches+nom))
for modname in os.listdir("../mods/"):
os.makedirs("../mods/{0}/locale".format(modname), exist_ok=True)
localefile = open("../mods/{0}/locale/{0}.{1}.tr".format(modname, loc), "w")
localefile.write("# textdomain: "+modname+"\n\n")
for k in modstr[modname]:
if k in translation:
localefile.write("{}={}\n\n".format(k,translation[k]))
localefile.close()
print(notused)

1613
locale/el.po Normal file

File diff suppressed because it is too large Load Diff

1637
locale/eo.po Normal file

File diff suppressed because it is too large Load Diff

1638
locale/es.po Normal file

File diff suppressed because it is too large Load Diff

1637
locale/fr.po Normal file

File diff suppressed because it is too large Load Diff

1639
locale/hu.po Normal file

File diff suppressed because it is too large Load Diff

1637
locale/id.po Normal file

File diff suppressed because it is too large Load Diff

1681
locale/it.po Normal file

File diff suppressed because it is too large Load Diff

1637
locale/ja.po Normal file

File diff suppressed because it is too large Load Diff

1674
locale/jbo.po Normal file

File diff suppressed because it is too large Load Diff

1637
locale/ms.po Normal file

File diff suppressed because it is too large Load Diff

1826
locale/nl.po Normal file

File diff suppressed because it is too large Load Diff

1718
locale/pl.po Normal file

File diff suppressed because it is too large Load Diff

1642
locale/pt.po Normal file

File diff suppressed because it is too large Load Diff

1642
locale/pt_BR.po Normal file

File diff suppressed because it is too large Load Diff

1655
locale/ro.po Normal file

File diff suppressed because it is too large Load Diff

1638
locale/ru.po Normal file

File diff suppressed because it is too large Load Diff

1686
locale/sr.po Normal file

File diff suppressed because it is too large Load Diff

1614
locale/template.pot Normal file

File diff suppressed because it is too large Load Diff

1637
locale/tr.po Normal file

File diff suppressed because it is too large Load Diff

1682
locale/uk.po Normal file

File diff suppressed because it is too large Load Diff

1644
locale/zh_Hans.po Normal file

File diff suppressed because it is too large Load Diff

1613
locale/zh_Hant.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,12 @@
-- beds/beds.lua
-- support for MT game translation.
local S = beds.get_translator
-- Fancy shaped bed -- Fancy shaped bed
beds.register_bed("beds:fancy_bed", { beds.register_bed("beds:fancy_bed", {
description = "Fancy Bed", description = S("Fancy Bed"),
inventory_image = "beds_bed_fancy.png", inventory_image = "beds_bed_fancy.png",
wield_image = "beds_bed_fancy.png", wield_image = "beds_bed_fancy.png",
tiles = { tiles = {
@ -52,7 +57,7 @@ beds.register_bed("beds:fancy_bed", {
-- Simple shaped bed -- Simple shaped bed
beds.register_bed("beds:bed", { beds.register_bed("beds:bed", {
description = "Simple Bed", description = S("Simple Bed"),
inventory_image = "beds_bed.png", inventory_image = "beds_bed.png",
wield_image = "beds_bed.png", wield_image = "beds_bed.png",
tiles = { tiles = {

View File

@ -1,2 +0,0 @@
default
wool

View File

@ -1,5 +1,4 @@
local pi = math.pi local pi = math.pi
local player_in_bed = 0
local is_sp = minetest.is_singleplayer() local is_sp = minetest.is_singleplayer()
local enable_respawn = minetest.settings:get_bool("enable_bed_respawn") local enable_respawn = minetest.settings:get_bool("enable_bed_respawn")
if enable_respawn == nil then if enable_respawn == nil then
@ -59,11 +58,8 @@ local function lay_down(player, pos, bed_pos, state, skip)
-- stand up -- stand up
if state ~= nil and not state then if state ~= nil and not state then
local p = beds.pos[name] or nil local p = beds.pos[name] or nil
if beds.player[name] ~= nil then
beds.player[name] = nil beds.player[name] = nil
beds.bed_position[name] = nil beds.bed_position[name] = nil
player_in_bed = player_in_bed - 1
end
-- skip here to prevent sending player specific changes (used for leaving players) -- skip here to prevent sending player specific changes (used for leaving players)
if skip then if skip then
return return
@ -82,10 +78,9 @@ local function lay_down(player, pos, bed_pos, state, skip)
-- lay down -- lay down
else else
beds.player[name] = 1
beds.pos[name] = pos beds.pos[name] = pos
beds.bed_position[name] = bed_pos beds.bed_position[name] = bed_pos
player_in_bed = player_in_bed + 1 beds.player[name] = 1
-- physics, eye_offset, etc -- physics, eye_offset, etc
player:set_eye_offset({x = 0, y = -13, z = 0}, {x = 0, y = 0, z = 0}) player:set_eye_offset({x = 0, y = -13, z = 0}, {x = 0, y = 0, z = 0})
@ -103,9 +98,18 @@ local function lay_down(player, pos, bed_pos, state, skip)
player:hud_set_flags(hud_flags) player:hud_set_flags(hud_flags)
end end
local function get_player_in_bed_count()
local c = 0
for _, _ in pairs(beds.player) do
c = c + 1
end
return c
end
local function update_formspecs(finished) local function update_formspecs(finished)
local ges = #minetest.get_connected_players() local ges = #minetest.get_connected_players()
local form_n local form_n
local player_in_bed = get_player_in_bed_count()
local is_majority = (ges / 2) < player_in_bed local is_majority = (ges / 2) < player_in_bed
if finished then if finished then
@ -223,7 +227,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
-- Because "Force night skip" button is a button_exit, it will set fields.quit -- Because "Force night skip" button is a button_exit, it will set fields.quit
-- and lay_down call will change value of player_in_bed, so it must be taken -- and lay_down call will change value of player_in_bed, so it must be taken
-- earlier. -- earlier.
local last_player_in_bed = player_in_bed local last_player_in_bed = get_player_in_bed_count()
if fields.quit or fields.leave then if fields.quit or fields.leave then
lay_down(player, nil, nil, false) lay_down(player, nil, nil, false)

View File

@ -1,13 +1,20 @@
-- beds/init.lua
-- Load support for MT game translation.
local S = minetest.get_translator("beds")
beds = {} beds = {}
beds.player = {} beds.player = {}
beds.bed_position = {} beds.bed_position = {}
beds.pos = {} beds.pos = {}
beds.spawn = {} beds.spawn = {}
beds.get_translator = S
beds.formspec = "size[8,11;true]" .. beds.formspec = "size[8,11;true]" ..
"no_prepend[]" .. "no_prepend[]" ..
"bgcolor[#080808BB;true]" .. "bgcolor[#080808BB;true]" ..
"button_exit[2,10;4,0.75;leave;Leave Bed]" "button_exit[2,10;4,0.75;leave;" .. S("Leave Bed") .. "]"
local modpath = minetest.get_modpath("beds") local modpath = minetest.get_modpath("beds")

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Незвычайны ложак
Simple Bed=Просты ложак

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Zdobená postel
Simple Bed=Prostá postel

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Schönes Bett
Simple Bed=Schlichtes Bett

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=
Simple Bed=

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Luksa lito
Simple Bed=Simpla lito

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Cama sofisticada
Simple Bed=Cama sencilla

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Lit fantaisie
Simple Bed=Lit Simple

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Csinos ágy
Simple Bed=Egyszerű ágy

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Dipan Mewah
Simple Bed=Dipan Sederhana

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Letto elegante
Simple Bed=Letto semplice

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=お洒落なベッド
Simple Bed=簡素なベッド

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=se jadni ckana
Simple Bed=sampu ckana

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Katil Beragam
Simple Bed=Katil Biasa

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Mooi Bed
Simple Bed=Simpel bed

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Łóżko ozdobne
Simple Bed=Proste łóżko

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Cama com Cabeceira
Simple Bed=Cama Simples

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Cama com Cabeceira
Simple Bed=Cama Simples

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Pat Luxos
Simple Bed=Pat Simplu

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Необычная кровать
Simple Bed=Обычная кровать

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Китњаст кревет
Simple Bed=Једноставан кревет

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Süslü Yatak
Simple Bed=Basit Yatak

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=Чепурне Ліжко
Simple Bed=Просте Ліжко

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=豪华大床
Simple Bed=简单的床

View File

@ -0,0 +1,6 @@
# textdomain: beds
Fancy Bed=
Simple Bed=

3
mods/beds/mod.conf Normal file
View File

@ -0,0 +1,3 @@
name = beds
description = Minetest Game mod: beds
depends = default, wool

View File

@ -1,2 +0,0 @@
default
creative?

View File

@ -1,7 +1,12 @@
-- binoculars/init.lua
-- Mod global namespace -- Mod global namespace
binoculars = {} binoculars = {}
-- Load support for MT game translation.
local S = minetest.get_translator("binoculars")
-- Detect creative mod -- Detect creative mod
local creative_mod = minetest.get_modpath("creative") local creative_mod = minetest.get_modpath("creative")
@ -54,7 +59,7 @@ minetest.after(4.7, cyclic_update)
-- Binoculars item -- Binoculars item
minetest.register_craftitem("binoculars:binoculars", { minetest.register_craftitem("binoculars:binoculars", {
description = "Binoculars\nUse with 'Zoom' key", description = S("Binoculars\nUse with 'Zoom' key"),
inventory_image = "binoculars_binoculars.png", inventory_image = "binoculars_binoculars.png",
stack_max = 1, stack_max = 1,

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

View File

@ -0,0 +1,2 @@
# textdomain: binoculars

4
mods/binoculars/mod.conf Normal file
View File

@ -0,0 +1,4 @@
name = binoculars
description = Minetest Game mod: binoculars
depends = default
optional_depends = creative

View File

@ -1,2 +0,0 @@
default
player_api

View File

@ -1,3 +1,8 @@
-- boats/init.lua
-- Load support for MT game translation.
local S = minetest.get_translator("boats")
-- --
-- Helper functions -- Helper functions
-- --
@ -149,13 +154,13 @@ function boat.on_step(self, dtime)
if ctrl.up and ctrl.down then if ctrl.up and ctrl.down then
if not self.auto then if not self.auto then
self.auto = true self.auto = true
minetest.chat_send_player(self.driver, "[boats] Cruise on") minetest.chat_send_player(self.driver, S("[boats] Cruise on"))
end end
elseif ctrl.down then elseif ctrl.down then
self.v = self.v - dtime * 1.8 self.v = self.v - dtime * 1.8
if self.auto then if self.auto then
self.auto = false self.auto = false
minetest.chat_send_player(self.driver, "[boats] Cruise off") minetest.chat_send_player(self.driver, S("[boats] Cruise off"))
end end
elseif ctrl.up or self.auto then elseif ctrl.up or self.auto then
self.v = self.v + dtime * 1.8 self.v = self.v + dtime * 1.8
@ -242,7 +247,7 @@ minetest.register_entity("boats:boat", boat)
minetest.register_craftitem("boats:boat", { minetest.register_craftitem("boats:boat", {
description = "Boat", description = S("Boat"),
inventory_image = "boats_inventory.png", inventory_image = "boats_inventory.png",
wield_image = "boats_wield.png", wield_image = "boats_wield.png",
wield_scale = {x = 2, y = 2, z = 1}, wield_scale = {x = 2, y = 2, z = 1},

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat=Човен

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat=Loďka

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat=Boot

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat=

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat=Boato

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat=Bote

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat=Bateau

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat=Csónak

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat=Kapal

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat=zattera

View File

@ -0,0 +1,4 @@
# textdomain: boats
Boat=ボート

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