Compare commits
413 commits
technicwor
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
bc70d2dec7 | ||
|
886011937a | ||
|
47e91698cb | ||
|
68cb28f258 | ||
|
af2a921a30 | ||
|
ec1d74478e | ||
|
c5b236bb7c | ||
|
3697f8d3e7 | ||
|
d311dc50c6 | ||
|
363dcb8fd2 | ||
|
199b9fb4c2 | ||
|
74e6f1bf0e | ||
|
cd4c19b76b | ||
|
f698a41242 | ||
|
c4be1410e1 | ||
|
0b607ab741 | ||
|
755c4c7067 | ||
|
8b93aa9101 | ||
|
0f0486b474 | ||
|
94ca78e36e | ||
|
90523b962d | ||
|
54ecd4eecc | ||
|
24a7814c2c | ||
|
3c307a4383 | ||
|
c3c9a92035 | ||
|
732154e4e0 | ||
|
e8b2d29012 | ||
|
138bb6de3d | ||
|
640c518c1a | ||
|
f431e56cd9 | ||
|
38320f8ebb | ||
|
98e64b823e | ||
|
64f4f5c05f | ||
|
60dfd9087b | ||
|
5d524af1ea | ||
|
a41c96b2ac | ||
|
d9446e98be | ||
|
538896d3ee | ||
|
18d1a9d2fb | ||
|
4998cc8765 | ||
|
700a62c22d | ||
|
68fcbfcf9e | ||
|
9e7bcacdf2 | ||
|
46c2516c93 | ||
|
70b00efd1c | ||
|
a5f735581c | ||
|
87acf37fa6 | ||
|
7c867746e8 | ||
|
f82c07f45d | ||
|
6d38b85d15 | ||
|
0027981e11 | ||
|
a4ccae425f | ||
|
859e4905d5 | ||
|
6b31849f87 | ||
|
f02147dc93 | ||
|
854157fdcd | ||
|
c69bf1db91 | ||
|
dec211728c | ||
|
059eb33720 | ||
|
3fee3fb7ad | ||
|
a51503382e | ||
|
c836129bff | ||
|
1a1c312ce9 | ||
|
93dacbe3b6 | ||
|
ddacc7f7bd | ||
|
6a70c71c1d | ||
|
d25a700fe2 | ||
|
fc30a56530 | ||
|
2cb0531fd8 | ||
|
836800af98 | ||
|
72e1f5e477 | ||
|
2f283e7f62 | ||
|
697c850eee | ||
|
379775ff26 | ||
|
4a8c50c713 | ||
|
f0d43fc90f | ||
|
35c0025fda | ||
|
34cead08e0 | ||
|
6351951dab | ||
|
10da2b2f32 | ||
|
996b93e80e | ||
|
107ff57b73 | ||
|
02df980c1a | ||
|
e435d9c1ad | ||
|
a7b0e1ea36 | ||
|
0556645aad | ||
|
9c4b57d120 | ||
|
e2bc895435 | ||
|
2d67527804 | ||
|
04960cf161 | ||
|
e7579e1db2 | ||
|
c377d5c72d | ||
|
b3d9025652 | ||
|
9b61e716b9 | ||
|
8bf39a4afe | ||
|
39e2bbeeaa | ||
|
7aa5392548 | ||
|
e8025240f3 | ||
|
18af6ba2f6 | ||
|
33f4a1bf93 | ||
|
5e568f9ead | ||
|
5e9318c595 | ||
|
7ec3f4dfa6 | ||
|
d909616c1a | ||
|
09edb7daec | ||
|
4f4ceb66a2 | ||
|
b733b1971d | ||
|
59d5b8b4ae | ||
|
4e28d90d06 | ||
|
530b601709 | ||
|
69923324fd | ||
|
d249c7dd9d | ||
|
618af2fef5 | ||
|
8fdd3f40e5 | ||
|
4cbef55586 | ||
|
09b7047cde | ||
|
98987f57dc | ||
|
8a9701f252 | ||
|
6157cfca59 | ||
|
41a870a3ea | ||
|
05123247cb | ||
|
432d463f0f | ||
|
3b573679c6 | ||
|
c869765feb | ||
|
01d543f377 | ||
|
4acf7e7adf | ||
|
87e517d386 | ||
|
ed777e4148 | ||
|
41d7066d5d | ||
|
88414c678b | ||
|
3fceb5dd90 | ||
|
4710abeb38 | ||
|
3f0f4f2077 | ||
|
91f96c4e45 | ||
|
915d28b292 | ||
|
d4277305bb | ||
|
309a6018e8 | ||
|
0677c53748 | ||
|
515aee5ae3 | ||
|
95fbe591d0 | ||
|
dd17a2e959 | ||
|
c1d65f8ecc | ||
|
f12b2204a1 | ||
|
388bdca60f | ||
|
1824f68aa2 | ||
|
8789812b27 | ||
|
31f05fe9d4 | ||
|
d84dd3e81a | ||
|
6417b1322c | ||
|
8c3b812779 | ||
|
2b767592e0 | ||
|
ff17a25bc2 | ||
|
e1ebbc2c6a | ||
|
bf60a9f459 | ||
|
321a6f68a0 | ||
|
428bfbdfe0 | ||
|
28229343d1 | ||
|
59ae1f2290 | ||
|
6036fbe340 | ||
|
6888cb1e8a | ||
|
c7344abe87 | ||
|
e31ba2e66b | ||
|
11ef0a7e88 | ||
|
c557fdfde4 | ||
|
00a01063e4 | ||
|
942b4bfe71 | ||
|
07f0ffedb9 | ||
|
51c774dda1 | ||
|
49b31b2a30 | ||
|
03cafe9fcf | ||
|
062642045c | ||
|
9bf9da8072 | ||
|
22eb176770 | ||
|
8f56ce63cc | ||
|
2551e09465 | ||
|
b854c916f3 | ||
|
28da5d53b5 | ||
|
4667fc2d42 | ||
|
e55b5acefa | ||
|
902b90492e | ||
|
63499d11f9 | ||
|
a5601fb41a | ||
|
ce1cccfbde | ||
|
9555d928ce | ||
|
97e8cd86e3 | ||
|
71d8d37133 | ||
|
1e40c3a10b | ||
|
50a4c0cd36 | ||
|
f669a27cf8 | ||
|
5a5fcca618 | ||
|
f2b8e5e0aa | ||
|
31170e6ae2 | ||
|
d3aa8407c7 | ||
|
13e888f4cc | ||
|
c24359be94 | ||
|
c3ebda901d | ||
|
bc675ab2ae | ||
|
b3edafbbd9 | ||
|
5bd9eac0ae | ||
|
e695ad8c69 | ||
|
ca34223c21 | ||
|
62f6f3c858 | ||
|
966376cce7 | ||
|
c3bf0db6cc | ||
|
4cb83e53ef | ||
|
1a6e9cb3b2 | ||
|
2dda8597b7 | ||
|
b86541f77e | ||
|
9e3cdbfa3f | ||
|
6369809bfd | ||
|
f678ef9fb8 | ||
|
4973e2921b | ||
|
903f6cb2e3 | ||
|
09b84d216a | ||
|
1ff31ee41c | ||
|
ebe850969c | ||
|
f9f75ade76 | ||
|
35cfb2e4c5 | ||
|
56534d5147 | ||
|
dbe99710e6 | ||
|
a07c50dfe8 | ||
|
f2553fc3cc | ||
|
930d201f39 | ||
|
9fb3a1960b | ||
|
d2dcd64203 | ||
|
55bdc674ba | ||
|
b0bc1af42a | ||
|
ae354791d4 | ||
|
3dfd1e2b6f | ||
|
a193162301 | ||
|
3850f9a008 | ||
|
4aea8a4092 | ||
|
9dec8f4b01 | ||
|
d6b4fda256 | ||
|
dd938f306f | ||
|
9e9c70782e | ||
|
67931a0ede | ||
|
e4a23c029a | ||
|
f3513e297b | ||
|
fe1f3f59d7 | ||
|
82ece0559d | ||
|
3bcf0a93f4 | ||
|
ebc4d886ac | ||
|
8c8b3f9721 | ||
|
c391fc5668 | ||
|
d0f4f39a0e | ||
|
cf669d3703 | ||
|
2fe3f45624 | ||
|
ed68401f07 | ||
|
46fab90375 | ||
|
81ca075cd8 | ||
|
0f691b2211 | ||
|
052f9aec6e | ||
|
de8dc7afb1 | ||
|
39615a3403 | ||
|
709b1c0917 | ||
|
b4519760c0 | ||
|
f8a71dff2d | ||
|
6195b23ea5 | ||
|
e45386a069 | ||
|
6d418e9962 | ||
|
52f509bad1 | ||
|
77648aac8e | ||
|
23544869e3 | ||
|
d7b337eae2 | ||
|
0c3d4135e1 | ||
|
5b36a03f02 | ||
|
26a00db1c1 | ||
|
4f419d3953 | ||
|
1f17a8b1b2 | ||
|
568045a4c4 | ||
|
980347343a | ||
|
0c122236ef | ||
|
2052664a30 | ||
|
62d8261e42 | ||
|
95b2def30c | ||
|
d2552744b9 | ||
|
6336ffb476 | ||
|
7a1505b32d | ||
|
6bafa46283 | ||
|
c80473afe6 | ||
|
f6535a974c | ||
|
f626cb94bc | ||
|
814f356208 | ||
|
cb5727b50c | ||
|
8b03f29585 | ||
|
cf77ef435a | ||
|
38ed7b998b | ||
|
e6bda9c439 | ||
|
fbbe79df87 | ||
|
45d7eebf01 | ||
|
b3c83180ec | ||
|
c70196dfbd | ||
|
5452e8f05e | ||
|
22224c265d | ||
|
d239deccff | ||
|
9c288600dd | ||
|
d75ccebe8f | ||
|
cc32e37b82 | ||
|
0533203710 | ||
|
4ee09a274b | ||
|
2e67cbc1b9 | ||
|
892ab3faaa | ||
|
1e7ea09713 | ||
|
3a42666e46 | ||
|
18ea8f6e7d | ||
|
e31d456de1 | ||
|
c882e33618 | ||
|
92c0bcfa59 | ||
|
a3ecc88a45 | ||
|
81bf163a59 | ||
|
b64202fbe9 | ||
|
2de51ee96f | ||
|
a033f68bdc | ||
|
77cdaacaac | ||
|
4c3b8376ab | ||
|
eff782c61f | ||
|
0fe3efbfd1 | ||
|
451e18751f | ||
|
97f0ff6c44 | ||
|
b4b24687a3 | ||
|
37d3fe0cb1 | ||
|
71a593ad88 | ||
|
1f19159689 | ||
|
ca1e88ed3d | ||
|
d9449fcd56 | ||
|
b4e6b5ba3c | ||
|
ba5d33dc2e | ||
|
b9e4c394fd | ||
|
b87d427ac2 | ||
|
7375b9a8fa | ||
|
3f8d39113f | ||
|
f9861a86bb | ||
|
72e72d0bd3 | ||
|
72f68f9de0 | ||
|
10d1f448b2 | ||
|
f9b87f3300 | ||
|
633be8f94e | ||
|
30e1476c5d | ||
|
e6ab3a5977 | ||
|
40a736cc14 | ||
|
87551af24b | ||
|
d2f63e50c5 | ||
|
6f9cf1e999 | ||
|
30241f62ad | ||
|
5bb740cac3 | ||
|
0da14dbb56 | ||
|
b80af1bc95 | ||
|
7a1b975f8f | ||
|
68a9d8e338 | ||
|
168d9a2591 | ||
|
91bb144fef | ||
|
504961a0a2 | ||
|
32c5872bd1 | ||
|
77873ddb9e | ||
|
5e84246526 | ||
|
75a85b951e | ||
|
c47d026950 | ||
|
75aa611aa2 | ||
|
82a9d81e19 | ||
|
881f4ac066 | ||
|
c181117afb | ||
|
66c5683ccf | ||
|
907cb3be8c | ||
|
82a31236be | ||
|
92ee60e6c7 | ||
|
c8fc4cfb36 | ||
|
79e4ea3bf2 | ||
|
ad04e5ae0d | ||
|
8ef03465d1 | ||
|
f1ddb91275 | ||
|
3c9c69e5fe | ||
|
95adcfc97b | ||
|
bb93133ceb | ||
|
8578d16b76 | ||
|
7ac7661de1 | ||
|
ac7e46b74d | ||
|
018c89a9d6 | ||
|
482573ca32 | ||
|
f70c1e91b1 | ||
|
25aff14341 | ||
|
69f284f950 | ||
|
f4fc4294b7 | ||
|
0fc11da8c7 | ||
|
31c58164d8 | ||
|
0b4aa7b59c | ||
|
c4807da40e | ||
|
627328d4a3 | ||
|
068c3eaa0e | ||
|
0feed93d9e | ||
|
f80a67c171 | ||
|
ad7d460096 | ||
|
8564858efe | ||
|
954123df52 | ||
|
a58df5b448 | ||
|
5531bfafe9 | ||
|
e890b45694 | ||
|
02c87c3b01 | ||
|
28976d3e6c | ||
|
d672f9a7db | ||
|
b0f61a6a57 | ||
|
0d9cc71396 | ||
|
e14809616d | ||
|
6481b1a46e | ||
|
f39b305fb8 | ||
|
53fab125b4 | ||
|
5c8adc1fd4 | ||
|
4710370260 | ||
|
085cd9f088 | ||
|
f8675b068f | ||
|
5112ff6bbc | ||
|
4330e88e1d | ||
|
88d591ae01 |
6
.gitlab-ci.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
syntax:
|
||||
script:
|
||||
- git submodule init
|
||||
- git submodule sync
|
||||
- git submodule update
|
||||
- luac5.1 -s -p mods/*/*.lua
|
178
.gitmodules
vendored
Normal file
|
@ -0,0 +1,178 @@
|
|||
[submodule "mods/illuna"]
|
||||
path = mods/illuna
|
||||
url = https://git.tchncs.de/Illuna-Minetest/illuna.git
|
||||
[submodule "mods/wine"]
|
||||
path = mods/wine
|
||||
url = https://github.com/tenplus1/wine
|
||||
[submodule "mods/death_messages"]
|
||||
path = mods/death_messages
|
||||
url = https://git.tchncs.de/Illuna-Minetest/death_messages.git
|
||||
[submodule "mods/worldedit"]
|
||||
path = mods/worldedit
|
||||
url = https://github.com/Uberi/Minetest-WorldEdit
|
||||
[submodule "mods/3d_armor"]
|
||||
path = mods/3d_armor
|
||||
url = https://github.com/stujones11/minetest-3d_armor
|
||||
[submodule "mods/plantlife_modpack"]
|
||||
path = mods/plantlife_modpack
|
||||
url = https://git.tchncs.de/Illuna-Minetest/plantlife_modpack.git
|
||||
[submodule "mods/darkage"]
|
||||
path = mods/darkage
|
||||
url = https://git.tchncs.de/Illuna-Minetest/darkage.git
|
||||
[submodule "mods/hudbars"]
|
||||
path = mods/hudbars
|
||||
url = https://git.tchncs.de/Illuna-Minetest/hudbars.git
|
||||
[submodule "mods/xdecor"]
|
||||
path = mods/xdecor
|
||||
url = https://git.tchncs.de/Illuna-Minetest/xdecor.git
|
||||
[submodule "mods/caverealms"]
|
||||
path = mods/caverealms
|
||||
url = https://git.tchncs.de/Illuna-Minetest/caverealms.git
|
||||
[submodule "mods/wardrobe"]
|
||||
path = mods/wardrobe
|
||||
url = https://git.tchncs.de/Illuna-Minetest/wardrobe.git
|
||||
[submodule "mods/ctravelnet"]
|
||||
path = mods/ctravelnet
|
||||
url = https://git.tchncs.de/Illuna-Minetest/ctravelnet.git
|
||||
[submodule "mods/cottages"]
|
||||
path = mods/cottages
|
||||
url = https://git.tchncs.de/Illuna-Minetest/cottages.git/
|
||||
[submodule "mods/horses"]
|
||||
path = mods/horses
|
||||
url = https://git.tchncs.de/Illuna-Minetest/horses.git
|
||||
[submodule "mods/bows"]
|
||||
path = mods/bows
|
||||
url = https://git.tchncs.de/Illuna-Minetest/bows
|
||||
branch = illuna
|
||||
[submodule "mods/pkarcs"]
|
||||
path = mods/pkarcs
|
||||
url = https://git.tchncs.de/Illuna-Minetest/pkarcs
|
||||
[submodule "mods/technic_chests"]
|
||||
path = mods/technic_chests
|
||||
url = https://git.tchncs.de/Illuna-Minetest/technic_chests
|
||||
[submodule "mods/columnia"]
|
||||
path = mods/columnia
|
||||
url = https://git.tchncs.de/Illuna-Minetest/columnia
|
||||
[submodule "mods/hemp"]
|
||||
path = mods/hemp
|
||||
url = https://github.com/pithydon/hemp.git
|
||||
[submodule "mods/bags"]
|
||||
path = mods/bags
|
||||
url = https://git.tchncs.de/Illuna-Minetest/bags
|
||||
[submodule "mods/homedecor_modpack"]
|
||||
path = mods/homedecor_modpack
|
||||
url = https://git.tchncs.de/Illuna-Minetest/homedecor_modpack
|
||||
[submodule "mods/magical_potion"]
|
||||
path = mods/magical_potion
|
||||
url = https://git.tchncs.de/Illuna-Minetest/magical_potion
|
||||
[submodule "mods/playereffects"]
|
||||
path = mods/playereffects
|
||||
url = git://repo.or.cz/minetest_playereffects.git
|
||||
[submodule "mods/mtfoods"]
|
||||
path = mods/mtfoods
|
||||
url = https://github.com/Philipbenr/mtfoods
|
||||
[submodule "mods/mtcandy"]
|
||||
path = mods/mtcandy
|
||||
url = https://git.tchncs.de/Illuna-Minetest/mtcandy
|
||||
[submodule "mods/dragons"]
|
||||
path = mods/dragons
|
||||
url = https://git.tchncs.de/Illuna-Minetest/dragons
|
||||
[submodule "mods/teleport_potion"]
|
||||
path = mods/teleport_potion
|
||||
url = https://git.tchncs.de/Illuna-Minetest/teleport_potion
|
||||
[submodule "mods/halloween_mobs"]
|
||||
path = mods/halloween_mobs
|
||||
url = https://git.tchncs.de/Illuna-Minetest/halloween_mobs
|
||||
[submodule "mods/mobs_monster"]
|
||||
path = mods/mobs_monster
|
||||
url = https://git.tchncs.de/Illuna-Minetest/mobs_monster
|
||||
[submodule "mods/ranks"]
|
||||
path = mods/ranks
|
||||
url = https://git.tchncs.de/Illuna-Minetest/ranks
|
||||
[submodule "mods/another_charcoal"]
|
||||
path = mods/another_charcoal
|
||||
url = https://github.com/cx384/another_charcoal
|
||||
[submodule "mods/golems"]
|
||||
path = mods/golems
|
||||
url = https://git.tchncs.de/Illuna-Minetest/golems
|
||||
[submodule "mods/shadow"]
|
||||
path = mods/shadow
|
||||
url = https://git.tchncs.de/Illuna-Minetest/shadow
|
||||
[submodule "mods/craftguide"]
|
||||
path = mods/craftguide
|
||||
url = https://github.com/minetest-mods/craftguide
|
||||
[submodule "mods/moreblocks"]
|
||||
path = mods/moreblocks
|
||||
url = https://github.com/minetest-mods/moreblocks
|
||||
[submodule "mods/scaffolding"]
|
||||
path = mods/scaffolding
|
||||
url = https://bitbucket.org/Infinatum/scaffolding
|
||||
[submodule "mods/playerskins"]
|
||||
path = mods/playerskins
|
||||
url = https://git.tchncs.de/Illuna-Minetest/playerskins
|
||||
[submodule "mods/mycastle"]
|
||||
path = mods/mycastle
|
||||
url = https://git.tchncs.de/Illuna-Minetest/mycastle
|
||||
[submodule "mods/mesecons"]
|
||||
path = mods/mesecons
|
||||
url = https://git.tchncs.de/Illuna-Minetest/mesecons
|
||||
[submodule "mods/pipeworks"]
|
||||
path = mods/pipeworks
|
||||
url = https://github.com/minetest-mods/pipeworks/
|
||||
[submodule "mods/arrow_signs"]
|
||||
path = mods/arrow_signs
|
||||
url = https://bitbucket.org/adrido/arrow_signs
|
||||
[submodule "mods/biome_lib"]
|
||||
path = mods/biome_lib
|
||||
url = https://github.com/VanessaE/biome_lib
|
||||
[submodule "mods/bitchange"]
|
||||
path = mods/bitchange
|
||||
url = https://git.tchncs.de/Illuna-Minetest/bitchange
|
||||
[submodule "mods/bridges"]
|
||||
path = mods/bridges
|
||||
url = https://github.com/Sokomine/bridges
|
||||
[submodule "mods/cannons"]
|
||||
path = mods/cannons
|
||||
url = https://git.tchncs.de/Illuna-Minetest/cannons
|
||||
[submodule "mods/character_creator"]
|
||||
path = mods/character_creator
|
||||
url = https://github.com/Rui914/character_creator
|
||||
[submodule "mods/christmas_craft"]
|
||||
path = mods/christmas_craft
|
||||
url = https://bitbucket.org/kingarthursteam/christmas_craft
|
||||
[submodule "mods/xconnected"]
|
||||
path = mods/xconnected
|
||||
url = https://github.com/Sokomine/xconnected
|
||||
[submodule "mods/medieval_craft"]
|
||||
path = mods/medieval_craft
|
||||
url = https://bitbucket.org/kingarthursteam/medieval_craft
|
||||
[submodule "mods/mini_sun"]
|
||||
path = mods/mini_sun
|
||||
url = https://github.com/bdjnk/mini_sun
|
||||
[submodule "mods/moreores"]
|
||||
path = mods/moreores
|
||||
url = https://git.tchncs.de/Illuna-Minetest/moreores
|
||||
[submodule "mods/moretrees"]
|
||||
path = mods/moretrees
|
||||
url = https://github.com/minetest-mods/moretrees
|
||||
[submodule "mods/boats"]
|
||||
path = mods/boats
|
||||
url = https://git.tchncs.de/Illuna-Minetest/boats
|
||||
[submodule "mods/farming"]
|
||||
path = mods/farming
|
||||
url = https://git.tchncs.de/Illuna-Minetest/farming
|
||||
[submodule "mods/inspector"]
|
||||
path = mods/inspector
|
||||
url = https://github.com/minetest-mods/inspector
|
||||
[submodule "mods/sneak_glitch"]
|
||||
path = mods/sneak_glitch
|
||||
url = https://github.com/SmallJoker/sneak_glitch
|
||||
[submodule "mods/mobs_animal"]
|
||||
path = mods/mobs_animal
|
||||
url = https://git.tchncs.de/Illuna-Minetest/mobs_animal
|
||||
[submodule "mods/mobs_redo"]
|
||||
path = mods/mobs_redo
|
||||
url = https://git.tchncs.de/Illuna-Minetest/mobs_redo
|
||||
[submodule "mods/irc"]
|
||||
path = mods/irc
|
||||
url = https://git.tchncs.de/Illuna-Minetest/irc
|
28
README.txt
|
@ -1,28 +0,0 @@
|
|||
Minetest Game [minetest_game]
|
||||
=============================
|
||||
The main subgame for the Minetest engine
|
||||
========================================
|
||||
|
||||
To use this subgame 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/download
|
||||
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
|
|
@ -1 +1 @@
|
|||
name = Minetest Game
|
||||
name = Illuna
|
||||
|
|
1
mods/3d_armor
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 6661ec0b4060d62b358f93336ca1cabba8e8cf2e
|
1
mods/another_charcoal
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit b0101ba333c71c9c1eec850918159173e78b66f9
|
1
mods/arrow_signs
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit f180f7246dec209c50004812a6d776d83aab6aad
|
1
mods/bags
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 78067127510351651e0bf578d1556466da0bcb16
|
1
mods/biome_lib
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 9cdcdcfe6b9538c4f6daaa79c5e65f786f9577fa
|
1
mods/bitchange
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 750d0f85fc7621552fb956abe61ace335411d0c4
|
1
mods/boats
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit a7534e938834c1a0322e49df796f613ca1f55880
|
|
@ -1,15 +0,0 @@
|
|||
Minetest Game mod: boats
|
||||
========================
|
||||
See license.txt for license information.
|
||||
|
||||
Authors of source code
|
||||
----------------------
|
||||
Originally by PilzAdam (MIT)
|
||||
Various Minetest developers and contributors (MIT)
|
||||
|
||||
Authors of media (textures and model)
|
||||
-------------------------------------
|
||||
Textures: Zeg9 (CC BY-SA 3.0)
|
||||
Model: thetoon and Zeg9 (CC BY-SA 3.0),
|
||||
modified by PavelS(SokolovPavel) (CC BY-SA 3.0),
|
||||
modified by sofar (CC BY-SA 3.0)
|
|
@ -1,269 +0,0 @@
|
|||
--
|
||||
-- Helper functions
|
||||
--
|
||||
|
||||
local function is_water(pos)
|
||||
local nn = minetest.get_node(pos).name
|
||||
return minetest.get_item_group(nn, "water") ~= 0
|
||||
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
|
||||
return {x = x, y = y, z = z}
|
||||
end
|
||||
|
||||
|
||||
local function get_v(v)
|
||||
return math.sqrt(v.x ^ 2 + v.z ^ 2)
|
||||
end
|
||||
|
||||
--
|
||||
-- Boat entity
|
||||
--
|
||||
|
||||
local boat = {
|
||||
physical = true,
|
||||
-- Warning: Do not change the position of the collisionbox top surface,
|
||||
-- lowering it causes the boat to fall through the world if underwater
|
||||
collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5},
|
||||
visual = "mesh",
|
||||
mesh = "boats_boat.obj",
|
||||
textures = {"default_wood.png"},
|
||||
|
||||
driver = nil,
|
||||
v = 0,
|
||||
last_v = 0,
|
||||
removed = false
|
||||
}
|
||||
|
||||
|
||||
function boat.on_rightclick(self, clicker)
|
||||
if not clicker or not clicker:is_player() then
|
||||
return
|
||||
end
|
||||
local name = clicker:get_player_name()
|
||||
if self.driver and clicker == self.driver then
|
||||
self.driver = nil
|
||||
clicker:set_detach()
|
||||
default.player_attached[name] = false
|
||||
default.player_set_animation(clicker, "stand" , 30)
|
||||
local pos = clicker:getpos()
|
||||
pos = {x = pos.x, y = pos.y + 0.2, z = pos.z}
|
||||
minetest.after(0.1, function()
|
||||
clicker:setpos(pos)
|
||||
end)
|
||||
elseif not self.driver then
|
||||
local attach = clicker:get_attach()
|
||||
if attach and attach:get_luaentity() then
|
||||
local luaentity = attach:get_luaentity()
|
||||
if luaentity.driver then
|
||||
luaentity.driver = nil
|
||||
end
|
||||
clicker:set_detach()
|
||||
end
|
||||
self.driver = clicker
|
||||
clicker:set_attach(self.object, "",
|
||||
{x = 0, y = 11, z = -3}, {x = 0, y = 0, z = 0})
|
||||
default.player_attached[name] = true
|
||||
minetest.after(0.2, function()
|
||||
default.player_set_animation(clicker, "sit" , 30)
|
||||
end)
|
||||
clicker:set_look_horizontal(self.object:getyaw())
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function boat.on_activate(self, staticdata, dtime_s)
|
||||
self.object:set_armor_groups({immortal = 1})
|
||||
if staticdata then
|
||||
self.v = tonumber(staticdata)
|
||||
end
|
||||
self.last_v = self.v
|
||||
end
|
||||
|
||||
|
||||
function boat.get_staticdata(self)
|
||||
return tostring(self.v)
|
||||
end
|
||||
|
||||
|
||||
function boat.on_punch(self, puncher)
|
||||
if not puncher or not puncher:is_player() or self.removed then
|
||||
return
|
||||
end
|
||||
if self.driver and puncher == self.driver then
|
||||
self.driver = nil
|
||||
puncher:set_detach()
|
||||
default.player_attached[puncher:get_player_name()] = false
|
||||
end
|
||||
if not self.driver then
|
||||
self.removed = true
|
||||
local inv = puncher:get_inventory()
|
||||
if not minetest.setting_getbool("creative_mode")
|
||||
or not inv:contains_item("main", "boats:boat") then
|
||||
local leftover = inv:add_item("main", "boats:boat")
|
||||
-- if no room in inventory add a replacement boat to the world
|
||||
if not leftover:is_empty() then
|
||||
minetest.add_item(self.object:getpos(), leftover)
|
||||
end
|
||||
end
|
||||
-- delay remove to ensure player is detached
|
||||
minetest.after(0.1, function()
|
||||
self.object:remove()
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function boat.on_step(self, dtime)
|
||||
self.v = get_v(self.object:getvelocity()) * get_sign(self.v)
|
||||
if self.driver then
|
||||
local ctrl = self.driver:get_player_control()
|
||||
local yaw = self.object:getyaw()
|
||||
if ctrl.up then
|
||||
self.v = self.v + 0.1
|
||||
elseif ctrl.down then
|
||||
self.v = self.v - 0.1
|
||||
end
|
||||
if ctrl.left then
|
||||
if self.v < 0 then
|
||||
self.object:setyaw(yaw - (1 + dtime) * 0.03)
|
||||
else
|
||||
self.object:setyaw(yaw + (1 + dtime) * 0.03)
|
||||
end
|
||||
elseif ctrl.right then
|
||||
if self.v < 0 then
|
||||
self.object:setyaw(yaw + (1 + dtime) * 0.03)
|
||||
else
|
||||
self.object:setyaw(yaw - (1 + dtime) * 0.03)
|
||||
end
|
||||
end
|
||||
end
|
||||
local velo = self.object:getvelocity()
|
||||
if self.v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then
|
||||
self.object:setpos(self.object:getpos())
|
||||
return
|
||||
end
|
||||
local s = get_sign(self.v)
|
||||
self.v = self.v - 0.02 * s
|
||||
if s ~= get_sign(self.v) then
|
||||
self.object:setvelocity({x = 0, y = 0, z = 0})
|
||||
self.v = 0
|
||||
return
|
||||
end
|
||||
if math.abs(self.v) > 5 then
|
||||
self.v = 5 * get_sign(self.v)
|
||||
end
|
||||
|
||||
local p = self.object:getpos()
|
||||
p.y = p.y - 0.5
|
||||
local new_velo
|
||||
local new_acce = {x = 0, y = 0, z = 0}
|
||||
if not is_water(p) then
|
||||
local nodedef = minetest.registered_nodes[minetest.get_node(p).name]
|
||||
if (not nodedef) or nodedef.walkable then
|
||||
self.v = 0
|
||||
new_acce = {x = 0, y = 1, z = 0}
|
||||
else
|
||||
new_acce = {x = 0, y = -9.8, z = 0}
|
||||
end
|
||||
new_velo = get_velocity(self.v, self.object:getyaw(),
|
||||
self.object:getvelocity().y)
|
||||
self.object:setpos(self.object:getpos())
|
||||
else
|
||||
p.y = p.y + 1
|
||||
if is_water(p) then
|
||||
local y = self.object:getvelocity().y
|
||||
if y >= 5 then
|
||||
y = 5
|
||||
elseif y < 0 then
|
||||
new_acce = {x = 0, y = 20, z = 0}
|
||||
else
|
||||
new_acce = {x = 0, y = 5, z = 0}
|
||||
end
|
||||
new_velo = get_velocity(self.v, self.object:getyaw(), y)
|
||||
self.object:setpos(self.object:getpos())
|
||||
else
|
||||
new_acce = {x = 0, y = 0, z = 0}
|
||||
if math.abs(self.object:getvelocity().y) < 1 then
|
||||
local pos = self.object:getpos()
|
||||
pos.y = math.floor(pos.y) + 0.5
|
||||
self.object:setpos(pos)
|
||||
new_velo = get_velocity(self.v, self.object:getyaw(), 0)
|
||||
else
|
||||
new_velo = get_velocity(self.v, self.object:getyaw(),
|
||||
self.object:getvelocity().y)
|
||||
self.object:setpos(self.object:getpos())
|
||||
end
|
||||
end
|
||||
end
|
||||
self.object:setvelocity(new_velo)
|
||||
self.object:setacceleration(new_acce)
|
||||
end
|
||||
|
||||
|
||||
minetest.register_entity("boats:boat", boat)
|
||||
|
||||
|
||||
minetest.register_craftitem("boats:boat", {
|
||||
description = "Boat",
|
||||
inventory_image = "boats_inventory.png",
|
||||
wield_image = "boats_wield.png",
|
||||
wield_scale = {x = 2, y = 2, z = 1},
|
||||
liquids_pointable = true,
|
||||
groups = {flammable = 2},
|
||||
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local under = pointed_thing.under
|
||||
local node = minetest.get_node(under)
|
||||
local udef = minetest.registered_nodes[node.name]
|
||||
if udef and udef.on_rightclick and
|
||||
not (placer and placer:get_player_control().sneak) then
|
||||
return udef.on_rightclick(under, node, placer, itemstack,
|
||||
pointed_thing) or itemstack
|
||||
end
|
||||
|
||||
if pointed_thing.type ~= "node" then
|
||||
return itemstack
|
||||
end
|
||||
if not is_water(pointed_thing.under) then
|
||||
return itemstack
|
||||
end
|
||||
pointed_thing.under.y = pointed_thing.under.y + 0.5
|
||||
boat = minetest.add_entity(pointed_thing.under, "boats:boat")
|
||||
if boat then
|
||||
boat:setyaw(placer:get_look_horizontal())
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
itemstack:take_item()
|
||||
end
|
||||
end
|
||||
return itemstack
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
minetest.register_craft({
|
||||
output = "boats:boat",
|
||||
recipe = {
|
||||
{"", "", "" },
|
||||
{"group:wood", "", "group:wood"},
|
||||
{"group:wood", "group:wood", "group:wood"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "boats:boat",
|
||||
burntime = 20,
|
||||
})
|
|
@ -1,63 +0,0 @@
|
|||
License of source code
|
||||
----------------------
|
||||
|
||||
The MIT License (MIT)
|
||||
Copyright (C) 2012-2016 PilzAdam
|
||||
Copyright (C) 2012-2016 Various Minetest developers and contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
||||
software and associated documentation files (the "Software"), to deal in the Software
|
||||
without restriction, including without limitation the rights to use, copy, modify, merge,
|
||||
publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or
|
||||
substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
|
||||
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
For more details:
|
||||
https://opensource.org/licenses/MIT
|
||||
|
||||
|
||||
Licenses of media (textures and model)
|
||||
--------------------------------------
|
||||
|
||||
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
|
||||
Copyright (C) 2012-2016 Zeg9
|
||||
Copyright (C) 2012-2016 thetoon
|
||||
Copyright (C) 2012-2016 PavelS(SokolovPavel)
|
||||
Copyright (C) 2016 sofar (sofar@foo-projects.org)
|
||||
|
||||
You are free to:
|
||||
Share — copy and redistribute the material in any medium or format.
|
||||
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
|
||||
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
||||
|
||||
Under the following terms:
|
||||
|
||||
Attribution — You must give appropriate credit, provide a link to the license, and
|
||||
indicate if changes were made. You may do so in any reasonable manner, but not in any way
|
||||
that suggests the licensor endorses you or your use.
|
||||
|
||||
ShareAlike — If you remix, transform, or build upon the material, you must distribute
|
||||
your contributions under the same license as the original.
|
||||
|
||||
No additional restrictions — You may not apply legal terms or technological measures that
|
||||
legally restrict others from doing anything the license permits.
|
||||
|
||||
Notices:
|
||||
|
||||
You do not have to comply with the license for elements of the material in the public
|
||||
domain or where your use is permitted by an applicable exception or limitation.
|
||||
No warranties are given. The license may not give you all of the permissions necessary
|
||||
for your intended use. For example, other rights such as publicity, privacy, or moral
|
||||
rights may limit how you use the material.
|
||||
|
||||
For more details:
|
||||
http://creativecommons.org/licenses/by-sa/3.0/
|
|
@ -1,358 +0,0 @@
|
|||
# Blender v2.76 (sub 11) OBJ File: 'boat.blend'
|
||||
# www.blender.org
|
||||
mtllib boat.mtl
|
||||
o boats_boat
|
||||
v -6.786140 -3.033999 -9.415440
|
||||
v -6.786140 -1.967150 -9.415440
|
||||
v -6.786140 -1.967150 8.793510
|
||||
v -6.786140 -3.033999 8.793510
|
||||
v 5.732520 -1.967150 -9.415440
|
||||
v 5.732520 -3.033999 -9.415440
|
||||
v 5.732520 -3.033999 8.793510
|
||||
v 5.732520 -1.967150 8.793510
|
||||
v -2.233900 -3.033999 -9.415440
|
||||
v -2.233900 -1.967150 -9.415440
|
||||
v -2.233900 -1.967150 8.793510
|
||||
v -2.233900 -3.033999 8.793510
|
||||
v 2.318340 -3.033999 -9.415440
|
||||
v 2.318340 -1.967150 -9.415440
|
||||
v 2.318340 -1.967150 8.793510
|
||||
v 2.318340 -3.033999 8.793510
|
||||
v -3.371960 -3.033999 8.793510
|
||||
v -3.371960 -1.967150 8.793510
|
||||
v -3.371960 -1.967150 -9.415440
|
||||
v -3.371960 -3.033999 -9.415440
|
||||
v 2.318340 0.276645 8.793510
|
||||
v 1.180280 -1.967150 8.793510
|
||||
v 5.732520 0.276645 8.793510
|
||||
v 5.732520 1.039180 8.793510
|
||||
v 6.870580 0.276645 8.793510
|
||||
v 6.870580 -1.967150 8.793510
|
||||
v 2.318340 1.039180 8.793510
|
||||
v 1.180280 0.276645 8.793510
|
||||
v 1.180280 1.039180 8.793510
|
||||
v 1.180280 -3.033999 8.793510
|
||||
v -2.233900 0.276645 8.793510
|
||||
v -3.371960 0.276645 8.793510
|
||||
v -2.233900 1.039180 8.793510
|
||||
v -3.371960 1.039180 8.793510
|
||||
v -6.786140 0.276645 8.793510
|
||||
v -7.786200 0.276645 8.793510
|
||||
v -7.786200 -1.967150 8.793510
|
||||
v -6.786140 1.039180 8.793510
|
||||
v 1.180280 -1.967150 -9.415440
|
||||
v 1.180280 -3.033999 -9.415440
|
||||
v 2.318340 0.276645 -9.415440
|
||||
v 1.180280 0.276645 -9.415440
|
||||
v 2.318340 1.039180 -9.415440
|
||||
v 5.732520 0.276645 -9.415440
|
||||
v 6.870580 -1.967150 -9.415440
|
||||
v 5.732520 1.039180 -9.415440
|
||||
v 6.870580 0.276645 -9.415440
|
||||
v 0.042220 1.039180 -9.415440
|
||||
v 1.180280 1.039180 -9.415440
|
||||
v 0.042220 -1.967150 -9.415440
|
||||
v -1.095840 -1.967150 -9.415440
|
||||
v -2.233900 0.276645 -9.415440
|
||||
v -3.371960 0.276645 -9.415440
|
||||
v -2.233900 1.039180 -9.415440
|
||||
v -1.095840 1.039180 -9.415440
|
||||
v -3.371960 1.039180 -9.415440
|
||||
v -6.786140 0.276645 -9.415440
|
||||
v -6.786140 1.039180 -9.415440
|
||||
v -7.786200 -1.967150 -9.415440
|
||||
v -7.786200 0.276645 -9.415440
|
||||
v -1.095840 0.156645 -12.044100
|
||||
v -1.095840 -4.601110 -9.415440
|
||||
v -1.095840 1.039181 -10.802900
|
||||
v -1.095840 2.868579 -10.802900
|
||||
v -1.095840 2.868580 -7.883420
|
||||
v -1.095840 3.746069 -12.034100
|
||||
v -1.095840 3.746070 -7.883420
|
||||
v -1.095840 0.156645 -14.294900
|
||||
v -1.095840 -4.601110 -14.284900
|
||||
v 0.042220 -4.601110 -14.284900
|
||||
v 0.042220 -4.601110 -9.415440
|
||||
v 0.042220 1.039181 -10.802900
|
||||
v 0.042220 0.156645 -12.044100
|
||||
v 0.042220 2.868579 -10.802900
|
||||
v 0.042220 0.156645 -14.294900
|
||||
v 0.042220 3.746069 -12.034100
|
||||
v 0.042220 3.746070 -7.883420
|
||||
v 0.042220 2.868580 -7.883420
|
||||
v -1.096322 -3.033999 -9.415440
|
||||
v 0.044046 -3.035397 -9.415440
|
||||
vt 1.000000 0.187500
|
||||
vt -1.000000 0.312500
|
||||
vt 1.000000 0.312500
|
||||
vt 0.687500 1.000000
|
||||
vt 0.500000 0.875000
|
||||
vt 0.500000 0.625000
|
||||
vt -1.000000 0.062500
|
||||
vt 1.000000 0.062500
|
||||
vt 1.000000 -0.000000
|
||||
vt -1.000000 0.125000
|
||||
vt 1.000000 0.125000
|
||||
vt 0.437500 0.125000
|
||||
vt 0.312500 0.500000
|
||||
vt 0.312500 0.125000
|
||||
vt 1.000000 0.625000
|
||||
vt -1.000000 0.500000
|
||||
vt 1.000000 0.500000
|
||||
vt 0.187500 0.687500
|
||||
vt -0.187500 0.687500
|
||||
vt -0.187500 0.312500
|
||||
vt 1.000000 0.812500
|
||||
vt -1.000000 0.937500
|
||||
vt -1.000000 0.812500
|
||||
vt 0.812500 0.687500
|
||||
vt 1.187500 0.687500
|
||||
vt 0.812500 0.312500
|
||||
vt 1.000000 0.562500
|
||||
vt 0.312500 0.437500
|
||||
vt 1.000000 0.437500
|
||||
vt 1.000000 0.750000
|
||||
vt -1.000000 0.875000
|
||||
vt -1.000000 0.750000
|
||||
vt -1.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.437500 0.625000
|
||||
vt 0.562500 0.437500
|
||||
vt 0.562500 0.625000
|
||||
vt -1.000000 0.437500
|
||||
vt -1.000000 0.000000
|
||||
vt 0.500000 0.062500
|
||||
vt 0.375000 0.750000
|
||||
vt 0.500000 0.750000
|
||||
vt -1.000000 0.250000
|
||||
vt -1.000000 0.687500
|
||||
vt 1.000000 0.687500
|
||||
vt 0.625000 0.375000
|
||||
vt 1.000000 0.375000
|
||||
vt 1.000000 0.250000
|
||||
vt 1.000000 0.937500
|
||||
vt 0.437500 0.812500
|
||||
vt 0.312500 0.312500
|
||||
vt 0.312500 0.812500
|
||||
vt 0.437500 0.312500
|
||||
vt 0.437500 0.437500
|
||||
vt 0.687500 0.812500
|
||||
vt 0.000000 0.687500
|
||||
vt 0.000000 0.812500
|
||||
vt -1.000000 0.562500
|
||||
vt 0.875000 0.812500
|
||||
vt 0.875000 0.687500
|
||||
vt 0.250000 0.312500
|
||||
vt 0.562500 0.187500
|
||||
vt 0.250000 0.187500
|
||||
vt -1.000000 0.187500
|
||||
vt 0.312500 0.625000
|
||||
vt 0.312500 0.187500
|
||||
vt 0.312500 -0.187500
|
||||
vt 1.000000 -0.187500
|
||||
vt 0.687500 0.500000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.000000 0.875000
|
||||
vt 0.437500 0.500000
|
||||
vt -1.000000 0.625000
|
||||
vt 0.812500 0.187500
|
||||
vt 1.187500 0.187500
|
||||
vt 1.187500 0.312500
|
||||
vt 1.312500 0.312500
|
||||
vt 1.312500 0.687500
|
||||
vt 0.687500 0.187500
|
||||
vt 0.687500 0.312500
|
||||
vt 1.187500 0.812500
|
||||
vt 0.812500 0.812500
|
||||
vt 0.187500 0.312500
|
||||
vt 0.312500 0.687500
|
||||
vt 0.687500 0.687500
|
||||
vt -0.187500 0.187500
|
||||
vt 0.187500 0.187500
|
||||
vt -0.312500 0.687500
|
||||
vt -0.312500 0.312500
|
||||
vt 0.187500 0.812500
|
||||
vt -0.187500 0.812500
|
||||
vt 0.437500 0.687500
|
||||
vt 0.437500 0.187500
|
||||
vt 0.562500 0.812500
|
||||
vt 0.562500 0.687500
|
||||
vt 0.312500 0.562500
|
||||
vt 1.000000 0.875000
|
||||
vt 0.375000 0.062500
|
||||
vt -1.000000 0.375000
|
||||
vt 0.625000 0.500000
|
||||
vt 0.875000 0.562500
|
||||
vt 0.937500 0.812500
|
||||
vt 0.937500 0.687500
|
||||
vt 0.875000 0.937500
|
||||
vt 0.562500 0.312500
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 0.000000 -1.000000 0.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
vn 0.000000 -0.002100 -1.000000
|
||||
vn 0.001200 -1.000000 0.000000
|
||||
vn 0.000000 0.002800 -1.000000
|
||||
vn -0.001200 -1.000000 0.000200
|
||||
g boats_boat_boats_boat_None
|
||||
usemtl None
|
||||
s off
|
||||
f 41/1/1 27/2/1 43/3/1
|
||||
f 76/4/2 74/5/2 72/6/2
|
||||
f 8/7/2 6/1/2 5/8/2
|
||||
f 15/9/1 13/10/1 16/11/1
|
||||
f 51/12/3 71/13/3 50/14/3
|
||||
f 56/15/2 32/16/2 53/17/2
|
||||
f 15/18/3 8/19/3 23/20/3
|
||||
f 22/21/2 40/22/2 39/23/2
|
||||
f 19/24/4 2/25/4 53/26/4
|
||||
f 70/27/5 62/28/5 69/29/5
|
||||
f 11/30/5 19/31/5 10/32/5
|
||||
f 4/15/5 20/33/5 17/34/5
|
||||
f 72/35/3 64/36/3 63/37/3
|
||||
f 13/8/5 7/38/5 16/7/5
|
||||
f 23/39/6 47/11/6 44/9/6
|
||||
f 68/40/7 70/41/7 69/42/7
|
||||
f 80/43/8 40/10/8 30/11/8
|
||||
f 3/15/1 1/32/1 4/30/1
|
||||
f 20/44/2 18/27/2 17/45/2
|
||||
f 74/17/5 65/46/5 64/47/5
|
||||
f 31/43/1 54/47/1 52/48/1
|
||||
f 22/47/5 14/43/5 15/48/5
|
||||
f 46/1/2 23/7/2 44/8/2
|
||||
f 57/21/1 38/22/1 58/49/1
|
||||
f 61/50/9 76/51/9 73/52/9
|
||||
f 37/45/5 2/23/5 3/21/5
|
||||
f 78/28/3 67/53/3 65/54/3
|
||||
f 64/5/1 66/4/1 63/6/1
|
||||
f 76/55/6 67/56/6 77/57/6
|
||||
f 47/17/2 26/10/2 45/11/2
|
||||
f 5/16/5 26/47/5 8/17/5
|
||||
f 33/58/6 48/59/6 55/60/6
|
||||
f 29/38/2 42/3/2 49/29/2
|
||||
f 32/44/6 52/21/6 53/45/6
|
||||
f 58/15/6 34/33/6 56/34/6
|
||||
f 27/7/6 46/29/6 43/8/6
|
||||
f 73/61/6 68/62/6 61/63/6
|
||||
f 21/58/6 42/29/6 28/38/6
|
||||
f 11/29/1 9/58/1 12/27/1
|
||||
f 59/45/1 36/2/1 60/3/1
|
||||
f 60/9/6 35/10/6 57/11/6
|
||||
f 41/1/1 21/64/1 27/2/1
|
||||
f 72/6/2 48/65/2 50/66/2
|
||||
f 50/66/2 71/67/2 70/68/2
|
||||
f 70/68/2 75/17/2 73/69/2
|
||||
f 76/4/2 77/70/2 74/5/2
|
||||
f 77/70/2 78/71/2 74/5/2
|
||||
f 50/66/2 70/68/2 73/69/2
|
||||
f 73/69/2 76/4/2 72/6/2
|
||||
f 72/6/2 50/66/2 73/69/2
|
||||
f 8/7/2 7/64/2 6/1/2
|
||||
f 15/9/1 14/39/1 13/10/1
|
||||
f 51/12/3 62/72/3 71/13/3
|
||||
f 56/15/2 34/73/2 32/16/2
|
||||
f 32/26/3 34/74/3 38/75/3
|
||||
f 35/76/3 36/77/3 37/78/3
|
||||
f 32/26/3 38/75/3 35/76/3
|
||||
f 29/66/3 33/79/3 31/80/3
|
||||
f 32/26/3 35/76/3 3/25/3
|
||||
f 28/51/3 29/66/3 31/80/3
|
||||
f 31/80/3 32/26/3 18/24/3
|
||||
f 3/25/3 4/81/3 17/82/3
|
||||
f 35/76/3 37/78/3 3/25/3
|
||||
f 21/83/3 28/51/3 22/84/3
|
||||
f 3/25/3 17/82/3 18/24/3
|
||||
f 11/85/3 12/55/3 30/52/3
|
||||
f 32/26/3 3/25/3 18/24/3
|
||||
f 11/85/3 30/52/3 22/84/3
|
||||
f 31/80/3 18/24/3 11/85/3
|
||||
f 24/86/3 27/87/3 21/83/3
|
||||
f 28/51/3 31/80/3 11/85/3
|
||||
f 11/85/3 22/84/3 28/51/3
|
||||
f 24/86/3 21/83/3 23/20/3
|
||||
f 26/88/3 25/89/3 23/20/3
|
||||
f 23/20/3 21/83/3 15/18/3
|
||||
f 15/18/3 16/90/3 7/91/3
|
||||
f 21/83/3 22/84/3 15/18/3
|
||||
f 8/19/3 26/88/3 23/20/3
|
||||
f 15/18/3 7/91/3 8/19/3
|
||||
f 22/21/2 30/49/2 40/22/2
|
||||
f 47/89/4 45/88/4 5/19/4
|
||||
f 5/19/4 6/91/4 13/90/4
|
||||
f 5/19/4 13/90/4 14/18/4
|
||||
f 44/20/4 47/89/4 5/19/4
|
||||
f 43/87/4 46/86/4 44/20/4
|
||||
f 41/83/4 43/87/4 44/20/4
|
||||
f 44/20/4 5/19/4 14/18/4
|
||||
f 39/84/4 40/52/4 80/50/4
|
||||
f 44/20/4 14/18/4 41/83/4
|
||||
f 42/51/4 41/83/4 39/84/4
|
||||
f 39/84/4 80/50/4 50/92/4
|
||||
f 41/83/4 14/18/4 39/84/4
|
||||
f 48/93/4 49/66/4 42/51/4
|
||||
f 50/92/4 48/93/4 42/51/4
|
||||
f 80/50/4 79/94/4 50/92/4
|
||||
f 50/92/4 42/51/4 39/84/4
|
||||
f 54/79/4 55/62/4 52/80/4
|
||||
f 50/92/4 79/94/4 51/95/4
|
||||
f 52/80/4 55/62/4 51/95/4
|
||||
f 51/95/4 79/94/4 10/85/4
|
||||
f 79/94/4 9/55/4 10/85/4
|
||||
f 53/26/4 52/80/4 10/85/4
|
||||
f 58/75/4 56/74/4 53/26/4
|
||||
f 59/78/4 60/77/4 57/76/4
|
||||
f 57/76/4 58/75/4 53/26/4
|
||||
f 52/80/4 51/95/4 10/85/4
|
||||
f 19/24/4 20/82/4 1/81/4
|
||||
f 53/26/4 10/85/4 19/24/4
|
||||
f 59/78/4 57/76/4 2/25/4
|
||||
f 19/24/4 1/81/4 2/25/4
|
||||
f 2/25/4 57/76/4 53/26/4
|
||||
f 70/27/5 71/96/5 62/28/5
|
||||
f 11/30/5 18/97/5 19/31/5
|
||||
f 4/15/5 1/73/5 20/33/5
|
||||
f 72/35/3 74/54/3 64/36/3
|
||||
f 13/8/5 6/29/5 7/38/5
|
||||
f 23/39/6 25/10/6 47/11/6
|
||||
f 68/40/7 75/98/7 70/41/7
|
||||
f 30/11/5 12/17/5 79/99/5
|
||||
f 79/99/10 80/43/10 30/11/10
|
||||
f 12/17/5 9/16/5 79/99/5
|
||||
f 3/15/1 2/73/1 1/32/1
|
||||
f 20/44/2 19/58/2 18/27/2
|
||||
f 74/17/5 78/100/5 65/46/5
|
||||
f 31/43/1 33/99/1 54/47/1
|
||||
f 22/47/5 39/99/5 14/43/5
|
||||
f 46/1/2 24/64/2 23/7/2
|
||||
f 57/21/1 35/23/1 38/22/1
|
||||
f 61/50/9 66/53/9 76/51/9
|
||||
f 37/45/5 59/44/5 2/23/5
|
||||
f 78/28/3 77/51/3 67/53/3
|
||||
f 62/67/1 51/66/1 69/68/1
|
||||
f 51/66/1 55/65/1 63/6/1
|
||||
f 68/17/1 69/68/1 61/69/1
|
||||
f 61/69/1 69/68/1 51/66/1
|
||||
f 61/69/1 51/66/1 63/6/1
|
||||
f 65/71/1 67/70/1 64/5/1
|
||||
f 61/69/1 63/6/1 66/4/1
|
||||
f 64/5/1 67/70/1 66/4/1
|
||||
f 76/55/6 66/85/6 67/56/6
|
||||
f 47/17/2 25/16/2 26/10/2
|
||||
f 5/16/5 45/99/5 26/47/5
|
||||
f 55/60/6 54/101/6 33/58/6
|
||||
f 33/58/6 29/22/6 48/59/6
|
||||
f 48/59/6 72/102/6 63/103/6
|
||||
f 29/22/6 49/104/6 48/59/6
|
||||
f 48/59/6 63/103/6 55/60/6
|
||||
f 29/38/2 28/2/2 42/3/2
|
||||
f 32/44/6 31/23/6 52/21/6
|
||||
f 58/15/6 38/73/6 34/33/6
|
||||
f 27/7/6 24/38/6 46/29/6
|
||||
f 73/61/6 75/105/6 68/62/6
|
||||
f 21/58/6 41/27/6 42/29/6
|
||||
f 11/29/1 10/38/1 9/58/1
|
||||
f 59/45/1 37/44/1 36/2/1
|
||||
f 60/9/6 36/39/6 35/10/6
|
Before Width: | Height: | Size: 851 B |
Before Width: | Height: | Size: 546 B |
|
@ -1,2 +1,2 @@
|
|||
default
|
||||
wool
|
||||
dye
|
225
mods/bonemeal/init.lua
Normal file
|
@ -0,0 +1,225 @@
|
|||
-- This mod cutted out from ethereal: https://github.com/tenplus1/ethereal
|
||||
--
|
||||
|
||||
minetest.register_craft({
|
||||
output = "bonemeal:bonemeal 4",
|
||||
recipe = {
|
||||
{'default:bone'},
|
||||
{'default:mese_crystal_fragment'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "dye:white 2",
|
||||
recipe = {"default:bonemeal"},
|
||||
})
|
||||
|
||||
local plants = {
|
||||
"flowers:dandelion_white",
|
||||
"flowers:dandelion_yellow",
|
||||
"flowers:geranium",
|
||||
"flowers:rose",
|
||||
"flowers:tulip",
|
||||
"flowers:viola",
|
||||
}
|
||||
|
||||
|
||||
local crops = {
|
||||
{"farming:cotton_", 8},
|
||||
{"farming:wheat_", 8},
|
||||
{"farming:tomato_", 8},
|
||||
{"farming:corn_", 8},
|
||||
{"farming:melon_", 8},
|
||||
{"farming:pumpkin_", 8},
|
||||
{"farming:beanpole_", 5},
|
||||
{"farming:blueberry_", 4},
|
||||
{"farming:raspberry_", 4},
|
||||
{"farming:carrot_", 8},
|
||||
{"farming:cocoa_", 3},
|
||||
{"farming:coffee_", 5},
|
||||
{"farming:cucumber_", 4},
|
||||
{"farming:potato_", 4},
|
||||
{"farming:grapes_", 8},
|
||||
{"farming:rhubarb_", 3},
|
||||
{"farming:barley_", 7},
|
||||
}
|
||||
|
||||
-- check if sapling has enough height room to grow
|
||||
local function enough_height(pos, height)
|
||||
|
||||
local nod = minetest.line_of_sight(
|
||||
{x = pos.x, y = pos.y + 1, z = pos.z},
|
||||
{x = pos.x, y = pos.y + height, z = pos.z})
|
||||
|
||||
if not nod then
|
||||
return false -- obstructed
|
||||
else
|
||||
return true -- can grow
|
||||
end
|
||||
end
|
||||
|
||||
-- growing routine
|
||||
local function growth(pointed_thing)
|
||||
|
||||
local pos = pointed_thing.under
|
||||
local node = minetest.get_node(pos)
|
||||
|
||||
if node.name == "ignore" then
|
||||
return
|
||||
end
|
||||
|
||||
minetest.add_particlespawner({
|
||||
amount = 4,
|
||||
time = 0.15,
|
||||
minpos = pos,
|
||||
maxpos = pos,
|
||||
minvel = {x = -1, y = 2, z = -1},
|
||||
maxvel = {x = 1, y = 4, z = 1},
|
||||
minacc = {x = -1, y = -1, z = -1},
|
||||
maxacc = {x = 1, y = 1, z = 1},
|
||||
minexptime = 1,
|
||||
maxexptime = 1,
|
||||
minsize = 1,
|
||||
maxsize = 3,
|
||||
texture = "bonemeal_particle.png",
|
||||
})
|
||||
|
||||
-- 50/50 chance of growing a sapling
|
||||
if minetest.get_item_group(node.name, "sapling") > 0 then
|
||||
|
||||
if math.random(1, 2) == 1 then
|
||||
return
|
||||
end
|
||||
|
||||
local under = minetest.get_node({
|
||||
x = pos.x,
|
||||
y = pos.y - 1,
|
||||
z = pos.z
|
||||
})
|
||||
|
||||
local height = minetest.registered_nodes[node.name].grown_height
|
||||
|
||||
-- do we have enough height to grow sapling into tree?
|
||||
if height and not enough_height(pos, height) then
|
||||
return
|
||||
end
|
||||
|
||||
-- check for soil under sapling
|
||||
if minetest.get_item_group(under.name, "soil") == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
-- grow default tree
|
||||
if node.name == "default:sapling"
|
||||
and enough_height(pos, 7) then
|
||||
default.grow_new_apple_tree(pos)
|
||||
|
||||
elseif node.name == "default:junglesapling"
|
||||
and enough_height(pos, 15) then
|
||||
default.grow_new_jungle_tree(pos)
|
||||
|
||||
elseif node.name == "default:pine_sapling"
|
||||
and enough_height(pos, 11) then
|
||||
|
||||
if minetest.find_node_near(pos, 1,
|
||||
{"default:snow", "default:snowblock", "default:dirt_with_snow"}) then
|
||||
|
||||
default.grow_new_snowy_pine_tree(pos)
|
||||
else
|
||||
default.grow_new_pine_tree(pos)
|
||||
end
|
||||
|
||||
elseif node.name == "default:acacia_sapling"
|
||||
and under.name == "default:sand" then
|
||||
default.grow_new_acacia_tree(pos)
|
||||
|
||||
elseif node.name == "default:aspen_sapling"
|
||||
and enough_height(pos, 11) then
|
||||
default.grow_new_aspen_tree(pos)
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
local stage = ""
|
||||
|
||||
-- grow registered crops
|
||||
for n = 1, #crops do
|
||||
|
||||
if string.find(node.name, crops[n][1]) then
|
||||
|
||||
stage = tonumber( node.name:split("_")[2] )
|
||||
stage = math.min(stage + math.random(1, 4), crops[n][2])
|
||||
|
||||
minetest.set_node(pos, {name = crops[n][1] .. stage})
|
||||
|
||||
return
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-- grow grass and flowers
|
||||
if minetest.get_item_group(node.name, "soil") > 0 then
|
||||
|
||||
local dirt = minetest.find_nodes_in_area_under_air(
|
||||
{x = pos.x - 2, y = pos.y - 1, z = pos.z - 2},
|
||||
{x = pos.x + 2, y = pos.y + 1, z = pos.z + 2},
|
||||
{"group:soil"})
|
||||
|
||||
for _,n in pairs(dirt) do
|
||||
|
||||
local pos2 = n
|
||||
|
||||
pos2.y = pos2.y + 1
|
||||
|
||||
if math.random(0, 5) > 3 then
|
||||
|
||||
minetest.swap_node(pos2,
|
||||
{name = plants[math.random(1, #plants)]})
|
||||
else
|
||||
|
||||
if node.name == "default:dirt_with_dry_grass" then
|
||||
minetest.swap_node(pos2,
|
||||
{name = "default:dry_grass_" .. math.random(1, 5)})
|
||||
else
|
||||
minetest.swap_node(pos2,
|
||||
{name = "default:grass_" .. math.random(1, 5)})
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- bonemeal item
|
||||
minetest.register_craftitem("bonemeal:bonemeal", {
|
||||
description = "Bone Meal",
|
||||
inventory_image = "bonemeal.png",
|
||||
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
|
||||
if pointed_thing.type == "node" then
|
||||
|
||||
-- Check if node protected
|
||||
if minetest.is_protected(pointed_thing.under, user:get_player_name()) then
|
||||
return
|
||||
end
|
||||
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
|
||||
local item = user:get_wielded_item()
|
||||
|
||||
item:take_item()
|
||||
user:set_wielded_item(item)
|
||||
end
|
||||
|
||||
growth(pointed_thing)
|
||||
|
||||
itemstack:take_item()
|
||||
|
||||
return itemstack
|
||||
end
|
||||
end,
|
||||
})
|
BIN
mods/bonemeal/textures/bonemeal.png
Normal file
After Width: | Height: | Size: 186 B |
BIN
mods/bonemeal/textures/bonemeal_particle.png
Normal file
After Width: | Height: | Size: 116 B |
|
@ -210,6 +210,8 @@ minetest.register_on_dieplayer(function(player)
|
|||
|
||||
local param2 = minetest.dir_to_facedir(player:get_look_dir())
|
||||
minetest.set_node(pos, {name = "bones:bones", param2 = param2})
|
||||
minetest.chat_send_player(player_name, core.colorize("#F6A10A", "# Illuna: Your stuff is waiting for you at "..minetest.pos_to_string(pos).. ". Hurry. ;-)"))
|
||||
minetest.log("action", player_name.." left their bones at "..minetest.pos_to_string(pos))
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
|
@ -233,7 +235,7 @@ minetest.register_on_dieplayer(function(player)
|
|||
meta:set_string("owner", player_name)
|
||||
|
||||
if share_bones_time ~= 0 then
|
||||
meta:set_string("infotext", player_name .. "'s fresh bones")
|
||||
meta:set_string("infotext", core.colorize("#F35400", player_name .. "'s fresh bones"))
|
||||
|
||||
if share_bones_time_early == 0 or not minetest.is_protected(pos, player_name) then
|
||||
meta:set_int("time", 0)
|
||||
|
@ -243,6 +245,6 @@ minetest.register_on_dieplayer(function(player)
|
|||
|
||||
minetest.get_node_timer(pos):start(10)
|
||||
else
|
||||
meta:set_string("infotext", player_name.."'s bones")
|
||||
meta:set_string("infotext", core.colorize("#37CA39", player_name.."'s bones"))
|
||||
end
|
||||
end)
|
||||
|
|
1
mods/bows
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 4b693ac6ef474c4154678efa058c5897a14c1ca4
|
1
mods/bridges
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 5b5f47552cab78cad1c31be84b5db3d384e2bbff
|
1
mods/cannons
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit a7e8b8ba93d04068daa19c55499c85e6bddba673
|
1
mods/caverealms
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit be67d10792ce97dfddf29dfc0fb0180a24cfd955
|
1
mods/character_creator
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit cca1e023c0e2306f558ee23c44f07c044ba82073
|
1
mods/christmas_craft
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 8d9ee6a22590ab918292bbbd350b03c6f55abca5
|
1
mods/columnia
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 7a5384239d0e86b126cd873c5585061fb8926add
|
1
mods/cottages
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit e40a4ee8389e54db44bf0cdba21a298bfeae77c3
|
1
mods/craftguide
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 9510ed7daa6075f7f2b3c694ed2f34677f3216fe
|
1
mods/ctravelnet
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 28d4739144ec1f9c654656849eea5f26c9a81b76
|
1
mods/darkage
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 4552ac282c9162a5ab74731a5e3db3cb22ba3218
|
1
mods/death_messages
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit b84a287dddf3ee57fa8178cf8504a4180b60f28a
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
-- Aliases to support loading worlds using nodes following the old naming convention
|
||||
-- These can also be helpful when using chat commands, for example /giveme
|
||||
|
||||
minetest.register_alias("stone", "default:stone")
|
||||
minetest.register_alias("stone_with_coal", "default:stone_with_coal")
|
||||
minetest.register_alias("stone_with_iron", "default:stone_with_iron")
|
||||
|
@ -24,6 +25,7 @@ minetest.register_alias("glass", "default:glass")
|
|||
minetest.register_alias("wooden_fence", "default:fence_wood")
|
||||
minetest.register_alias("rail", "carts:rail")
|
||||
minetest.register_alias("ladder", "default:ladder_wood")
|
||||
minetest.register_alias("default:ladder_wood", "default:ladder")
|
||||
minetest.register_alias("wood", "default:wood")
|
||||
minetest.register_alias("mese", "default:mese")
|
||||
minetest.register_alias("cloud", "default:cloud")
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
-- mods/default/craftitems.lua
|
||||
|
||||
minetest.register_craftitem("default:bone", {
|
||||
description = "Bone",
|
||||
inventory_image = "bone.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("default:stick", {
|
||||
description = "Stick",
|
||||
inventory_image = "default_stick.png",
|
||||
|
|
|
@ -121,11 +121,20 @@ end
|
|||
-- Lavacooling
|
||||
--
|
||||
|
||||
lavagen = {
|
||||
"default:stone"
|
||||
}
|
||||
|
||||
-- thanks to ElectronLibre from Minetest IRC
|
||||
if minetest.get_modpath("darkage")
|
||||
then table.insert(lavagen, "darkage:basalt")
|
||||
end
|
||||
|
||||
default.cool_lava = function(pos, node)
|
||||
if node.name == "default:lava_source" then
|
||||
minetest.set_node(pos, {name = "default:obsidian"})
|
||||
else -- Lava flowing
|
||||
minetest.set_node(pos, {name = "default:stone"})
|
||||
else
|
||||
minetest.set_node(pos, {name = lavagen[math.random(1,#lavagen)]})
|
||||
end
|
||||
minetest.sound_play("default_cool_lava",
|
||||
{pos = pos, max_hear_distance = 16, gain = 0.25})
|
||||
|
@ -272,27 +281,16 @@ function default.register_fence(name, def)
|
|||
-- Allow almost everything to be overridden
|
||||
local default_fields = {
|
||||
paramtype = "light",
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "connected",
|
||||
fixed = {{-1/8, -1/2, -1/8, 1/8, 1/2, 1/8}},
|
||||
-- connect_top =
|
||||
-- connect_bottom =
|
||||
connect_front = {{-1/16,3/16,-1/2,1/16,5/16,-1/8},
|
||||
{-1/16,-5/16,-1/2,1/16,-3/16,-1/8}},
|
||||
connect_left = {{-1/2,3/16,-1/16,-1/8,5/16,1/16},
|
||||
{-1/2,-5/16,-1/16,-1/8,-3/16,1/16}},
|
||||
connect_back = {{-1/16,3/16,1/8,1/16,5/16,1/2},
|
||||
{-1/16,-5/16,1/8,1/16,-3/16,1/2}},
|
||||
connect_right = {{1/8,3/16,-1/16,1/2,5/16,1/16},
|
||||
{1/8,-5/16,-1/16,1/2,-3/16,1/16}},
|
||||
},
|
||||
connects_to = {"group:fence", "group:wood", "group:tree"},
|
||||
drawtype = "fencelike",
|
||||
inventory_image = fence_texture,
|
||||
wield_image = fence_texture,
|
||||
tiles = { def.texture },
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
|
||||
},
|
||||
groups = {},
|
||||
}
|
||||
for k, v in pairs(default_fields) do
|
||||
|
@ -460,14 +458,18 @@ minetest.register_abm({
|
|||
|
||||
minetest.register_abm({
|
||||
label = "Moss growth",
|
||||
nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble", "walls:cobble"},
|
||||
nodenames = {"default:stone", "default:cobble", "default:stonebrick", "stairs:slab_cobble", "stairs:stair_cobble", "stairs:slab_cobble", "walls:cobble"},
|
||||
neighbors = {"group:water"},
|
||||
interval = 16,
|
||||
chance = 200,
|
||||
catch_up = false,
|
||||
action = function(pos, node)
|
||||
if node.name == "default:cobble" then
|
||||
if node.name == "default:stone" then
|
||||
minetest.set_node(pos, {name = "default:mossystone"})
|
||||
elseif node.name == "default:cobble" then
|
||||
minetest.set_node(pos, {name = "default:mossycobble"})
|
||||
elseif node.name == "default:stonebrick" then
|
||||
minetest.set_node(pos, {name = "default:mossystonebrick"})
|
||||
elseif node.name == "stairs:slab_cobble" then
|
||||
minetest.set_node(pos, {name = "stairs:slab_mossycobble", param2 = node.param2})
|
||||
elseif node.name == "stairs:stair_cobble" then
|
||||
|
|
|
@ -11,7 +11,7 @@ default.LIGHT_MAX = 14
|
|||
-- GUI related stuff
|
||||
default.gui_bg = "bgcolor[#080808BB;true]"
|
||||
default.gui_bg_img = "background[5,5;1,1;gui_formbg.png;true]"
|
||||
default.gui_slots = "listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]"
|
||||
default.gui_slots = "listcolors[#79777639;#8EACE542;#141318;#8EACE599;#8EACE521]"
|
||||
|
||||
function default.get_hotbar_bg(x,y)
|
||||
local out = ""
|
||||
|
|
|
@ -237,6 +237,14 @@ minetest.register_node("default:stone_block", {
|
|||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("default:mossystone", {
|
||||
description = "Mossy Stone",
|
||||
tiles = {"default_mossystone.png"},
|
||||
is_ground_content = false,
|
||||
groups = {cracky = 3, stone = 1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("default:mossycobble", {
|
||||
description = "Mossy Cobblestone",
|
||||
tiles = {"default_mossycobble.png"},
|
||||
|
@ -245,6 +253,13 @@ minetest.register_node("default:mossycobble", {
|
|||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("default:mossystonebrick", {
|
||||
description = "Mossy Stonebrick",
|
||||
tiles = {"default_mossystone_brick.png"},
|
||||
is_ground_content = false,
|
||||
groups = {cracky = 3, stone = 1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("default:desert_stone", {
|
||||
description = "Desert Stone",
|
||||
|
@ -390,6 +405,14 @@ minetest.register_node("default:dirt", {
|
|||
tiles = {"default_dirt.png"},
|
||||
groups = {crumbly = 3, soil = 1},
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {'default:bone', 'default:dirt'},rarity = 30,},
|
||||
{items = {'default:dirt'},},
|
||||
},
|
||||
},
|
||||
|
||||
})
|
||||
|
||||
minetest.register_node("default:dirt_with_grass", {
|
||||
|
@ -2196,7 +2219,7 @@ end
|
|||
default.register_leafdecay({
|
||||
trunks = {"default:acacia_tree"},
|
||||
leaves = {"default:acacia_leaves"},
|
||||
radius = 2,
|
||||
radius = 3,
|
||||
})
|
||||
|
||||
default.register_leafdecay({
|
||||
|
|
BIN
mods/default/textures/bone.png
Normal file
After Width: | Height: | Size: 148 B |
BIN
mods/default/textures/default_fence_overlay.png.1
Normal file
After Width: | Height: | Size: 219 B |
BIN
mods/default/textures/default_mossystone.png
Normal file
After Width: | Height: | Size: 689 B |
BIN
mods/default/textures/default_mossystone_brick.png
Normal file
After Width: | Height: | Size: 702 B |
|
@ -99,7 +99,7 @@ minetest.register_tool("default:pick_diamond", {
|
|||
full_punch_interval = 0.9,
|
||||
max_drop_level=3,
|
||||
groupcaps={
|
||||
cracky = {times={[1]=2.0, [2]=1.0, [3]=0.50}, uses=30, maxlevel=3},
|
||||
cracky = {times = {[1] = 2.25, [2] = 0.70, [3] = 0.55}, uses = 30, maxlevel= 3}
|
||||
},
|
||||
damage_groups = {fleshy=5},
|
||||
},
|
||||
|
|
|
@ -709,8 +709,8 @@ doors.register_trapdoor("doors:trapdoor_steel", {
|
|||
minetest.register_craft({
|
||||
output = 'doors:trapdoor 2',
|
||||
recipe = {
|
||||
{'group:wood', 'group:wood', 'group:wood'},
|
||||
{'group:wood', 'group:wood', 'group:wood'},
|
||||
{'group:wood', 'group:wood', ''},
|
||||
{'group:wood', 'group:wood', ''},
|
||||
{'', '', ''},
|
||||
}
|
||||
})
|
||||
|
|
1
mods/dragons
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 6a9a3189cd3767e06984cf295e67c6b19ac9a7ab
|
1
mods/farming
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 4e3ed4f1a01d7c2225ac348c5c6be457e2ac9038
|
|
@ -1,37 +0,0 @@
|
|||
Minetest Game mod: farming
|
||||
==========================
|
||||
See license.txt for license information.
|
||||
|
||||
Authors of source code
|
||||
----------------------
|
||||
Originally by PilzAdam (MIT)
|
||||
webdesigner97 (MIT)
|
||||
Various Minetest developers and contributors (MIT)
|
||||
|
||||
Authors of media (textures)
|
||||
---------------------------
|
||||
Created by PilzAdam (CC BY 3.0):
|
||||
farming_bread.png
|
||||
farming_soil.png
|
||||
farming_soil_wet.png
|
||||
farming_soil_wet_side.png
|
||||
farming_string.png
|
||||
|
||||
Created by BlockMen (CC BY 3.0):
|
||||
farming_tool_diamondhoe.png
|
||||
farming_tool_mesehoe.png
|
||||
farming_tool_bronzehoe.png
|
||||
farming_tool_steelhoe.png
|
||||
farming_tool_stonehoe.png
|
||||
farming_tool_woodhoe.png
|
||||
|
||||
Created by MasterGollum (CC BY 3.0):
|
||||
farming_straw.png
|
||||
|
||||
Created by Gambit (CC BY 3.0):
|
||||
farming_wheat.png
|
||||
farming_wheat_*.png
|
||||
farming_cotton_*.png
|
||||
farming_flour.png
|
||||
farming_cotton_seed.png
|
||||
farming_wheat_seed.png
|
|
@ -1,402 +0,0 @@
|
|||
|
||||
-- Wear out hoes, place soil
|
||||
-- TODO Ignore group:flower
|
||||
farming.registered_plants = {}
|
||||
|
||||
farming.hoe_on_use = function(itemstack, user, pointed_thing, uses)
|
||||
local pt = pointed_thing
|
||||
-- check if pointing at a node
|
||||
if not pt then
|
||||
return
|
||||
end
|
||||
if pt.type ~= "node" then
|
||||
return
|
||||
end
|
||||
|
||||
local under = minetest.get_node(pt.under)
|
||||
local p = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
|
||||
local above = minetest.get_node(p)
|
||||
|
||||
-- return if any of the nodes is not registered
|
||||
if not minetest.registered_nodes[under.name] then
|
||||
return
|
||||
end
|
||||
if not minetest.registered_nodes[above.name] then
|
||||
return
|
||||
end
|
||||
|
||||
-- check if the node above the pointed thing is air
|
||||
if above.name ~= "air" then
|
||||
return
|
||||
end
|
||||
|
||||
-- check if pointing at soil
|
||||
if minetest.get_item_group(under.name, "soil") ~= 1 then
|
||||
return
|
||||
end
|
||||
|
||||
-- check if (wet) soil defined
|
||||
local regN = minetest.registered_nodes
|
||||
if regN[under.name].soil == nil or regN[under.name].soil.wet == nil or regN[under.name].soil.dry == nil then
|
||||
return
|
||||
end
|
||||
|
||||
if minetest.is_protected(pt.under, user:get_player_name()) then
|
||||
minetest.record_protection_violation(pt.under, user:get_player_name())
|
||||
return
|
||||
end
|
||||
if minetest.is_protected(pt.above, user:get_player_name()) then
|
||||
minetest.record_protection_violation(pt.above, user:get_player_name())
|
||||
return
|
||||
end
|
||||
|
||||
-- turn the node into soil and play sound
|
||||
minetest.set_node(pt.under, {name = regN[under.name].soil.dry})
|
||||
minetest.sound_play("default_dig_crumbly", {
|
||||
pos = pt.under,
|
||||
gain = 0.5,
|
||||
})
|
||||
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
-- wear tool
|
||||
local wdef = itemstack:get_definition()
|
||||
itemstack:add_wear(65535/(uses-1))
|
||||
-- tool break sound
|
||||
if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then
|
||||
minetest.sound_play(wdef.sound.breaks, {pos = pt.above, gain = 0.5})
|
||||
end
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
|
||||
-- Register new hoes
|
||||
farming.register_hoe = function(name, def)
|
||||
-- Check for : prefix (register new hoes in your mod's namespace)
|
||||
if name:sub(1,1) ~= ":" then
|
||||
name = ":" .. name
|
||||
end
|
||||
-- Check def table
|
||||
if def.description == nil then
|
||||
def.description = "Hoe"
|
||||
end
|
||||
if def.inventory_image == nil then
|
||||
def.inventory_image = "unknown_item.png"
|
||||
end
|
||||
if def.recipe == nil then
|
||||
def.recipe = {
|
||||
{"air","air",""},
|
||||
{"","group:stick",""},
|
||||
{"","group:stick",""}
|
||||
}
|
||||
end
|
||||
if def.max_uses == nil then
|
||||
def.max_uses = 30
|
||||
end
|
||||
-- Register the tool
|
||||
minetest.register_tool(name, {
|
||||
description = def.description,
|
||||
inventory_image = def.inventory_image,
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
return farming.hoe_on_use(itemstack, user, pointed_thing, def.max_uses)
|
||||
end,
|
||||
groups = def.groups,
|
||||
sound = {breaks = "default_tool_breaks"},
|
||||
})
|
||||
-- Register its recipe
|
||||
if def.material == nil then
|
||||
minetest.register_craft({
|
||||
output = name:sub(2),
|
||||
recipe = def.recipe
|
||||
})
|
||||
else
|
||||
minetest.register_craft({
|
||||
output = name:sub(2),
|
||||
recipe = {
|
||||
{def.material, def.material, ""},
|
||||
{"", "group:stick", ""},
|
||||
{"", "group:stick", ""}
|
||||
}
|
||||
})
|
||||
-- Reverse Recipe
|
||||
minetest.register_craft({
|
||||
output = name:sub(2),
|
||||
recipe = {
|
||||
{"", def.material, def.material},
|
||||
{"", "group:stick", ""},
|
||||
{"", "group:stick", ""}
|
||||
}
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
-- how often node timers for plants will tick, +/- some random value
|
||||
local function tick(pos)
|
||||
minetest.get_node_timer(pos):start(math.random(166, 286))
|
||||
end
|
||||
-- how often a growth failure tick is retried (e.g. too dark)
|
||||
local function tick_again(pos)
|
||||
minetest.get_node_timer(pos):start(math.random(40, 80))
|
||||
end
|
||||
|
||||
-- Seed placement
|
||||
farming.place_seed = function(itemstack, placer, pointed_thing, plantname)
|
||||
local pt = pointed_thing
|
||||
-- check if pointing at a node
|
||||
if not pt then
|
||||
return itemstack
|
||||
end
|
||||
if pt.type ~= "node" then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
local under = minetest.get_node(pt.under)
|
||||
local above = minetest.get_node(pt.above)
|
||||
|
||||
if minetest.is_protected(pt.under, placer:get_player_name()) then
|
||||
minetest.record_protection_violation(pt.under, placer:get_player_name())
|
||||
return
|
||||
end
|
||||
if minetest.is_protected(pt.above, placer:get_player_name()) then
|
||||
minetest.record_protection_violation(pt.above, placer:get_player_name())
|
||||
return
|
||||
end
|
||||
|
||||
-- return if any of the nodes is not registered
|
||||
if not minetest.registered_nodes[under.name] then
|
||||
return itemstack
|
||||
end
|
||||
if not minetest.registered_nodes[above.name] then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
-- check if pointing at the top of the node
|
||||
if pt.above.y ~= pt.under.y+1 then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
-- check if you can replace the node above the pointed node
|
||||
if not minetest.registered_nodes[above.name].buildable_to then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
-- check if pointing at soil
|
||||
if minetest.get_item_group(under.name, "soil") < 2 then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
-- add the node and remove 1 item from the itemstack
|
||||
minetest.add_node(pt.above, {name = plantname, param2 = 1})
|
||||
tick(pt.above)
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
itemstack:take_item()
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
|
||||
farming.grow_plant = function(pos, elapsed)
|
||||
local node = minetest.get_node(pos)
|
||||
local name = node.name
|
||||
local def = minetest.registered_nodes[name]
|
||||
|
||||
if not def.next_plant then
|
||||
-- disable timer for fully grown plant
|
||||
return
|
||||
end
|
||||
|
||||
-- grow seed
|
||||
if minetest.get_item_group(node.name, "seed") and def.fertility then
|
||||
local soil_node = minetest.get_node_or_nil({x = pos.x, y = pos.y - 1, z = pos.z})
|
||||
if not soil_node then
|
||||
tick_again(pos)
|
||||
return
|
||||
end
|
||||
-- omitted is a check for light, we assume seeds can germinate in the dark.
|
||||
for _, v in pairs(def.fertility) do
|
||||
if minetest.get_item_group(soil_node.name, v) ~= 0 then
|
||||
local placenode = {name = def.next_plant}
|
||||
if def.place_param2 then
|
||||
placenode.param2 = def.place_param2
|
||||
end
|
||||
minetest.swap_node(pos, placenode)
|
||||
if minetest.registered_nodes[def.next_plant].next_plant then
|
||||
tick(pos)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
-- check if on wet soil
|
||||
local below = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z})
|
||||
if minetest.get_item_group(below.name, "soil") < 3 then
|
||||
tick_again(pos)
|
||||
return
|
||||
end
|
||||
|
||||
-- check light
|
||||
local light = minetest.get_node_light(pos)
|
||||
if not light or light < def.minlight or light > def.maxlight then
|
||||
tick_again(pos)
|
||||
return
|
||||
end
|
||||
|
||||
-- grow
|
||||
local placenode = {name = def.next_plant}
|
||||
if def.place_param2 then
|
||||
placenode.param2 = def.place_param2
|
||||
end
|
||||
minetest.swap_node(pos, placenode)
|
||||
|
||||
-- new timer needed?
|
||||
if minetest.registered_nodes[def.next_plant].next_plant then
|
||||
tick(pos)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
-- Register plants
|
||||
farming.register_plant = function(name, def)
|
||||
local mname = name:split(":")[1]
|
||||
local pname = name:split(":")[2]
|
||||
|
||||
-- Check def table
|
||||
if not def.description then
|
||||
def.description = "Seed"
|
||||
end
|
||||
if not def.inventory_image then
|
||||
def.inventory_image = "unknown_item.png"
|
||||
end
|
||||
if not def.steps then
|
||||
return nil
|
||||
end
|
||||
if not def.minlight then
|
||||
def.minlight = 1
|
||||
end
|
||||
if not def.maxlight then
|
||||
def.maxlight = 14
|
||||
end
|
||||
if not def.fertility then
|
||||
def.fertility = {}
|
||||
end
|
||||
|
||||
farming.registered_plants[pname] = def
|
||||
|
||||
-- Register seed
|
||||
local lbm_nodes = {mname .. ":seed_" .. pname}
|
||||
local g = {seed = 1, snappy = 3, attached_node = 1, flammable = 2}
|
||||
for k, v in pairs(def.fertility) do
|
||||
g[v] = 1
|
||||
end
|
||||
minetest.register_node(":" .. mname .. ":seed_" .. pname, {
|
||||
description = def.description,
|
||||
tiles = {def.inventory_image},
|
||||
inventory_image = def.inventory_image,
|
||||
wield_image = def.inventory_image,
|
||||
drawtype = "signlike",
|
||||
groups = g,
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
place_param2 = def.place_param2 or nil, -- this isn't actually used for placement
|
||||
walkable = false,
|
||||
sunlight_propagates = true,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
|
||||
},
|
||||
fertility = def.fertility,
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
dig = {name = "", gain = 0},
|
||||
dug = {name = "default_grass_footstep", gain = 0.2},
|
||||
place = {name = "default_place_node", gain = 0.25},
|
||||
}),
|
||||
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local under = pointed_thing.under
|
||||
local node = minetest.get_node(under)
|
||||
local udef = minetest.registered_nodes[node.name]
|
||||
if udef and udef.on_rightclick and
|
||||
not (placer and placer:get_player_control().sneak) then
|
||||
return udef.on_rightclick(under, node, placer, itemstack,
|
||||
pointed_thing) or itemstack
|
||||
end
|
||||
|
||||
return farming.place_seed(itemstack, placer, pointed_thing, mname .. ":seed_" .. pname)
|
||||
end,
|
||||
next_plant = mname .. ":" .. pname .. "_1",
|
||||
on_timer = farming.grow_plant,
|
||||
minlight = def.minlight,
|
||||
maxlight = def.maxlight,
|
||||
})
|
||||
|
||||
-- Register harvest
|
||||
minetest.register_craftitem(":" .. mname .. ":" .. pname, {
|
||||
description = pname:gsub("^%l", string.upper),
|
||||
inventory_image = mname .. "_" .. pname .. ".png",
|
||||
groups = {flammable = 2},
|
||||
})
|
||||
|
||||
-- Register growing steps
|
||||
for i = 1, def.steps do
|
||||
local base_rarity = 1
|
||||
if def.steps ~= 1 then
|
||||
base_rarity = 8 - (i - 1) * 7 / (def.steps - 1)
|
||||
end
|
||||
local drop = {
|
||||
items = {
|
||||
{items = {mname .. ":" .. pname}, rarity = base_rarity},
|
||||
{items = {mname .. ":" .. pname}, rarity = base_rarity * 2},
|
||||
{items = {mname .. ":seed_" .. pname}, rarity = base_rarity},
|
||||
{items = {mname .. ":seed_" .. pname}, rarity = base_rarity * 2},
|
||||
}
|
||||
}
|
||||
local nodegroups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1}
|
||||
nodegroups[pname] = i
|
||||
|
||||
local next_plant = nil
|
||||
|
||||
if i < def.steps then
|
||||
next_plant = mname .. ":" .. pname .. "_" .. (i + 1)
|
||||
lbm_nodes[#lbm_nodes + 1] = mname .. ":" .. pname .. "_" .. i
|
||||
end
|
||||
|
||||
minetest.register_node(":" .. mname .. ":" .. pname .. "_" .. i, {
|
||||
drawtype = "plantlike",
|
||||
waving = 1,
|
||||
tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = def.paramtype2 or nil,
|
||||
place_param2 = def.place_param2 or nil,
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
drop = drop,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
|
||||
},
|
||||
groups = nodegroups,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
next_plant = next_plant,
|
||||
on_timer = farming.grow_plant,
|
||||
minlight = def.minlight,
|
||||
maxlight = def.maxlight,
|
||||
})
|
||||
end
|
||||
|
||||
-- replacement LBM for pre-nodetimer plants
|
||||
minetest.register_lbm({
|
||||
name = ":" .. mname .. ":start_nodetimer_" .. pname,
|
||||
nodenames = lbm_nodes,
|
||||
action = function(pos, node)
|
||||
tick_again(pos)
|
||||
end,
|
||||
})
|
||||
|
||||
-- Return
|
||||
local r = {
|
||||
seed = mname .. ":seed_" .. pname,
|
||||
harvest = mname .. ":" .. pname
|
||||
}
|
||||
return r
|
||||
end
|
|
@ -1,42 +0,0 @@
|
|||
farming.register_hoe(":farming:hoe_wood", {
|
||||
description = "Wooden Hoe",
|
||||
inventory_image = "farming_tool_woodhoe.png",
|
||||
max_uses = 30,
|
||||
material = "group:wood",
|
||||
groups = {flammable = 2},
|
||||
})
|
||||
|
||||
farming.register_hoe(":farming:hoe_stone", {
|
||||
description = "Stone Hoe",
|
||||
inventory_image = "farming_tool_stonehoe.png",
|
||||
max_uses = 90,
|
||||
material = "group:stone"
|
||||
})
|
||||
|
||||
farming.register_hoe(":farming:hoe_steel", {
|
||||
description = "Steel Hoe",
|
||||
inventory_image = "farming_tool_steelhoe.png",
|
||||
max_uses = 200,
|
||||
material = "default:steel_ingot"
|
||||
})
|
||||
|
||||
farming.register_hoe(":farming:hoe_bronze", {
|
||||
description = "Bronze Hoe",
|
||||
inventory_image = "farming_tool_bronzehoe.png",
|
||||
max_uses = 220,
|
||||
material = "default:bronze_ingot"
|
||||
})
|
||||
|
||||
farming.register_hoe(":farming:hoe_mese", {
|
||||
description = "Mese Hoe",
|
||||
inventory_image = "farming_tool_mesehoe.png",
|
||||
max_uses = 350,
|
||||
material = "default:mese_crystal"
|
||||
})
|
||||
|
||||
farming.register_hoe(":farming:hoe_diamond", {
|
||||
description = "Diamond Hoe",
|
||||
inventory_image = "farming_tool_diamondhoe.png",
|
||||
max_uses = 500,
|
||||
material = "default:diamond"
|
||||
})
|
|
@ -1,109 +0,0 @@
|
|||
-- Global farming namespace
|
||||
farming = {}
|
||||
farming.path = minetest.get_modpath("farming")
|
||||
|
||||
-- Load files
|
||||
dofile(farming.path .. "/api.lua")
|
||||
dofile(farming.path .. "/nodes.lua")
|
||||
dofile(farming.path .. "/hoes.lua")
|
||||
|
||||
-- WHEAT
|
||||
farming.register_plant("farming:wheat", {
|
||||
description = "Wheat seed",
|
||||
paramtype2 = "meshoptions",
|
||||
inventory_image = "farming_wheat_seed.png",
|
||||
steps = 8,
|
||||
minlight = 13,
|
||||
maxlight = default.LIGHT_MAX,
|
||||
fertility = {"grassland"},
|
||||
groups = {flammable = 4},
|
||||
place_param2 = 3,
|
||||
})
|
||||
minetest.register_craftitem("farming:flour", {
|
||||
description = "Flour",
|
||||
inventory_image = "farming_flour.png",
|
||||
groups = {flammable = 1},
|
||||
})
|
||||
|
||||
minetest.register_craftitem("farming:bread", {
|
||||
description = "Bread",
|
||||
inventory_image = "farming_bread.png",
|
||||
on_use = minetest.item_eat(5),
|
||||
groups = {flammable = 2},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "farming:flour",
|
||||
recipe = {"farming:wheat", "farming:wheat", "farming:wheat", "farming:wheat"}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
cooktime = 15,
|
||||
output = "farming:bread",
|
||||
recipe = "farming:flour"
|
||||
})
|
||||
|
||||
-- Cotton
|
||||
farming.register_plant("farming:cotton", {
|
||||
description = "Cotton seed",
|
||||
inventory_image = "farming_cotton_seed.png",
|
||||
steps = 8,
|
||||
minlight = 13,
|
||||
maxlight = default.LIGHT_MAX,
|
||||
fertility = {"grassland", "desert"},
|
||||
groups = {flammable = 4},
|
||||
})
|
||||
|
||||
minetest.register_alias("farming:string", "farming:cotton")
|
||||
|
||||
minetest.register_craft({
|
||||
output = "wool:white",
|
||||
recipe = {
|
||||
{"farming:cotton", "farming:cotton"},
|
||||
{"farming:cotton", "farming:cotton"},
|
||||
}
|
||||
})
|
||||
|
||||
-- Straw
|
||||
minetest.register_craft({
|
||||
output = "farming:straw 3",
|
||||
recipe = {
|
||||
{"farming:wheat", "farming:wheat", "farming:wheat"},
|
||||
{"farming:wheat", "farming:wheat", "farming:wheat"},
|
||||
{"farming:wheat", "farming:wheat", "farming:wheat"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:wheat 3",
|
||||
recipe = {
|
||||
{"farming:straw"},
|
||||
}
|
||||
})
|
||||
|
||||
-- Fuels
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "farming:straw",
|
||||
burntime = 3,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "farming:wheat",
|
||||
burntime = 1,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "farming:cotton",
|
||||
burntime = 1,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "farming:hoe_wood",
|
||||
burntime = 5,
|
||||
})
|
|
@ -1,61 +0,0 @@
|
|||
License of source code
|
||||
----------------------
|
||||
|
||||
The MIT License (MIT)
|
||||
Copyright (C) 2012-2016 PilzAdam
|
||||
Copyright (C) 2014-2016 webdesigner97
|
||||
Copyright (C) 2012-2016 Various Minetest developers and contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
||||
software and associated documentation files (the "Software"), to deal in the Software
|
||||
without restriction, including without limitation the rights to use, copy, modify, merge,
|
||||
publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or
|
||||
substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
|
||||
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
For more details:
|
||||
https://opensource.org/licenses/MIT
|
||||
|
||||
|
||||
License of media (textures)
|
||||
---------------------------
|
||||
|
||||
Attribution 3.0 Unported (CC BY 3.0)
|
||||
Copyright (C) 2012-2016 PilzAdam
|
||||
Copyright (C) 2014-2016 BlockMen
|
||||
Copyright (C) 2015-2016 MasterGollum
|
||||
Copyright (C) 2015-2016 Gambit
|
||||
|
||||
You are free to:
|
||||
Share — copy and redistribute the material in any medium or format.
|
||||
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
|
||||
The licensor cannot revoke these freedoms as long as you follow the license terms.
|
||||
|
||||
Under the following terms:
|
||||
|
||||
Attribution — You must give appropriate credit, provide a link to the license, and
|
||||
indicate if changes were made. You may do so in any reasonable manner, but not in any way
|
||||
that suggests the licensor endorses you or your use.
|
||||
|
||||
No additional restrictions — You may not apply legal terms or technological measures that
|
||||
legally restrict others from doing anything the license permits.
|
||||
|
||||
Notices:
|
||||
|
||||
You do not have to comply with the license for elements of the material in the public
|
||||
domain or where your use is permitted by an applicable exception or limitation.
|
||||
No warranties are given. The license may not give you all of the permissions necessary
|
||||
for your intended use. For example, other rights such as publicity, privacy, or moral
|
||||
rights may limit how you use the material.
|
||||
|
||||
For more details:
|
||||
http://creativecommons.org/licenses/by/3.0/
|
|
@ -1,163 +0,0 @@
|
|||
minetest.override_item("default:dirt", {
|
||||
soil = {
|
||||
base = "default:dirt",
|
||||
dry = "farming:soil",
|
||||
wet = "farming:soil_wet"
|
||||
}
|
||||
})
|
||||
|
||||
minetest.override_item("default:dirt_with_grass", {
|
||||
soil = {
|
||||
base = "default:dirt_with_grass",
|
||||
dry = "farming:soil",
|
||||
wet = "farming:soil_wet"
|
||||
}
|
||||
})
|
||||
|
||||
minetest.override_item("default:dirt_with_dry_grass", {
|
||||
soil = {
|
||||
base = "default:dirt_with_dry_grass",
|
||||
dry = "farming:soil",
|
||||
wet = "farming:soil_wet"
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("farming:soil", {
|
||||
description = "Soil",
|
||||
tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"},
|
||||
drop = "default:dirt",
|
||||
groups = {crumbly=3, not_in_creative_inventory=1, soil=2, grassland = 1, field = 1},
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
soil = {
|
||||
base = "default:dirt",
|
||||
dry = "farming:soil",
|
||||
wet = "farming:soil_wet"
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("farming:soil_wet", {
|
||||
description = "Wet Soil",
|
||||
tiles = {"default_dirt.png^farming_soil_wet.png", "default_dirt.png^farming_soil_wet_side.png"},
|
||||
drop = "default:dirt",
|
||||
groups = {crumbly=3, not_in_creative_inventory=1, soil=3, wet = 1, grassland = 1, field = 1},
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
soil = {
|
||||
base = "default:dirt",
|
||||
dry = "farming:soil",
|
||||
wet = "farming:soil_wet"
|
||||
}
|
||||
})
|
||||
|
||||
minetest.override_item("default:desert_sand", {
|
||||
groups = {crumbly=3, falling_node=1, sand=1, soil = 1},
|
||||
soil = {
|
||||
base = "default:desert_sand",
|
||||
dry = "farming:desert_sand_soil",
|
||||
wet = "farming:desert_sand_soil_wet"
|
||||
}
|
||||
})
|
||||
minetest.register_node("farming:desert_sand_soil", {
|
||||
description = "Desert Sand Soil",
|
||||
drop = "default:desert_sand",
|
||||
tiles = {"farming_desert_sand_soil.png", "default_desert_sand.png"},
|
||||
groups = {crumbly=3, not_in_creative_inventory = 1, falling_node=1, sand=1, soil = 2, desert = 1, field = 1},
|
||||
sounds = default.node_sound_sand_defaults(),
|
||||
soil = {
|
||||
base = "default:desert_sand",
|
||||
dry = "farming:desert_sand_soil",
|
||||
wet = "farming:desert_sand_soil_wet"
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("farming:desert_sand_soil_wet", {
|
||||
description = "Wet Desert Sand Soil",
|
||||
drop = "default:desert_sand",
|
||||
tiles = {"farming_desert_sand_soil_wet.png", "farming_desert_sand_soil_wet_side.png"},
|
||||
groups = {crumbly=3, falling_node=1, sand=1, not_in_creative_inventory=1, soil=3, wet = 1, desert = 1, field = 1},
|
||||
sounds = default.node_sound_sand_defaults(),
|
||||
soil = {
|
||||
base = "default:desert_sand",
|
||||
dry = "farming:desert_sand_soil",
|
||||
wet = "farming:desert_sand_soil_wet"
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("farming:straw", {
|
||||
description = "Straw",
|
||||
tiles = {"farming_straw.png"},
|
||||
is_ground_content = false,
|
||||
groups = {snappy=3, flammable=4, fall_damage_add_percent=-30},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
label = "Farming soil",
|
||||
nodenames = {"group:field"},
|
||||
interval = 15,
|
||||
chance = 4,
|
||||
action = function(pos, node)
|
||||
local n_def = minetest.registered_nodes[node.name] or nil
|
||||
local wet = n_def.soil.wet or nil
|
||||
local base = n_def.soil.base or nil
|
||||
local dry = n_def.soil.dry or nil
|
||||
if not n_def or not n_def.soil or not wet or not base or not dry then
|
||||
return
|
||||
end
|
||||
|
||||
pos.y = pos.y + 1
|
||||
local nn = minetest.get_node_or_nil(pos)
|
||||
if not nn or not nn.name then
|
||||
return
|
||||
end
|
||||
local nn_def = minetest.registered_nodes[nn.name] or nil
|
||||
pos.y = pos.y - 1
|
||||
|
||||
if nn_def and nn_def.walkable and minetest.get_item_group(nn.name, "plant") == 0 then
|
||||
minetest.set_node(pos, {name = base})
|
||||
return
|
||||
end
|
||||
-- check if there is water nearby
|
||||
local wet_lvl = minetest.get_item_group(node.name, "wet")
|
||||
if minetest.find_node_near(pos, 3, {"group:water"}) then
|
||||
-- if it is dry soil and not base node, turn it into wet soil
|
||||
if wet_lvl == 0 then
|
||||
minetest.set_node(pos, {name = wet})
|
||||
end
|
||||
else
|
||||
-- only turn back if there are no unloaded blocks (and therefore
|
||||
-- possible water sources) nearby
|
||||
if not minetest.find_node_near(pos, 3, {"ignore"}) then
|
||||
-- turn it back into base if it is already dry
|
||||
if wet_lvl == 0 then
|
||||
-- only turn it back if there is no plant/seed on top of it
|
||||
if minetest.get_item_group(nn.name, "plant") == 0 and minetest.get_item_group(nn.name, "seed") == 0 then
|
||||
minetest.set_node(pos, {name = base})
|
||||
end
|
||||
|
||||
-- if its wet turn it back into dry soil
|
||||
elseif wet_lvl == 1 then
|
||||
minetest.set_node(pos, {name = dry})
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
for i = 1, 5 do
|
||||
minetest.override_item("default:grass_"..i, {drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {'farming:seed_wheat'},rarity = 5},
|
||||
{items = {'default:grass_1'}},
|
||||
}
|
||||
}})
|
||||
end
|
||||
|
||||
minetest.override_item("default:junglegrass", {drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {'farming:seed_cotton'},rarity = 8},
|
||||
{items = {'default:junglegrass'}},
|
||||
}
|
||||
}})
|
Before Width: | Height: | Size: 393 B |
Before Width: | Height: | Size: 166 B |
Before Width: | Height: | Size: 110 B |
Before Width: | Height: | Size: 120 B |
Before Width: | Height: | Size: 144 B |
Before Width: | Height: | Size: 150 B |
Before Width: | Height: | Size: 159 B |
Before Width: | Height: | Size: 164 B |
Before Width: | Height: | Size: 170 B |
Before Width: | Height: | Size: 196 B |
Before Width: | Height: | Size: 150 B |
Before Width: | Height: | Size: 467 B |
Before Width: | Height: | Size: 351 B |
Before Width: | Height: | Size: 272 B |
Before Width: | Height: | Size: 159 B |
Before Width: | Height: | Size: 706 B |
Before Width: | Height: | Size: 677 B |
Before Width: | Height: | Size: 96 B |
Before Width: | Height: | Size: 887 B |
Before Width: | Height: | Size: 212 B |
Before Width: | Height: | Size: 183 B |
Before Width: | Height: | Size: 181 B |
Before Width: | Height: | Size: 181 B |
Before Width: | Height: | Size: 185 B |
Before Width: | Height: | Size: 171 B |
Before Width: | Height: | Size: 241 B |
Before Width: | Height: | Size: 120 B |
Before Width: | Height: | Size: 142 B |
Before Width: | Height: | Size: 172 B |
Before Width: | Height: | Size: 191 B |
Before Width: | Height: | Size: 218 B |
Before Width: | Height: | Size: 234 B |
Before Width: | Height: | Size: 253 B |
Before Width: | Height: | Size: 310 B |
Before Width: | Height: | Size: 141 B |
|
@ -31,18 +31,18 @@ minetest.register_node("fire:basic_flame", {
|
|||
damage_per_second = 4,
|
||||
groups = {igniter = 2, dig_immediate = 3, not_in_creative_inventory = 1},
|
||||
on_timer = function(pos)
|
||||
local f = minetest.find_node_near(pos, 1, {"group:flammable"})
|
||||
if not f then
|
||||
--local f = minetest.find_node_near(pos, 1, {"group:flammable"})
|
||||
--if not f then
|
||||
minetest.remove_node(pos)
|
||||
return
|
||||
end
|
||||
-- return
|
||||
--end
|
||||
-- Restart timer
|
||||
return true
|
||||
return false
|
||||
end,
|
||||
drop = "",
|
||||
|
||||
on_construct = function(pos)
|
||||
minetest.get_node_timer(pos):start(math.random(30, 60))
|
||||
minetest.get_node_timer(pos):start(math.random(20, 30))
|
||||
end,
|
||||
})
|
||||
|
||||
|
@ -288,8 +288,8 @@ minetest.register_abm({
|
|||
|
||||
|
||||
-- Enable the following ABMs according to 'enable fire' setting
|
||||
|
||||
local fire_enabled = minetest.setting_getbool("enable_fire")
|
||||
--[[
|
||||
local fire_enabled = minetest.settings:get_bool("enable_fire")
|
||||
if fire_enabled == nil then
|
||||
-- New setting not specified, check for old setting.
|
||||
-- If old setting is also not specified, 'not nil' is true.
|
||||
|
@ -356,4 +356,4 @@ else -- Fire enabled
|
|||
end,
|
||||
})
|
||||
|
||||
end
|
||||
end]]
|
||||
|
|
|
@ -47,6 +47,7 @@ local function add_simple_flower(name, desc, box, f_groups)
|
|||
walkable = false,
|
||||
buildable_to = true,
|
||||
stack_max = 99,
|
||||
light_source = 4,
|
||||
groups = f_groups,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
|
@ -290,7 +291,6 @@ minetest.register_node("flowers:waterlily", {
|
|||
minetest.record_protection_violation(pos, player_name)
|
||||
end
|
||||
end
|
||||
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
|
|
@ -1,2 +1,6 @@
|
|||
default
|
||||
|
||||
bows
|
||||
xdecor
|
||||
3d_armor
|
||||
shields
|
||||
magical_potion
|
||||
|
|
|
@ -1,44 +1,21 @@
|
|||
local stuff_string = minetest.setting_get("initial_stuff") or
|
||||
"default:pick_steel,default:axe_steel,default:shovel_steel," ..
|
||||
"default:torch 99,default:cobble 99"
|
||||
|
||||
give_initial_stuff = {
|
||||
items = {}
|
||||
}
|
||||
|
||||
function give_initial_stuff.give(player)
|
||||
minetest.log("action",
|
||||
"Giving initial stuff to player " .. player:get_player_name())
|
||||
local inv = player:get_inventory()
|
||||
for _, stack in ipairs(give_initial_stuff.items) do
|
||||
inv:add_item("main", stack)
|
||||
end
|
||||
end
|
||||
|
||||
function give_initial_stuff.add(stack)
|
||||
give_initial_stuff.items[#give_initial_stuff.items + 1] = ItemStack(stack)
|
||||
end
|
||||
|
||||
function give_initial_stuff.clear()
|
||||
give_initial_stuff.items = {}
|
||||
end
|
||||
|
||||
function give_initial_stuff.add_from_csv(str)
|
||||
local items = str:split(",")
|
||||
for _, itemname in ipairs(items) do
|
||||
give_initial_stuff.add(itemname)
|
||||
end
|
||||
end
|
||||
|
||||
function give_initial_stuff.set_list(list)
|
||||
give_initial_stuff.items = list
|
||||
end
|
||||
|
||||
function give_initial_stuff.get_list()
|
||||
return give_initial_stuff.items
|
||||
end
|
||||
|
||||
give_initial_stuff.add_from_csv(stuff_string)
|
||||
minetest.register_on_newplayer(function(player)
|
||||
--print("on_newplayer")
|
||||
if minetest.setting_getbool("give_initial_stuff") then
|
||||
minetest.register_on_newplayer(give_initial_stuff.give)
|
||||
minetest.log("action", "Giving initial stuff to player "..player:get_player_name())
|
||||
player:get_inventory():add_item('main', 'default:pick_steel')
|
||||
player:get_inventory():add_item('main', 'default:axe_steel')
|
||||
player:get_inventory():add_item('main', 'default:torch 99')
|
||||
player:get_inventory():add_item('main', 'default:chest_locked 1')
|
||||
player:get_inventory():add_item('main', 'xdecor:crafting_guide 1')
|
||||
player:get_inventory():add_item('main', 'magical_potion:fly_small 2')
|
||||
player:get_inventory():add_item('main', 'bows:bow_wood')
|
||||
player:get_inventory():add_item('main', 'bows:arrow 26')
|
||||
player:get_inventory():add_item('main', '3d_armor:helmet_steel')
|
||||
player:get_inventory():add_item('main', '3d_armor:chestplate_steel')
|
||||
player:get_inventory():add_item('main', '3d_armor:leggings_steel')
|
||||
player:get_inventory():add_item('main', '3d_armor:boots_steel')
|
||||
player:get_inventory():add_item('main', 'shields:shield_wood')
|
||||
|
||||
|
||||
end
|
||||
end)
|
||||
|
|
1
mods/golems
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit a9a7d96bf40c8ba25777eed977356d631bb8f53c
|
1
mods/halloween_mobs
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit a78da495d0d2882516e6a56cce7ba2e2b7f5b6f3
|
0
mods/hellochat/depends.txt
Normal file
12
mods/hellochat/init.lua
Normal file
|
@ -0,0 +1,12 @@
|
|||
minetest.register_on_joinplayer(function(player)
|
||||
if not minetest.check_player_privs(player:get_player_name(), {interact=true}) then
|
||||
local player = player:get_player_name()
|
||||
local color = "#52DF55"
|
||||
-- How ugly, multible sending instead multiline.
|
||||
-- https://github.com/minetest/minetest/pull/4546
|
||||
minetest.chat_send_player(player, core.colorize(color, "# Illuna: Hey friend, it looks like you're new here, awesome to meet ya!"))
|
||||
minetest.chat_send_player(player, core.colorize(color, "# Illuna: You just joined our VIP world, good choice!"))
|
||||
minetest.chat_send_player(player, core.colorize(color, "# Illuna: In order to play here, you must prove yourself on our public server (illuna.rocks:30002)."))
|
||||
minetest.chat_send_player(player, core.colorize(color, "# Illuna: Good Luck!"))
|
||||
end
|
||||
end)
|
1
mods/hemp
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit b6971d6fb00cadc04d36670ca3dfe319fc618f83
|
1
mods/homedecor_modpack
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit f41f09c0050ced284f04cf40083ee42d5ee6a333
|
1
mods/horses
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit a72192db523658fbff02416f5c927e83c11fd71a
|
1
mods/hudbars
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 8d864a49548457ccb3944a62b6a4338f962d4c64
|