Compare commits
353 Commits
0.4.15
...
3567b42c39
Author | SHA1 | Date | |
---|---|---|---|
3567b42c39 | |||
c2122a634a | |||
98b281aade | |||
1090c9139c | |||
1c7ceb2e90 | |||
f0ab7a6c78 | |||
0800810530 | |||
b88d76d07f | |||
3bc711b9e3 | |||
4a72054c78 | |||
204beaaaac | |||
f7412c6191 | |||
0e52553b8a | |||
a9809998bf | |||
ea6e75fa6a | |||
661636bb5c | |||
77df83e161 | |||
92649fad62 | |||
e3ec030468 | |||
4f23eeec3e | |||
efba9e0648 | |||
eae0f6cb3c | |||
57d51e4596 | |||
6f383c66b0 | |||
9d28edc3ff | |||
22e4e0c42b | |||
1675a93fec | |||
facee91684 | |||
07e42fb2f5 | |||
512ae9ec67 | |||
4d6458b684 | |||
6b18347fb0 | |||
c1d9cc1de2 | |||
fc28c4385a | |||
c6e35a4e5c | |||
ea73ff6f6e | |||
1faa55a89e | |||
2b7905e12d | |||
55e1714cac | |||
9a814da186 | |||
bd67ba2499 | |||
b72c15076e | |||
18744ee66d | |||
7f67f4a035 | |||
8417cddf71 | |||
117bcddab9 | |||
377fb58c38 | |||
5612f4c884 | |||
5aecf5f2c7 | |||
9be79ec6d0 | |||
4c0f068909 | |||
ce3c77564c | |||
43333687bd | |||
9ec3eab6f4 | |||
9f5cc15e62 | |||
7bcfbbca3a | |||
ed41161554 | |||
77933d9dc3 | |||
e372ccb4d8 | |||
c118b43711 | |||
f6da0f7329 | |||
e84a184946 | |||
0c9d883f28 | |||
97e7a31830 | |||
d897e6d97c | |||
8532dee8ed | |||
356f872327 | |||
6c07a31857 | |||
daef49a255 | |||
1072598701 | |||
60be4a6320 | |||
67f2065408 | |||
f90834ff06 | |||
c871e0d388 | |||
d17ec1d978 | |||
9dcc6c2b4d | |||
80352d69e1 | |||
1d59c2258d | |||
11e6b5d92a | |||
7e7b2bcabb | |||
b28f1314da | |||
17ea2040e2 | |||
ed9fb6a34d | |||
13862c1a48 | |||
e289e79aea | |||
80ab12710b | |||
1b94c940d7 | |||
df44dd3dad | |||
bff90189fc | |||
b407f06dc4 | |||
e6dc2c5508 | |||
bde2bf2bf6 | |||
ea160a6519 | |||
631813bb2d | |||
f33636d473 | |||
cbb41f7d98 | |||
c98ec41ba7 | |||
84c3933fd4 | |||
968cdfd549 | |||
c457874d03 | |||
67acbd6d59 | |||
fdb37bdaf5 | |||
ab8bf5586f | |||
2f3c12eb2a | |||
4174737a1a | |||
11771e12cb | |||
b3337921a1 | |||
301ae2ee1d | |||
9b77ba1c28 | |||
bb1a2c9314 | |||
6181f9c400 | |||
c13c3a1c8c | |||
a129cf177f | |||
7be5e15263 | |||
0f2c4f94de | |||
c28df63aae | |||
e767b08011 | |||
c645964dd5 | |||
603eeba810 | |||
960f4c4200 | |||
5c6a994698 | |||
1eec6e3615 | |||
7cdfc3b49c | |||
bf7e47342f | |||
b85278fbaa | |||
cacf04e2d1 | |||
07141bff47 | |||
542f688c09 | |||
fee09943e3 | |||
bed4d1e6f8 | |||
798ff29b0a | |||
7491fd4aa8 | |||
0753606eb0 | |||
7ab149275b | |||
c6ef999591 | |||
a9cfef8fba | |||
9d64af85ca | |||
712ca909ca | |||
778b5493c7 | |||
fb0ca9a15c | |||
1520d27a73 | |||
32fc5dc49b | |||
854e96d4c0 | |||
6e61cc4ad8 | |||
2ee1cd6887 | |||
0cd8bd7780 | |||
8b78caf7c6 | |||
18d74e2f09 | |||
b94139c9df | |||
bb808a944c | |||
b08c0905c0 | |||
95590f23c5 | |||
5d4c64d3b2 | |||
554ec8028d | |||
0ab1040760 | |||
52375443ed | |||
4eb9ffb088 | |||
ac71c0f189 | |||
37c6b99ac1 | |||
bcf9238e47 | |||
e291a45d99 | |||
12bdbd6684 | |||
13a35d12a0 | |||
c5393f1462 | |||
93351aecda | |||
bf79c7d430 | |||
f7ff5ae3f4 | |||
c64dabfa28 | |||
d4e85cbab2 | |||
3791311422 | |||
ec0e332918 | |||
6dec410d29 | |||
0c58327df7 | |||
fba875f474 | |||
f983710899 | |||
6a3c009276 | |||
69e87419ea | |||
25fef974e3 | |||
4980844320 | |||
fc781daca0 | |||
5b631142aa | |||
eb6089a03e | |||
41455647a2 | |||
55fea4f6ca | |||
a8729575ab | |||
04cb59401b | |||
9e69a6db73 | |||
54ce73b616 | |||
8a5bc0e038 | |||
d6ff137657 | |||
a4ca53cc05 | |||
017326dbed | |||
31bf6b8c40 | |||
b526ec1714 | |||
7e98534179 | |||
8132cfc6f8 | |||
39984c356b | |||
eb2b3d7980 | |||
08bbd0f592 | |||
3597c2c1aa | |||
5db791deb4 | |||
8ccbe6abc4 | |||
cafba3bc53 | |||
ac10702849 | |||
fe2acaaa1e | |||
bfda7c49fd | |||
4d9c4c2410 | |||
1471a0cba9 | |||
eabd237252 | |||
9d4ac9bd9a | |||
5efa9af1b7 | |||
7d40724d39 | |||
5e6307ea3a | |||
8882ab8e19 | |||
3021248538 | |||
4eaf265e65 | |||
228e25e123 | |||
ddcb08fe62 | |||
972d30dd38 | |||
cc9276841e | |||
f2f49a3aac | |||
b92c9e065b | |||
ea77ac32ea | |||
14697ef71b | |||
9921efeeef | |||
87e3c9f9ce | |||
095e34ad7f | |||
6c9da755f3 | |||
c786e3ae05 | |||
48be7ddef1 | |||
2c5be0735a | |||
36e5e319e3 | |||
57b988c185 | |||
d6f660b72a | |||
7b4db2fc5a | |||
b45ace825d | |||
9d2704c0c2 | |||
d7a4054dda | |||
f03e71397a | |||
6349c53824 | |||
c60607aa0d | |||
78ec2119f6 | |||
c247318dd8 | |||
9693d9dd46 | |||
23d1365939 | |||
f391bc59b0 | |||
790557f6ce | |||
c9c4214bff | |||
914aee41fe | |||
ec83040d10 | |||
9bb4222aa5 | |||
67ddc87d2c | |||
970636571e | |||
4ee5b6b87f | |||
1f2676b8f6 | |||
ad4790f74c | |||
7925897748 | |||
459c02548e | |||
1eb1e87f08 | |||
27eae09d93 | |||
761b18c17e | |||
763bcb2e95 | |||
2d0363f3ac | |||
0f1b8418a1 | |||
f6701bd9cd | |||
d18bee7fa0 | |||
c05378f20f | |||
d61a990fc9 | |||
af41f549a7 | |||
c1eda2246a | |||
0de4732f43 | |||
bc9192a847 | |||
1ef6e9b69f | |||
efbc491245 | |||
8e6fa4cdff | |||
2c921c03cd | |||
43f7056142 | |||
f6173b036c | |||
8d9ea61b13 | |||
f7ccf20410 | |||
0ff3013895 | |||
f4144817e2 | |||
0eee5f4959 | |||
e8981367d6 | |||
2c034ebba0 | |||
06342cbd86 | |||
f32fdad4ff | |||
3ea7d5d84e | |||
cf44a85684 | |||
96d0084109 | |||
f09481c3f0 | |||
8ea285e683 | |||
16ee0417e8 | |||
09078726da | |||
18d2e492af | |||
6c0dd2d31a | |||
e9477dd45d | |||
634b89c4c6 | |||
2df6dbcad9 | |||
c8fa17801b | |||
8547b9b498 | |||
9e2ebe373a | |||
dafc731078 | |||
7d3b2f921e | |||
f29e2fc698 | |||
a599b041d4 | |||
846fe60be7 | |||
51341671c7 | |||
b3538e3941 | |||
a493933105 | |||
13059eb3a2 | |||
36dc31416e | |||
fe92fdc373 | |||
2ce071ec16 | |||
5f264bc484 | |||
cad8a378c3 | |||
1fabeb3975 | |||
c683874904 | |||
5dd5d3a14b | |||
3969f1a198 | |||
7623b39a33 | |||
f6aa12aef9 | |||
70ba7db599 | |||
1ec16b5b53 | |||
1d41b5ee18 | |||
dd0e26d95b | |||
ac9927d035 | |||
6cadc7cf26 | |||
3e585ec482 | |||
c806807171 | |||
27e1175fb0 | |||
dc7b60c11f | |||
010c07f23a | |||
cb48bfec98 | |||
4ae16c294e | |||
e97cefa94c | |||
f96f8ac86b | |||
0e68696566 | |||
59ae86ec0f | |||
89e3353c5b | |||
722c1c6f89 | |||
175724d53c | |||
79e501394a | |||
800d9017dd | |||
1ce7d2b24d | |||
428729a43d | |||
4ef2f83f07 | |||
b9307f11ad | |||
d35ebe8c00 | |||
dc903b16c8 | |||
4598cdca56 | |||
81db7f2c00 | |||
73545c89af |
450
LICENSE
@ -1,17 +1,15 @@
|
||||
For the Lua code: LGPL 3.0 or higher
|
||||
For all models, all textures, and all sounds: CC-by-SA 3.0 or higher
|
||||
For everything else: WTFPL
|
||||
License for code: LGPL 3.0
|
||||
License for media and all other assets: CC-by-SA 4.0
|
||||
|
||||
Exceptions to the above:
|
||||
These licenses apply to all modules and components in this modpack,
|
||||
unless otherwise stated.
|
||||
|
||||
Fancy mesh fire model and texture by NathanS (CC-0).
|
||||
|
||||
===============================================================================
|
||||
###############################################################################
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
@ -174,26 +172,432 @@ apply, that proxy's public statement of acceptance of any version is
|
||||
permanent authorization for you to choose that version for the
|
||||
Library.
|
||||
|
||||
===============================================================================
|
||||
###############################################################################
|
||||
|
||||
This work is licensed under the Creative Commons Attribution-ShareAlike
|
||||
4.0 International License. To view a copy of this license, visit
|
||||
http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to
|
||||
Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
|
||||
Attribution-ShareAlike 4.0 International
|
||||
|
||||
===============================================================================
|
||||
=======================================================================
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
Version 2, December 2004
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||
does not provide legal services or legal advice. Distribution of
|
||||
Creative Commons public licenses does not create a lawyer-client or
|
||||
other relationship. Creative Commons makes its licenses and related
|
||||
information available on an "as-is" basis. Creative Commons gives no
|
||||
warranties regarding its licenses, any material licensed under their
|
||||
terms and conditions, or any related information. Creative Commons
|
||||
disclaims all liability for damages resulting from their use to the
|
||||
fullest extent possible.
|
||||
|
||||
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim or modified
|
||||
copies of this license document, and changing it is allowed as long
|
||||
as the name is changed.
|
||||
Creative Commons public licenses provide a standard set of terms and
|
||||
conditions that creators and other rights holders may use to share
|
||||
original works of authorship and other material subject to copyright
|
||||
and certain other rights specified in the public license below. The
|
||||
following considerations are for informational purposes only, are not
|
||||
exhaustive, and do not form part of our licenses.
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
Considerations for licensors: Our public licenses are
|
||||
intended for use by those authorized to give the public
|
||||
permission to use material in ways otherwise restricted by
|
||||
copyright and certain other rights. Our licenses are
|
||||
irrevocable. Licensors should read and understand the terms
|
||||
and conditions of the license they choose before applying it.
|
||||
Licensors should also secure all rights necessary before
|
||||
applying our licenses so that the public can reuse the
|
||||
material as expected. Licensors should clearly mark any
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
licensed material under specified terms and conditions. If
|
||||
the licensor's permission is not necessary for any reason--for
|
||||
example, because of any applicable exception or limitation to
|
||||
copyright--then that use is not regulated by the license. Our
|
||||
licenses grant only permissions under copyright and certain
|
||||
other rights that a licensor has authority to grant. Use of
|
||||
the licensed material may still be restricted for other
|
||||
reasons, including because others have copyright or other
|
||||
rights in the material. A licensor may make special requests,
|
||||
such as asking that all changes be marked or described.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution-ShareAlike 4.0 International Public
|
||||
License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution-ShareAlike 4.0 International Public License ("Public
|
||||
License"). To the extent this Public License may be interpreted as a
|
||||
contract, You are granted the Licensed Rights in consideration of Your
|
||||
acceptance of these terms and conditions, and the Licensor grants You
|
||||
such rights in consideration of benefits the Licensor receives from
|
||||
making the Licensed Material available under these terms and
|
||||
conditions.
|
||||
|
||||
|
||||
Section 1 -- Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material
|
||||
and in which the Licensed Material is translated, altered,
|
||||
arranged, transformed, or otherwise modified in a manner requiring
|
||||
permission under the Copyright and Similar Rights held by the
|
||||
Licensor. For purposes of this Public License, where the Licensed
|
||||
Material is a musical work, performance, or sound recording,
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. BY-SA Compatible License means a license listed at
|
||||
creativecommons.org/compatiblelicenses, approved by Creative
|
||||
Commons as essentially the equivalent of this Public License.
|
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
e. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
g. License Elements means the license attributes listed in the name
|
||||
of a Creative Commons Public License. The License Elements of this
|
||||
Public License are Attribution and ShareAlike.
|
||||
|
||||
h. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
i. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
k. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
l. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
m. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
|
||||
Section 2 -- Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part; and
|
||||
|
||||
b. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with
|
||||
its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in
|
||||
all media and formats whether now known or hereafter created,
|
||||
and to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including
|
||||
technical modifications necessary to circumvent Effective
|
||||
Technological Measures. For purposes of this Public License,
|
||||
simply making modifications authorized by this Section 2(a)
|
||||
(4) never produces Adapted Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every
|
||||
recipient of the Licensed Material automatically
|
||||
receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. Additional offer from the Licensor -- Adapted Material.
|
||||
Every recipient of Adapted Material from You
|
||||
automatically receives an offer from the Licensor to
|
||||
exercise the Licensed Rights in the Adapted Material
|
||||
under the conditions of the Adapter's License You apply.
|
||||
|
||||
c. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however, to
|
||||
the extent possible, the Licensor waives and/or agrees not to
|
||||
assert any such rights held by the Licensor to the limited
|
||||
extent necessary to allow You to exercise the Licensed
|
||||
Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this
|
||||
Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society
|
||||
under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties.
|
||||
|
||||
|
||||
Section 3 -- License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if
|
||||
designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
|
||||
b. indicate if You modified the Licensed Material and
|
||||
retain an indication of any previous modifications; and
|
||||
|
||||
c. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
b. ShareAlike.
|
||||
|
||||
In addition to the conditions in Section 3(a), if You Share
|
||||
Adapted Material You produce, the following conditions also apply.
|
||||
|
||||
1. The Adapter's License You apply must be a Creative Commons
|
||||
license with the same License Elements, this version or
|
||||
later, or a BY-SA Compatible License.
|
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the
|
||||
Adapter's License You apply. You may satisfy this condition
|
||||
in any reasonable manner based on the medium, means, and
|
||||
context in which You Share Adapted Material.
|
||||
|
||||
3. You may not offer or impose any additional or different terms
|
||||
or conditions on, or apply any Effective Technological
|
||||
Measures to, Adapted Material that restrict exercise of the
|
||||
rights granted under the Adapter's License You apply.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material,
|
||||
|
||||
including for purposes of Section 3(b); and
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
|
||||
Section 6 -- Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the
|
||||
violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||
right the Licensor may have to seek remedies for Your violations
|
||||
of this Public License.
|
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
|
||||
Section 8 -- Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted
|
||||
as a limitation upon, or waiver of, any privileges and immunities
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public
|
||||
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
||||
its public licenses to material it publishes and in those instances
|
||||
will be considered the “Licensor.” The text of the Creative Commons
|
||||
public licenses is dedicated to the public domain under the CC0 Public
|
||||
Domain Dedication. Except for the limited purpose of indicating that
|
||||
material is shared under a Creative Commons public license or as
|
||||
otherwise permitted by the Creative Commons policies published at
|
||||
creativecommons.org/policies, Creative Commons does not authorize the
|
||||
use of the trademark "Creative Commons" or any other trademark or logo
|
||||
of Creative Commons without its prior written consent including,
|
||||
without limitation, in connection with any unauthorized modifications
|
||||
to any of its public licenses or any other arrangements,
|
||||
understandings, or agreements concerning use of licensed material. For
|
||||
the avoidance of doubt, this paragraph does not form part of the
|
||||
public licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
|
65
README
@ -1,61 +1,8 @@
|
||||
This is what I consider to be a fairly feature-filled home decor
|
||||
modpack. As such, it comes in multiple parts:
|
||||
This is what I consider to be a fairly feature-filled home decor modpack.
|
||||
See the forum thread at
|
||||
https://forum.minetest.net/viewtopic.php?f=11&t=2041 for details about
|
||||
this modpack.
|
||||
|
||||
* The actual homedecor mod, which supplies a bunch of stuff found in
|
||||
most homes (like flower pots, home electronics, brass and wrought-iron
|
||||
tables, and a bunch of other things).
|
||||
Dependencies: unifieddyes and a Minetest engine build newer than 2017-01-23.
|
||||
|
||||
* A "3d extras" mod, which supplies things that re-define something in
|
||||
some other mod (or in the default game) so that those objects become
|
||||
fully 3d (instead of a flat cube), as well as things which are directly
|
||||
related. This mod, for example, provides 3d bookshelves and their empty
|
||||
and half-depth "open frame" counterparts.
|
||||
|
||||
* A signs library forked from the one that thexyz and PilzAdam first
|
||||
made, which produces visible text on signs (and which has been extended
|
||||
to put signs on fences, including the brass and wrought iron ones here
|
||||
in homedecor).
|
||||
|
||||
* Sdzen's building_blocks mod, which is here to supply not only a few
|
||||
blocks to build with, obviously, :-) but also to supply a number of
|
||||
materials to craft other things in Homedecor with.
|
||||
|
||||
All items can be accessed either by crafting various other items
|
||||
together, or with the usual /give commands. To get a list of the actual
|
||||
node names, just go into the homedecor/ folder and run the listnodes.sh
|
||||
Bash script. Note that a few of the listed nodes are kinda useless by
|
||||
themselves (like the various parts of the folding doors).
|
||||
|
||||
All of the images used for the recipes in the forum post tracking this
|
||||
mod are included in the crafting-guide/ folder.
|
||||
|
||||
Most stuff can be made from materials found through a game world. Some
|
||||
stuff can only be crafted by using materials from another mod (look for
|
||||
the orange highlights). Currently, this mod can use materials from
|
||||
moreores, mesecons, wool, and unifieddyes if present. You can still use
|
||||
the usual /give commands to get the items that depend on these mods if
|
||||
you don't use them installed.
|
||||
|
||||
This mod is still a work-in-progress, but should be complete enough not
|
||||
to irritate anyone. :-) Namely, many items can be used as fuel but the
|
||||
burn times need tuning and I need to tune the cook time and fuel usage
|
||||
on the four smelted items.
|
||||
|
||||
Much of the code (especially for the doors) plus the bucket were taken
|
||||
from the files which come with Minetest and altered to suit. Many
|
||||
thanks to Jeija for coming up with an elegant cylinder using nodeboxes;
|
||||
see his 'irregular' mods). His code is used herein (you can guess where
|
||||
:-) ).
|
||||
|
||||
Dependencies: none (just the game's default stuff)
|
||||
|
||||
Recommends: buckets, flowers, unifieddyes, junglegrass, moreores,
|
||||
mesecons, wool
|
||||
|
||||
Skin credits:
|
||||
|
||||
Mammu by hansuke123
|
||||
http://minetest.fensta.bplaced.net/#name=Mammu
|
||||
|
||||
BrightGirl by Malarif
|
||||
http://minetest.fensta.bplaced.net/#name=BrightGirl
|
||||
Recommends: signs_lib, windmill, moreblocks, unified_inventory.
|
||||
|
21
building_blocks/.luacheckrc
Normal file
@ -0,0 +1,21 @@
|
||||
unused_args = false
|
||||
allow_defined_top = true
|
||||
max_comment_line_length = 999
|
||||
|
||||
read_globals = {
|
||||
"DIR_DELIM",
|
||||
"minetest", "core",
|
||||
"unpack",
|
||||
"dump",
|
||||
table = { fields = { "copy", "getn" } },
|
||||
"vector", "nodeupdate",
|
||||
"VoxelManip", "VoxelArea",
|
||||
"PseudoRandom", "ItemStack",
|
||||
"stairsplus",
|
||||
"default",
|
||||
"stairs",
|
||||
}
|
||||
|
||||
globals = {
|
||||
}
|
||||
|
61
building_blocks/alias.lua
Normal file
@ -0,0 +1,61 @@
|
||||
local S = minetest.get_translator("building_blocks")
|
||||
|
||||
if minetest.get_modpath("moreblocks") or minetest.get_modpath("stairs") then
|
||||
minetest.register_alias("building_blocks:slab_tar", "stairs:slab_Tar")
|
||||
minetest.register_alias("building_blocks:stair_tar", "stairs:stair_Tar")
|
||||
minetest.register_alias("building_blocks:slab_marble", "stairs:slab_Marble")
|
||||
minetest.register_alias("building_blocks:stair_marble", "stairs:stair_Marble")
|
||||
end
|
||||
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
stairsplus:register_alias_all("building_blocks", "tar", "building_blocks", "Tar")
|
||||
stairsplus:register_alias_all("building_blocks", "marble", "building_blocks", "Marble")
|
||||
for _, i in ipairs(stairsplus.shapes_list) do
|
||||
local class = i[1]
|
||||
local cut = i[2]
|
||||
minetest.unregister_item("moreblocks:"..class.."tar"..cut)
|
||||
minetest.register_alias("moreblocks:"..class.."tar"..cut, "building_blocks:"..class.."tar"..cut)
|
||||
end
|
||||
minetest.unregister_item("moreblocks:tar")
|
||||
minetest.register_alias("moreblocks:tar", "building_blocks:Tar")
|
||||
stairsplus:register_alias_all("moreblocks", "tar", "building_blocks", "Tar")
|
||||
|
||||
if minetest.get_modpath("gloopblocks") then
|
||||
minetest.register_alias("building_blocks:gravel_spread", "gloopblocks:slab_gravel_1")
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_alias("adobe", "building_blocks:Adobe")
|
||||
minetest.register_alias("fakegrass", "building_blocks:fakegrass")
|
||||
minetest.register_alias("hardwood", "building_blocks:hardwood")
|
||||
minetest.register_alias("tar_knife", "building_blocks:knife")
|
||||
minetest.register_alias("marble", "building_blocks:Marble")
|
||||
minetest.register_alias("building_blocks_roofing", "building_blocks:Roofing")
|
||||
minetest.register_alias("sticks", "building_blocks:sticks")
|
||||
minetest.register_alias("building_blocks:faggot", "building_blocks:sticks")
|
||||
minetest.register_alias("tar", "building_blocks:Tar")
|
||||
|
||||
if not minetest.get_modpath("technic") then
|
||||
minetest.register_node( ":technic:granite", {
|
||||
description = S("Granite"),
|
||||
tiles = { "technic_granite.png" },
|
||||
is_ground_content = true,
|
||||
groups = {cracky=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = "technic:granite 9",
|
||||
recipe = {
|
||||
{ "group:tar_block", "group:marble", "group:tar_block" },
|
||||
{ "group:marble", "group:tar_block", "group:marble" },
|
||||
{ "group:tar_block", "group:marble", "group:tar_block" }
|
||||
},
|
||||
})
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
stairsplus:register_all("technic", "granite", "technic:granite", {
|
||||
description=S("Granite"),
|
||||
groups={cracky=1, not_in_creative_inventory=1},
|
||||
tiles={"technic_granite.png"},
|
||||
})
|
||||
end
|
||||
end
|
@ -1,2 +0,0 @@
|
||||
default
|
||||
moreblocks?
|
@ -1,616 +1,9 @@
|
||||
minetest.register_node("building_blocks:Adobe", {
|
||||
tiles = {"building_blocks_Adobe.png"},
|
||||
description = "Adobe",
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
minetest.register_node("building_blocks:Roofing", {
|
||||
tiles = {"building_blocks_Roofing.png"},
|
||||
is_ground_content = true,
|
||||
description = "Roof block",
|
||||
groups = {snappy=3},
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:terrycloth_towel 2',
|
||||
recipe = {
|
||||
{"farming:string", "farming:string", "farming:string"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:Tarmac_spread 4',
|
||||
recipe = {
|
||||
{"group:tar_block", "group:tar_block"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:gravel_spread 4',
|
||||
recipe = {
|
||||
{"default:gravel", "default:gravel", "default:gravel"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:brobble_spread 4',
|
||||
recipe = {
|
||||
{"default:brick", "default:cobble", "default:brick"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:Fireplace 1',
|
||||
recipe = {
|
||||
{"default:steel_ingot", "building_blocks:sticks", "default:steel_ingot"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:Adobe 3',
|
||||
recipe = {
|
||||
{"default:sand"},
|
||||
{"default:clay"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
local modpath = minetest.get_modpath("building_blocks")
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:Roofing 10',
|
||||
recipe = {
|
||||
{"building_blocks:Adobe", "building_blocks:Adobe"},
|
||||
{"building_blocks:Adobe", "building_blocks:Adobe"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:BWtile 10',
|
||||
recipe = {
|
||||
{"group:marble", "group:tar_block"},
|
||||
{"group:tar_block", "group:marble"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:grate 1',
|
||||
recipe = {
|
||||
{"default:steel_ingot", "default:steel_ingot"},
|
||||
{"default:glass", "default:glass"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:woodglass 1',
|
||||
recipe = {
|
||||
{"default:wood"},
|
||||
{"default:glass"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:hardwood 2',
|
||||
recipe = {
|
||||
{"default:wood", "default:junglewood"},
|
||||
{"default:junglewood", "default:wood"},
|
||||
}
|
||||
})
|
||||
dofile(modpath.."/alias.lua")
|
||||
dofile(modpath.."/node_stairs.lua")
|
||||
dofile(modpath.."/others.lua")
|
||||
dofile(modpath.."/recipes.lua")
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:hardwood 2',
|
||||
recipe = {
|
||||
{"default:junglewood", "default:wood"},
|
||||
{"default:wood", "default:junglewood"},
|
||||
}
|
||||
})
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:sticks 2',
|
||||
recipe = {
|
||||
{'group:stick', '' , 'group:stick'},
|
||||
{'group:stick', 'group:stick', 'group:stick'},
|
||||
{'group:stick', 'group:stick', 'group:stick'},
|
||||
}
|
||||
})
|
||||
else
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:sticks',
|
||||
recipe = {
|
||||
{'group:stick', 'group:stick'},
|
||||
{'group:stick', 'group:stick'},
|
||||
}
|
||||
})
|
||||
end
|
||||
minetest.log("action", "[building_blocks] loaded.")
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'default:stick 4',
|
||||
recipe = {
|
||||
{'building_blocks:sticks'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:fakegrass 2',
|
||||
recipe = {
|
||||
{'default:leaves'},
|
||||
{"default:dirt"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:tar_base 2',
|
||||
recipe = {
|
||||
{"default:coal_lump", "default:gravel"},
|
||||
{"default:gravel", "default:coal_lump"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:tar_base 2',
|
||||
recipe = {
|
||||
{"default:gravel", "default:coal_lump"},
|
||||
{"default:coal_lump", "default:gravel"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "building_blocks:smoothglass",
|
||||
recipe = "default:glass"
|
||||
})
|
||||
minetest.register_node("building_blocks:smoothglass", {
|
||||
drawtype = "glasslike",
|
||||
description = "Streak Free Glass",
|
||||
tiles = {"building_blocks_sglass.png"},
|
||||
inventory_image = minetest.inventorycube("building_blocks_sglass.png"),
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
})
|
||||
minetest.register_node("building_blocks:grate", {
|
||||
drawtype = "glasslike",
|
||||
description = "Grate",
|
||||
tiles = {"building_blocks_grate.png"},
|
||||
inventory_image = minetest.inventorycube("building_blocks_grate.png"),
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {cracky=1},
|
||||
})
|
||||
|
||||
minetest.register_node("building_blocks:Fireplace", {
|
||||
description = "Fireplace",
|
||||
tiles = {
|
||||
"building_blocks_cast_iron.png",
|
||||
"building_blocks_cast_iron.png",
|
||||
"building_blocks_cast_iron.png",
|
||||
"building_blocks_cast_iron_fireplace.png"
|
||||
},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
light_source = default.LIGHT_MAX,
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {cracky=2},
|
||||
})
|
||||
|
||||
minetest.register_node("building_blocks:woodglass", {
|
||||
drawtype = "glasslike",
|
||||
description = "Wood Framed Glass",
|
||||
tiles = {"building_blocks_wglass.png"},
|
||||
inventory_image = minetest.inventorycube("building_blocks_wglass.png"),
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
})
|
||||
minetest.register_node("building_blocks:terrycloth_towel", {
|
||||
drawtype = "raillike",
|
||||
description = "Terrycloth towel",
|
||||
tiles = {"building_blocks_towel.png"},
|
||||
inventory_image = "building_blocks_towel_inv.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
-- but how to specify the dimensions for curved and sideways rails?
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
},
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
})
|
||||
minetest.register_node("building_blocks:Tarmac_spread", {
|
||||
drawtype = "raillike",
|
||||
description = "Tarmac Spread",
|
||||
tiles = {"building_blocks_tar.png"},
|
||||
inventory_image = "building_blocks_tar_spread_inv.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
-- but how to specify the dimensions for curved and sideways rails?
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
},
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
})
|
||||
minetest.register_node("building_blocks:BWtile", {
|
||||
drawtype = "raillike",
|
||||
description = "Chess board tiling",
|
||||
tiles = {"building_blocks_BWtile.png"},
|
||||
inventory_image = "building_blocks_bwtile_inv.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
-- but how to specify the dimensions for curved and sideways rails?
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
},
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
})
|
||||
minetest.register_node("building_blocks:brobble_spread", {
|
||||
drawtype = "raillike",
|
||||
description = "Brobble Spread",
|
||||
tiles = {"building_blocks_brobble.png"},
|
||||
inventory_image = "building_blocks_brobble_spread_inv.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
-- but how to specify the dimensions for curved and sideways rails?
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
},
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
})
|
||||
minetest.register_node("building_blocks:gravel_spread", {
|
||||
drawtype = "raillike",
|
||||
description = "Gravel Spread",
|
||||
tiles = {"default_gravel.png"},
|
||||
inventory_image = "building_blocks_gravel_spread_inv.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
-- but how to specify the dimensions for curved and sideways rails?
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
},
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=2},
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
}),
|
||||
})
|
||||
minetest.register_node("building_blocks:hardwood", {
|
||||
tiles = {"building_blocks_hardwood.png"},
|
||||
is_ground_content = true,
|
||||
description = "Hardwood",
|
||||
groups = {choppy=1,flammable=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
|
||||
stairsplus:register_all(
|
||||
"building_blocks",
|
||||
"marble",
|
||||
"building_blocks:Marble",
|
||||
{
|
||||
description = "Marble",
|
||||
tiles = {"building_blocks_marble.png"},
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
}
|
||||
)
|
||||
stairsplus:register_all(
|
||||
"building_blocks",
|
||||
"hardwood",
|
||||
"building_blocks:hardwood",
|
||||
{
|
||||
description = "Hardwood",
|
||||
tiles = {"building_blocks_hardwood.png"},
|
||||
groups = {choppy=1,flammable=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
}
|
||||
)
|
||||
stairsplus:register_all(
|
||||
"building_blocks",
|
||||
"fakegrass",
|
||||
"building_blocks:fakegrass",
|
||||
{
|
||||
description = "Grass",
|
||||
tiles = {"default_grass.png"},
|
||||
groups = {crumbly=3},
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_grass_footstep", gain=0.4},
|
||||
}),
|
||||
}
|
||||
)
|
||||
stairsplus:register_all(
|
||||
"building_blocks",
|
||||
"tar",
|
||||
"building_blocks:Tar",
|
||||
{
|
||||
description = "Tar",
|
||||
tiles = {"building_blocks_tar.png"},
|
||||
groups = {crumbly=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
}
|
||||
)
|
||||
stairsplus:register_all(
|
||||
"building_blocks",
|
||||
"grate",
|
||||
"building_blocks:grate",
|
||||
{
|
||||
description = "Grate",
|
||||
tiles = {"building_blocks_grate.png"},
|
||||
groups = {cracky=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
}
|
||||
)
|
||||
stairsplus:register_all(
|
||||
"building_blocks",
|
||||
"Adobe",
|
||||
"building_blocks:Adobe",
|
||||
{
|
||||
description = "Adobe",
|
||||
tiles = {"building_blocks_Adobe.png"},
|
||||
groups = {crumbly=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
}
|
||||
)
|
||||
stairsplus:register_all(
|
||||
"building_blocks",
|
||||
"Roofing",
|
||||
"building_blocks:Roofing",
|
||||
{
|
||||
description = "Roofing",
|
||||
tiles = {"building_blocks_Roofing.png"},
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
}
|
||||
)
|
||||
else
|
||||
bb_stairs = {}
|
||||
|
||||
-- Node will be called stairs:stair_<subname>
|
||||
function bb_stairs.register_stair(subname, recipeitem, groups, images, description)
|
||||
minetest.register_node("building_blocks:stair_" .. subname, {
|
||||
description = description,
|
||||
drawtype = "nodebox",
|
||||
tiles = images,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = true,
|
||||
groups = groups,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
|
||||
{-0.5, 0, 0, 0.5, 0.5, 0.5},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:stair_' .. subname .. ' 4',
|
||||
recipe = {
|
||||
{recipeitem, "", ""},
|
||||
{recipeitem, recipeitem, ""},
|
||||
{recipeitem, recipeitem, recipeitem},
|
||||
},
|
||||
})
|
||||
|
||||
-- Flipped recipe for the silly minecrafters
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:stair_' .. subname .. ' 4',
|
||||
recipe = {
|
||||
{"", "", recipeitem},
|
||||
{"", recipeitem, recipeitem},
|
||||
{recipeitem, recipeitem, recipeitem},
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
-- Node will be called stairs:slab_<subname>
|
||||
function bb_stairs.register_slab(subname, recipeitem, groups, images, description)
|
||||
minetest.register_node("building_blocks:slab_" .. subname, {
|
||||
description = description,
|
||||
drawtype = "nodebox",
|
||||
tiles = images,
|
||||
paramtype = "light",
|
||||
is_ground_content = true,
|
||||
groups = groups,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:slab_' .. subname .. ' 3',
|
||||
recipe = {
|
||||
{recipeitem, recipeitem, recipeitem},
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
-- Nodes will be called stairs:{stair,slab}_<subname>
|
||||
function bb_stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab)
|
||||
bb_stairs.register_stair(subname, recipeitem, groups, images, desc_stair)
|
||||
bb_stairs.register_slab(subname, recipeitem, groups, images, desc_slab)
|
||||
end
|
||||
bb_stairs.register_stair_and_slab("marble","building_blocks:Marble",
|
||||
{cracky=3},
|
||||
{"building_blocks_marble.png"},
|
||||
"Marble stair",
|
||||
"Marble slab"
|
||||
)
|
||||
bb_stairs.register_stair_and_slab("hardwood","building_blocks:hardwood",
|
||||
{choppy=1,flammable=1},
|
||||
{"building_blocks_hardwood.png"},
|
||||
"Hardwood stair",
|
||||
"Hardwood slab"
|
||||
)
|
||||
bb_stairs.register_stair_and_slab("fakegrass","building_blocks:fakegrass",
|
||||
{crumbly=3},
|
||||
{"default_grass.png"},
|
||||
"Grass stair",
|
||||
"Grass slab"
|
||||
)
|
||||
bb_stairs.register_stair_and_slab("tar","building_blocks:Tar",
|
||||
{crumbly=1},
|
||||
{"building_blocks_tar.png"},
|
||||
"Tar stair",
|
||||
"Tar slab"
|
||||
)
|
||||
bb_stairs.register_stair_and_slab("grate","building_blocks:grate",
|
||||
{cracky=1},
|
||||
{"building_blocks_grate.png"},
|
||||
"Grate Stair",
|
||||
"Grate Slab"
|
||||
)
|
||||
bb_stairs.register_stair_and_slab("Adobe", "building_blocks:Adobe",
|
||||
{crumbly=3},
|
||||
{"building_blocks_Adobe.png"},
|
||||
"Adobe stair",
|
||||
"Adobe slab"
|
||||
)
|
||||
bb_stairs.register_stair_and_slab("Roofing", "building_blocks:Roofing",
|
||||
{snappy=3},
|
||||
{"building_blocks_Roofing.png"},
|
||||
"Roofing stair",
|
||||
"Roofing slab"
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "building_blocks:hardwood",
|
||||
burntime = 28,
|
||||
})
|
||||
|
||||
minetest.register_node("building_blocks:fakegrass", {
|
||||
tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
|
||||
description = "Fake Grass",
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_grass_footstep", gain=0.4},
|
||||
}),
|
||||
})
|
||||
|
||||
minetest.register_craftitem("building_blocks:sticks", {
|
||||
description = "Small bundle of sticks",
|
||||
image = "building_blocks_sticks.png",
|
||||
on_place_on_ground = minetest.craftitem_place_item,
|
||||
})
|
||||
|
||||
minetest.register_craftitem("building_blocks:tar_base", {
|
||||
description = "Tar base",
|
||||
image = "building_blocks_tar_base.png",
|
||||
})
|
||||
|
||||
--Tar
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:knife 1',
|
||||
recipe = {
|
||||
{"group:tar_block"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_alias("tar", "building_blocks:Tar")
|
||||
minetest.register_alias("fakegrass", "building_blocks:fakegrass")
|
||||
minetest.register_alias("tar_knife", "building_blocks:knife")
|
||||
minetest.register_alias("adobe", "building_blocks:Adobe")
|
||||
minetest.register_alias("building_blocks_roofing", "building_blocks:Roofing")
|
||||
minetest.register_alias("hardwood", "building_blocks:hardwood")
|
||||
minetest.register_alias("sticks", "building_blocks:sticks")
|
||||
minetest.register_alias("building_blocks:faggot", "building_blocks:sticks")
|
||||
minetest.register_alias("marble", "building_blocks:Marble")
|
||||
|
||||
minetest.register_node("building_blocks:Tar", {
|
||||
description = "Tar",
|
||||
tiles = {"building_blocks_tar.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=1, tar_block = 1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
minetest.register_node("building_blocks:Marble", {
|
||||
description = "Marble",
|
||||
tiles = {"building_blocks_marble.png"},
|
||||
is_ground_content = true,
|
||||
groups = {cracky=3, marble = 1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "building_blocks:sticks",
|
||||
burntime = 5,
|
||||
})
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "building_blocks:Tar",
|
||||
burntime = 40,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "building_blocks:Tar",
|
||||
recipe = "building_blocks:tar_base",
|
||||
})
|
||||
|
||||
minetest.register_tool("building_blocks:knife", {
|
||||
description = "Tar Knife",
|
||||
inventory_image = "building_blocks_knife.png",
|
||||
tool_capabilities = {
|
||||
max_drop_level=0,
|
||||
groupcaps={
|
||||
choppy={times={[2]=7.50, [3]=2.80}, uses=100, maxlevel=1},
|
||||
fleshy={times={[2]=5.50, [3]=2.80}, uses=100, maxlevel=1}
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "building_blocks:Marble 9",
|
||||
recipe = {
|
||||
{"default:clay", "group:tar_block", "default:clay"},
|
||||
{"group:tar_block","default:clay", "group:tar_block"},
|
||||
{"default:clay", "group:tar_block","default:clay"},
|
||||
}
|
||||
})
|
||||
|
||||
if not minetest.get_modpath("technic") then
|
||||
minetest.register_node( ":technic:granite", {
|
||||
description = "Granite",
|
||||
tiles = { "technic_granite.png" },
|
||||
is_ground_content = true,
|
||||
groups = {cracky=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "technic:granite 9",
|
||||
recipe = {
|
||||
{ "group:tar_block", "group:marble", "group:tar_block" },
|
||||
{ "group:marble", "group:tar_block", "group:marble" },
|
||||
{ "group:tar_block", "group:marble", "group:tar_block" }
|
||||
},
|
||||
})
|
||||
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
stairsplus:register_all("technic", "granite", "technic:granite", {
|
||||
description="Granite",
|
||||
groups={cracky=1, not_in_creative_inventory=1},
|
||||
tiles={"technic_granite.png"},
|
||||
})
|
||||
end
|
||||
end
|
||||
|
48
building_blocks/locale/building_blocks.de.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=Granit
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=Adobe
|
||||
Adobe Slab=Adobestufe
|
||||
Adobe Stair=Adobetreppe
|
||||
Brobble Spread=Ziesterboden
|
||||
Chess board tiling=Schachbrettkacheln
|
||||
Fake Grass=Falsches Gras
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=Kamin
|
||||
Grate=Rost
|
||||
Grate Slab=Roststufe
|
||||
Grate Stair=Rosttreppe
|
||||
Gravel Spread=Kiesboden
|
||||
Hardwood=Hartholz
|
||||
Hardwood Slab=Hartholzstufe
|
||||
Hardwood Stair=Hartholztreppe
|
||||
Marble=Marmor
|
||||
Marble Slab=Marmorstufe
|
||||
Marble Stair=Marmortreppe
|
||||
Roof block=Dachblock
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=Schlierenfreies Glas
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=Teer
|
||||
Tar Slab=Teerstufe
|
||||
Tar Stair=Teertreppe
|
||||
Tarmac Spread=Asphaltboden
|
||||
Terrycloth towel=Frottiertuch
|
||||
Wood Framed Glass=Holzrahmenglas
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=Kleines Bündel Stöcke
|
||||
Tar Knife=Teermesser
|
||||
Tar base=Teerbase
|
48
building_blocks/locale/building_blocks.es.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=Granito
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=Adobe
|
||||
Adobe Slab=Losa de adobe
|
||||
Adobe Stair=Escaleras de adobe
|
||||
Brobble Spread=Mezcla de Ladroquines
|
||||
Chess board tiling=Azulejos de ajedrez
|
||||
Fake Grass=Hierba falsa
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=Chimenea
|
||||
Grate=Reja
|
||||
Grate Slab=Losa de rejas
|
||||
Grate Stair=Escaleras de rejas
|
||||
Gravel Spread=Mezcla de gravilla
|
||||
Hardwood=Madera dura
|
||||
Hardwood Slab=Losa de madera dura
|
||||
Hardwood Stair=Escaleras de madera dura
|
||||
Marble=Mármol
|
||||
Marble Slab=Losa de mármol
|
||||
Marble Stair=Escaleras de mármol
|
||||
Roof block=Bloque de techo
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=Vídrio sin rayas
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=Alquitrán
|
||||
Tar Slab=Losa de alquitrán
|
||||
Tar Stair=Escaleras de alquitrán
|
||||
Tarmac Spread=Mezcla de asfalto
|
||||
Terrycloth towel=Toalla
|
||||
Wood Framed Glass=Vídrio enmarcado en madera
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=Manojo de palitos
|
||||
Tar Knife=Cuchillo de alquitrán
|
||||
Tar base=Base de alquitrán
|
48
building_blocks/locale/building_blocks.fr.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=Granit
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=Pisé
|
||||
Adobe Slab=Dalle en pisé
|
||||
Adobe Stair=Escalier en pisé
|
||||
Brobble Spread=Tapis rouge
|
||||
Chess board tiling=Pavage en échiquier
|
||||
Fake Grass=Herbe synthétique
|
||||
Fake Grass Slab=Dalle en herbe synthétique
|
||||
Fake Grass Stair=Escalier en herbe synthétique
|
||||
Fireplace=Cheminée
|
||||
Grate=Grille
|
||||
Grate Slab=Dalle en métal déployé
|
||||
Grate Stair=Escalier en métal déployé
|
||||
Gravel Spread=Tapis de gravier
|
||||
Hardwood=Bois dur (feuillu)
|
||||
Hardwood Slab=Dalle en bois dur (feuillu)
|
||||
Hardwood Stair=Escalier en bois dur (feuillu)
|
||||
Marble=Marbre
|
||||
Marble Slab=Dalle en marbre
|
||||
Marble Stair=Marche en marbre
|
||||
Roof block=Bloc de toit
|
||||
Roof block Slab=Dalle en bloc de toit
|
||||
Roof block Stair=Escalier en bloc de toit
|
||||
Streak Free Glass=Verre anti-rayures
|
||||
Streak Free Glass Slab=Dalle en verre anti-rayures
|
||||
Streak Free Glass Stair=Escalier en verre anti-rayures
|
||||
Tar=Goudron
|
||||
Tar Slab=Dalle en goudron
|
||||
Tar Stair=Marche en goudron
|
||||
Tarmac Spread=Tapis de goudron
|
||||
Terrycloth towel=Serviette éponge
|
||||
Wood Framed Glass=Verre encadré de bois
|
||||
Wood Framed Glass Slab=Dalle en verre encadré de bois
|
||||
Wood Framed Glass Stair=Escalier en verre encadré de bois
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=Petit fagot de brindilles
|
||||
Tar Knife=Couteau à goudron
|
||||
Tar base=Pâte de goudron
|
48
building_blocks/locale/building_blocks.ms.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=Granit
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=Adob
|
||||
Adobe Slab=Bidur Adob
|
||||
Adobe Stair=Tangga Adob
|
||||
Brobble Spread=Sebaran Batu Merah
|
||||
Chess board tiling=Jubin Papan Catur
|
||||
Fake Grass=Rumput Tiruan
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=Pendiangan
|
||||
Grate=Jeriji
|
||||
Grate Slab=Bidur Jeriji
|
||||
Grate Stair=Tangga Jeriji
|
||||
Gravel Spread=Sebaran Kelikir
|
||||
Hardwood=Kayu Keras
|
||||
Hardwood Slab=Bidur Kayu Keras
|
||||
Hardwood Stair=Tangga Kayu Keras
|
||||
Marble=Marmar
|
||||
Marble Slab=Bidur Marmar
|
||||
Marble Stair=Tangga Marmar
|
||||
Roof block=Blok Bumbung
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=Kaca Bebas Calar
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=Tar
|
||||
Tar Slab=Bidur Tar
|
||||
Tar Stair=Tangga Tar
|
||||
Tarmac Spread=Sebaran Tar
|
||||
Terrycloth towel=Kain Tuala
|
||||
Wood Framed Glass=Kaca Berbingkai Kayu
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=Seberkas Kecil Serpihan Kayu
|
||||
Tar Knife=Pisau Tar
|
||||
Tar base=Campuran Tar
|
48
building_blocks/locale/building_blocks.pt.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=Granito
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=Argila
|
||||
Adobe Slab=Placa de argila
|
||||
Adobe Stair=Escada de Argila
|
||||
Brobble Spread=Calçado
|
||||
Chess board tiling=Revestimento de xadrez
|
||||
Fake Grass=Grama Falsa
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=Lareira
|
||||
Grate=Grelha
|
||||
Grate Slab=Placa de Grelha
|
||||
Grate Stair=Escade de Grelha
|
||||
Gravel Spread=Espalhamento de Cascalho
|
||||
Hardwood=Madeira
|
||||
Hardwood Slab=Placa de madeira
|
||||
Hardwood Stair=Escada de madeira
|
||||
Marble=Mármore
|
||||
Marble Slab=Placa de Mármore
|
||||
Marble Stair=Escada de mármore
|
||||
Roof block=Bloco de telhado
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=Vidro Sem Riscos
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=Alcatrão
|
||||
Tar Slab=Placa de alcatrão
|
||||
Tar Stair=Escada de alcatrão
|
||||
Tarmac Spread=Espalhamento das Estradas
|
||||
Terrycloth towel=Toalha de Roupinha
|
||||
Wood Framed Glass=Vidro com Bordas de Madeira
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=Pequeno amontoado de gravetos
|
||||
Tar Knife=Faca de Alcatrão
|
||||
Tar base=Base para alcatrão
|
48
building_blocks/locale/building_blocks.pt_BR.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=Granito
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=Argila
|
||||
Adobe Slab=Placa de argila
|
||||
Adobe Stair=Escada de Argila
|
||||
Brobble Spread=Calçado
|
||||
Chess board tiling=Revestimento de xadrez
|
||||
Fake Grass=Grama Falsa
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=Lareira
|
||||
Grate=Grelha
|
||||
Grate Slab=Placa de Grelha
|
||||
Grate Stair=Escade de Grelha
|
||||
Gravel Spread=Espalhamento de Cascalho
|
||||
Hardwood=Madeira
|
||||
Hardwood Slab=Placa de madeira
|
||||
Hardwood Stair=Escada de madeira
|
||||
Marble=Mármore
|
||||
Marble Slab=Placa de Mármore
|
||||
Marble Stair=Escada de mármore
|
||||
Roof block=Bloco de telhado
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=Vidro Sem Riscos
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=Alcatrão
|
||||
Tar Slab=Placa de alcatrão
|
||||
Tar Stair=Escada de alcatrão
|
||||
Tarmac Spread=Espalhamento das Estradas
|
||||
Terrycloth towel=Toalha de Roupinha
|
||||
Wood Framed Glass=Vidro com Bordas de Madeira
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=Pequeno amontoado de gravetos
|
||||
Tar Knife=Faca de Alcatrão
|
||||
Tar base=Base para alcatrão
|
48
building_blocks/locale/building_blocks.ru.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=Гранит
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=Саман
|
||||
Adobe Slab=Саманная плита
|
||||
Adobe Stair=Саманная ступенька
|
||||
Brobble Spread=Настил кирпичного булыжника
|
||||
Chess board tiling=Шахматная плитка
|
||||
Fake Grass=Псевдо трава
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=Камин
|
||||
Grate=Каминная решётка
|
||||
Grate Slab=Решётчатая плита
|
||||
Grate Stair=Решётчатая ступенька
|
||||
Gravel Spread=Настил гравия
|
||||
Hardwood=Твёрдая древесина
|
||||
Hardwood Slab=Плита из твёрдой древесины
|
||||
Hardwood Stair=Ступенька из твёрдой древесины
|
||||
Marble=Мрамор
|
||||
Marble Slab=Мраморная блита
|
||||
Marble Stair=Мраморная ступенька
|
||||
Roof block=Кровельный блок
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=Стекло без стыков
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=Смола
|
||||
Tar Slab=Плита из смолы
|
||||
Tar Stair=Ступенька из смолы
|
||||
Tarmac Spread=Покрытие гудронной смолой
|
||||
Terrycloth towel=Махровое полотенце
|
||||
Wood Framed Glass=Деревянное окно
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=Небольшая связка палок
|
||||
Tar Knife=Смоляной нож
|
||||
Tar base=Смоляная основа
|
48
building_blocks/locale/building_blocks.zh_CN.tr
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=花岗岩
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=土砖
|
||||
Adobe Slab=
|
||||
Adobe Stair=
|
||||
Brobble Spread=石砖路面
|
||||
Chess board tiling=棋盘铺贴
|
||||
Fake Grass=塑料草
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=壁炉
|
||||
Grate=磨碎
|
||||
Grate Slab=
|
||||
Grate Stair=
|
||||
Gravel Spread=碎石路面
|
||||
Hardwood=硬木
|
||||
Hardwood Slab=
|
||||
Hardwood Stair=
|
||||
Marble=大理石
|
||||
Marble Slab=
|
||||
Marble Stair=
|
||||
Roof block=天台
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=无条纹玻璃
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=焦油
|
||||
Tar Slab=
|
||||
Tar Stair=
|
||||
Tarmac Spread=柏油路面
|
||||
Terrycloth towel=毛巾
|
||||
Wood Framed Glass=木框玻璃
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=小捆棍子
|
||||
Tar Knife=焦油刀
|
||||
Tar base=焦油基
|
48
building_blocks/locale/template.txt
Normal file
@ -0,0 +1,48 @@
|
||||
# textdomain: building_blocks
|
||||
|
||||
|
||||
### alias.lua ###
|
||||
|
||||
Granite=
|
||||
|
||||
### node_stairs.lua ###
|
||||
|
||||
Adobe=
|
||||
Adobe Slab=
|
||||
Adobe Stair=
|
||||
Brobble Spread=
|
||||
Chess board tiling=
|
||||
Fake Grass=
|
||||
Fake Grass Slab=
|
||||
Fake Grass Stair=
|
||||
Fireplace=
|
||||
Grate=
|
||||
Grate Slab=
|
||||
Grate Stair=
|
||||
Gravel Spread=
|
||||
Hardwood=
|
||||
Hardwood Slab=
|
||||
Hardwood Stair=
|
||||
Marble=
|
||||
Marble Slab=
|
||||
Marble Stair=
|
||||
Roof block=
|
||||
Roof block Slab=
|
||||
Roof block Stair=
|
||||
Streak Free Glass=
|
||||
Streak Free Glass Slab=
|
||||
Streak Free Glass Stair=
|
||||
Tar=
|
||||
Tar Slab=
|
||||
Tar Stair=
|
||||
Tarmac Spread=
|
||||
Terrycloth towel=
|
||||
Wood Framed Glass=
|
||||
Wood Framed Glass Slab=
|
||||
Wood Framed Glass Stair=
|
||||
|
||||
### others.lua ###
|
||||
|
||||
Small bundle of sticks=
|
||||
Tar Knife=
|
||||
Tar base=
|
3
building_blocks/mod.conf
Normal file
@ -0,0 +1,3 @@
|
||||
name = building_blocks
|
||||
depends = default
|
||||
optional_depends = moreblocks, gloopblocks, stairs
|
250
building_blocks/node_stairs.lua
Normal file
@ -0,0 +1,250 @@
|
||||
local S = minetest.get_translator("building_blocks")
|
||||
|
||||
local stairs_groups_names = {"cracky","choppy","flammable","crumbly","snappy"}
|
||||
|
||||
local function building_blocks_stairs(nodename, def)
|
||||
minetest.register_node(nodename, def)
|
||||
if minetest.get_modpath("moreblocks") or minetest.get_modpath("stairs") then
|
||||
local mod, name = nodename:match("(.*):(.*)")
|
||||
minetest.register_alias(mod .. ":slab_" .. name, "stairs:slab_" .. name)
|
||||
minetest.register_alias(mod .. ":stair_" .. name, "stairs:stair_" .. name)
|
||||
local stairs_groups = {}
|
||||
for _, groupname in ipairs(stairs_groups_names) do
|
||||
stairs_groups[groupname] = def.groups[groupname]
|
||||
end
|
||||
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
stairsplus:register_all(
|
||||
mod,
|
||||
name,
|
||||
nodename,
|
||||
{
|
||||
description = def.description,
|
||||
tiles = def.tiles,
|
||||
groups = stairs_groups,
|
||||
sounds = def.sounds,
|
||||
}
|
||||
)
|
||||
else
|
||||
stairs.register_stair_and_slab(name,nodename,
|
||||
stairs_groups,
|
||||
def.tiles,
|
||||
def.stair_desc,
|
||||
def.slab_desc,
|
||||
def.sounds
|
||||
--FIXME: Missing descriptions for Inner and Outer stairs
|
||||
-- See https://github.com/minetest/minetest_game/pull/2584
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
building_blocks_stairs("building_blocks:grate", {
|
||||
drawtype = "glasslike",
|
||||
description = S("Grate"),
|
||||
stair_desc = S("Grate Stair"),
|
||||
slab = S("Grate Slab"),
|
||||
tiles = {"building_blocks_grate.png"},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {cracky=1},
|
||||
sounds = default.node_sound_metal_defaults(),
|
||||
})
|
||||
building_blocks_stairs("building_blocks:smoothglass", {
|
||||
drawtype = "glasslike",
|
||||
description = S("Streak Free Glass"),
|
||||
stair_desc = S("Streak Free Glass Stair"),
|
||||
slab_desc = S("Streak Free Glass Slab"),
|
||||
tiles = {"building_blocks_sglass.png"},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
})
|
||||
building_blocks_stairs("building_blocks:woodglass", {
|
||||
drawtype = "glasslike",
|
||||
description = S("Wood Framed Glass"),
|
||||
stair_desc = S("Wood Framed Glass Stair"),
|
||||
slab_desc = S("Wood Framed Glass Slab"),
|
||||
tiles = {"building_blocks_wglass.png"},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
})
|
||||
|
||||
building_blocks_stairs("building_blocks:Adobe", {
|
||||
tiles = {"building_blocks_Adobe.png"},
|
||||
description = S("Adobe"),
|
||||
stair_desc = S("Adobe Stair"),
|
||||
slab_desc = S("Adobe Slab"),
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
building_blocks_stairs("building_blocks:fakegrass", {
|
||||
tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
|
||||
description = S("Fake Grass"),
|
||||
stair_desc = S("Fake Grass Stair"),
|
||||
slab_desc = S("Fake Grass Slab"),
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_grass_footstep", gain=0.4},
|
||||
}),
|
||||
})
|
||||
building_blocks_stairs("building_blocks:hardwood", {
|
||||
tiles = {"building_blocks_hardwood.png"},
|
||||
is_ground_content = true,
|
||||
description = S("Hardwood"),
|
||||
stair_desc = S("Hardwood Stair"),
|
||||
slab_desc = S("Hardwood Slab"),
|
||||
groups = {choppy=1,flammable=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
building_blocks_stairs("building_blocks:Roofing", {
|
||||
tiles = {"building_blocks_Roofing.png"},
|
||||
is_ground_content = true,
|
||||
description = S("Roof block"),
|
||||
stair_desc = S("Roof block Stair"),
|
||||
slab_desc = S("Roof block Slab"),
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
building_blocks_stairs("building_blocks:Tar", {
|
||||
description = S("Tar"),
|
||||
stair_desc = S("Tar Stair"),
|
||||
slab_desc = S("Tar Slab"),
|
||||
tiles = {"building_blocks_tar.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=1, tar_block = 1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
building_blocks_stairs("building_blocks:Marble", {
|
||||
description = S("Marble"),
|
||||
stair_desc = S("Marble Stair"),
|
||||
slab_desc = S("Marble Slab"),
|
||||
tiles = {"building_blocks_marble.png"},
|
||||
is_ground_content = true,
|
||||
groups = {cracky=3, marble = 1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("building_blocks:brobble_spread", {
|
||||
drawtype = "raillike",
|
||||
-- Translators: "Brobble" is a portmanteau of "Brick" and "Cobble".
|
||||
-- Translate however you see fit.
|
||||
description = S("Brobble Spread"),
|
||||
tiles = {"building_blocks_brobble.png"},
|
||||
inventory_image = "building_blocks_brobble_spread_inv.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
-- but how to specify the dimensions for curved and sideways rails?
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
},
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
})
|
||||
|
||||
if not minetest.get_modpath("moreblocks") or not minetest.get_modpath("gloopblocks") then
|
||||
minetest.register_node("building_blocks:gravel_spread", {
|
||||
drawtype = "raillike",
|
||||
description = S("Gravel Spread"),
|
||||
tiles = {"default_gravel.png"},
|
||||
inventory_image = "building_blocks_gravel_spread_inv.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
-- but how to specify the dimensions for curved and sideways rails?
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
},
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=2},
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
}),
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_node("building_blocks:Tarmac_spread", {
|
||||
drawtype = "raillike",
|
||||
description = S("Tarmac Spread"),
|
||||
tiles = {"building_blocks_tar.png"},
|
||||
inventory_image = "building_blocks_tar_spread_inv.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
-- but how to specify the dimensions for curved and sideways rails?
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
},
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
})
|
||||
minetest.register_node("building_blocks:terrycloth_towel", {
|
||||
drawtype = "raillike",
|
||||
description = S("Terrycloth towel"),
|
||||
tiles = {"building_blocks_towel.png"},
|
||||
inventory_image = "building_blocks_towel_inv.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
-- but how to specify the dimensions for curved and sideways rails?
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
},
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
})
|
||||
|
||||
minetest.register_node("building_blocks:BWtile", {
|
||||
drawtype = "nodebox",
|
||||
description = S("Chess board tiling"),
|
||||
tiles = {
|
||||
"building_blocks_BWtile.png",
|
||||
"building_blocks_BWtile.png^[transformR90",
|
||||
"building_blocks_BWtile.png^[transformR90",
|
||||
"building_blocks_BWtile.png^[transformR90",
|
||||
"building_blocks_BWtile.png",
|
||||
"building_blocks_BWtile.png"
|
||||
},
|
||||
inventory_image = "building_blocks_bwtile_inv.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
},
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
})
|
||||
|
||||
minetest.register_node("building_blocks:Fireplace", {
|
||||
description = S("Fireplace"),
|
||||
tiles = {
|
||||
"building_blocks_cast_iron.png",
|
||||
"building_blocks_cast_iron.png",
|
||||
"building_blocks_cast_iron.png",
|
||||
"building_blocks_cast_iron_fireplace.png"
|
||||
},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
light_source = default.LIGHT_MAX,
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
groups = {cracky=2},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
23
building_blocks/others.lua
Normal file
@ -0,0 +1,23 @@
|
||||
local S = minetest.get_translator("building_blocks")
|
||||
|
||||
minetest.register_craftitem("building_blocks:sticks", {
|
||||
description = S("Small bundle of sticks"),
|
||||
image = "building_blocks_sticks.png",
|
||||
on_place_on_ground = minetest.craftitem_place_item,
|
||||
})
|
||||
minetest.register_craftitem("building_blocks:tar_base", {
|
||||
description = S("Tar base"),
|
||||
image = "building_blocks_tar_base.png",
|
||||
})
|
||||
|
||||
minetest.register_tool("building_blocks:knife", {
|
||||
description = S("Tar Knife"),
|
||||
inventory_image = "building_blocks_knife.png",
|
||||
tool_capabilities = {
|
||||
max_drop_level=0,
|
||||
groupcaps={
|
||||
choppy={times={[2]=7.50, [3]=2.80}, uses=100, maxlevel=1},
|
||||
fleshy={times={[2]=5.50, [3]=2.80}, uses=100, maxlevel=1}
|
||||
}
|
||||
},
|
||||
})
|
172
building_blocks/recipes.lua
Normal file
@ -0,0 +1,172 @@
|
||||
if minetest.get_modpath("moreblocks") then
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:sticks 2',
|
||||
recipe = {
|
||||
{'group:stick', '' , 'group:stick'},
|
||||
{'group:stick', 'group:stick', 'group:stick'},
|
||||
{'group:stick', 'group:stick', 'group:stick'},
|
||||
}
|
||||
})
|
||||
else
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:sticks',
|
||||
recipe = {
|
||||
{'group:stick', 'group:stick'},
|
||||
{'group:stick', 'group:stick'},
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:Adobe 3',
|
||||
recipe = {
|
||||
{"default:sand"},
|
||||
{"default:clay"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:brobble_spread 4',
|
||||
recipe = {
|
||||
{"default:brick", "default:cobble", "default:brick"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:BWtile 10',
|
||||
recipe = {
|
||||
{"group:marble", "group:tar_block"},
|
||||
{"group:tar_block", "group:marble"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:fakegrass 2',
|
||||
recipe = {
|
||||
{'default:leaves'},
|
||||
{"default:dirt"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:Fireplace 1',
|
||||
recipe = {
|
||||
{"default:steel_ingot", "building_blocks:sticks", "default:steel_ingot"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:grate 1',
|
||||
recipe = {
|
||||
{"default:steel_ingot", "default:steel_ingot"},
|
||||
{"default:glass", "default:glass"},
|
||||
}
|
||||
})
|
||||
|
||||
if not minetest.get_modpath("moreblocks") or not minetest.get_modpath("gloopblocks") then
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:gravel_spread 4',
|
||||
recipe = {
|
||||
{"default:gravel", "default:gravel", "default:gravel"},
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:hardwood 2',
|
||||
recipe = {
|
||||
{"default:wood", "default:junglewood"},
|
||||
{"default:junglewood", "default:wood"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:hardwood 2',
|
||||
recipe = {
|
||||
{"default:junglewood", "default:wood"},
|
||||
{"default:wood", "default:junglewood"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:knife 1',
|
||||
recipe = {
|
||||
{"group:tar_block"},
|
||||
{"group:stick"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = "building_blocks:Marble 9",
|
||||
recipe = {
|
||||
{"default:clay", "group:tar_block", "default:clay"},
|
||||
{"group:tar_block","default:clay", "group:tar_block"},
|
||||
{"default:clay", "group:tar_block","default:clay"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:Roofing 10',
|
||||
recipe = {
|
||||
{"building_blocks:Adobe", "building_blocks:Adobe"},
|
||||
{"building_blocks:Adobe", "building_blocks:Adobe"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'default:stick 4',
|
||||
recipe = {
|
||||
{'building_blocks:sticks'},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:tar_base 4',
|
||||
recipe = {
|
||||
{"default:coal_lump", "default:gravel"},
|
||||
{"default:gravel", "default:coal_lump"}
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:tar_base 4',
|
||||
recipe = {
|
||||
{"default:gravel", "default:coal_lump"},
|
||||
{"default:coal_lump", "default:gravel"}
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:Tarmac_spread 4',
|
||||
recipe = {
|
||||
{"group:tar_block", "group:tar_block"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:terrycloth_towel 2',
|
||||
recipe = {
|
||||
{"farming:string", "farming:string", "farming:string"},
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = 'building_blocks:woodglass 1',
|
||||
recipe = {
|
||||
{"default:wood"},
|
||||
{"default:glass"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "building_blocks:smoothglass",
|
||||
recipe = "default:glass"
|
||||
})
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "building_blocks:Tar",
|
||||
recipe = "building_blocks:tar_base",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "building_blocks:hardwood",
|
||||
burntime = 28,
|
||||
})
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "building_blocks:sticks",
|
||||
burntime = 5,
|
||||
})
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "building_blocks:Tar",
|
||||
burntime = 40,
|
||||
})
|
Before Width: | Height: | Size: 499 B After Width: | Height: | Size: 450 B |
@ -1 +0,0 @@
|
||||
default
|
178
chains/init.lua
@ -1,178 +0,0 @@
|
||||
local chains_sbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.1, -0.625, -0.1, 0.1, 0.5, 0.1 }
|
||||
}
|
||||
|
||||
local topchains_sbox = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.25, 0.35, -0.25, 0.25, 0.5, 0.25 },
|
||||
{ -0.1, -0.625, -0.1, 0.1, 0.4, 0.1 }
|
||||
}
|
||||
}
|
||||
|
||||
minetest.register_node("chains:chain", {
|
||||
description = "Hanging chain (wrought iron)",
|
||||
drawtype = "mesh",
|
||||
mesh = "chains.obj",
|
||||
tiles = {"chains_wrought_iron.png"},
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
inventory_image = "chain_wrought_iron_inv.png",
|
||||
groups = {cracky=3},
|
||||
selection_box = chains_sbox,
|
||||
})
|
||||
|
||||
minetest.register_node("chains:chain_brass", {
|
||||
description = "Hanging chain (brass)",
|
||||
drawtype = "mesh",
|
||||
mesh = "chains.obj",
|
||||
tiles = {"chains_brass.png"},
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
inventory_image = "chain_brass_inv.png",
|
||||
groups = {cracky=3},
|
||||
selection_box = chains_sbox,
|
||||
})
|
||||
|
||||
minetest.register_node("chains:chain_top", {
|
||||
description = "Hanging chain (ceiling mount, wrought iron)",
|
||||
drawtype = "mesh",
|
||||
mesh = "top_chains.obj",
|
||||
tiles = {"chains_wrought_iron.png"},
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
inventory_image = "top_chain_wrought_iron_inv.png",
|
||||
groups = {cracky=3},
|
||||
selection_box = topchains_sbox,
|
||||
})
|
||||
|
||||
minetest.register_node("chains:chain_top_brass", {
|
||||
description = "Hanging chain (ceiling mount, brass)",
|
||||
drawtype = "mesh",
|
||||
mesh = "top_chains.obj",
|
||||
tiles = {"chains_brass.png"},
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
inventory_image = "top_chain_brass_inv.png",
|
||||
groups = {cracky=3},
|
||||
selection_box = topchains_sbox,
|
||||
})
|
||||
|
||||
minetest.register_node("chains:chandelier", {
|
||||
description = "Chandelier (wrought iron)",
|
||||
paramtype = "light",
|
||||
light_source = default.LIGHT_MAX-2,
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
tiles = {
|
||||
"chains_wrought_iron.png",
|
||||
"chains_candle.png",
|
||||
{
|
||||
name="chains_candle_flame.png",
|
||||
animation={
|
||||
type="vertical_frames",
|
||||
aspect_w=16,
|
||||
aspect_h=16,
|
||||
length=3.0
|
||||
}
|
||||
}
|
||||
},
|
||||
drawtype = "mesh",
|
||||
mesh = "chains_chandelier.obj",
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("chains:chandelier_brass", {
|
||||
description = "Chandelier (brass)",
|
||||
paramtype = "light",
|
||||
light_source = default.LIGHT_MAX-2,
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
sunlight_propagates = true,
|
||||
paramtype = "light",
|
||||
tiles = {
|
||||
"chains_brass.png",
|
||||
"chains_candle.png",
|
||||
{
|
||||
name="chains_candle_flame.png",
|
||||
animation={
|
||||
type="vertical_frames",
|
||||
aspect_w=16,
|
||||
aspect_h=16,
|
||||
length=3.0
|
||||
}
|
||||
}
|
||||
},
|
||||
drawtype = "mesh",
|
||||
mesh = "chains_chandelier.obj",
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
-- crafts
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'chains:chain 2',
|
||||
recipe = {
|
||||
{'glooptest:chainlink'},
|
||||
{'glooptest:chainlink'},
|
||||
{'glooptest:chainlink'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'chains:chain_top',
|
||||
recipe = {
|
||||
{'default:steel_ingot'},
|
||||
{'glooptest:chainlink'},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'chains:chandelier',
|
||||
recipe = {
|
||||
{'', 'glooptest:chainlink', ''},
|
||||
{'default:torch', 'glooptest:chainlink', 'default:torch'},
|
||||
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
||||
}
|
||||
})
|
||||
|
||||
-- brass versions
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'chains:chain_brass 2',
|
||||
recipe = {
|
||||
{'homedecor:chainlink_brass'},
|
||||
{'homedecor:chainlink_brass'},
|
||||
{'homedecor:chainlink_brass'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'chains:chain_top_brass',
|
||||
recipe = {
|
||||
{'technic:brass_ingot'},
|
||||
{'homedecor:chainlink_brass'},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'chains:chandelier_brass',
|
||||
recipe = {
|
||||
{'', 'homedecor:chainlink_brass', ''},
|
||||
{'default:torch', 'homedecor:chainlink_brass', 'default:torch'},
|
||||
{'technic:brass_ingot', 'technic:brass_ingot', 'technic:brass_ingot'},
|
||||
}
|
||||
})
|
@ -1,881 +0,0 @@
|
||||
# Blender v2.73 (sub 0) OBJ File: 'chains.blend'
|
||||
# www.blender.org
|
||||
o Torus.016_Torus
|
||||
v 0.000000 -0.429978 0.000002
|
||||
v 0.000000 -0.401109 0.055211
|
||||
v -0.014044 -0.391975 0.048870
|
||||
v -0.014044 -0.423304 0.000002
|
||||
v -0.009826 -0.379748 0.040970
|
||||
v -0.009826 -0.406012 0.000002
|
||||
v 0.009826 -0.379748 0.040970
|
||||
v 0.009826 -0.406012 0.000002
|
||||
v 0.014044 -0.391975 0.048870
|
||||
v 0.014044 -0.423304 0.000002
|
||||
v 0.000000 -0.316336 0.080195
|
||||
v -0.014044 -0.316336 0.069112
|
||||
v -0.009826 -0.316336 0.057941
|
||||
v 0.009826 -0.316336 0.057941
|
||||
v 0.014044 -0.316336 0.069112
|
||||
v 0.000000 -0.231564 0.055211
|
||||
v -0.014044 -0.240700 0.048870
|
||||
v -0.009826 -0.252925 0.040970
|
||||
v 0.009826 -0.252925 0.040970
|
||||
v 0.014044 -0.240700 0.048870
|
||||
v 0.000000 -0.202695 0.000002
|
||||
v -0.014044 -0.209368 0.000002
|
||||
v -0.009826 -0.226661 0.000002
|
||||
v 0.009826 -0.226661 0.000002
|
||||
v 0.014044 -0.209368 0.000002
|
||||
v 0.000000 -0.231564 -0.055206
|
||||
v -0.014044 -0.240700 -0.048868
|
||||
v -0.009826 -0.252925 -0.040967
|
||||
v 0.009826 -0.252925 -0.040967
|
||||
v 0.014044 -0.240700 -0.048865
|
||||
v 0.000000 -0.316336 -0.080190
|
||||
v -0.014044 -0.316336 -0.069108
|
||||
v -0.009826 -0.316336 -0.057936
|
||||
v 0.009826 -0.316336 -0.057936
|
||||
v 0.014044 -0.316336 -0.069108
|
||||
v 0.000000 -0.400361 -0.055206
|
||||
v -0.014044 -0.391975 -0.048868
|
||||
v -0.009826 -0.379748 -0.040967
|
||||
v 0.009826 -0.379748 -0.040967
|
||||
v 0.014044 -0.391975 -0.048868
|
||||
v 0.000000 -0.262249 0.000002
|
||||
v -0.061672 -0.233381 0.000002
|
||||
v -0.054590 -0.224245 -0.012569
|
||||
v 0.000000 -0.255577 -0.012569
|
||||
v -0.045765 -0.212018 -0.008794
|
||||
v 0.000000 -0.238285 -0.008794
|
||||
v -0.045765 -0.212018 0.008798
|
||||
v 0.000000 -0.238285 0.008798
|
||||
v -0.054590 -0.224245 0.012574
|
||||
v 0.000000 -0.255577 0.012574
|
||||
v -0.089582 -0.148609 0.000002
|
||||
v -0.077200 -0.148609 -0.012569
|
||||
v -0.064722 -0.148609 -0.008794
|
||||
v -0.064722 -0.148609 0.008799
|
||||
v -0.077200 -0.148609 0.012574
|
||||
v -0.061672 -0.063837 0.000002
|
||||
v -0.054590 -0.072971 -0.012569
|
||||
v -0.045765 -0.085198 -0.008794
|
||||
v -0.045765 -0.085198 0.008799
|
||||
v -0.054590 -0.072971 0.012574
|
||||
v 0.000000 -0.034967 0.000002
|
||||
v 0.000000 -0.041641 -0.012569
|
||||
v 0.000000 -0.058933 -0.008794
|
||||
v 0.000000 -0.058933 0.008799
|
||||
v 0.000000 -0.041641 0.012574
|
||||
v 0.061672 -0.063837 0.000002
|
||||
v 0.054590 -0.072971 -0.012569
|
||||
v 0.045765 -0.085198 -0.008794
|
||||
v 0.045765 -0.085198 0.008799
|
||||
v 0.054590 -0.072971 0.012574
|
||||
v 0.089582 -0.148609 0.000002
|
||||
v 0.077200 -0.148609 -0.012569
|
||||
v 0.064722 -0.148609 -0.008794
|
||||
v 0.064722 -0.148609 0.008799
|
||||
v 0.077200 -0.148609 0.012574
|
||||
v 0.061672 -0.232631 0.000002
|
||||
v 0.054590 -0.224245 -0.012569
|
||||
v 0.045765 -0.212018 -0.008794
|
||||
v 0.045765 -0.212018 0.008798
|
||||
v 0.054590 -0.224245 0.012574
|
||||
v 0.000000 0.073316 0.000002
|
||||
v 0.061672 0.102183 0.000002
|
||||
v 0.054590 0.111319 0.012574
|
||||
v 0.000000 0.079988 0.012574
|
||||
v 0.045765 0.123546 0.008799
|
||||
v 0.000000 0.097280 0.008799
|
||||
v 0.045765 0.123546 -0.008794
|
||||
v 0.000000 0.097280 -0.008794
|
||||
v 0.054590 0.111319 -0.012569
|
||||
v 0.000000 0.079988 -0.012569
|
||||
v 0.089582 0.186956 0.000002
|
||||
v 0.077200 0.186956 0.012574
|
||||
v 0.064722 0.186956 0.008799
|
||||
v 0.064722 0.186956 -0.008794
|
||||
v 0.077200 0.186956 -0.012569
|
||||
v 0.061672 0.271728 0.000002
|
||||
v 0.054590 0.262594 0.012574
|
||||
v 0.045765 0.250367 0.008799
|
||||
v 0.045765 0.250367 -0.008794
|
||||
v 0.054590 0.262594 -0.012569
|
||||
v 0.000000 0.300597 0.000002
|
||||
v 0.000000 0.293923 0.012574
|
||||
v 0.000000 0.276631 0.008799
|
||||
v 0.000000 0.276631 -0.008794
|
||||
v 0.000000 0.293923 -0.012569
|
||||
v -0.061672 0.271728 0.000002
|
||||
v -0.054590 0.262594 0.012574
|
||||
v -0.045765 0.250367 0.008799
|
||||
v -0.045765 0.250367 -0.008794
|
||||
v -0.054590 0.262594 -0.012569
|
||||
v -0.089582 0.186956 0.000002
|
||||
v -0.077200 0.186956 0.012574
|
||||
v -0.064722 0.186956 0.008799
|
||||
v -0.064722 0.186956 -0.008794
|
||||
v -0.077200 0.186956 -0.012569
|
||||
v -0.061672 0.102931 0.000002
|
||||
v -0.054590 0.111319 0.012574
|
||||
v -0.045765 0.123546 0.008799
|
||||
v -0.045765 0.123546 -0.008794
|
||||
v -0.054590 0.111319 -0.012569
|
||||
v 0.000000 -0.095037 0.000002
|
||||
v 0.000000 -0.066168 -0.055206
|
||||
v 0.014044 -0.057034 -0.048868
|
||||
v 0.014044 -0.088363 0.000002
|
||||
v 0.009826 -0.044807 -0.040967
|
||||
v 0.009826 -0.071071 0.000002
|
||||
v -0.009826 -0.044807 -0.040967
|
||||
v -0.009826 -0.071071 0.000002
|
||||
v -0.014044 -0.057034 -0.048868
|
||||
v -0.014044 -0.088363 0.000002
|
||||
v 0.000000 0.018605 -0.080190
|
||||
v 0.014044 0.018605 -0.069108
|
||||
v 0.009826 0.018605 -0.057936
|
||||
v -0.009826 0.018605 -0.057936
|
||||
v -0.014044 0.018605 -0.069108
|
||||
v 0.000000 0.103377 -0.055206
|
||||
v 0.014044 0.094243 -0.048868
|
||||
v 0.009826 0.082016 -0.040967
|
||||
v -0.009826 0.082016 -0.040967
|
||||
v -0.014044 0.094243 -0.048868
|
||||
v 0.000000 0.132246 0.000002
|
||||
v 0.014044 0.125572 0.000002
|
||||
v 0.009826 0.108280 0.000002
|
||||
v -0.009826 0.108280 0.000002
|
||||
v -0.014044 0.125572 0.000002
|
||||
v 0.000000 0.103377 0.055211
|
||||
v 0.014044 0.094243 0.048870
|
||||
v 0.009826 0.082016 0.040970
|
||||
v -0.009826 0.082016 0.040970
|
||||
v -0.014044 0.094243 0.048870
|
||||
v 0.000000 0.018605 0.080195
|
||||
v 0.014044 0.018605 0.069112
|
||||
v 0.009826 0.018605 0.057941
|
||||
v -0.009826 0.018605 0.057941
|
||||
v -0.014044 0.018605 0.069112
|
||||
v 0.000000 -0.065420 0.055211
|
||||
v 0.014044 -0.057032 0.048870
|
||||
v 0.009826 -0.044807 0.040970
|
||||
v -0.009826 -0.044807 0.040970
|
||||
v -0.014044 -0.057032 0.048870
|
||||
v 0.000000 -0.598329 0.000002
|
||||
v 0.061672 -0.569460 0.000002
|
||||
v 0.054590 -0.560326 0.012574
|
||||
v 0.000000 -0.591655 0.012574
|
||||
v 0.045765 -0.548099 0.008798
|
||||
v 0.000000 -0.574363 0.008798
|
||||
v 0.045765 -0.548099 -0.008794
|
||||
v 0.000000 -0.574363 -0.008794
|
||||
v 0.054590 -0.560326 -0.012569
|
||||
v 0.000000 -0.591655 -0.012569
|
||||
v 0.089582 -0.484687 0.000002
|
||||
v 0.077200 -0.484687 0.012574
|
||||
v 0.064722 -0.484687 0.008798
|
||||
v 0.064722 -0.484687 -0.008794
|
||||
v 0.077200 -0.484687 -0.012569
|
||||
v 0.061672 -0.399915 0.000002
|
||||
v 0.054590 -0.409051 0.012574
|
||||
v 0.045765 -0.421278 0.008798
|
||||
v 0.045765 -0.421278 -0.008794
|
||||
v 0.054590 -0.409051 -0.012569
|
||||
v 0.000000 -0.371048 0.000002
|
||||
v 0.000000 -0.377719 0.012574
|
||||
v 0.000000 -0.395012 0.008798
|
||||
v 0.000000 -0.395012 -0.008794
|
||||
v 0.000000 -0.377719 -0.012569
|
||||
v -0.061672 -0.399915 0.000002
|
||||
v -0.054590 -0.409051 0.012574
|
||||
v -0.045765 -0.421278 0.008798
|
||||
v -0.045765 -0.421278 -0.008794
|
||||
v -0.054590 -0.409051 -0.012569
|
||||
v -0.089582 -0.484687 0.000002
|
||||
v -0.077200 -0.484687 0.012574
|
||||
v -0.064722 -0.484687 0.008798
|
||||
v -0.064722 -0.484687 -0.008794
|
||||
v -0.077200 -0.484687 -0.012569
|
||||
v -0.061672 -0.568712 0.000002
|
||||
v -0.054590 -0.560326 0.012574
|
||||
v -0.045765 -0.548099 0.008798
|
||||
v -0.045765 -0.548099 -0.008794
|
||||
v -0.054590 -0.560326 -0.012569
|
||||
v 0.000000 0.241043 0.000002
|
||||
v 0.000000 0.269910 0.055211
|
||||
v -0.014044 0.279047 0.048870
|
||||
v -0.014044 0.247717 0.000002
|
||||
v -0.009826 0.291274 0.040970
|
||||
v -0.009826 0.265007 0.000002
|
||||
v 0.009826 0.291274 0.040970
|
||||
v 0.009826 0.265007 0.000002
|
||||
v 0.014044 0.279047 0.048870
|
||||
v 0.014044 0.247717 0.000002
|
||||
v 0.000000 0.354683 0.080195
|
||||
v -0.014044 0.354683 0.069112
|
||||
v -0.009826 0.354683 0.057941
|
||||
v 0.009826 0.354683 0.057941
|
||||
v 0.014044 0.354683 0.069112
|
||||
v 0.000000 0.439455 0.055211
|
||||
v -0.014044 0.430321 0.048870
|
||||
v -0.009826 0.418094 0.040970
|
||||
v 0.009826 0.418094 0.040970
|
||||
v 0.014044 0.430321 0.048870
|
||||
v 0.000000 0.468325 0.000002
|
||||
v -0.014044 0.461651 0.000002
|
||||
v -0.009826 0.444361 0.000002
|
||||
v 0.009826 0.444361 0.000002
|
||||
v 0.014044 0.461651 0.000002
|
||||
v 0.000000 0.439455 -0.055206
|
||||
v -0.014044 0.430321 -0.048868
|
||||
v -0.009826 0.418094 -0.040967
|
||||
v 0.009826 0.418094 -0.040967
|
||||
v 0.014044 0.430321 -0.048868
|
||||
v 0.000000 0.354683 -0.080190
|
||||
v -0.014044 0.354683 -0.069108
|
||||
v -0.009826 0.354683 -0.057936
|
||||
v 0.009826 0.354683 -0.057936
|
||||
v 0.014044 0.354683 -0.069108
|
||||
v 0.000000 0.270661 -0.055206
|
||||
v -0.014044 0.279047 -0.048868
|
||||
v -0.009826 0.291274 -0.040967
|
||||
v 0.009826 0.291274 -0.040967
|
||||
v 0.014044 0.279047 -0.048868
|
||||
vt 0.187500 0.125000
|
||||
vt 0.250000 0.125000
|
||||
vt 0.250000 0.187500
|
||||
vt 0.187500 0.187500
|
||||
vt 0.250000 0.250000
|
||||
vt 0.187500 0.250000
|
||||
vt 0.250000 0.312500
|
||||
vt 0.187500 0.312500
|
||||
vt 0.250000 0.375000
|
||||
vt 0.187500 0.375000
|
||||
vt 0.187500 0.062500
|
||||
vt 0.250000 0.062500
|
||||
vt 0.312500 0.125000
|
||||
vt 0.312500 0.187500
|
||||
vt 0.312500 0.250000
|
||||
vt 0.312500 0.312500
|
||||
vt 0.312500 0.375000
|
||||
vt 0.312500 0.062500
|
||||
vt 0.375000 0.125000
|
||||
vt 0.375000 0.187500
|
||||
vt 0.375000 0.250000
|
||||
vt 0.375000 0.312500
|
||||
vt 0.375000 0.375000
|
||||
vt 0.375000 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.437500 0.187500
|
||||
vt 0.437500 0.250000
|
||||
vt 0.437500 0.312500
|
||||
vt 0.437500 0.375000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.500000 0.125000
|
||||
vt 0.500000 0.187500
|
||||
vt 0.500000 0.250000
|
||||
vt 0.500000 0.312500
|
||||
vt 0.500000 0.375000
|
||||
vt 0.500000 0.062500
|
||||
vt -0.000000 0.125000
|
||||
vt 0.062500 0.125000
|
||||
vt 0.062500 0.187500
|
||||
vt -0.000000 0.187500
|
||||
vt 0.062500 0.250000
|
||||
vt -0.000000 0.250000
|
||||
vt 0.062500 0.312500
|
||||
vt -0.000000 0.312500
|
||||
vt 0.062500 0.375000
|
||||
vt -0.000000 0.375000
|
||||
vt -0.000000 0.062500
|
||||
vt 0.062500 0.062500
|
||||
vt 0.125000 0.125000
|
||||
vt 0.125000 0.187500
|
||||
vt 0.125000 0.250000
|
||||
vt 0.125000 0.312500
|
||||
vt 0.125000 0.375000
|
||||
vt 0.125000 0.062500
|
||||
vt 0.750000 0.625000
|
||||
vt 0.812500 0.625000
|
||||
vt 0.812500 0.687500
|
||||
vt 0.750000 0.687500
|
||||
vt 0.750000 0.375000
|
||||
vt 0.812500 0.375000
|
||||
vt 0.812500 0.437500
|
||||
vt 0.750000 0.437500
|
||||
vt 0.812500 0.500000
|
||||
vt 0.750000 0.500000
|
||||
vt 0.812500 0.562500
|
||||
vt 0.750000 0.562500
|
||||
vt 0.875000 0.625000
|
||||
vt 0.875000 0.687500
|
||||
vt 0.875000 0.375000
|
||||
vt 0.875000 0.437500
|
||||
vt 0.875000 0.500000
|
||||
vt 0.875000 0.562500
|
||||
vt 0.937500 0.625000
|
||||
vt 0.937500 0.687500
|
||||
vt 0.937500 0.375000
|
||||
vt 0.937500 0.437500
|
||||
vt 0.937500 0.500000
|
||||
vt 0.937500 0.562500
|
||||
vt 1.000000 0.625000
|
||||
vt 1.000000 0.687500
|
||||
vt 1.000000 0.375000
|
||||
vt 1.000000 0.437500
|
||||
vt 1.000000 0.500000
|
||||
vt 1.000000 0.562500
|
||||
vt 0.500000 0.625000
|
||||
vt 0.562500 0.625000
|
||||
vt 0.562500 0.687500
|
||||
vt 0.500000 0.687500
|
||||
vt 0.562500 0.375000
|
||||
vt 0.562500 0.437500
|
||||
vt 0.500000 0.437500
|
||||
vt 0.562500 0.500000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.562500 0.562500
|
||||
vt 0.500000 0.562500
|
||||
vt 0.625000 0.625000
|
||||
vt 0.625000 0.687500
|
||||
vt 0.625000 0.375000
|
||||
vt 0.625000 0.437500
|
||||
vt 0.625000 0.500000
|
||||
vt 0.625000 0.562500
|
||||
vt 0.687500 0.625000
|
||||
vt 0.687500 0.687500
|
||||
vt 0.687500 0.375000
|
||||
vt 0.687500 0.437500
|
||||
vt 0.687500 0.500000
|
||||
vt 0.687500 0.562500
|
||||
vt 0.250000 0.625000
|
||||
vt 0.312500 0.625000
|
||||
vt 0.312500 0.687500
|
||||
vt 0.250000 0.687500
|
||||
vt 0.312500 0.437500
|
||||
vt 0.250000 0.437500
|
||||
vt 0.312500 0.500000
|
||||
vt 0.250000 0.500000
|
||||
vt 0.312500 0.562500
|
||||
vt 0.250000 0.562500
|
||||
vt 0.375000 0.625000
|
||||
vt 0.375000 0.687500
|
||||
vt 0.375000 0.437500
|
||||
vt 0.375000 0.500000
|
||||
vt 0.375000 0.562500
|
||||
vt 0.437500 0.625000
|
||||
vt 0.437500 0.687500
|
||||
vt 0.437500 0.437500
|
||||
vt 0.437500 0.500000
|
||||
vt 0.437500 0.562500
|
||||
vt -0.000000 0.625000
|
||||
vt 0.062500 0.625000
|
||||
vt 0.062500 0.687500
|
||||
vt -0.000000 0.687500
|
||||
vt 0.062500 0.437500
|
||||
vt -0.000000 0.437500
|
||||
vt 0.062500 0.500000
|
||||
vt -0.000000 0.500000
|
||||
vt 0.062500 0.562500
|
||||
vt -0.000000 0.562500
|
||||
vt 0.125000 0.625000
|
||||
vt 0.125000 0.687500
|
||||
vt 0.125000 0.437500
|
||||
vt 0.125000 0.500000
|
||||
vt 0.125000 0.562500
|
||||
vt 0.187500 0.625000
|
||||
vt 0.187500 0.687500
|
||||
vt 0.187500 0.437500
|
||||
vt 0.187500 0.500000
|
||||
vt 0.187500 0.562500
|
||||
vt 0.687500 0.750000
|
||||
vt 0.750000 0.750000
|
||||
vt 0.750000 0.812500
|
||||
vt 0.687500 0.812500
|
||||
vt 0.750000 0.875000
|
||||
vt 0.687500 0.875000
|
||||
vt 0.750000 0.937500
|
||||
vt 0.687500 0.937500
|
||||
vt 0.750000 1.000000
|
||||
vt 0.687500 1.000000
|
||||
vt 0.812500 0.750000
|
||||
vt 0.812500 0.812500
|
||||
vt 0.812500 0.875000
|
||||
vt 0.812500 0.937500
|
||||
vt 0.812500 1.000000
|
||||
vt 0.875000 0.750000
|
||||
vt 0.875000 0.812500
|
||||
vt 0.875000 0.875000
|
||||
vt 0.875000 0.937500
|
||||
vt 0.875000 1.000000
|
||||
vt 0.937500 0.750000
|
||||
vt 0.937500 0.812500
|
||||
vt 0.937500 0.875000
|
||||
vt 0.937500 0.937500
|
||||
vt 0.937500 1.000000
|
||||
vt 1.000000 0.750000
|
||||
vt 1.000000 0.812500
|
||||
vt 1.000000 0.875000
|
||||
vt 1.000000 0.937500
|
||||
vt 1.000000 1.000000
|
||||
vt 0.500000 0.750000
|
||||
vt 0.562500 0.750000
|
||||
vt 0.562500 0.812500
|
||||
vt 0.500000 0.812500
|
||||
vt 0.562500 0.875000
|
||||
vt 0.500000 0.875000
|
||||
vt 0.562500 0.937500
|
||||
vt 0.500000 0.937500
|
||||
vt 0.562500 1.000000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.625000 0.750000
|
||||
vt 0.625000 0.812500
|
||||
vt 0.625000 0.875000
|
||||
vt 0.625000 0.937500
|
||||
vt 0.625000 1.000000
|
||||
vt 0.750000 0.312500
|
||||
vt 0.812500 0.312500
|
||||
vt 0.750000 0.062500
|
||||
vt 0.812500 0.062500
|
||||
vt 0.812500 0.125000
|
||||
vt 0.750000 0.125000
|
||||
vt 0.812500 0.187500
|
||||
vt 0.750000 0.187500
|
||||
vt 0.812500 0.250000
|
||||
vt 0.750000 0.250000
|
||||
vt 0.875000 0.312500
|
||||
vt 0.875000 0.062500
|
||||
vt 0.875000 0.125000
|
||||
vt 0.875000 0.187500
|
||||
vt 0.875000 0.250000
|
||||
vt 0.937500 0.312500
|
||||
vt 0.937500 0.062500
|
||||
vt 0.937500 0.125000
|
||||
vt 0.937500 0.187500
|
||||
vt 0.937500 0.250000
|
||||
vt 1.000000 0.312500
|
||||
vt 1.000000 0.062500
|
||||
vt 1.000000 0.125000
|
||||
vt 1.000000 0.187500
|
||||
vt 1.000000 0.250000
|
||||
vt 0.562500 0.312500
|
||||
vt 0.562500 0.062500
|
||||
vt 0.562500 0.125000
|
||||
vt 0.562500 0.187500
|
||||
vt 0.562500 0.250000
|
||||
vt 0.625000 0.312500
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.625000 0.187500
|
||||
vt 0.625000 0.250000
|
||||
vt 0.687500 0.312500
|
||||
vt 0.687500 0.062500
|
||||
vt 0.687500 0.125000
|
||||
vt 0.687500 0.187500
|
||||
vt 0.687500 0.250000
|
||||
vt 0.250000 0.937500
|
||||
vt 0.312500 0.937500
|
||||
vt 0.312500 1.000000
|
||||
vt 0.250000 1.000000
|
||||
vt 0.312500 0.750000
|
||||
vt 0.250000 0.750000
|
||||
vt 0.312500 0.812500
|
||||
vt 0.250000 0.812500
|
||||
vt 0.312500 0.875000
|
||||
vt 0.250000 0.875000
|
||||
vt 0.375000 0.937500
|
||||
vt 0.375000 1.000000
|
||||
vt 0.375000 0.750000
|
||||
vt 0.375000 0.812500
|
||||
vt 0.375000 0.875000
|
||||
vt 0.437500 0.937500
|
||||
vt 0.437500 1.000000
|
||||
vt 0.437500 0.750000
|
||||
vt 0.437500 0.812500
|
||||
vt 0.437500 0.875000
|
||||
vt 0.000000 0.937500
|
||||
vt 0.062500 0.937500
|
||||
vt 0.062500 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.062500 0.750000
|
||||
vt 0.000000 0.750000
|
||||
vt 0.062500 0.812500
|
||||
vt 0.000000 0.812500
|
||||
vt 0.062500 0.875000
|
||||
vt 0.000000 0.875000
|
||||
vt 0.125000 0.937500
|
||||
vt 0.125000 1.000000
|
||||
vt 0.125000 0.750000
|
||||
vt 0.125000 0.812500
|
||||
vt 0.125000 0.875000
|
||||
vt 0.187500 0.937500
|
||||
vt 0.187500 1.000000
|
||||
vt 0.187500 0.750000
|
||||
vt 0.187500 0.812500
|
||||
vt 0.187500 0.875000
|
||||
vn 0.000000 -1.000000 -0.004800
|
||||
vn 0.000000 -0.657400 0.753500
|
||||
vn -0.898300 -0.248500 0.362300
|
||||
vn -0.863600 -0.504100 -0.003400
|
||||
vn -0.661500 0.421500 -0.620200
|
||||
vn -0.746000 0.665900 0.000000
|
||||
vn 0.661500 0.421500 -0.620200
|
||||
vn 0.746000 0.665900 0.000000
|
||||
vn 0.898300 -0.248500 0.362300
|
||||
vn 0.863600 -0.504100 -0.003400
|
||||
vn 0.000000 0.000000 1.000000
|
||||
vn -0.925200 0.000000 0.379500
|
||||
vn -0.617100 0.000000 -0.786900
|
||||
vn 0.617100 0.000000 -0.786900
|
||||
vn 0.925200 0.000000 0.379500
|
||||
vn 0.000000 0.657400 0.753500
|
||||
vn -0.898300 0.248400 0.362300
|
||||
vn -0.661500 -0.421500 -0.620200
|
||||
vn 0.661500 -0.421500 -0.620200
|
||||
vn 0.898300 0.248400 0.362300
|
||||
vn 0.000000 1.000000 0.000000
|
||||
vn -0.866100 0.499800 0.000000
|
||||
vn -0.746000 -0.665900 0.000000
|
||||
vn 0.746000 -0.665900 0.000000
|
||||
vn 0.866100 0.499800 0.000000
|
||||
vn 0.000000 0.657400 -0.753500
|
||||
vn -0.898300 0.248400 -0.362400
|
||||
vn -0.661600 -0.421500 0.620200
|
||||
vn 0.661500 -0.421500 0.620200
|
||||
vn 0.898300 0.248400 -0.362300
|
||||
vn 0.000000 -0.000900 -1.000000
|
||||
vn -0.924600 -0.000600 -0.380700
|
||||
vn -0.617100 0.000000 0.786900
|
||||
vn 0.617100 0.000000 0.786900
|
||||
vn 0.924700 -0.000600 -0.380700
|
||||
vn 0.000000 -0.650300 -0.759600
|
||||
vn -0.895600 -0.254600 -0.364800
|
||||
vn -0.661600 0.421500 0.620200
|
||||
vn 0.661600 0.421500 0.620200
|
||||
vn 0.895600 -0.254600 -0.364800
|
||||
vn 0.004900 -1.000000 0.000000
|
||||
vn -0.729700 -0.683800 0.000000
|
||||
vn -0.324500 -0.256300 -0.910500
|
||||
vn 0.003300 -0.475500 -0.879700
|
||||
vn 0.578700 0.436200 -0.689100
|
||||
vn 0.000000 0.666600 -0.745400
|
||||
vn 0.578700 0.436200 0.689100
|
||||
vn 0.000000 0.666600 0.745400
|
||||
vn -0.324500 -0.256300 0.910500
|
||||
vn 0.003300 -0.475500 0.879700
|
||||
vn -1.000000 0.000000 0.000000
|
||||
vn -0.359600 0.000000 -0.933100
|
||||
vn 0.756400 0.000000 -0.654100
|
||||
vn 0.756400 0.000000 0.654100
|
||||
vn -0.359600 0.000000 0.933100
|
||||
vn -0.729700 0.683700 0.000000
|
||||
vn -0.324500 0.256300 -0.910500
|
||||
vn 0.578700 -0.436200 -0.689100
|
||||
vn 0.578700 -0.436200 0.689100
|
||||
vn -0.324500 0.256300 0.910500
|
||||
vn 0.000000 0.470900 -0.882200
|
||||
vn 0.000000 -0.666600 -0.745400
|
||||
vn 0.000000 -0.666600 0.745400
|
||||
vn 0.000000 0.470900 0.882200
|
||||
vn 0.729700 0.683700 0.000000
|
||||
vn 0.324500 0.256300 -0.910500
|
||||
vn -0.578700 -0.436200 -0.689100
|
||||
vn -0.578700 -0.436200 0.689100
|
||||
vn 0.324500 0.256300 0.910500
|
||||
vn 1.000000 -0.001100 0.000000
|
||||
vn 0.361000 -0.000700 -0.932600
|
||||
vn -0.756400 0.000000 -0.654100
|
||||
vn -0.756400 0.000000 0.654100
|
||||
vn 0.361000 -0.000700 0.932600
|
||||
vn 0.736100 -0.676800 0.000000
|
||||
vn 0.327100 -0.263100 -0.907600
|
||||
vn -0.578700 0.436200 -0.689100
|
||||
vn -0.578700 0.436200 0.689100
|
||||
vn 0.327100 -0.263100 0.907600
|
||||
vn -0.004900 -1.000000 0.000000
|
||||
vn 0.729700 -0.683800 0.000000
|
||||
vn 0.324500 -0.256300 0.910500
|
||||
vn -0.003300 -0.475400 0.879700
|
||||
vn 0.324500 -0.256300 -0.910500
|
||||
vn -0.003300 -0.475400 -0.879700
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn 0.359600 0.000000 0.933100
|
||||
vn 0.359600 0.000000 -0.933100
|
||||
vn -1.000000 -0.001100 0.000000
|
||||
vn -0.361000 -0.000700 0.932600
|
||||
vn -0.361000 -0.000700 -0.932600
|
||||
vn -0.736100 -0.676800 0.000000
|
||||
vn -0.327100 -0.263100 0.907600
|
||||
vn -0.327100 -0.263100 -0.907600
|
||||
vn 0.000000 -1.000000 0.004800
|
||||
vn 0.000000 -0.657400 -0.753500
|
||||
vn 0.898300 -0.248500 -0.362400
|
||||
vn 0.863600 -0.504100 0.003400
|
||||
vn -0.898300 -0.248500 -0.362400
|
||||
vn -0.863600 -0.504100 0.003400
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 0.925200 0.000000 -0.379500
|
||||
vn -0.925200 0.000000 -0.379500
|
||||
vn 0.898300 0.248500 -0.362400
|
||||
vn 0.661600 -0.421500 0.620200
|
||||
vn -0.898300 0.248500 -0.362400
|
||||
vn 0.898300 0.248500 0.362300
|
||||
vn -0.898300 0.248500 0.362300
|
||||
vn 0.000000 -0.000900 1.000000
|
||||
vn 0.924700 -0.000600 0.380700
|
||||
vn -0.924700 -0.000600 0.380700
|
||||
vn 0.000000 -0.650300 0.759600
|
||||
vn 0.895600 -0.254600 0.364700
|
||||
vn -0.895600 -0.254600 0.364700
|
||||
vn 0.729700 -0.683700 0.000000
|
||||
vn 0.729700 0.683800 0.000000
|
||||
vn -0.729700 0.683800 0.000000
|
||||
vn -0.898300 -0.248400 0.362300
|
||||
vn -0.863600 -0.504100 -0.003500
|
||||
vn 0.898300 -0.248400 0.362300
|
||||
vn 0.863600 -0.504100 -0.003500
|
||||
vn -0.661500 -0.421500 0.620200
|
||||
vn 0.924600 -0.000600 -0.380700
|
||||
vn -0.661500 0.421500 0.620200
|
||||
vn 0.661500 0.421500 0.620200
|
||||
s 1
|
||||
f 1/1/1 2/2/2 3/3/3 4/4/4
|
||||
f 4/4/4 3/3/3 5/5/5 6/6/6
|
||||
f 6/6/6 5/5/5 7/7/7 8/8/8
|
||||
f 8/8/8 7/7/7 9/9/9 10/10/10
|
||||
f 1/1/1 10/11/10 9/12/9 2/2/2
|
||||
f 2/2/2 11/13/11 12/14/12 3/3/3
|
||||
f 3/3/3 12/14/12 13/15/13 5/5/5
|
||||
f 5/5/5 13/15/13 14/16/14 7/7/7
|
||||
f 7/7/7 14/16/14 15/17/15 9/9/9
|
||||
f 9/12/9 15/18/15 11/13/11 2/2/2
|
||||
f 11/13/11 16/19/16 17/20/17 12/14/12
|
||||
f 12/14/12 17/20/17 18/21/18 13/15/13
|
||||
f 13/15/13 18/21/18 19/22/19 14/16/14
|
||||
f 14/16/14 19/22/19 20/23/20 15/17/15
|
||||
f 15/18/15 20/24/20 16/19/16 11/13/11
|
||||
f 16/19/16 21/25/21 22/26/22 17/20/17
|
||||
f 17/20/17 22/26/22 23/27/23 18/21/18
|
||||
f 18/21/18 23/27/23 24/28/24 19/22/19
|
||||
f 19/22/19 24/28/24 25/29/25 20/23/20
|
||||
f 20/24/20 25/30/25 21/25/21 16/19/16
|
||||
f 21/25/21 26/31/26 27/32/27 22/26/22
|
||||
f 22/26/22 27/32/27 28/33/28 23/27/23
|
||||
f 23/27/23 28/33/28 29/34/29 24/28/24
|
||||
f 24/28/24 29/34/29 30/35/30 25/29/25
|
||||
f 25/30/25 30/36/30 26/31/26 21/25/21
|
||||
f 26/37/26 31/38/31 32/39/32 27/40/27
|
||||
f 27/40/27 32/39/32 33/41/33 28/42/28
|
||||
f 28/42/28 33/41/33 34/43/34 29/44/29
|
||||
f 29/44/29 34/43/34 35/45/35 30/46/30
|
||||
f 30/47/30 35/48/35 31/38/31 26/37/26
|
||||
f 31/38/31 36/49/36 37/50/37 32/39/32
|
||||
f 32/39/32 37/50/37 38/51/38 33/41/33
|
||||
f 33/41/33 38/51/38 39/52/39 34/43/34
|
||||
f 34/43/34 39/52/39 40/53/40 35/45/35
|
||||
f 35/48/35 40/54/40 36/49/36 31/38/31
|
||||
f 36/49/36 1/1/1 4/4/4 37/50/37
|
||||
f 37/50/37 4/4/4 6/6/6 38/51/38
|
||||
f 38/51/38 6/6/6 8/8/8 39/52/39
|
||||
f 39/52/39 8/8/8 10/10/10 40/53/40
|
||||
f 1/1/1 36/49/36 40/54/40 10/11/10
|
||||
f 41/55/41 42/56/42 43/57/43 44/58/44
|
||||
f 44/59/44 43/60/43 45/61/45 46/62/46
|
||||
f 46/62/46 45/61/45 47/63/47 48/64/48
|
||||
f 48/64/48 47/63/47 49/65/49 50/66/50
|
||||
f 41/55/41 50/66/50 49/65/49 42/56/42
|
||||
f 42/56/42 51/67/51 52/68/52 43/57/43
|
||||
f 43/60/43 52/69/52 53/70/53 45/61/45
|
||||
f 45/61/45 53/70/53 54/71/54 47/63/47
|
||||
f 47/63/47 54/71/54 55/72/55 49/65/49
|
||||
f 49/65/49 55/72/55 51/67/51 42/56/42
|
||||
f 51/67/51 56/73/56 57/74/57 52/68/52
|
||||
f 52/69/52 57/75/57 58/76/58 53/70/53
|
||||
f 53/70/53 58/76/58 59/77/59 54/71/54
|
||||
f 54/71/54 59/77/59 60/78/60 55/72/55
|
||||
f 55/72/55 60/78/60 56/73/56 51/67/51
|
||||
f 56/73/56 61/79/21 62/80/61 57/74/57
|
||||
f 57/75/57 62/81/61 63/82/62 58/76/58
|
||||
f 58/76/58 63/82/62 64/83/63 59/77/59
|
||||
f 59/77/59 64/83/63 65/84/64 60/78/60
|
||||
f 60/78/60 65/84/64 61/79/21 56/73/56
|
||||
f 61/85/21 66/86/65 67/87/66 62/88/61
|
||||
f 62/35/61 67/89/66 68/90/67 63/91/62
|
||||
f 63/91/62 68/90/67 69/92/68 64/93/63
|
||||
f 64/93/63 69/92/68 70/94/69 65/95/64
|
||||
f 65/95/64 70/94/69 66/86/65 61/85/21
|
||||
f 66/86/65 71/96/70 72/97/71 67/87/66
|
||||
f 67/89/66 72/98/71 73/99/72 68/90/67
|
||||
f 68/90/67 73/99/72 74/100/73 69/92/68
|
||||
f 69/92/68 74/100/73 75/101/74 70/94/69
|
||||
f 70/94/69 75/101/74 71/96/70 66/86/65
|
||||
f 71/96/70 76/102/75 77/103/76 72/97/71
|
||||
f 72/98/71 77/104/76 78/105/77 73/99/72
|
||||
f 73/99/72 78/105/77 79/106/78 74/100/73
|
||||
f 74/100/73 79/106/78 80/107/79 75/101/74
|
||||
f 75/101/74 80/107/79 76/102/75 71/96/70
|
||||
f 76/102/75 41/55/41 44/58/44 77/103/76
|
||||
f 77/104/76 44/59/44 46/62/46 78/105/77
|
||||
f 78/105/77 46/62/46 48/64/48 79/106/78
|
||||
f 79/106/78 48/64/48 50/66/50 80/107/79
|
||||
f 41/55/41 76/102/75 80/107/79 50/66/50
|
||||
f 81/108/80 82/109/81 83/110/82 84/111/83
|
||||
f 84/9/83 83/17/82 85/112/78 86/113/48
|
||||
f 86/113/48 85/112/78 87/114/77 88/115/46
|
||||
f 88/115/46 87/114/77 89/116/84 90/117/85
|
||||
f 81/108/80 90/117/85 89/116/84 82/109/81
|
||||
f 82/109/81 91/118/86 92/119/87 83/110/82
|
||||
f 83/17/82 92/23/87 93/120/73 85/112/78
|
||||
f 85/112/78 93/120/73 94/121/72 87/114/77
|
||||
f 87/114/77 94/121/72 95/122/88 89/116/84
|
||||
f 89/116/84 95/122/88 91/118/86 82/109/81
|
||||
f 91/118/86 96/123/65 97/124/69 92/119/87
|
||||
f 92/23/87 97/29/69 98/125/68 93/120/73
|
||||
f 93/120/73 98/125/68 99/126/67 94/121/72
|
||||
f 94/121/72 99/126/67 100/127/66 95/122/88
|
||||
f 95/122/88 100/127/66 96/123/65 91/118/86
|
||||
f 96/123/65 101/85/21 102/88/64 97/124/69
|
||||
f 97/29/69 102/35/64 103/91/63 98/125/68
|
||||
f 98/125/68 103/91/63 104/93/62 99/126/67
|
||||
f 99/126/67 104/93/62 105/95/61 100/127/66
|
||||
f 100/127/66 105/95/61 101/85/21 96/123/65
|
||||
f 101/128/21 106/129/56 107/130/60 102/131/64
|
||||
f 102/46/64 107/45/60 108/132/59 103/133/63
|
||||
f 103/133/63 108/132/59 109/134/58 104/135/62
|
||||
f 104/135/62 109/134/58 110/136/57 105/137/61
|
||||
f 105/137/61 110/136/57 106/129/56 101/128/21
|
||||
f 106/129/56 111/138/89 112/139/90 107/130/60
|
||||
f 107/45/60 112/53/90 113/140/54 108/132/59
|
||||
f 108/132/59 113/140/54 114/141/53 109/134/58
|
||||
f 109/134/58 114/141/53 115/142/91 110/136/57
|
||||
f 110/136/57 115/142/91 111/138/89 106/129/56
|
||||
f 111/138/89 116/143/92 117/144/93 112/139/90
|
||||
f 112/53/90 117/10/93 118/145/47 113/140/54
|
||||
f 113/140/54 118/145/47 119/146/45 114/141/53
|
||||
f 114/141/53 119/146/45 120/147/94 115/142/91
|
||||
f 115/142/91 120/147/94 116/143/92 111/138/89
|
||||
f 116/143/92 81/108/80 84/111/83 117/144/93
|
||||
f 117/10/93 84/9/83 86/113/48 118/145/47
|
||||
f 118/145/47 86/113/48 88/115/46 119/146/45
|
||||
f 119/146/45 88/115/46 90/117/85 120/147/94
|
||||
f 81/108/80 116/143/92 120/147/94 90/117/85
|
||||
f 121/148/95 122/149/96 123/150/97 124/151/98
|
||||
f 124/151/98 123/150/97 125/152/39 126/153/8
|
||||
f 126/153/8 125/152/39 127/154/38 128/155/6
|
||||
f 128/155/6 127/154/38 129/156/99 130/157/100
|
||||
f 121/148/95 130/103/100 129/58/99 122/149/96
|
||||
f 122/149/96 131/158/101 132/159/102 123/150/97
|
||||
f 123/150/97 132/159/102 133/160/34 125/152/39
|
||||
f 125/152/39 133/160/34 134/161/33 127/154/38
|
||||
f 127/154/38 134/161/33 135/162/103 129/156/99
|
||||
f 129/58/99 135/57/103 131/158/101 122/149/96
|
||||
f 131/158/101 136/163/26 137/164/104 132/159/102
|
||||
f 132/159/102 137/164/104 138/165/105 133/160/34
|
||||
f 133/160/34 138/165/105 139/166/28 134/161/33
|
||||
f 134/161/33 139/166/28 140/167/106 135/162/103
|
||||
f 135/57/103 140/68/106 136/163/26 131/158/101
|
||||
f 136/163/26 141/168/21 142/169/25 137/164/104
|
||||
f 137/164/104 142/169/25 143/170/24 138/165/105
|
||||
f 138/165/105 143/170/24 144/171/23 139/166/28
|
||||
f 139/166/28 144/171/23 145/172/22 140/167/106
|
||||
f 140/68/106 145/74/22 141/168/21 136/163/26
|
||||
f 141/168/21 146/173/16 147/174/107 142/169/25
|
||||
f 142/169/25 147/174/107 148/175/19 143/170/24
|
||||
f 143/170/24 148/175/19 149/176/18 144/171/23
|
||||
f 144/171/23 149/176/18 150/177/108 145/172/22
|
||||
f 145/74/22 150/80/108 146/173/16 141/168/21
|
||||
f 146/178/16 151/179/109 152/180/110 147/181/107
|
||||
f 147/181/107 152/180/110 153/182/14 148/183/19
|
||||
f 148/183/19 153/182/14 154/184/13 149/185/18
|
||||
f 149/185/18 154/184/13 155/186/111 150/187/108
|
||||
f 150/88/108 155/87/111 151/179/109 146/178/16
|
||||
f 151/179/109 156/188/112 157/189/113 152/180/110
|
||||
f 152/180/110 157/189/113 158/190/7 153/182/14
|
||||
f 153/182/14 158/190/7 159/191/5 154/184/13
|
||||
f 154/184/13 159/191/5 160/192/114 155/186/111
|
||||
f 155/87/111 160/97/114 156/188/112 151/179/109
|
||||
f 156/188/112 121/148/95 124/151/98 157/189/113
|
||||
f 157/189/113 124/151/98 126/153/8 158/190/7
|
||||
f 158/190/7 126/153/8 128/155/6 159/191/5
|
||||
f 159/191/5 128/155/6 130/157/100 160/192/114
|
||||
f 121/148/95 156/188/112 160/97/114 130/103/100
|
||||
f 161/193/80 162/194/115 163/60/82 164/59/83
|
||||
f 164/195/83 163/196/82 165/197/78 166/198/48
|
||||
f 166/198/48 165/197/78 167/199/77 168/200/46
|
||||
f 168/200/46 167/199/77 169/201/84 170/202/85
|
||||
f 161/193/80 170/202/85 169/201/84 162/194/115
|
||||
f 162/194/115 171/203/86 172/69/87 163/60/82
|
||||
f 163/196/82 172/204/87 173/205/73 165/197/78
|
||||
f 165/197/78 173/205/73 174/206/72 167/199/77
|
||||
f 167/199/77 174/206/72 175/207/88 169/201/84
|
||||
f 169/201/84 175/207/88 171/203/86 162/194/115
|
||||
f 171/203/86 176/208/116 177/75/69 172/69/87
|
||||
f 172/204/87 177/209/69 178/210/68 173/205/73
|
||||
f 173/205/73 178/210/68 179/211/67 174/206/72
|
||||
f 174/206/72 179/211/67 180/212/66 175/207/88
|
||||
f 175/207/88 180/212/66 176/208/116 171/203/86
|
||||
f 176/208/116 181/213/21 182/81/64 177/75/69
|
||||
f 177/209/69 182/214/64 183/215/63 178/210/68
|
||||
f 178/210/68 183/215/63 184/216/62 179/211/67
|
||||
f 179/211/67 184/216/62 185/217/61 180/212/66
|
||||
f 180/212/66 185/217/61 181/213/21 176/208/116
|
||||
f 181/34/21 186/218/117 187/89/60 182/35/64
|
||||
f 182/36/64 187/219/60 188/220/59 183/31/63
|
||||
f 183/31/63 188/220/59 189/221/58 184/32/62
|
||||
f 184/32/62 189/221/58 190/222/57 185/33/61
|
||||
f 185/33/61 190/222/57 186/218/117 181/34/21
|
||||
f 186/218/117 191/223/89 192/98/90 187/89/60
|
||||
f 187/219/60 192/224/90 193/225/54 188/220/59
|
||||
f 188/220/59 193/225/54 194/226/53 189/221/58
|
||||
f 189/221/58 194/226/53 195/227/91 190/222/57
|
||||
f 190/222/57 195/227/91 191/223/89 186/218/117
|
||||
f 191/223/89 196/228/92 197/104/93 192/98/90
|
||||
f 192/224/90 197/229/93 198/230/47 193/225/54
|
||||
f 193/225/54 198/230/47 199/231/45 194/226/53
|
||||
f 194/226/53 199/231/45 200/232/94 195/227/91
|
||||
f 195/227/91 200/232/94 196/228/92 191/223/89
|
||||
f 196/228/92 161/193/80 164/59/83 197/104/93
|
||||
f 197/229/93 164/195/83 166/198/48 198/230/47
|
||||
f 198/230/47 166/198/48 168/200/46 199/231/45
|
||||
f 199/231/45 168/200/46 170/202/85 200/232/94
|
||||
f 161/193/80 196/228/92 200/232/94 170/202/85
|
||||
f 201/233/1 202/234/2 203/235/118 204/236/119
|
||||
f 204/111/119 203/110/118 205/237/5 206/238/6
|
||||
f 206/238/6 205/237/5 207/239/7 208/240/8
|
||||
f 208/240/8 207/239/7 209/241/120 210/242/121
|
||||
f 201/233/1 210/242/121 209/241/120 202/234/2
|
||||
f 202/234/2 211/243/11 212/244/12 203/235/118
|
||||
f 203/110/118 212/119/12 213/245/13 205/237/5
|
||||
f 205/237/5 213/245/13 214/246/14 207/239/7
|
||||
f 207/239/7 214/246/14 215/247/15 209/241/120
|
||||
f 209/241/120 215/247/15 211/243/11 202/234/2
|
||||
f 211/243/11 216/248/16 217/249/108 212/244/12
|
||||
f 212/119/12 217/124/108 218/250/18 213/245/13
|
||||
f 213/245/13 218/250/18 219/251/19 214/246/14
|
||||
f 214/246/14 219/251/19 220/252/107 215/247/15
|
||||
f 215/247/15 220/252/107 216/248/16 211/243/11
|
||||
f 216/248/16 221/185/21 222/187/22 217/249/108
|
||||
f 217/124/108 222/88/22 223/178/23 218/250/18
|
||||
f 218/250/18 223/178/23 224/181/24 219/251/19
|
||||
f 219/251/19 224/181/24 225/183/25 220/252/107
|
||||
f 220/252/107 225/183/25 221/185/21 216/248/16
|
||||
f 221/253/21 226/254/26 227/255/106 222/256/22
|
||||
f 222/131/22 227/130/106 228/257/122 223/258/23
|
||||
f 223/258/23 228/257/122 229/259/29 224/260/24
|
||||
f 224/260/24 229/259/29 230/261/104 225/262/25
|
||||
f 225/262/25 230/261/104 226/254/26 221/253/21
|
||||
f 226/254/26 231/263/31 232/264/32 227/255/106
|
||||
f 227/130/106 232/139/32 233/265/33 228/257/122
|
||||
f 228/257/122 233/265/33 234/266/34 229/259/29
|
||||
f 229/259/29 234/266/34 235/267/123 230/261/104
|
||||
f 230/261/104 235/267/123 231/263/31 226/254/26
|
||||
f 231/263/31 236/268/36 237/269/37 232/264/32
|
||||
f 232/139/32 237/144/37 238/270/124 233/265/33
|
||||
f 233/265/33 238/270/124 239/271/125 234/266/34
|
||||
f 234/266/34 239/271/125 240/272/40 235/267/123
|
||||
f 235/267/123 240/272/40 236/268/36 231/263/31
|
||||
f 236/268/36 201/233/1 204/236/119 237/269/37
|
||||
f 237/144/37 204/111/119 206/238/6 238/270/124
|
||||
f 238/270/124 206/238/6 208/240/8 239/271/125
|
||||
f 239/271/125 208/240/8 210/242/121 240/272/40
|
||||
f 201/233/1 236/268/36 240/272/40 210/242/121
|
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 344 B |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 386 B |
21
computer/.luacheckrc
Normal file
@ -0,0 +1,21 @@
|
||||
unused_args = false
|
||||
allow_defined_top = true
|
||||
max_comment_line_length = 999
|
||||
|
||||
read_globals = {
|
||||
"DIR_DELIM",
|
||||
"minetest", "core",
|
||||
"unpack",
|
||||
"dump",
|
||||
table = { fields = { "copy", "getn" } },
|
||||
"vector", "nodeupdate",
|
||||
"VoxelManip", "VoxelArea",
|
||||
"PseudoRandom", "ItemStack",
|
||||
"default",
|
||||
"unifieddyes",
|
||||
"screwdriver",
|
||||
}
|
||||
|
||||
globals = {
|
||||
}
|
||||
|
@ -33,10 +33,6 @@ computer:admiral128
|
||||
|
||||
There's also a `computer:computer' alias to `computer:babytower'.
|
||||
|
||||
License:
|
||||
Sourcecode: WTFPL (see below)
|
||||
Graphics: WTFPL (see below)
|
||||
|
||||
Thanks to all the people in the forums and the #minetest IRC channel for
|
||||
their support and suggestions; in no particular order:
|
||||
OldCoder, Josh, tonyka, VanessaE, davidpace, Jordach, and all the other
|
||||
@ -45,17 +41,3 @@ Thanks to all the people in the forums and the #minetest IRC channel for
|
||||
|
||||
See also:
|
||||
http://minetest.net/
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
Version 2, December 2004
|
||||
|
||||
Copyright (C) 2012 Diego Martínez <lkaezadl3@gmail.com>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim or modified
|
||||
copies of this license document, and changing it is allowed as long
|
||||
as the name is changed.
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||
|
@ -1,6 +1,8 @@
|
||||
local S = minetest.get_translator("computer")
|
||||
|
||||
-- Amiga 500 lookalike
|
||||
computer.register("computer:shefriendSOO", {
|
||||
description = "SheFriendSOO",
|
||||
description = S("SheFriendSOO"),
|
||||
tiles_off = { front=true },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
-- X Y Z W H L
|
||||
@ -14,7 +16,7 @@ computer.register("computer:shefriendSOO", {
|
||||
minetest.register_node("computer:vanio", {
|
||||
drawtype = "mesh",
|
||||
mesh = "computer_laptop.obj",
|
||||
description = "Pony Vanio",
|
||||
description = S("Pony Vanio"),
|
||||
inventory_image = "computer_laptop_inv.png",
|
||||
tiles = {"computer_laptop.png"},
|
||||
paramtype = "light",
|
||||
@ -55,7 +57,7 @@ minetest.register_node("computer:vanio_off", {
|
||||
|
||||
-- Sony PlayStation lookalike
|
||||
computer.register("computer:slaystation", {
|
||||
description = "Pony SlayStation",
|
||||
description = S("Pony SlayStation"),
|
||||
inventory_image = "computer_ps1_inv.png",
|
||||
tiles_off = { top=true },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
@ -72,7 +74,7 @@ computer.register("computer:slaystation", {
|
||||
|
||||
-- Sony PlayStation 2 lookalike
|
||||
computer.register("computer:slaystation2", {
|
||||
description = "Pony SlayStation 2",
|
||||
description = S("Pony SlayStation 2"),
|
||||
inventory_image = "computer_ps2_inv.png",
|
||||
tiles_off = { front=true },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
@ -90,7 +92,7 @@ computer.register("computer:slaystation2", {
|
||||
|
||||
-- Sinclair ZX Spectrum lookalike
|
||||
computer.register("computer:specter", {
|
||||
description = "SX Specter",
|
||||
description = S("SX Specter"),
|
||||
inventory_image = "computer_specter_inv.png",
|
||||
tiles_off = { },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
@ -102,7 +104,7 @@ computer.register("computer:specter", {
|
||||
|
||||
-- Nintendo Wii lookalike
|
||||
computer.register("computer:wee", {
|
||||
description = "Nientiendo Wee",
|
||||
description = S("Nientiendo Wee"),
|
||||
inventory_image = "computer_wii_inv.png",
|
||||
tiles_off = { front=true },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
@ -114,7 +116,7 @@ computer.register("computer:wee", {
|
||||
|
||||
-- Apple iPad lookalike
|
||||
minetest.register_node("computer:piepad", {
|
||||
description = "Snapple Piepad",
|
||||
description = S("Snapple Piepad"),
|
||||
drawtype = "signlike",
|
||||
tiles = {"computer_piepad_inv.png"},
|
||||
inventory_image = "computer_piepad_inv.png",
|
||||
@ -130,7 +132,7 @@ minetest.register_node("computer:piepad", {
|
||||
|
||||
-- Commodore 64 lookalike
|
||||
computer.register("computer:admiral64", {
|
||||
description = "Admiral64",
|
||||
description = S("Admiral64"),
|
||||
inventory_image = "computer_ad64_inv.png",
|
||||
tiles_off = { },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
@ -141,7 +143,7 @@ computer.register("computer:admiral64", {
|
||||
|
||||
-- Commodore 128 lookalike
|
||||
computer.register("computer:admiral128", {
|
||||
description = "Admiral128",
|
||||
description = S("Admiral128"),
|
||||
inventory_image = "computer_ad128_inv.png",
|
||||
tiles_off = { },
|
||||
node_box = computer.pixelnodebox(32, {
|
||||
@ -150,6 +152,19 @@ computer.register("computer:admiral128", {
|
||||
})
|
||||
})
|
||||
|
||||
-- XBox lookalike
|
||||
computer.register("computer:hueg_box", {
|
||||
description = S("HUEG Box"),
|
||||
tiles_off = { },
|
||||
node_box = computer.pixelnodebox(16, {
|
||||
-- X Y Z W H L
|
||||
{ 0, 0, 7, 16, 6, 9 }, -- Console
|
||||
{ 2, 0, 1, 11, 3, 6 }, -- Controller
|
||||
{ 2, 0, 0, 2, 3, 1 },
|
||||
{ 11, 0, 0, 2, 3, 1 },
|
||||
})
|
||||
})
|
||||
|
||||
-- Generic Flat Screen LCD (16x9) with keyboard
|
||||
local mo_sbox = {
|
||||
type = "fixed",
|
||||
@ -157,7 +172,7 @@ local mo_sbox = {
|
||||
}
|
||||
|
||||
minetest.register_node("computer:monitor", {
|
||||
description = "Monitor and keyboard",
|
||||
description = S("Monitor and keyboard"),
|
||||
inventory_image = "computer_monitor_inv.png",
|
||||
drawtype = "mesh",
|
||||
mesh = "computer_monitor.obj",
|
||||
@ -175,7 +190,6 @@ minetest.register_node("computer:monitor", {
|
||||
})
|
||||
|
||||
minetest.register_node("computer:monitor_on", {
|
||||
description = "Monitor and keyboard",
|
||||
drawtype = "mesh",
|
||||
mesh = "computer_monitor.obj",
|
||||
tiles = {"monitor_display.png^[transformFX", "monitor_plastic.png", "computer_black.png", "monitor_plastic.png"},
|
||||
@ -200,10 +214,19 @@ minetest.register_alias("computer:monitor_desktop", "computer:monitor")
|
||||
|
||||
--WIFI Router (linksys look-a-like)
|
||||
minetest.register_node("computer:router", {
|
||||
description = "WIFI Router",
|
||||
description = S("WIFI Router"),
|
||||
inventory_image = "computer_router_inv.png",
|
||||
tiles = {"computer_router_t.png","computer_router_bt.png","computer_router_l.png","computer_router_r.png","computer_router_b.png",
|
||||
{name="computer_router_f_animated.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0}},}, --"computer_router_f.png"},
|
||||
tiles = {
|
||||
"computer_router_t.png",
|
||||
"computer_router_bt.png",
|
||||
"computer_router_l.png",
|
||||
"computer_router_r.png",
|
||||
"computer_router_b.png",
|
||||
{
|
||||
name = "computer_router_f_animated.png",
|
||||
animation = {type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0}
|
||||
},
|
||||
}, --"computer_router_f.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = false,
|
||||
@ -228,7 +251,7 @@ local pct_cbox = {
|
||||
|
||||
--Modern PC Tower
|
||||
minetest.register_node("computer:tower", {
|
||||
description = "Computer Tower",
|
||||
description = S("Computer Tower"),
|
||||
inventory_image = "computer_tower_inv.png",
|
||||
drawtype = "mesh",
|
||||
mesh = "computer_tower.obj",
|
||||
@ -243,37 +266,10 @@ minetest.register_node("computer:tower", {
|
||||
|
||||
minetest.register_alias("computer:tower_on", "computer:tower")
|
||||
|
||||
-- Printer/scaner combo
|
||||
minetest.register_node("computer:printer", {
|
||||
description = "Printer Scaner Combo",
|
||||
inventory_image = "computer_printer_inv.png",
|
||||
tiles = {"computer_printer_t.png","computer_printer_bt.png","computer_printer_l.png",
|
||||
"computer_printer_r.png","computer_printer_b.png","computer_printer_f.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
groups = {snappy=3},
|
||||
sound = default.node_sound_wood_defaults(),
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.4375, -0.3125, -0.125, 0.4375, -0.0625, 0.375},
|
||||
{-0.4375, -0.5, -0.125, 0.4375, -0.4375, 0.375},
|
||||
{-0.4375, -0.5, -0.125, -0.25, -0.0625, 0.375},
|
||||
{0.25, -0.5, -0.125, 0.4375, -0.0625, 0.375},
|
||||
{-0.4375, -0.5, -0.0625, 0.4375, -0.0625, 0.375},
|
||||
{-0.375, -0.4375, 0.25, 0.375, -0.0625, 0.4375},
|
||||
{-0.25, -0.25, 0.4375, 0.25, 0.0625, 0.5},
|
||||
{-0.25, -0.481132, -0.3125, 0.25, -0.4375, 0}
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
--Rack Server
|
||||
minetest.register_node("computer:server", {
|
||||
drawtype = "nodebox",
|
||||
description = "Rack Server",
|
||||
description = S("Rack Server"),
|
||||
tiles = {
|
||||
'computer_server_t.png',
|
||||
'computer_server_bt.png',
|
||||
@ -303,7 +299,8 @@ minetest.register_node("computer:server", {
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local pos = pointed_thing.above
|
||||
if minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "air" then
|
||||
minetest.chat_send_player( placer:get_player_name(), "Not enough vertical space to place a server!" )
|
||||
minetest.chat_send_player( placer:get_player_name(),
|
||||
S("Not enough vertical space to place a server!" ))
|
||||
return itemstack
|
||||
end
|
||||
return minetest.item_place(itemstack, placer, pointed_thing)
|
||||
@ -312,7 +309,6 @@ minetest.register_node("computer:server", {
|
||||
|
||||
minetest.register_node("computer:server_on", {
|
||||
drawtype = "nodebox",
|
||||
description = "Rack Server",
|
||||
tiles = {
|
||||
'computer_server_t.png',
|
||||
'computer_server_bt.png',
|
||||
|
@ -1,3 +0,0 @@
|
||||
default
|
||||
intllib?
|
||||
|
@ -1,5 +1,4 @@
|
||||
computer = {}
|
||||
screwdriver = screwdriver or {}
|
||||
|
||||
computer.register = function (name, def)
|
||||
if (name:sub(1, 1) == ":") then name = name:sub(2) end
|
||||
@ -94,6 +93,8 @@ end
|
||||
|
||||
local MODPATH = minetest.get_modpath("computer")
|
||||
dofile(MODPATH.."/computers.lua")
|
||||
dofile(MODPATH.."/miscitems.lua")
|
||||
dofile(MODPATH.."/printers.lua")
|
||||
dofile(MODPATH.."/recipes.lua")
|
||||
dofile(MODPATH.."/tetris.lua")
|
||||
|
||||
minetest.log("action", "[computer] loaded.")
|
||||
|
35
computer/locale/computer.de.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=Computerturm
|
||||
HUEG Box=
|
||||
Monitor and keyboard=Bildschirm und Tastatur
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=Es gibt nicht genug vertikalen Platz, um einen Server zu platzieren!
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=Serverschrank
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=WiFi-Router
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=Multifunktionsdrucker
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=
|
||||
New Game=Neues Spiel
|
||||
Next...=Nächster…
|
||||
No room for place the Arcade!=Kein Platz, um den Arkadeautomaten zu platzieren!
|
||||
R=
|
||||
Score: =Punktzahl:
|
||||
Tetris Arcade=Tetris-Arkadeautomat
|
35
computer/locale/computer.es.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=Torre de ordenador
|
||||
HUEG Box=
|
||||
Monitor and keyboard=Monitor y teclado
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=¡No hay suficiente espacio para colocar un servidor!
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=Servidor en rack
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=Enrutador WIFI
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=Impresora y escáner combinados
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=
|
||||
New Game=Juego Nuevo
|
||||
Next...=
|
||||
No room for place the Arcade!=¡No hay lugar para colocar el arcade!
|
||||
R=
|
||||
Score: =
|
||||
Tetris Arcade=Arcade Tetris
|
35
computer/locale/computer.fr.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=Ordinateur (tour)
|
||||
HUEG Box=
|
||||
Monitor and keyboard=Écran et clavier
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=Pas assez d'espace vertical pour placer un serveur !
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=Serveur en rack
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=Routeur WiFi
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=Imprimante multi-fonction
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=G
|
||||
New Game=Nouveau Jeu
|
||||
Next...=Suivant…
|
||||
No room for place the Arcade!=Pas assez de place pour placer la borne d'arcade !
|
||||
R=D
|
||||
Score: =Score :
|
||||
Tetris Arcade=Borne Tetris
|
35
computer/locale/computer.it.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=
|
||||
HUEG Box=
|
||||
Monitor and keyboard=
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=Non c'è abbastanza spazio verticale per mettere un frigorifero!
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=
|
||||
New Game=
|
||||
Next...=
|
||||
No room for place the Arcade!=
|
||||
R=
|
||||
Score: =
|
||||
Tetris Arcade=
|
35
computer/locale/computer.ms.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=Sistem Unit
|
||||
HUEG Box=
|
||||
Monitor and keyboard=Monitor dan Papan Kekunci
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=Tidak cukup ruang menegak untuk letak rak pelayan!
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=Rak Pelayan
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=Penghala WIFI
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=Pencetak Semua Dalam Satu
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=
|
||||
New Game=Main Baru
|
||||
Next...=Seterusnya...
|
||||
No room for place the Arcade!=Tiada ruang untuk letak Arked!
|
||||
R=
|
||||
Score: =Markah:
|
||||
Tetris Arcade=Arked Tetris
|
35
computer/locale/computer.pt.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=Gabinete do Computador
|
||||
HUEG Box=
|
||||
Monitor and keyboard=Tela e teclado
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=Sem espaço vertical suficiente para colocar um servidor.
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=Rack para Servidor
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=Roteador WIFI
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=Tudo em Um Impressora-Scaner
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=
|
||||
New Game=Novo Jogo
|
||||
Next...=
|
||||
No room for place the Arcade!=Sem espaço para colocar o Fliperama!
|
||||
R=
|
||||
Score: =
|
||||
Tetris Arcade=Fliperama Tetris
|
35
computer/locale/computer.pt_BR.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=Gabinete do Computador
|
||||
HUEG Box=
|
||||
Monitor and keyboard=Tela e teclado
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=Sem espaço vertical suficiente para colocar um servidor.
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=Rack para Servidor
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=Roteador WIFI
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=Tudo em Um Impressora-Scaner
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=
|
||||
New Game=Novo Jogo
|
||||
Next...=
|
||||
No room for place the Arcade!=Sem espaço para colocar o Fliperama!
|
||||
R=
|
||||
Score: =
|
||||
Tetris Arcade=Fliperama Tetris
|
35
computer/locale/computer.ru.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=Системный блок
|
||||
HUEG Box=
|
||||
Monitor and keyboard=Монитор и клавиатура
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=Недостаточно вертикального пространства для размещения сервера!
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=Стоечный сервер
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=WIFI-роутер
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=МФУ
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=
|
||||
New Game=Новая игра
|
||||
Next...=Далее...
|
||||
No room for place the Arcade!=Недостаточно места для размещения игрового автомата!
|
||||
R=
|
||||
Score: =Счёт:
|
||||
Tetris Arcade=Игровой автомат Тетрис
|
35
computer/locale/computer.zh_CN.tr
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=计算机箱
|
||||
HUEG Box=
|
||||
Monitor and keyboard=显示器和键盘
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=高度不足,无法放置服务器!
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=机架式服务器
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=无线路由器
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=打印扫描一体机
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=
|
||||
New Game=新游戏
|
||||
Next...=下一个。。。
|
||||
No room for place the Arcade!=没有地方放游戏机!
|
||||
R=
|
||||
Score: =分数:
|
||||
Tetris Arcade=俄罗斯方块游戏机
|
@ -1,6 +0,0 @@
|
||||
|
||||
# Language: Español
|
||||
# Author: Diego Martínez <lkaezadl3@gmail.com>
|
||||
|
||||
Plastic sheet = Placa de Plastico
|
||||
Unprocessed Plastic base = Base de Plastico No Procesada
|
35
computer/locale/template.txt
Normal file
@ -0,0 +1,35 @@
|
||||
# textdomain: computer
|
||||
|
||||
|
||||
### computers.lua ###
|
||||
|
||||
Admiral128=
|
||||
Admiral64=
|
||||
Computer Tower=
|
||||
HUEG Box=
|
||||
Monitor and keyboard=
|
||||
Nientiendo Wee=
|
||||
Not enough vertical space to place a server!=
|
||||
Pony SlayStation=
|
||||
Pony SlayStation 2=
|
||||
Pony Vanio=
|
||||
Rack Server=
|
||||
SX Specter=
|
||||
SheFriendSOO=
|
||||
Snapple Piepad=
|
||||
WIFI Router=
|
||||
|
||||
### printers.lua ###
|
||||
|
||||
3D Printer ("bedflinger")=
|
||||
Printer-Scanner Combo=
|
||||
|
||||
### tetris.lua ###
|
||||
|
||||
L=
|
||||
New Game=
|
||||
Next...=
|
||||
No room for place the Arcade!=
|
||||
R=
|
||||
Score: =
|
||||
Tetris Arcade=
|
@ -1,71 +0,0 @@
|
||||
|
||||
-- Copyright (C) 2012-2013 Diego Martínez <kaeza@users.sf.net>
|
||||
-- License is WTFPL (see README.txt).
|
||||
|
||||
-- This file defines some items in order to not have to depend on other mods.
|
||||
|
||||
-- Boilerplate to support localized strings if intllib mod is installed.
|
||||
local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end
|
||||
|
||||
if (not minetest.get_modpath("homedecor")) then
|
||||
|
||||
minetest.register_craftitem(":homedecor:plastic_sheeting", {
|
||||
description = S("Plastic sheet"),
|
||||
inventory_image = "homedecor_plastic_sheeting.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem(":homedecor:plastic_base", {
|
||||
description = S("Unprocessed Plastic base"),
|
||||
wield_image = "homedecor_plastic_base.png",
|
||||
inventory_image = "homedecor_plastic_base_inv.png",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'homedecor:plastic_base 6',
|
||||
recipe = { "default:junglegrass",
|
||||
"default:junglegrass",
|
||||
"default:junglegrass"
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'homedecor:plastic_base 3',
|
||||
recipe = { "default:dry_shrub",
|
||||
"default:dry_shrub",
|
||||
"default:dry_shrub"
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'homedecor:plastic_base 4',
|
||||
recipe = { "default:leaves",
|
||||
"default:leaves",
|
||||
"default:leaves",
|
||||
"default:leaves",
|
||||
"default:leaves",
|
||||
"default:leaves"
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "homedecor:plastic_sheeting",
|
||||
recipe = "homedecor:plastic_base",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = 'fuel',
|
||||
recipe = 'homedecor:plastic_base',
|
||||
burntime = 30,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = 'fuel',
|
||||
recipe = 'homedecor:plastic_sheeting',
|
||||
burntime = 30,
|
||||
})
|
||||
|
||||
end -- not homedecor
|
3
computer/mod.conf
Normal file
@ -0,0 +1,3 @@
|
||||
name = computer
|
||||
depends = default, basic_materials, unifieddyes
|
||||
optional_depends = screwdriver
|
9835
computer/models/computer_3dprinter_bedflinger.obj
Normal file
61
computer/printers.lua
Normal file
@ -0,0 +1,61 @@
|
||||
-- Printers of some kind or another
|
||||
|
||||
local S = minetest.get_translator("computer")
|
||||
|
||||
minetest.register_node("computer:printer", {
|
||||
description = S("Printer-Scanner Combo"),
|
||||
inventory_image = "computer_printer_inv.png",
|
||||
tiles = {"computer_printer_t.png","computer_printer_bt.png","computer_printer_l.png",
|
||||
"computer_printer_r.png","computer_printer_b.png","computer_printer_f.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
groups = {snappy=3},
|
||||
sound = default.node_sound_wood_defaults(),
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.4375, -0.3125, -0.125, 0.4375, -0.0625, 0.375},
|
||||
{-0.4375, -0.5, -0.125, 0.4375, -0.4375, 0.375},
|
||||
{-0.4375, -0.5, -0.125, -0.25, -0.0625, 0.375},
|
||||
{0.25, -0.5, -0.125, 0.4375, -0.0625, 0.375},
|
||||
{-0.4375, -0.5, -0.0625, 0.4375, -0.0625, 0.375},
|
||||
{-0.375, -0.4375, 0.25, 0.375, -0.0625, 0.4375},
|
||||
{-0.25, -0.25, 0.4375, 0.25, 0.0625, 0.5},
|
||||
{-0.25, -0.481132, -0.3125, 0.25, -0.4375, 0}
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- "bedflinger" style 3D Printer (Prusa i3 or equivalent)
|
||||
|
||||
local cbox = {
|
||||
type = "fixed",
|
||||
fixed = {-0.25, -0.25, -0.5, 0.3, 0.3, 0.25 }
|
||||
}
|
||||
|
||||
minetest.register_node("computer:3dprinter_bedflinger", {
|
||||
description = S('3D Printer ("bedflinger")'),
|
||||
inventory_image = "computer_3dprinter_bedflinger_inv.png",
|
||||
tiles = {
|
||||
{ name = "computer_3dprinter_bedflinger.png", color = 0xffffffff },
|
||||
"computer_3dprinter_filament.png"
|
||||
},
|
||||
paramtype = "light",
|
||||
walkable = true,
|
||||
groups = {snappy=3, ud_param2_colorable = 1},
|
||||
sound = default.node_sound_wood_defaults(),
|
||||
drawtype = "mesh",
|
||||
mesh = "computer_3dprinter_bedflinger.obj",
|
||||
paramtype2 = "colorwallmounted",
|
||||
palette = "unifieddyes_palette_colorwallmounted.png",
|
||||
selection_box = cbox,
|
||||
collision_box = cbox,
|
||||
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
||||
unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
|
||||
end,
|
||||
on_dig = unifieddyes.on_dig,
|
||||
on_rotate = unifieddyes.fix_after_screwdriver_nsew,
|
||||
})
|
||||
|
@ -1,54 +1,52 @@
|
||||
|
||||
-- Copyright (C) 2012-2013 Diego Martínez <kaeza@users.sf.net>
|
||||
-- License is WTFPL (see README.txt).
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:shefriendSOO",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "group:wood", "homedecor:plastic_sheeting" }
|
||||
{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
|
||||
{ "basic_materials:plastic_sheet", "default:glass", "basic_materials:plastic_sheet" },
|
||||
{ "basic_materials:plastic_sheet", "group:wood", "basic_materials:plastic_sheet" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:slaystation",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "group:wood", "homedecor:plastic_sheeting" }
|
||||
{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
|
||||
{ "basic_materials:plastic_sheet", "group:wood", "basic_materials:plastic_sheet" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:vanio",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "", "" },
|
||||
{ "basic_materials:plastic_sheet", "", "" },
|
||||
{ "default:glass", "", "" },
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
|
||||
{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:specter",
|
||||
recipe = {
|
||||
{ "", "", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
|
||||
{ "", "", "basic_materials:plastic_sheet" },
|
||||
{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
|
||||
{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:slaystation2",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" }
|
||||
{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
|
||||
{ "basic_materials:plastic_sheet", "default:steel_ingot", "basic_materials:plastic_sheet" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:admiral64",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
|
||||
{ "group:wood", "group:wood", "group:wood" }
|
||||
}
|
||||
})
|
||||
@ -56,7 +54,7 @@ minetest.register_craft({
|
||||
minetest.register_craft({
|
||||
output = "computer:admiral128",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
|
||||
{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
|
||||
}
|
||||
})
|
||||
@ -64,16 +62,16 @@ minetest.register_craft({
|
||||
minetest.register_craft({
|
||||
output = "computer:wee",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:copper_ingot", "homedecor:plastic_sheeting" }
|
||||
{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
|
||||
{ "basic_materials:plastic_sheet", "default:copper_ingot", "basic_materials:plastic_sheet" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:piepad",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting" }
|
||||
{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
|
||||
{ "basic_materials:plastic_sheet", "default:glass", "basic_materials:plastic_sheet" }
|
||||
}
|
||||
})
|
||||
|
||||
@ -82,9 +80,9 @@ minetest.register_craft({
|
||||
minetest.register_craft({
|
||||
output = "computer:monitor",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "default:glass","" },
|
||||
{ "homedecor:plastic_sheeting", "default:glass","" },
|
||||
{ "homedecor:plastic_sheeting", "default:mese_crystal_fragment", "homedecor:plastic_sheeting" }
|
||||
{ "basic_materials:plastic_sheet", "default:glass","" },
|
||||
{ "basic_materials:plastic_sheet", "default:glass","" },
|
||||
{ "basic_materials:plastic_sheet", "default:mese_crystal_fragment", "basic_materials:plastic_sheet" }
|
||||
}
|
||||
})
|
||||
|
||||
@ -92,35 +90,35 @@ minetest.register_craft({
|
||||
output = "computer:router",
|
||||
recipe = {
|
||||
{ "default:steel_ingot","","" },
|
||||
{ "default:steel_ingot" ,"homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
|
||||
{ "default:mese_crystal_fragment","homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
|
||||
{ "default:steel_ingot" ,"basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
|
||||
{ "default:mese_crystal_fragment","basic_materials:plastic_sheet", "basic_materials:plastic_sheet" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:tower",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" }
|
||||
{ "basic_materials:plastic_sheet", "default:steel_ingot", "basic_materials:plastic_sheet" },
|
||||
{ "basic_materials:plastic_sheet", "default:mese_crystal", "basic_materials:plastic_sheet" },
|
||||
{ "basic_materials:plastic_sheet", "default:steel_ingot", "basic_materials:plastic_sheet" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:printer",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot","" },
|
||||
{ "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "default:coal_lump", "homedecor:plastic_sheeting" }
|
||||
{ "basic_materials:plastic_sheet", "default:steel_ingot","" },
|
||||
{ "basic_materials:plastic_sheet", "default:mese_crystal", "basic_materials:plastic_sheet" },
|
||||
{ "basic_materials:plastic_sheet", "default:coal_lump", "basic_materials:plastic_sheet" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "computer:printer",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "default:steel_ingot","" },
|
||||
{ "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting" },
|
||||
{ "homedecor:plastic_sheeting", "dye:black", "homedecor:plastic_sheeting", }
|
||||
{ "basic_materials:plastic_sheet", "default:steel_ingot","" },
|
||||
{ "basic_materials:plastic_sheet", "default:mese_crystal", "basic_materials:plastic_sheet" },
|
||||
{ "basic_materials:plastic_sheet", "dye:black", "basic_materials:plastic_sheet", }
|
||||
}
|
||||
})
|
||||
|
||||
@ -136,8 +134,8 @@ minetest.register_craft({
|
||||
minetest.register_craft({
|
||||
output = "computer:tetris_arcade",
|
||||
recipe = {
|
||||
{ "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting", },
|
||||
{ "basic_materials:plastic_sheet", "basic_materials:energy_crystal", "basic_materials:plastic_sheet", },
|
||||
{ "dye:black", "default:glass", "dye:black" },
|
||||
{ "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting" }
|
||||
{ "basic_materials:plastic_sheet", "basic_materials:energy_crystal", "basic_materials:plastic_sheet" }
|
||||
}
|
||||
})
|
||||
|
@ -1,3 +1,5 @@
|
||||
local S = minetest.get_translator("computer")
|
||||
|
||||
local shapes = {
|
||||
{ { x = {0, 1, 0, 1}, y = {0, 0, 1, 1} } },
|
||||
|
||||
@ -30,12 +32,12 @@ local colors = { "computer_cyan.png", "computer_magenta.png", "computer_red.png"
|
||||
|
||||
local background = "image[0,0;3.55,6.66;computer_black.png]"
|
||||
local buttons = "button[3,4.5;0.6,0.6;left;<]"
|
||||
.."button[3.6,4.5;0.6,0.6;rotateleft;L]"
|
||||
.."button[3.6,4.5;0.6,0.6;rotateleft;"..minetest.formspec_escape(S("L")).."]"
|
||||
.."button[4.2,4.5;0.6,0.6;down;v]"
|
||||
.."button[4.2,5.3;0.6,0.6;drop;V]"
|
||||
.."button[4.8,4.5;0.6,0.6;rotateright;R]"
|
||||
.."button[4.8,4.5;0.6,0.6;rotateright;"..minetest.formspec_escape(S("R")).."]"
|
||||
.."button[5.4,4.5;0.6,0.6;right;>]"
|
||||
.."button[3.5,3;2,2;new;New Game]"
|
||||
.."button[3.5,3;2,2;new;"..minetest.formspec_escape(S("New Game")).."]"
|
||||
|
||||
local formsize = "size[5.9,5.7]"
|
||||
local boardx, boardy = 0, 0
|
||||
@ -217,10 +219,10 @@ local function step(pos, fields)
|
||||
if fields then
|
||||
if fields.new then
|
||||
new_game(pos)
|
||||
else
|
||||
elseif t then
|
||||
key(fields)
|
||||
end
|
||||
else
|
||||
elseif t then
|
||||
run = tick()
|
||||
end
|
||||
|
||||
@ -228,7 +230,7 @@ local function step(pos, fields)
|
||||
local scr = { formsize, background,
|
||||
t.boardstring, t.previewstring,
|
||||
draw_shape(t.cur, t.x, t.y, t.rot, boardx, boardy),
|
||||
"label[3.8,0.1;Next...]label[3.8,2.7;Score: ",
|
||||
"label[3.8,0.1;"..S("Next...").."]label[3.8,2.7;"..S("Score: "),
|
||||
t.score, close, buttons }
|
||||
|
||||
|
||||
@ -241,14 +243,14 @@ local function step(pos, fields)
|
||||
end
|
||||
|
||||
minetest.register_node("computer:tetris_arcade", {
|
||||
description="Tetris Arcade",
|
||||
description=S("Tetris Arcade"),
|
||||
drawtype = "mesh",
|
||||
mesh = "tetris_arcade.obj",
|
||||
tiles = {"tetris_arcade.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {snappy=3},
|
||||
on_rotate = screwdriver.rotate_simple,
|
||||
on_rotate = minetest.get_modpath("screwdriver") and screwdriver.rotate_simple or nil,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5}
|
||||
@ -259,7 +261,8 @@ minetest.register_node("computer:tetris_arcade", {
|
||||
},
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", formsize.."button[2,2.5;2,2;new;New Game]"
|
||||
meta:set_string("formspec", formsize
|
||||
.."button[2,2.5;2,2;new;"..minetest.formspec_escape(S("New Game")).."]"
|
||||
..default.gui_bg..default.gui_bg_img..default.gui_slots)
|
||||
end,
|
||||
on_timer = function(pos)
|
||||
@ -275,7 +278,7 @@ minetest.register_node("computer:tetris_arcade", {
|
||||
return itemstack
|
||||
end
|
||||
if minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "air" then
|
||||
minetest.chat_send_player(placer:get_player_name(), "No room for place the Arcade!")
|
||||
minetest.chat_send_player(placer:get_player_name(), S("No room for place the Arcade!"))
|
||||
return itemstack
|
||||
end
|
||||
local dir = placer:get_look_dir()
|
||||
|
BIN
computer/textures/computer_3dprinter_bedflinger.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
computer/textures/computer_3dprinter_bedflinger_inv.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
computer/textures/computer_3dprinter_filament.png
Normal file
After Width: | Height: | Size: 216 B |
BIN
computer/textures/computer_hueg_box_bk.png
Normal file
After Width: | Height: | Size: 88 B |
BIN
computer/textures/computer_hueg_box_bt.png
Normal file
After Width: | Height: | Size: 108 B |
BIN
computer/textures/computer_hueg_box_ft.png
Normal file
After Width: | Height: | Size: 130 B |
BIN
computer/textures/computer_hueg_box_lt.png
Normal file
After Width: | Height: | Size: 100 B |
BIN
computer/textures/computer_hueg_box_rt.png
Normal file
After Width: | Height: | Size: 97 B |
BIN
computer/textures/computer_hueg_box_tp.png
Normal file
After Width: | Height: | Size: 220 B |
20
copyright.txt
Normal file
@ -0,0 +1,20 @@
|
||||
Most code and textures by Vanessa Ezekowitz.
|
||||
|
||||
Some code copied and modified from the game's default mods (especially
|
||||
doors) and ironzorg's flowers mod.
|
||||
|
||||
Whatever is stated here applies to all homedecor modpack components, as
|
||||
appropriate.
|
||||
|
||||
Licenses:
|
||||
* Door open/close sound by Slanesh on freesound.org
|
||||
http://freesound.org/people/Slanesh/sounds/31768/
|
||||
* Gate open/close by j1987 on freesound.org
|
||||
http://freesound.org/people/j1987/sounds/106116/
|
||||
* Doorbell sound by guitarguy1985 on freesound.org
|
||||
http://freesound.org/people/guitarguy1985/sounds/69384/
|
||||
* Book soundn by mckinneysound's on http://www.freesfx.co.uk/
|
||||
http://www.freesfx.co.uk/sfx/book?p=3
|
||||
* Phone ringing sound by andyt's on http://www.freesfx.co.uk/
|
||||
http://www.freesfx.co.uk/sfx/phone?p=5
|
||||
|
@ -1,23 +1,19 @@
|
||||
unused_args = false
|
||||
allow_defined_top = true
|
||||
max_comment_line_length = 999
|
||||
|
||||
read_globals = {
|
||||
"DIR_DELIM",
|
||||
"minetest", "core",
|
||||
"unpack",
|
||||
"dump",
|
||||
table = { fields = { "copy", "getn" } },
|
||||
"vector", "nodeupdate",
|
||||
"VoxelManip", "VoxelArea",
|
||||
"PseudoRandom", "ItemStack",
|
||||
"intllib",
|
||||
"default",
|
||||
"stairsplus",
|
||||
"signs_lib",
|
||||
"beds",
|
||||
"technic",
|
||||
"mesecon",
|
||||
}
|
||||
|
||||
globals = {
|
||||
"armor",
|
||||
}
|
||||
|
@ -1 +0,0 @@
|
||||
default
|
@ -1,6 +1,79 @@
|
||||
screwdriver = screwdriver or {}
|
||||
local S = minetest.get_translator("fake_fire")
|
||||
|
||||
local function start_smoke(pos, node, clicker, chimney)
|
||||
local function fire_particles_on(pos) -- 3 layers of fire
|
||||
local meta = minetest.get_meta(pos)
|
||||
local id1 = minetest.add_particlespawner({ -- 1 layer big particles fire
|
||||
amount = 9,
|
||||
time = 0,
|
||||
minpos = {x = pos.x - 0.2, y = pos.y - 0.4, z = pos.z - 0.2},
|
||||
maxpos = {x = pos.x + 0.2, y = pos.y - 0.1, z = pos.z + 0.2},
|
||||
minvel = {x= 0, y= 0, z= 0},
|
||||
maxvel = {x= 0, y= 0.1, z= 0},
|
||||
minacc = {x= 0, y= 0, z= 0},
|
||||
maxacc = {x= 0, y= 0.7, z= 0},
|
||||
minexptime = 0.5,
|
||||
maxexptime = 0.7,
|
||||
minsize = 2,
|
||||
maxsize = 5,
|
||||
collisiondetection = false,
|
||||
vertical = true,
|
||||
texture = "fake_fire_particle_anim_fire.png",
|
||||
animation = {type="vertical_frames", aspect_w=16, aspect_h=16, length = 0.8,},
|
||||
})
|
||||
meta:set_int("layer_1", id1)
|
||||
|
||||
local id2 = minetest.add_particlespawner({ -- 2 layer smol particles fire
|
||||
amount = 1,
|
||||
time = 0,
|
||||
minpos = {x = pos.x - 0.1, y = pos.y, z = pos.z - 0.1},
|
||||
maxpos = {x = pos.x + 0.1, y = pos.y + 0.4, z = pos.z + 0.1},
|
||||
minvel = {x= 0, y= 0, z= 0},
|
||||
maxvel = {x= 0, y= 0.1, z= 0},
|
||||
minacc = {x= 0, y= 0, z= 0},
|
||||
maxacc = {x= 0, y= 1, z= 0},
|
||||
minexptime = 0.4,
|
||||
maxexptime = 0.6,
|
||||
minsize = 0.5,
|
||||
maxsize = 0.7,
|
||||
collisiondetection = false,
|
||||
vertical = true,
|
||||
texture = "fake_fire_particle_anim_fire.png",
|
||||
animation = {type="vertical_frames", aspect_w=16, aspect_h=16, length = 0.7,},
|
||||
})
|
||||
meta:set_int("layer_2", id2)
|
||||
|
||||
local id3 = minetest.add_particlespawner({ --3 layer smoke
|
||||
amount = 1,
|
||||
time = 0,
|
||||
minpos = {x = pos.x - 0.1, y = pos.y - 0.2, z = pos.z - 0.1},
|
||||
maxpos = {x = pos.x + 0.2, y = pos.y + 0.4, z = pos.z + 0.2},
|
||||
minvel = {x= 0, y= 0, z= 0},
|
||||
maxvel = {x= 0, y= 0.1, z= 0},
|
||||
minacc = {x= 0, y= 0, z= 0},
|
||||
maxacc = {x= 0, y= 1, z= 0},
|
||||
minexptime = 0.6,
|
||||
maxexptime = 0.8,
|
||||
minsize = 2,
|
||||
maxsize = 4,
|
||||
collisiondetection = true,
|
||||
vertical = true,
|
||||
texture = "fake_fire_particle_anim_smoke.png",
|
||||
animation = {type="vertical_frames", aspect_w=16, aspect_h=16, length = 0.9,},
|
||||
})
|
||||
meta:set_int("layer_3", id3)
|
||||
end
|
||||
|
||||
local function fire_particles_off(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local id_1 = meta:get_int("layer_1");
|
||||
local id_2 = meta:get_int("layer_2");
|
||||
local id_3 = meta:get_int("layer_3");
|
||||
minetest.delete_particlespawner(id_1)
|
||||
minetest.delete_particlespawner(id_2)
|
||||
minetest.delete_particlespawner(id_3)
|
||||
end
|
||||
|
||||
local function start_fire_effects(pos, node, clicker, chimney)
|
||||
local this_spawner_meta = minetest.get_meta(pos)
|
||||
local id = this_spawner_meta:get_int("smoky")
|
||||
local s_handle = this_spawner_meta:get_int("sound")
|
||||
@ -13,8 +86,8 @@ local function start_smoke(pos, node, clicker, chimney)
|
||||
end, s_handle)
|
||||
end
|
||||
minetest.delete_particlespawner(id)
|
||||
this_spawner_meta:set_int("smoky", nil)
|
||||
this_spawner_meta:set_int("sound", nil)
|
||||
this_spawner_meta:set_int("smoky", 0)
|
||||
this_spawner_meta:set_int("sound", 0)
|
||||
return
|
||||
end
|
||||
|
||||
@ -31,14 +104,14 @@ local function start_smoke(pos, node, clicker, chimney)
|
||||
})
|
||||
if chimney == 1 then
|
||||
this_spawner_meta:set_int("smoky", id)
|
||||
this_spawner_meta:set_int("sound", nil)
|
||||
this_spawner_meta:set_int("sound", 0)
|
||||
else
|
||||
s_handle = minetest.sound_play("fire_small", {
|
||||
pos = pos,
|
||||
max_hear_distance = 5,
|
||||
loop = true
|
||||
})
|
||||
this_spawner_meta:set_int("smoky", id)
|
||||
fire_particles_on(pos)
|
||||
this_spawner_meta:set_int("sound", s_handle)
|
||||
end
|
||||
end
|
||||
@ -59,84 +132,92 @@ local function stop_smoke(pos)
|
||||
end, s_handle)
|
||||
end
|
||||
|
||||
this_spawner_meta:set_int("smoky", nil)
|
||||
this_spawner_meta:set_int("sound", nil)
|
||||
this_spawner_meta:set_int("smoky", 0)
|
||||
this_spawner_meta:set_int("sound", 0)
|
||||
end
|
||||
|
||||
-- FLAME TYPES
|
||||
local flame_types = {"fake", "ice"}
|
||||
minetest.register_node("fake_fire:ice_fire", {
|
||||
inventory_image = "ice_fire_inv.png",
|
||||
description = S("Ice fire"),
|
||||
drawtype = "plantlike",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {dig_immediate=3, not_in_creative_inventory=1},
|
||||
sunlight_propagates = true,
|
||||
buildable_to = true,
|
||||
walkable = false,
|
||||
light_source = 14,
|
||||
waving = 1,
|
||||
tiles = {
|
||||
{name="ice_fire_animated.png", animation={type="vertical_frames",
|
||||
aspect_w=16, aspect_h=16, length=1.5}},
|
||||
},
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
start_fire_effects(pos, node, clicker)
|
||||
return itemstack
|
||||
end,
|
||||
on_destruct = function (pos)
|
||||
stop_smoke(pos)
|
||||
minetest.sound_play("fire_extinguish", {
|
||||
pos = pos, max_hear_distance = 5
|
||||
})
|
||||
end,
|
||||
drop = ""
|
||||
})
|
||||
|
||||
for _, f in ipairs(flame_types) do
|
||||
minetest.register_node("fake_fire:"..f.."_fire", {
|
||||
inventory_image = f.."_fire_inv.png",
|
||||
description = f.." fire",
|
||||
drawtype = "plantlike",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {dig_immediate=3, not_in_creative_inventory=1},
|
||||
sunlight_propagates = true,
|
||||
buildable_to = true,
|
||||
walkable = false,
|
||||
light_source = 14,
|
||||
waving = 1,
|
||||
tiles = {
|
||||
{name=f.."_fire_animated.png", animation={type="vertical_frames",
|
||||
aspect_w=16, aspect_h=16, length=1.5}},
|
||||
},
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
start_smoke(pos, node, clicker)
|
||||
return itemstack
|
||||
end,
|
||||
on_destruct = function (pos)
|
||||
stop_smoke(pos)
|
||||
minetest.sound_play("fire_extinguish", {
|
||||
pos = pos, max_hear_distance = 5
|
||||
})
|
||||
end,
|
||||
drop = ""
|
||||
})
|
||||
end
|
||||
minetest.register_alias("fake_fire:fake_fire", "fire:permanent_flame")
|
||||
|
||||
local sbox = {
|
||||
type = 'fixed',
|
||||
fixed = { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16},
|
||||
}
|
||||
|
||||
minetest.register_node("fake_fire:fancy_fire", {
|
||||
inventory_image = "fancy_fire_inv.png",
|
||||
description = "Fancy Fire",
|
||||
drawtype = "mesh",
|
||||
mesh = "fancy_fire.obj",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {dig_immediate=3},
|
||||
sunlight_propagates = true,
|
||||
light_source = 14,
|
||||
walkable = false,
|
||||
damage_per_second = 4,
|
||||
on_rotate = screwdriver.rotate_simple,
|
||||
tiles = {
|
||||
{name="fake_fire_animated.png",
|
||||
animation={type='vertical_frames', aspect_w=16, aspect_h=16, length=1}}, {name='fake_fire_logs.png'}},
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
start_smoke(pos, node, clicker)
|
||||
return itemstack
|
||||
end,
|
||||
on_destruct = function (pos)
|
||||
stop_smoke(pos)
|
||||
minetest.sound_play("fire_extinguish", {
|
||||
pos = pos, max_hear_distance = 5
|
||||
})
|
||||
end,
|
||||
drop = {
|
||||
max_items = 3,
|
||||
items = {
|
||||
{
|
||||
items = { "default:torch", "default:torch", "building_blocks:sticks" },
|
||||
rarity = 1,
|
||||
}
|
||||
inventory_image = "fancy_fire_inv.png",
|
||||
description = S("Fancy Fire"),
|
||||
drawtype = "mesh",
|
||||
mesh = "fancy_fire.obj",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {oddly_breakable_by_hand=3, flammable=0},
|
||||
sunlight_propagates = true,
|
||||
light_source = 13,
|
||||
walkable = false,
|
||||
buildable_to = false,
|
||||
damage_per_second = 3,
|
||||
selection_box = sbox,
|
||||
tiles = {
|
||||
"basic_materials_concrete_block.png",
|
||||
"default_junglewood.png",
|
||||
"fake_fire_empty_tile.png"
|
||||
},
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
fire_particles_on(pos)
|
||||
return itemstack
|
||||
end,
|
||||
on_construct = function(pos)
|
||||
fire_particles_on(pos)
|
||||
end,
|
||||
on_destruct = function(pos, oldnode, oldmetadata, digger)
|
||||
fire_particles_off(pos)
|
||||
minetest.sound_play("fire_extinguish", {
|
||||
pos = pos, max_hear_distance = 5
|
||||
})
|
||||
end,
|
||||
drop = {
|
||||
max_items = 3,
|
||||
items = {
|
||||
{
|
||||
items = { "default:torch", "default:torch", "building_blocks:sticks" },
|
||||
rarity = 1,
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
-- EMBERS
|
||||
minetest.register_node("fake_fire:embers", {
|
||||
description = "Glowing Embers",
|
||||
description = S("Glowing Embers"),
|
||||
tiles = {
|
||||
{name="embers_animated.png", animation={type="vertical_frames",
|
||||
aspect_w=16, aspect_h=16, length=2}},
|
||||
@ -148,12 +229,16 @@ minetest.register_node("fake_fire:embers", {
|
||||
})
|
||||
|
||||
-- CHIMNEYS
|
||||
local materials = {"stone", "sandstone"}
|
||||
local materials = {
|
||||
{ "stone", S("Stone chimney top") },
|
||||
{ "sandstone", S("Sandstone chimney top") },
|
||||
}
|
||||
|
||||
for _, m in ipairs(materials) do
|
||||
minetest.register_node("fake_fire:chimney_top_"..m, {
|
||||
description = "Chimney Top - "..m,
|
||||
tiles = {"default_"..m..".png^chimney_top.png", "default_"..m..".png"},
|
||||
for _, mat in ipairs(materials) do
|
||||
local name, desc = unpack(mat)
|
||||
minetest.register_node("fake_fire:chimney_top_"..name, {
|
||||
description = desc,
|
||||
tiles = {"default_"..name..".png^chimney_top.png", "default_"..name..".png"},
|
||||
groups = {snappy=3},
|
||||
paramtype = "light",
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
@ -164,7 +249,7 @@ for _, m in ipairs(materials) do
|
||||
},
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
local chimney = 1
|
||||
start_smoke(pos, node, clicker, chimney)
|
||||
start_fire_effects(pos, node, clicker, chimney)
|
||||
return itemstack
|
||||
end,
|
||||
on_destruct = function (pos)
|
||||
@ -174,48 +259,23 @@ for _, m in ipairs(materials) do
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'fake_fire:chimney_top_'..m,
|
||||
recipe = {"default:torch", "stairs:slab_"..m}
|
||||
output = 'fake_fire:chimney_top_'..name,
|
||||
recipe = {"default:torch", "stairs:slab_"..name}
|
||||
})
|
||||
end
|
||||
|
||||
-- FLINT and STEEL
|
||||
minetest.register_tool("fake_fire:flint_and_steel", {
|
||||
description = "Flint and steel",
|
||||
inventory_image = "flint_and_steel.png",
|
||||
liquids_pointable = false,
|
||||
stack_max = 1,
|
||||
tool_capabilities = {
|
||||
full_punch_interval = 1.0,
|
||||
max_drop_level=0,
|
||||
groupcaps={flamable = {uses=65, maxlevel=1}}
|
||||
},
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if pointed_thing.type == "node" and minetest.get_node(pointed_thing.above).name == "air" then
|
||||
if not minetest.is_protected(pointed_thing.above, user:get_player_name()) then
|
||||
if string.find(minetest.get_node(pointed_thing.under).name, "ice") then
|
||||
minetest.set_node(pointed_thing.above, {name="fake_fire:ice_fire"})
|
||||
else
|
||||
minetest.set_node(pointed_thing.above, {name="fake_fire:fake_fire"})
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(user:get_player_name(), "This area is protected!")
|
||||
end
|
||||
else
|
||||
return
|
||||
end
|
||||
minetest.register_alias("fake_fire:flint_and_steel", "fire:flint_and_steel")
|
||||
|
||||
itemstack:add_wear(65535/65)
|
||||
return itemstack
|
||||
minetest.override_item("default:ice", {
|
||||
on_ignite = function(pos, igniter)
|
||||
local flame_pos = {x = pos.x, y = pos.y + 1, z = pos.z}
|
||||
if minetest.get_node(flame_pos).name == "air" then
|
||||
minetest.set_node(flame_pos, {name = "fake_fire:ice_fire"})
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- CRAFTS
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'fake_fire:flint_and_steel',
|
||||
recipe = {"default:obsidian_shard", "default:steel_ingot"}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
@ -230,8 +290,24 @@ minetest.register_craft({
|
||||
})
|
||||
|
||||
-- ALIASES
|
||||
|
||||
minetest.register_alias("fake_fire:smokeless_fire", "fake_fire:fake_fire")
|
||||
minetest.register_alias("fake_fire:smokeless_ice_fire", "fake_fire:ice_fire")
|
||||
minetest.register_alias("fake_fire:smokeless_chimney_top_stone", "fake_fire:chimney_top_stone")
|
||||
minetest.register_alias("fake_fire:smokeless_chimney_top_sandstone", "fake_fire:chimney_top_sandstone")
|
||||
minetest.register_alias("fake_fire:flint", "fake_fire:flint_and_steel")
|
||||
|
||||
-- OTHER
|
||||
|
||||
minetest.register_lbm({
|
||||
name = "fake_fire:reload_particles",
|
||||
label = "restart fire particles on reload",
|
||||
nodenames = {"fake_fire:fancy_fire"},
|
||||
run_at_every_load = true,
|
||||
action = function(pos, node)
|
||||
fire_particles_off(pos)
|
||||
fire_particles_on(pos)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.log("action", "[fake_fire] loaded.")
|
||||
|
10
fake_fire/locale/fake_fire.de.tr
Normal file
@ -0,0 +1,10 @@
|
||||
# textdomain: fake_fire
|
||||
|
||||
|
||||
### init.lua ###
|
||||
|
||||
Fancy Fire=Schönes Feuer
|
||||
Glowing Embers=Glühende Asche
|
||||
Ice fire=Eisfeuer
|
||||
Sandstone chimney top=Sandsteinschornsteinaufsatz
|
||||
Stone chimney top=Steinschornsteinaufsatz
|
10
fake_fire/locale/fake_fire.es.tr
Normal file
@ -0,0 +1,10 @@
|
||||
# textdomain: fake_fire
|
||||
|
||||
|
||||
### init.lua ###
|
||||
|
||||
Fancy Fire=Fuego fantasía
|
||||
Glowing Embers=Brasas ardientes
|
||||
Ice fire=Fuego de hielo
|
||||
Sandstone chimney top=Chimenea de arenisca
|
||||
Stone chimney top=Chimenea de piedra
|
10
fake_fire/locale/fake_fire.fr.tr
Normal file
@ -0,0 +1,10 @@
|
||||
# textdomain: fake_fire
|
||||
|
||||
|
||||
### init.lua ###
|
||||
|
||||
Fancy Fire=Feu décoratif
|
||||
Glowing Embers=Braises incandescentes
|
||||
Ice fire=Feu glacé
|
||||
Sandstone chimney top=Haut de cheminée en grès
|
||||
Stone chimney top=Haut de cheminée en pierre
|
10
fake_fire/locale/fake_fire.ms.tr
Normal file
@ -0,0 +1,10 @@
|
||||
# textdomain: fake_fire
|
||||
|
||||
|
||||
### init.lua ###
|
||||
|
||||
Fancy Fire=Api Hiasan
|
||||
Glowing Embers=Bara Api
|
||||
Ice fire=Api Ais
|
||||
Sandstone chimney top=Kepala Serombong Batu Pasir
|
||||
Stone chimney top=Kepala Serombong Batu
|
10
fake_fire/locale/fake_fire.pt.tr
Normal file
@ -0,0 +1,10 @@
|
||||
# textdomain: fake_fire
|
||||
|
||||
|
||||
### init.lua ###
|
||||
|
||||
Fancy Fire=Fogo Chique
|
||||
Glowing Embers=Brasas Brilhantes
|
||||
Ice fire=Fogo de gelo
|
||||
Sandstone chimney top=Topo de chaminé de arenito
|
||||
Stone chimney top=Topo de chaminé de pedra
|
10
fake_fire/locale/fake_fire.pt_BR.tr
Normal file
@ -0,0 +1,10 @@
|
||||
# textdomain: fake_fire
|
||||
|
||||
|
||||
### init.lua ###
|
||||
|
||||
Fancy Fire=Fogo Chique
|
||||
Glowing Embers=Brasas Brilhantes
|
||||
Ice fire=Fogo de gelo
|
||||
Sandstone chimney top=Topo de chaminé de arenito
|
||||
Stone chimney top=Topo de chaminé de pedra
|
10
fake_fire/locale/fake_fire.ru.tr
Normal file
@ -0,0 +1,10 @@
|
||||
# textdomain: fake_fire
|
||||
|
||||
|
||||
### init.lua ###
|
||||
|
||||
Fancy Fire=Необычный огонь
|
||||
Glowing Embers=Светящиеся угли
|
||||
Ice fire=Ледяной огонь
|
||||
Sandstone chimney top=Дымоход из песчаника на крышу
|
||||
Stone chimney top=Каменный дымоход на крышу
|
10
fake_fire/locale/fake_fire.zh_CN.tr
Normal file
@ -0,0 +1,10 @@
|
||||
# textdomain: fake_fire
|
||||
|
||||
|
||||
### init.lua ###
|
||||
|
||||
Fancy Fire=花式火
|
||||
Glowing Embers=发光的余烬
|
||||
Ice fire=冰火
|
||||
Sandstone chimney top=砂石烟囱顶部
|
||||
Stone chimney top=鹅卵石烟囱顶部
|
10
fake_fire/locale/template.txt
Normal file
@ -0,0 +1,10 @@
|
||||
# textdomain: fake_fire
|
||||
|
||||
|
||||
### init.lua ###
|
||||
|
||||
Fancy Fire=
|
||||
Glowing Embers=
|
||||
Ice fire=
|
||||
Sandstone chimney top=
|
||||
Stone chimney top=
|
2
fake_fire/mod.conf
Normal file
@ -0,0 +1,2 @@
|
||||
name = fake_fire
|
||||
depends = default
|
BIN
fake_fire/textures/fake_fire_empty_tile.png
Normal file
After Width: | Height: | Size: 68 B |
Before Width: | Height: | Size: 2.0 KiB |
BIN
fake_fire/textures/fake_fire_particle_anim_fire.png
Normal file
After Width: | Height: | Size: 251 B |
BIN
fake_fire/textures/fake_fire_particle_anim_smoke.png
Normal file
After Width: | Height: | Size: 275 B |
@ -1,104 +0,0 @@
|
||||
|
||||
local S = homedecor.gettext
|
||||
|
||||
local bathroom_tile_colors = {
|
||||
{ "1", S("white/grey"), "#c0c0c0:200" },
|
||||
{ "2", S("white/dark grey"), "#404040:150" },
|
||||
{ "3", S("white/black"), "#000000:200" },
|
||||
{ "4", S("black/dark grey"), "" },
|
||||
{ "red", S("white/red"), "#d00000:150" },
|
||||
{ "green", S("white/green"), "#00d000:150" },
|
||||
{ "blue", S("white/blue"), "#0000d0:150" },
|
||||
{ "yellow", S("white/yellow"), "#ffff00:150" },
|
||||
{ "tan", S("white/tan"), "#ceaf42:150" }
|
||||
}
|
||||
|
||||
for _, c in ipairs(bathroom_tile_colors) do
|
||||
local color, shade, hue = unpack(c)
|
||||
|
||||
local coloredtile = "homedecor_bathroom_tiles_bg.png^(homedecor_bathroom_tiles_fg.png^[colorize:"..hue..")"
|
||||
|
||||
if color == "4" then
|
||||
coloredtile = "(homedecor_bathroom_tiles_bg.png^[colorize:#000000:75)"..
|
||||
"^(homedecor_bathroom_tiles_fg.png^[colorize:#000000:200)"
|
||||
end
|
||||
|
||||
minetest.register_node("homedecor:tiles_"..color, {
|
||||
description = S("Bathroom/kitchen tiles (@1)", shade),
|
||||
tiles = {
|
||||
coloredtile,
|
||||
coloredtile,
|
||||
coloredtile,
|
||||
coloredtile,
|
||||
"("..coloredtile..")^[transformR90",
|
||||
"("..coloredtile..")^[transformR90"
|
||||
},
|
||||
groups = {cracky=3},
|
||||
paramtype = "light",
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
end
|
||||
|
||||
local tr_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.375, -0.3125, 0.25, 0.375, 0.375, 0.5 }
|
||||
}
|
||||
|
||||
homedecor.register("towel_rod", {
|
||||
description = S("Towel rod with towel"),
|
||||
mesh = "homedecor_towel_rod.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_terrycloth.png",
|
||||
"default_wood.png",
|
||||
},
|
||||
inventory_image = "homedecor_towel_rod_inv.png",
|
||||
selection_box = tr_cbox,
|
||||
walkable = false,
|
||||
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3},
|
||||
sounds = default.node_sound_defaults(),
|
||||
})
|
||||
|
||||
homedecor.register("medicine_cabinet", {
|
||||
description = S("Medicine cabinet"),
|
||||
mesh = "homedecor_medicine_cabinet.obj",
|
||||
tiles = {
|
||||
'default_wood.png',
|
||||
'homedecor_medicine_cabinet_mirror.png'
|
||||
},
|
||||
inventory_image = "homedecor_medicine_cabinet_inv.png",
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.3125, -0.1875, 0.3125, 0.3125, 0.5, 0.5}
|
||||
},
|
||||
walkable = false,
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_punch = function(pos, node, puncher, pointed_thing)
|
||||
node.name = "homedecor:medicine_cabinet_open"
|
||||
minetest.swap_node(pos, node)
|
||||
end,
|
||||
infotext=S("Medicine cabinet"),
|
||||
inventory = {
|
||||
size=6,
|
||||
},
|
||||
})
|
||||
|
||||
homedecor.register("medicine_cabinet_open", {
|
||||
mesh = "homedecor_medicine_cabinet_open.obj",
|
||||
tiles = {
|
||||
'default_wood.png',
|
||||
'homedecor_medicine_cabinet_mirror.png',
|
||||
'homedecor_medicine_cabinet_inside.png'
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.3125, -0.1875, -0.25, 0.3125, 0.5, 0.5}
|
||||
},
|
||||
walkable = false,
|
||||
groups = { snappy = 3, not_in_creative_inventory=1 },
|
||||
drop = "homedecor:medicine_cabinet",
|
||||
on_punch = function(pos, node, puncher, pointed_thing)
|
||||
node.name = "homedecor:medicine_cabinet"
|
||||
minetest.swap_node(pos, node)
|
||||
end,
|
||||
})
|
@ -1,285 +0,0 @@
|
||||
local S = homedecor.gettext
|
||||
|
||||
local toilet_sbox = {
|
||||
type = "fixed",
|
||||
fixed = { -6/16, -8/16, -8/16, 6/16, 9/16, 8/16 },
|
||||
}
|
||||
|
||||
local toilet_cbox = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-6/16, -8/16, -8/16, 6/16, 1/16, 8/16 },
|
||||
{-6/16, -8/16, 4/16, 6/16, 9/16, 8/16 }
|
||||
}
|
||||
}
|
||||
|
||||
homedecor.register("toilet", {
|
||||
description = S("Toilet"),
|
||||
mesh = "homedecor_toilet_closed.obj",
|
||||
tiles = {
|
||||
"homedecor_marble.png^[colorize:#ffffff:175",
|
||||
"homedecor_marble.png^[colorize:#ffffff:175",
|
||||
"homedecor_marble.png^[colorize:#ffffff:175",
|
||||
"homedecor_generic_metal_black.png^[brighten"
|
||||
},
|
||||
selection_box = toilet_sbox,
|
||||
node_box = toilet_cbox,
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_punch = function (pos, node, puncher)
|
||||
node.name = "homedecor:toilet_open"
|
||||
minetest.set_node(pos, node)
|
||||
end
|
||||
})
|
||||
|
||||
homedecor.register("toilet_open", {
|
||||
mesh = "homedecor_toilet_open.obj",
|
||||
tiles = {
|
||||
"homedecor_marble.png^[colorize:#ffffff:175",
|
||||
"homedecor_marble.png^[colorize:#ffffff:175",
|
||||
"homedecor_marble.png^[colorize:#ffffff:175",
|
||||
"default_water.png",
|
||||
"homedecor_generic_metal_black.png^[brighten"
|
||||
},
|
||||
selection_box = toilet_sbox,
|
||||
collision_box = toilet_cbox,
|
||||
drop = "homedecor:toilet",
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_punch = function (pos, node, puncher)
|
||||
node.name = "homedecor:toilet"
|
||||
minetest.set_node(pos, node)
|
||||
minetest.sound_play("homedecor_toilet_flush", {
|
||||
pos=pos,
|
||||
max_hear_distance = 5,
|
||||
gain = 1,
|
||||
})
|
||||
end
|
||||
})
|
||||
|
||||
-- toilet paper :-)
|
||||
|
||||
local tp_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.25, 0.125, 0.0625, 0.1875, 0.4375, 0.5 }
|
||||
}
|
||||
|
||||
homedecor.register("toilet_paper", {
|
||||
description = S("Toilet paper"),
|
||||
mesh = "homedecor_toilet_paper.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_quilted_paper.png",
|
||||
"default_wood.png"
|
||||
},
|
||||
inventory_image = "homedecor_toilet_paper_inv.png",
|
||||
selection_box = tp_cbox,
|
||||
walkable = false,
|
||||
groups = {snappy=3,oddly_breakable_by_hand=3},
|
||||
sounds = default.node_sound_defaults(),
|
||||
})
|
||||
|
||||
--Sink
|
||||
|
||||
local sink_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -5/16, -8/16, 1/16, 5/16, 8/16, 8/16 }
|
||||
}
|
||||
|
||||
homedecor.register("sink", {
|
||||
description = S("Bathroom Sink"),
|
||||
mesh = "homedecor_bathroom_sink.obj",
|
||||
tiles = {
|
||||
"homedecor_marble.png^[colorize:#ffffff:175",
|
||||
"homedecor_marble.png",
|
||||
"default_water.png"
|
||||
},
|
||||
inventory_image="homedecor_bathroom_sink_inv.png",
|
||||
selection_box = sink_cbox,
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -5/16, 5/16, 1/16, -4/16, 8/16, 8/16 },
|
||||
{ 5/16, 5/16, 1/16, 4/16, 8/16, 8/16 },
|
||||
{ -5/16, 5/16, 1/16, 5/16, 8/16, 2/16 },
|
||||
{ -5/16, 5/16, 6/16, 5/16, 8/16, 8/16 },
|
||||
{ -4/16, -8/16, 1/16, 4/16, 5/16, 6/16 }
|
||||
}
|
||||
},
|
||||
on_destruct = function(pos)
|
||||
homedecor.stop_particle_spawner({x=pos.x, y=pos.y+1, z=pos.z})
|
||||
end
|
||||
})
|
||||
|
||||
--Taps
|
||||
|
||||
local function taps_on_rightclick(pos, node, clicker, itemstack, pointed_thing)
|
||||
local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-1, z=pos.z})
|
||||
if below and
|
||||
below.name == "homedecor:shower_tray" or
|
||||
below.name == "homedecor:sink" or
|
||||
below.name == "homedecor:kitchen_cabinet_with_sink" or
|
||||
below.name == "homedecor:kitchen_cabinet_with_sink_locked" then
|
||||
local particledef = {
|
||||
outlet = { x = 0, y = -0.44, z = 0.28 },
|
||||
velocity_x = { min = -0.1, max = 0.1 },
|
||||
velocity_y = -0.3,
|
||||
velocity_z = { min = -0.1, max = 0 },
|
||||
spread = 0
|
||||
}
|
||||
homedecor.start_particle_spawner(pos, node, particledef, "homedecor_faucet")
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
|
||||
homedecor.register("taps", {
|
||||
description = S("Bathroom taps/faucet"),
|
||||
mesh = "homedecor_bathroom_faucet.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_metal_black.png^[brighten",
|
||||
"homedecor_generic_metal_bright.png",
|
||||
"homedecor_generic_metal_black.png^[colorize:#ffffff:200",
|
||||
"homedecor_generic_metal_bright.png"
|
||||
},
|
||||
inventory_image = "3dforniture_taps_inv.png",
|
||||
wield_image = "3dforniture_taps_inv.png",
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -4/16, -7/16, 4/16, 4/16, -4/16, 8/16 },
|
||||
},
|
||||
walkable = false,
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_rightclick = taps_on_rightclick,
|
||||
on_destruct = homedecor.stop_particle_spawner,
|
||||
on_rotate = screwdriver.disallow
|
||||
})
|
||||
|
||||
homedecor.register("taps_brass", {
|
||||
description = S("Bathroom taps/faucet (brass)"),
|
||||
mesh = "homedecor_bathroom_faucet.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_metal_brass.png",
|
||||
"homedecor_generic_metal_brass.png",
|
||||
"homedecor_generic_metal_black.png^[colorize:#ffffff:200",
|
||||
"homedecor_generic_metal_brass.png"
|
||||
},
|
||||
inventory_image = "3dforniture_taps_brass_inv.png",
|
||||
wield_image = "3dforniture_taps_brass_inv.png",
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -4/16, -7/16, 4/16, 4/16, -4/16, 8/16 },
|
||||
},
|
||||
walkable = false,
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_rightclick = taps_on_rightclick,
|
||||
on_destruct = homedecor.stop_particle_spawner,
|
||||
on_rotate = screwdriver.disallow
|
||||
})
|
||||
|
||||
--Shower Tray
|
||||
|
||||
homedecor.register("shower_tray", {
|
||||
description = S("Shower Tray"),
|
||||
tiles = {
|
||||
"forniture_marble_base_ducha_top.png",
|
||||
"homedecor_marble.png"
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.5, -0.5, -0.5, 0.5, -0.45, 0.5 },
|
||||
{ -0.5, -0.45, -0.5, 0.5, -0.4, -0.45 },
|
||||
{ -0.5, -0.45, 0.45, 0.5, -0.4, 0.5 },
|
||||
{ -0.5, -0.45, -0.45, -0.45, -0.4, 0.45 },
|
||||
{ 0.45, -0.45, -0.45, 0.5, -0.4, 0.45 }
|
||||
},
|
||||
},
|
||||
selection_box = homedecor.nodebox.slab_y(0.1),
|
||||
groups = {cracky=2},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_destruct = function(pos)
|
||||
homedecor.stop_particle_spawner({x=pos.x, y=pos.y+2, z=pos.z}) -- the showerhead
|
||||
homedecor.stop_particle_spawner({x=pos.x, y=pos.y+1, z=pos.z}) -- the taps, if any
|
||||
end
|
||||
})
|
||||
|
||||
--Shower Head
|
||||
|
||||
|
||||
local sh_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.2, -0.4, -0.05, 0.2, 0.1, 0.5 }
|
||||
}
|
||||
|
||||
homedecor.register("shower_head", {
|
||||
drawtype = "mesh",
|
||||
mesh = "homedecor_shower_head.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_metal_black.png^[brighten",
|
||||
"homedecor_shower_head.png"
|
||||
},
|
||||
inventory_image = "homedecor_shower_head_inv.png",
|
||||
description = S("Shower Head"),
|
||||
groups = {snappy=3},
|
||||
selection_box = sh_cbox,
|
||||
walkable = false,
|
||||
on_rotate = screwdriver.disallow,
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-2.0, z=pos.z})
|
||||
if below and below.name == "homedecor:shower_tray" then
|
||||
local particledef = {
|
||||
outlet = { x = 0, y = -0.42, z = 0.1 },
|
||||
velocity_x = { min = -0.15, max = 0.15 },
|
||||
velocity_y = -2,
|
||||
velocity_z = { min = -0.3, max = 0.1 },
|
||||
spread = 0.12
|
||||
}
|
||||
homedecor.start_particle_spawner(pos, node, particledef, "homedecor_shower")
|
||||
end
|
||||
return itemstack
|
||||
end,
|
||||
on_destruct = function(pos)
|
||||
homedecor.stop_particle_spawner(pos)
|
||||
end
|
||||
})
|
||||
|
||||
local bs_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -8/16, -8/16, 1/16, 8/16, 8/16, 8/16 }
|
||||
}
|
||||
|
||||
homedecor.register("bathroom_set", {
|
||||
drawtype = "mesh",
|
||||
mesh = "homedecor_bathroom_set.obj",
|
||||
tiles = {
|
||||
"homedecor_bathroom_set_mirror.png",
|
||||
"homedecor_bathroom_set_tray.png",
|
||||
"homedecor_bathroom_set_toothbrush.png",
|
||||
"homedecor_bathroom_set_cup.png",
|
||||
"homedecor_bathroom_set_toothpaste.png",
|
||||
},
|
||||
inventory_image = "homedecor_bathroom_set_inv.png",
|
||||
description = S("Bathroom sundries set"),
|
||||
groups = {snappy=3},
|
||||
selection_box = bs_cbox,
|
||||
walkable = false,
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_alias("3dforniture:toilet", "homedecor:toilet")
|
||||
minetest.register_alias("3dforniture:toilet_open", "homedecor:toilet_open")
|
||||
minetest.register_alias("3dforniture:sink", "homedecor:sink")
|
||||
minetest.register_alias("3dforniture:taps", "homedecor:taps")
|
||||
minetest.register_alias("3dforniture:shower_tray", "homedecor:shower_tray")
|
||||
minetest.register_alias("3dforniture:shower_head", "homedecor:shower_head")
|
||||
minetest.register_alias("3dforniture:table_lamp", "homedecor:table_lamp_off")
|
||||
|
||||
minetest.register_alias("toilet", "homedecor:toilet")
|
||||
minetest.register_alias("sink", "homedecor:sink")
|
||||
minetest.register_alias("taps", "homedecor:taps")
|
||||
minetest.register_alias("shower_tray", "homedecor:shower_tray")
|
||||
minetest.register_alias("shower_head", "homedecor:shower_head")
|
||||
minetest.register_alias("table_lamp", "homedecor:table_lamp_off")
|
@ -1,214 +0,0 @@
|
||||
|
||||
local S, NS = homedecor.gettext, homedecor.ngettext
|
||||
|
||||
local function N_(x) return x end
|
||||
|
||||
local bedcolors = {
|
||||
{ S("black"), "black", "#000000:200" }, --new cg72
|
||||
{ S("brown"), "brown", "#603010:175" },
|
||||
{ S("blue"), "blue", "#0000d0:150" },
|
||||
{ S("cyan"), "cyan", "#009fa7:150" }, --new cg72
|
||||
{ S("dark grey"), "darkgrey", "#101010:175" },
|
||||
{ S("dark green"), "dark_green", "#007000:150" },
|
||||
{ S("green"), "green", "#00d000:150" }, --new cg72
|
||||
{ S("grey"), "grey", "#101010:100" }, --new cg72
|
||||
{ S("magenta"), "magenta", "#e0048b:150" }, --new cg72
|
||||
{ S("orange"), "orange", "#ff3000:150" },
|
||||
{ S("pink"), "pink", "#ff80b0:150" },
|
||||
{ S("red"), "red", "#d00000:150" },
|
||||
{ S("violet"), "violet", "#7000e0:150" },
|
||||
{ S("white"), "white", "#000000:000" }, --new cg72
|
||||
{ S("yellow"), "yellow", "#ffe000:150" }
|
||||
}
|
||||
|
||||
local bed_sbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 1.5 }
|
||||
}
|
||||
|
||||
local bed_cbox = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.5, -0.5, -0.5, 0.5, -0.05, 1.5 },
|
||||
{ -0.5, -0.5, 1.44, 0.5, 0.5, 1.5 },
|
||||
{ -0.5, -0.5, -0.5, 0.5, 0.18, -0.44 },
|
||||
}
|
||||
}
|
||||
|
||||
local kbed_sbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.5, -0.5, -0.5, 1.5, 0.5, 1.5 }
|
||||
}
|
||||
|
||||
local kbed_cbox = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.5, -0.5, -0.5, 1.5, -0.05, 1.5 },
|
||||
{ -0.5, -0.5, 1.44, 1.5, 0.5, 1.5 },
|
||||
{ -0.5, -0.5, -0.5, 1.5, 0.18, -0.44 },
|
||||
}
|
||||
}
|
||||
|
||||
for _, c in ipairs(bedcolors) do
|
||||
local colordesc, color, hue = unpack(c)
|
||||
local color2=color
|
||||
|
||||
if color == "darkgrey" then
|
||||
color2 = "dark_grey"
|
||||
end
|
||||
homedecor.register("bed_"..color.."_regular", {
|
||||
mesh = "homedecor_bed_regular.obj",
|
||||
tiles = {
|
||||
"homedecor_bed_frame.png",
|
||||
"default_wood.png",
|
||||
"wool_white.png",
|
||||
"wool_"..color2..".png",
|
||||
"homedecor_bed_bottom.png",
|
||||
"wool_"..color2..".png^[brighten", -- pillow
|
||||
},
|
||||
inventory_image = "homedecor_bed_inv.png^(homedecor_bed_overlay_inv.png^[colorize:"..hue..")",
|
||||
description = S("Bed (@1)", colordesc),
|
||||
groups = {snappy=3},
|
||||
selection_box = bed_sbox,
|
||||
collision_box = bed_cbox,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_rotate = screwdriver.disallow,
|
||||
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
||||
if not placer:get_player_control().sneak then
|
||||
return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, color)
|
||||
end
|
||||
end,
|
||||
after_dig_node = function(pos)
|
||||
homedecor.unextend_bed(pos, color)
|
||||
end,
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
if minetest.get_modpath("beds") then
|
||||
beds.on_rightclick(pos, clicker)
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
homedecor.register("bed_"..color.."_extended", {
|
||||
mesh = "homedecor_bed_extended.obj",
|
||||
tiles = {
|
||||
"homedecor_bed_frame.png",
|
||||
"default_wood.png",
|
||||
"wool_white.png",
|
||||
"wool_"..color2..".png",
|
||||
"homedecor_bed_bottom.png",
|
||||
"wool_"..color2..".png^[brighten",
|
||||
},
|
||||
selection_box = bed_sbox,
|
||||
collision_box = bed_cbox,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
expand = { forward = "air" },
|
||||
on_rotate = screwdriver.disallow,
|
||||
after_dig_node = function(pos)
|
||||
homedecor.unextend_bed(pos, color)
|
||||
end,
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
if minetest.get_modpath("beds") then
|
||||
beds.on_rightclick(pos, clicker)
|
||||
end
|
||||
return itemstack
|
||||
end,
|
||||
drop = "homedecor:bed_"..color.."_regular"
|
||||
})
|
||||
|
||||
homedecor.register("bed_"..color.."_kingsize", {
|
||||
mesh = "homedecor_bed_kingsize.obj",
|
||||
tiles = {
|
||||
"homedecor_bed_frame.png",
|
||||
"default_wood.png",
|
||||
"wool_white.png",
|
||||
"wool_"..color2..".png",
|
||||
"homedecor_bed_bottom.png",
|
||||
"wool_"..color2..".png^[brighten",
|
||||
},
|
||||
inventory_image = "homedecor_bed_kingsize_inv.png^(homedecor_bed_kingsize_overlay_inv.png^[colorize:"..hue..")",
|
||||
groups = {snappy=3, not_in_creative_inventory=1},
|
||||
description = S("Bed (@1, king sized)", colordesc),
|
||||
groups = {snappy=3, not_in_creative_inventory=1},
|
||||
selection_box = kbed_sbox,
|
||||
collision_box = kbed_cbox,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_rotate = screwdriver.disallow,
|
||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||
local inv = digger:get_inventory()
|
||||
if digger:get_player_control().sneak and inv:room_for_item("main", "bed_"..color.."_regular 1") then
|
||||
inv:remove_item("main", "homedecor:bed_"..color.."_kingsize 1")
|
||||
inv:add_item("main", "homedecor:bed_"..color.."_regular 2")
|
||||
end
|
||||
end,
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
if minetest.get_modpath("beds") then
|
||||
beds.on_rightclick(pos, clicker)
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_alias("homedecor:bed_"..color.."_foot", "homedecor:bed_"..color.."_regular")
|
||||
minetest.register_alias("homedecor:bed_"..color.."_footext", "homedecor:bed_"..color.."_extended")
|
||||
minetest.register_alias("homedecor:bed_"..color.."_head", "air")
|
||||
|
||||
end
|
||||
|
||||
|
||||
for _, w in pairs({ N_("mahogany"), N_("oak") }) do
|
||||
homedecor.register("nightstand_"..w.."_one_drawer", {
|
||||
description = S("Nightstand with One Drawer (@1)", S(w)),
|
||||
tiles = { 'homedecor_nightstand_'..w..'_tb.png',
|
||||
'homedecor_nightstand_'..w..'_tb.png^[transformFY',
|
||||
'homedecor_nightstand_'..w..'_lr.png^[transformFX',
|
||||
'homedecor_nightstand_'..w..'_lr.png',
|
||||
'homedecor_nightstand_'..w..'_back.png',
|
||||
'homedecor_nightstand_'..w..'_1_drawer_front.png'},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -8/16, 0, -30/64, 8/16, 8/16, 8/16 }, -- top half
|
||||
{ -7/16, 1/16, -32/64, 7/16, 7/16, -29/64}, -- drawer face
|
||||
{ -8/16, -8/16, -30/64, -7/16, 0, 8/16 }, -- left
|
||||
{ 7/16, -8/16, -30/64, 8/16, 0, 8/16 }, -- right
|
||||
{ -8/16, -8/16, 7/16, 8/16, 0, 8/16 }, -- back
|
||||
{ -8/16, -8/16, -30/64, 8/16, -7/16, 8/16 } -- bottom
|
||||
}
|
||||
},
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = { type = "regular" },
|
||||
infotext=S("One-drawer Nightstand"),
|
||||
inventory = {
|
||||
size=8,
|
||||
lockable=true,
|
||||
},
|
||||
})
|
||||
|
||||
homedecor.register("nightstand_"..w.."_two_drawers", {
|
||||
description = S("Nightstand with Two Drawers (@1)", S(w)),
|
||||
tiles = { 'homedecor_nightstand_'..w..'_tb.png',
|
||||
'homedecor_nightstand_'..w..'_tb.png^[transformFY',
|
||||
'homedecor_nightstand_'..w..'_lr.png^[transformFX',
|
||||
'homedecor_nightstand_'..w..'_lr.png',
|
||||
'homedecor_nightstand_'..w..'_back.png',
|
||||
'homedecor_nightstand_'..w..'_2_drawer_front.png'},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -8/16, -8/16, -30/64, 8/16, 8/16, 8/16 }, -- main body
|
||||
{ -7/16, 1/16, -32/64, 7/16, 7/16, -29/64 }, -- top drawer face
|
||||
{ -7/16, -7/16, -32/64, 7/16, -1/16, -29/64 }, -- bottom drawer face
|
||||
}
|
||||
},
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = { type = "regular" },
|
||||
infotext=S("Two-drawer Nightstand"),
|
||||
inventory = {
|
||||
size=16,
|
||||
lockable=true,
|
||||
},
|
||||
})
|
||||
end
|
@ -1,99 +0,0 @@
|
||||
local clock_sbox = {
|
||||
type = "fixed",
|
||||
fixed = { -8/32, -8/32, 14/32, 8/32, 8/32, 16/32 }
|
||||
}
|
||||
|
||||
local clock_materials = {
|
||||
{ "plastic", "homedecor_generic_plastic_black.png^[colorize:#ffffff:220" },
|
||||
{ "wood", "default_wood.png" }
|
||||
}
|
||||
|
||||
for i in ipairs(clock_materials) do
|
||||
local m1 = clock_materials[i][1]
|
||||
local m2 = clock_materials[i][2]
|
||||
homedecor.register("analog_clock_"..m1, {
|
||||
description = "Analog clock ("..m1..")",
|
||||
mesh = "homedecor_analog_clock.obj",
|
||||
tiles = {
|
||||
"homedecor_analog_clock_face.png",
|
||||
m2,
|
||||
"homedecor_analog_clock_back.png"
|
||||
},
|
||||
inventory_image = "homedecor_analog_clock_"..m1.."_inv.png",
|
||||
walkable = false,
|
||||
selection_box = clock_sbox,
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
end
|
||||
|
||||
homedecor.register("digital_clock", {
|
||||
description = "Digital clock",
|
||||
tiles = {
|
||||
"homedecor_digital_clock_edges.png",
|
||||
"homedecor_digital_clock_edges.png",
|
||||
"homedecor_digital_clock_edges.png",
|
||||
"homedecor_digital_clock_edges.png",
|
||||
"homedecor_digital_clock_back.png",
|
||||
"homedecor_digital_clock_front.png"
|
||||
},
|
||||
inventory_image = "homedecor_digital_clock_inv.png",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.28125, -0.25, 0.4375, 0.3125, 0.25, 0.5},
|
||||
}
|
||||
},
|
||||
walkable = false,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
groups = {snappy=3},
|
||||
})
|
||||
|
||||
homedecor.register("alarm_clock", {
|
||||
description = "Alarm clock",
|
||||
tiles = {
|
||||
"homedecor_alarm_clock_top.png",
|
||||
"homedecor_alarm_clock_bottom.png",
|
||||
"homedecor_alarm_clock_sides.png",
|
||||
"homedecor_alarm_clock_sides.png^[transformFX",
|
||||
"homedecor_alarm_clock_back.png",
|
||||
"homedecor_alarm_clock_front.png"
|
||||
},
|
||||
inventory_image = "homedecor_alarm_clock_inv.png",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -9/32, -16/32, 7/32, 10/32, -5/32, 16/32 },
|
||||
}
|
||||
},
|
||||
walkable = false,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
groups = {snappy=3},
|
||||
})
|
||||
|
||||
local gf_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -7/16, -8/16, -7/16, 7/16, 24/16, 7/16 }
|
||||
}
|
||||
|
||||
homedecor.register("grandfather_clock", {
|
||||
description = "Grandfather Clock",
|
||||
mesh = "homedecor_grandfather_clock.obj",
|
||||
tiles = {
|
||||
"default_glass.png",
|
||||
"homedecor_grandfather_clock_face.png",
|
||||
"homedecor_generic_wood_luxury.png",
|
||||
"homedecor_grandfather_clock_face_edge.png",
|
||||
"homedecor_generic_metal_brass.png"
|
||||
},
|
||||
inventory_image = "homedecor_grandfather_clock_inv.png",
|
||||
groups = { snappy = 3 },
|
||||
selection_box = gf_cbox,
|
||||
collision_box = gf_cbox,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
expand = { top="placeholder" },
|
||||
on_rotate = screwdriver.rotate_simple
|
||||
})
|
||||
|
||||
minetest.register_alias("homedecor:grandfather_clock_bottom", "homedecor:grandfather_clock")
|
||||
minetest.register_alias("homedecor:grandfather_clock_top", "air")
|
@ -1,18 +0,0 @@
|
||||
Most code and all textures by Vanessa Ezekowitz.
|
||||
|
||||
Some code copied and modified from the game's default mods (especially
|
||||
doors) and ironzorg's flowers mod.
|
||||
|
||||
Licenses:
|
||||
* For the lua code, LGPL.
|
||||
* For the door open/close sound, CC-By-SA 3.0 by Slanesh on freesound.org
|
||||
http://freesound.org/people/Slanesh/sounds/31768/
|
||||
* For the gate open/close sound, CC0, by j1987 on freesound.org
|
||||
http://freesound.org/people/j1987/sounds/106116/
|
||||
* For the doorbell sound, CC0 by guitarguy1985 on freesound.org
|
||||
http://freesound.org/people/guitarguy1985/sounds/69384/
|
||||
* For the book sound, Public Domain by mckinneysound's on http://www.freesfx.co.uk/
|
||||
http://www.freesfx.co.uk/sfx/book?p=3
|
||||
* For the phone ring, Public Domain by andyt's on http://www.freesfx.co.uk/
|
||||
http://www.freesfx.co.uk/sfx/phone?p=5
|
||||
* For all images and everything else, WTFPL.
|
3416
homedecor/crafts.lua
@ -1,12 +0,0 @@
|
||||
default
|
||||
building_blocks?
|
||||
signs_lib?
|
||||
moreblocks?
|
||||
technic?
|
||||
dye?
|
||||
bees?
|
||||
intllib?
|
||||
bucket?
|
||||
beds?
|
||||
flowers?
|
||||
3d_armor?
|
@ -1,648 +0,0 @@
|
||||
-- Node definitions for Homedecor doors
|
||||
|
||||
local S = homedecor.gettext
|
||||
|
||||
local function N_(x) return x end
|
||||
|
||||
-- doors
|
||||
|
||||
local function isSolid(pos, adjust)
|
||||
local adj = {x = adjust[1], y = adjust[2], z = adjust[3]}
|
||||
local node = minetest.get_node(vector.add(pos,adj))
|
||||
if node then
|
||||
local idef = minetest.registered_nodes[minetest.get_node(vector.add(pos,adj)).name]
|
||||
if idef then
|
||||
return idef.walkable
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local function countSolids(pos,node,level)
|
||||
local solids = 0
|
||||
for x = -1, 1 do
|
||||
for z = -1, 1 do
|
||||
local y = (node.param2 == 5) and -level or level
|
||||
-- special cases when x == z == 0
|
||||
if x == 0 and z == 0 then
|
||||
if level == 1 then
|
||||
-- when looking past the trap door, cannot be solid in center
|
||||
if isSolid(pos,{x,y,z}) then
|
||||
return false
|
||||
end
|
||||
-- no else. it doesn't matter if x == y == z is solid, that's us.
|
||||
end
|
||||
elseif isSolid(pos,{x,y,z}) then
|
||||
solids = solids + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
return solids
|
||||
end
|
||||
|
||||
local function calculateClosed(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
-- the door is considered closed if it is closing off something.
|
||||
|
||||
local direction = node.param2 % 6
|
||||
local isTrap = direction == 0 or direction == 5
|
||||
if isTrap then
|
||||
-- the trap door is considered closed when all nodes on its sides are solid
|
||||
-- or all nodes in the 3x3 above/below it are solid except the center
|
||||
for level = 0, 1 do
|
||||
local solids = countSolids(pos,node,level)
|
||||
if solids == 8 then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
else
|
||||
-- the door is considered closed when the nodes on its sides are solid
|
||||
-- or the 3 nodes in its facing direction are solid nonsolid solid
|
||||
-- if the door has two levels (i.e. not a gate) then this must
|
||||
-- be true for the top node as well.
|
||||
|
||||
-- sorry I dunno the math to figure whether to x or z
|
||||
if direction == 1 or direction == 2 then
|
||||
if isSolid(pos,{0,0,-1}) and isSolid(pos,{0,0,1}) then
|
||||
if string.find(node.name,'_bottom_') then
|
||||
return calculateClosed({x=pos.x,y=pos.y+1,z=pos.z})
|
||||
else
|
||||
return true
|
||||
end
|
||||
end
|
||||
local x = (direction == 1) and 1 or -1
|
||||
if isSolid(pos,{x,0,-1}) and not isSolid(pos,{x,0,0}) and isSolid(pos,{x,0,1}) then
|
||||
if string.find(node.name,'_bottom_') then
|
||||
return calculateClosed({x=pos.x,y=pos.y+1,z=pos.z})
|
||||
else
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
else
|
||||
-- direction == 3 or 4
|
||||
if isSolid(pos,{-1,0,0}) and isSolid(pos,{1,0,0}) then
|
||||
if string.find(node.name,'_bottom_') then
|
||||
return calculateClosed({x=pos.x,y=pos.y+1,z=pos.z})
|
||||
else
|
||||
return true
|
||||
end
|
||||
end
|
||||
local z = (direction == 3) and 1 or -1
|
||||
if isSolid(pos,{-1,0,z}) and not isSolid(pos,{0,0,z}) and isSolid(pos,{1,0,z}) then
|
||||
if string.find(node.name,'_bottom_') then
|
||||
return calculateClosed({x=pos.x,y=pos.y+1,z=pos.z})
|
||||
else
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- isClosed flag, is 0 or 1 0 = open, 1 = closed
|
||||
local function getClosed(pos)
|
||||
local isClosed = minetest.get_meta(pos):get_string('closed')
|
||||
if isClosed=='' then
|
||||
return calculateClosed(pos)
|
||||
else
|
||||
isClosed = tonumber(isClosed)
|
||||
-- may be closed or open (1 or 0)
|
||||
return isClosed == 1
|
||||
end
|
||||
end
|
||||
|
||||
local function addDoorNode(pos,def,isClosed)
|
||||
minetest.set_node(pos, def)
|
||||
minetest.get_meta(pos):set_int('closed', isClosed and 1 or 0)
|
||||
end
|
||||
|
||||
local door_model_list = {
|
||||
{ name = "closet_mahogany",
|
||||
description = N_("Mahogany Closet Door (@1 opening)"),
|
||||
mesh = "homedecor_door_closet.obj"
|
||||
},
|
||||
|
||||
{ name = "closet_oak",
|
||||
description = N_("Oak Closet Door (@1 opening)"),
|
||||
mesh = "homedecor_door_closet.obj"
|
||||
},
|
||||
|
||||
{ name = "exterior_fancy",
|
||||
description = N_("Fancy Wood/Glass Door (@1 opening)"),
|
||||
mesh = "homedecor_door_fancy.obj",
|
||||
tiles = {
|
||||
"homedecor_door_exterior_fancy.png",
|
||||
"homedecor_door_exterior_fancy_insert.png"
|
||||
},
|
||||
usealpha = true
|
||||
},
|
||||
|
||||
{ name = "glass",
|
||||
description = N_("Glass Office Door (@1 opening)"),
|
||||
mesh = "homedecor_door_plain.obj"
|
||||
},
|
||||
|
||||
{ name = "wood_glass_oak",
|
||||
description = N_("Glass and Wood, Oak-colored (@1 opening)"),
|
||||
mesh = "homedecor_door_wood_glass.obj",
|
||||
tiles = {
|
||||
"homedecor_door_wood_glass_oak.png",
|
||||
"homedecor_door_wood_glass_insert.png",
|
||||
}
|
||||
},
|
||||
|
||||
{ name = "wood_glass_mahogany",
|
||||
description = N_("Glass and Wood, Mahogany-colored (@1 opening)"),
|
||||
mesh = "homedecor_door_wood_glass.obj",
|
||||
tiles = {
|
||||
"homedecor_door_wood_glass_mahogany.png",
|
||||
"homedecor_door_wood_glass_insert.png",
|
||||
}
|
||||
},
|
||||
|
||||
{ name = "wood_glass_white",
|
||||
description = N_("Glass and Wood, White (@1 opening)"),
|
||||
mesh = "homedecor_door_wood_glass.obj",
|
||||
tiles = {
|
||||
"homedecor_door_wood_glass_white.png",
|
||||
"homedecor_door_wood_glass_insert.png",
|
||||
}
|
||||
},
|
||||
|
||||
{ name = "wood_plain",
|
||||
description = N_("Plain Wooden Door (@1 opening)"),
|
||||
mesh = "homedecor_door_plain.obj"
|
||||
},
|
||||
|
||||
{ name = "bedroom",
|
||||
description = N_("White Bedroom Door (@1 opening)"),
|
||||
mesh = "homedecor_door_plain.obj"
|
||||
},
|
||||
|
||||
{ name = "wrought_iron",
|
||||
description = N_("Wrought Iron Gate/Door (@1 opening)"),
|
||||
mesh = "homedecor_door_wrought_iron.obj"
|
||||
},
|
||||
|
||||
{ name = "woodglass",
|
||||
description = N_("Wooden door with glass insert (@1 opening)"),
|
||||
mesh = "homedecor_door_woodglass_typea.obj",
|
||||
tiles = {
|
||||
"homedecor_door_woodglass_typea.png",
|
||||
"homedecor_door_woodglass_typea_insert.png",
|
||||
},
|
||||
usealpha = true
|
||||
},
|
||||
|
||||
{ name = "woodglass2",
|
||||
description = N_("Wooden door with glass insert, type 2 (@1 opening)"),
|
||||
mesh = "homedecor_door_plain.obj",
|
||||
usealpha = true
|
||||
},
|
||||
}
|
||||
|
||||
local def_selbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.5, -0.5, 0.375, 0.5, 1.5, 0.5 }
|
||||
}
|
||||
|
||||
local sides = { N_("left"), N_("right") }
|
||||
|
||||
for i, side in ipairs(sides) do
|
||||
|
||||
for _, door_model in ipairs(door_model_list) do
|
||||
|
||||
local doorname = door_model.name
|
||||
|
||||
local selbox = door_model.selectbox or def_selbox
|
||||
local colbox = door_model.collisionbox or door_model.selectbox or def_selbox
|
||||
local mesh = door_model.mesh
|
||||
local groups = {snappy = 3}
|
||||
|
||||
if side == "right" then
|
||||
mesh = string.gsub(door_model.mesh, ".obj", "_right.obj")
|
||||
groups = {snappy = 3, not_in_creative_inventory = 1}
|
||||
end
|
||||
|
||||
minetest.register_node("homedecor:door_"..doorname.."_"..side, {
|
||||
description = S(door_model.description, S(side)),
|
||||
drawtype = "mesh",
|
||||
mesh = mesh,
|
||||
tiles = door_model.tiles or { "homedecor_door_"..doorname..".png" },
|
||||
inventory_image = "homedecor_door_"..doorname.."_inv.png",
|
||||
wield_image = "homedecor_door_"..doorname.."_inv.png",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = groups,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
use_texture_alpha = door_model.usealpha,
|
||||
selection_box = selbox,
|
||||
collision_box = colbox,
|
||||
on_rotate = screwdriver.rotate_simple,
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
return homedecor.stack_wing(itemstack, placer, pointed_thing,
|
||||
"homedecor:door_"..doorname.."_left", "air",
|
||||
"homedecor:door_"..doorname.."_right", "air")
|
||||
end,
|
||||
on_construct = function(pos)
|
||||
minetest.get_meta(pos):set_int("closed", 1)
|
||||
end,
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
homedecor.flip_door(pos, node, clicker, doorname, side)
|
||||
return itemstack
|
||||
end,
|
||||
-- both left and right doors may be used for open or closed doors
|
||||
-- so they have to have both action_on and action_off and just
|
||||
-- check when that action is invoked if to continue
|
||||
|
||||
on_punch = function(pos, node, puncher)
|
||||
minetest.get_meta(pos):set_string('closed',nil)
|
||||
end,
|
||||
drop = "homedecor:door_"..doorname.."_left",
|
||||
mesecons = {
|
||||
effector = {
|
||||
action_on = function(pos,node)
|
||||
local isClosed = getClosed(pos)
|
||||
if isClosed then
|
||||
homedecor.flip_door(pos,node,nil,doorname,side,isClosed)
|
||||
end
|
||||
end,
|
||||
action_off = function(pos,node)
|
||||
local isClosed = getClosed(pos)
|
||||
if not isClosed then
|
||||
homedecor.flip_door(pos,node,nil,doorname,side,isClosed)
|
||||
end
|
||||
end
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_alias("homedecor:door_"..doorname.."_top_"..side, "air")
|
||||
minetest.register_alias("homedecor:door_"..doorname.."_bottom_"..side, "homedecor:door_"..doorname.."_"..side)
|
||||
|
||||
end
|
||||
|
||||
minetest.register_alias("homedecor:door_wood_glass_top_"..side, "air")
|
||||
minetest.register_alias("homedecor:door_wood_glass_bottom_"..side, "homedecor:door_wood_glass_oak_"..side)
|
||||
|
||||
end
|
||||
|
||||
-- Gates
|
||||
|
||||
local gate_list = {
|
||||
{ "picket", S("Unpainted Picket Fence Gate") },
|
||||
{ "picket_white", S("White Picket Fence Gate") },
|
||||
{ "barbed_wire", S("Barbed Wire Fence Gate") },
|
||||
{ "chainlink", S("Chainlink Fence Gate") },
|
||||
}
|
||||
|
||||
local gate_models_closed = {
|
||||
{{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }},
|
||||
|
||||
{{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }},
|
||||
|
||||
{{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 }, -- left post
|
||||
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
|
||||
{ -8/16, 7/16, 13/32, 8/16, 8/16, 15/32 }, -- top piece
|
||||
{ -8/16, -8/16, 13/32, 8/16, -7/16, 15/32 }, -- bottom piece
|
||||
{ -6/16, -8/16, 7/16, 6/16, 8/16, 7/16 }}, -- the wire
|
||||
|
||||
{{ -8/16, -8/16, 6/16, -7/16, 8/16, 8/16 }, -- left post
|
||||
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
|
||||
{ -8/16, 7/16, 13/32, 8/16, 8/16, 15/32 }, -- top piece
|
||||
{ -8/16, -8/16, 13/32, 8/16, -7/16, 15/32 }, -- bottom piece
|
||||
{ -8/16, -8/16, 7/16, 8/16, 8/16, 7/16 }, -- the chainlink itself
|
||||
{ -8/16, -3/16, 6/16, -6/16, 3/16, 8/16 }} -- the lump representing the lock
|
||||
}
|
||||
|
||||
local gate_models_open = {
|
||||
{{ 0.498, -0.5, -0.5, 0.498, 0.5, 0.5 }},
|
||||
|
||||
{{ 0.498, -0.5, -0.5, 0.498, 0.5, 0.5 }},
|
||||
|
||||
{{ 6/16, -8/16, -8/16, 8/16, 8/16, -6/16 }, -- left post
|
||||
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
|
||||
{ 13/32, 7/16, -8/16, 15/32, 8/16, 8/16 }, -- top piece
|
||||
{ 13/32, -8/16, -8/16, 15/32, -7/16, 8/16 }, -- bottom piece
|
||||
{ 7/16, -8/16, -6/16, 7/16, 8/16, 6/16 }}, -- the wire
|
||||
|
||||
{{ 6/16, -8/16, -8/16, 8/16, 8/16, -7/16 }, -- left post
|
||||
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post
|
||||
{ 13/32, 7/16, -8/16, 15/32, 8/16, 8/16 }, -- top piece
|
||||
{ 13/32, -8/16, -8/16, 15/32, -7/16, 8/16 }, -- bottom piece
|
||||
{ 7/16, -8/16, -8/16, 7/16, 8/16, 8/16 }, -- the chainlink itself
|
||||
{ 6/16, -3/16, -8/16, 8/16, 3/16, -6/16 }} -- the lump representing the lock
|
||||
}
|
||||
|
||||
for i, g in ipairs(gate_list) do
|
||||
|
||||
local gate, gatedesc = unpack(g)
|
||||
|
||||
local tiles = {
|
||||
"homedecor_gate_"..gate.."_tb.png",
|
||||
"homedecor_gate_"..gate.."_tb.png",
|
||||
"homedecor_gate_"..gate.."_lr.png",
|
||||
"homedecor_gate_"..gate.."_lr.png",
|
||||
"homedecor_gate_"..gate.."_fb.png^[transformFX",
|
||||
"homedecor_gate_"..gate.."_fb.png"
|
||||
}
|
||||
|
||||
if gate == "barbed_wire" then
|
||||
tiles = {
|
||||
"homedecor_gate_barbed_wire_edges.png",
|
||||
"homedecor_gate_barbed_wire_edges.png",
|
||||
"homedecor_gate_barbed_wire_edges.png",
|
||||
"homedecor_gate_barbed_wire_edges.png",
|
||||
"homedecor_gate_barbed_wire_fb.png^[transformFX",
|
||||
"homedecor_gate_barbed_wire_fb.png"
|
||||
}
|
||||
end
|
||||
|
||||
if gate == "picket" or gate == "picket_white" then
|
||||
tiles = {
|
||||
"homedecor_blanktile.png",
|
||||
"homedecor_blanktile.png",
|
||||
"homedecor_blanktile.png",
|
||||
"homedecor_blanktile.png",
|
||||
"homedecor_gate_"..gate.."_back.png",
|
||||
"homedecor_gate_"..gate.."_front.png"
|
||||
}
|
||||
end
|
||||
|
||||
local def = {
|
||||
drawtype = "nodebox",
|
||||
description = gatedesc,
|
||||
tiles = tiles,
|
||||
paramtype = "light",
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
paramtype2 = "facedir",
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = gate_models_closed[i]
|
||||
},
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
homedecor.flip_gate(pos, node, clicker, gate, "closed")
|
||||
return itemstack
|
||||
end,
|
||||
mesecons = {
|
||||
effector = {
|
||||
action_on = function(pos,node) homedecor.flip_gate(pos,node,nil,gate, "closed") end
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-- gates when placed default to closed, closed.
|
||||
|
||||
minetest.register_node("homedecor:gate_"..gate.."_closed", def)
|
||||
|
||||
-- this is either a terrible idea or a great one
|
||||
def = table.copy(def)
|
||||
def.groups.not_in_creative_inventory = 1
|
||||
def.selection_box.fixed = { 0.4, -0.5, -0.5, 0.5, 0.5, 0.5 }
|
||||
def.node_box.fixed = gate_models_open[i]
|
||||
def.tiles = {
|
||||
tiles[1],
|
||||
tiles[2],
|
||||
tiles[6],
|
||||
tiles[5],
|
||||
tiles[4],
|
||||
tiles[3]
|
||||
}
|
||||
def.drop = "homedecor:gate_"..gate.."_closed"
|
||||
def.on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
homedecor.flip_gate(pos, node, clicker, gate, "open")
|
||||
return itemstack
|
||||
end
|
||||
def.mesecons.effector = {
|
||||
action_off = function(pos,node) homedecor.flip_gate(pos,node,nil,gate, "open") end
|
||||
}
|
||||
|
||||
minetest.register_node("homedecor:gate_"..gate.."_open", def)
|
||||
end
|
||||
|
||||
minetest.register_alias("homedecor:fence_barbed_wire_gate_open", "homedecor:gate_barbed_wire_open")
|
||||
minetest.register_alias("homedecor:fence_barbed_wire_gate_closed", "homedecor:gate_barbed_wire_closed")
|
||||
minetest.register_alias("homedecor:fence_chainlink_gate_open", "homedecor:gate_chainlink_open")
|
||||
minetest.register_alias("homedecor:fence_chainlink_gate_closed", "homedecor:gate_chainlink_closed")
|
||||
minetest.register_alias("homedecor:fence_picket_gate_open", "homedecor:gate_picket_open")
|
||||
minetest.register_alias("homedecor:fence_picket_gate_closed", "homedecor:gate_picket_closed")
|
||||
minetest.register_alias("homedecor:fence_picket_gate_white_open", "homedecor:gate_picket_white_open")
|
||||
minetest.register_alias("homedecor:fence_picket_gate_white_closed", "homedecor:gate_picket_white_closed")
|
||||
|
||||
-- to open a door, you switch left for right and subtract from param2, or vice versa right for left
|
||||
-- that is to say open "right" doors become left door nodes, and open left doors right door nodes.
|
||||
-- also adjusting param2 so the node is at 90 degrees.
|
||||
|
||||
function homedecor.flip_door(pos, node, player, name, side, isClosed)
|
||||
if isClosed == nil then
|
||||
isClosed = getClosed(pos)
|
||||
end
|
||||
-- this is where we swap the isClosed status!
|
||||
-- i.e. if isClosed, we're adding an open door
|
||||
-- and if not isClosed, a closed door
|
||||
isClosed = not isClosed
|
||||
|
||||
local rside
|
||||
local nfdir
|
||||
local ofdir = node.param2 or 0
|
||||
if side == "left" then
|
||||
rside = "right"
|
||||
nfdir=ofdir - 1
|
||||
if nfdir < 0 then nfdir = 3 end
|
||||
else
|
||||
rside = "left"
|
||||
nfdir=ofdir + 1
|
||||
if nfdir > 3 then nfdir = 0 end
|
||||
end
|
||||
local sound = isClosed and 'close' or 'open'
|
||||
minetest.sound_play("homedecor_door_"..sound, {
|
||||
pos=pos,
|
||||
max_hear_distance = 5,
|
||||
gain = 2,
|
||||
})
|
||||
-- XXX: does the top half have to remember open/closed too?
|
||||
minetest.set_node({x=pos.x, y=pos.y+1, z=pos.z}, { name = "homedecor:door_"..name.."_top_"..rside, param2=nfdir})
|
||||
|
||||
addDoorNode(pos,{ name = "homedecor:door_"..name.."_bottom_"..rside, param2=nfdir },isClosed)
|
||||
end
|
||||
|
||||
function homedecor.flip_gate(pos, node, player, gate, oc)
|
||||
local isClosed = getClosed(pos);
|
||||
minetest.sound_play("homedecor_gate_open_close", {
|
||||
pos=pos,
|
||||
max_hear_distance = 5,
|
||||
gain = 2,
|
||||
})
|
||||
|
||||
local fdir = node.param2 or 0
|
||||
|
||||
-- since right facing gates use "open" nodes for closed, we need an
|
||||
-- isClosed flag to tell if it's "really" closed.
|
||||
|
||||
local gateresult
|
||||
if oc == "closed" then
|
||||
gateresult = "homedecor:gate_"..gate.."_open"
|
||||
else
|
||||
gateresult = "homedecor:gate_"..gate.."_closed"
|
||||
end
|
||||
|
||||
local def = {name=gateresult, param2=fdir}
|
||||
|
||||
addDoorNode(pos, def, isClosed)
|
||||
|
||||
-- the following opens and closes gates below and above in sync with this one
|
||||
-- (without three gate open/close sounds)
|
||||
|
||||
local above = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
local below = {x=pos.x, y=pos.y-1, z=pos.z}
|
||||
local nodeabove = minetest.get_node(above)
|
||||
local nodebelow = minetest.get_node(below)
|
||||
|
||||
if string.find(nodeabove.name, "homedecor:gate_"..gate) then
|
||||
addDoorNode(above, def, isClosed)
|
||||
end
|
||||
|
||||
if string.find(nodebelow.name, "homedecor:gate_"..gate) then
|
||||
addDoorNode(below, def, isClosed)
|
||||
end
|
||||
end
|
||||
|
||||
-- Japanese-style wood/paper wall pieces and door
|
||||
|
||||
local jp_cbox = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, 0, 0.5, 0.5, 0.0625},
|
||||
}
|
||||
|
||||
minetest.register_node("homedecor:japanese_wall_top", {
|
||||
description = S("Japanese wall (top)"),
|
||||
drawtype = "mesh",
|
||||
mesh = "homedecor_wall_japanese_top.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_wood_luxury.png",
|
||||
"homedecor_japanese_paper.png"
|
||||
},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {snappy=3},
|
||||
selection_box = jp_cbox,
|
||||
collision_box = jp_cbox,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("homedecor:japanese_wall_middle", {
|
||||
description = S("Japanese wall"),
|
||||
drawtype = "mesh",
|
||||
mesh = "homedecor_wall_japanese_middle.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_wood_luxury.png",
|
||||
"homedecor_japanese_paper.png"
|
||||
},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {snappy=3},
|
||||
selection_box = jp_cbox,
|
||||
collision_box = jp_cbox,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("homedecor:japanese_wall_bottom", {
|
||||
description = S("Japanese wall (bottom)"),
|
||||
drawtype = "mesh",
|
||||
mesh = "homedecor_wall_japanese_bottom.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_wood_luxury.png",
|
||||
"homedecor_japanese_paper.png"
|
||||
},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {snappy=3},
|
||||
selection_box = jp_cbox,
|
||||
collision_box = jp_cbox,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("homedecor:tatami_mat", {
|
||||
tiles = {
|
||||
"homedecor_tatami.png",
|
||||
"homedecor_tatami.png",
|
||||
"homedecor_tatami.png",
|
||||
"homedecor_tatami.png",
|
||||
"homedecor_tatami.png",
|
||||
"homedecor_tatami.png"
|
||||
},
|
||||
description = S("Japanese tatami"),
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
groups = {snappy=3},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
homedecor.register("door_japanese_closed", {
|
||||
description = S("Japanese-style door"),
|
||||
inventory_image = "homedecor_door_japanese_inv.png",
|
||||
tiles = {
|
||||
"homedecor_generic_wood_luxury.png",
|
||||
"homedecor_japanese_paper.png"
|
||||
},
|
||||
mesh = "homedecor_door_japanese_closed.obj",
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, 0, 0.5, 1.5, 0.0625},
|
||||
},
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.0625, 0.5, 1.5, 0},
|
||||
},
|
||||
expand = { top = "placeholder" },
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
minetest.set_node(pos, {name = "homedecor:door_japanese_open", param2 = node.param2})
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
homedecor.register("door_japanese_open", {
|
||||
tiles = {
|
||||
"homedecor_generic_wood_luxury.png",
|
||||
"homedecor_japanese_paper.png"
|
||||
},
|
||||
mesh = "homedecor_door_japanese_open.obj",
|
||||
groups = { snappy = 3, not_in_creative_inventory = 1 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_rotate = screwdriver.disallow,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-1.5, -0.5, -0.0625, 0.5, 1.5, 0},
|
||||
},
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {-1.5, -0.5, -0.0625, -0.5, 1.5, 0},
|
||||
},
|
||||
expand = { top = "placeholder" },
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
minetest.set_node(pos, {name = "homedecor:door_japanese_closed", param2 = node.param2})
|
||||
return itemstack
|
||||
end,
|
||||
drop = "homedecor:door_japanese_closed",
|
||||
})
|
||||
|
||||
minetest.register_alias("homedecor:jpn_door_top", "air")
|
||||
minetest.register_alias("homedecor:jpn_door_bottom", "homedecor:door_japanese_closed")
|
||||
|
||||
minetest.register_alias("homedecor:jpn_door_top_open", "air")
|
||||
minetest.register_alias("homedecor:jpn_door_bottom_open", "homedecor:door_japanese_open")
|
@ -1,78 +0,0 @@
|
||||
homedecor.register("power_outlet", {
|
||||
description = "Power Outlet",
|
||||
tiles = {
|
||||
"homedecor_outlet_edges.png",
|
||||
"homedecor_outlet_edges.png",
|
||||
"homedecor_outlet_edges.png",
|
||||
"homedecor_outlet_edges.png",
|
||||
"homedecor_outlet_back.png",
|
||||
"homedecor_outlet_edges.png"
|
||||
},
|
||||
inventory_image = "homedecor_outlet_inv.png",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.125, -0.3125, 0.4375, 0.125, 0, 0.5},
|
||||
}
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.1875, -0.375, 0.375, 0.1875, 0.0625, 0.5},
|
||||
}
|
||||
},
|
||||
groups = {cracky=3,dig_immediate=2},
|
||||
walkable = false
|
||||
})
|
||||
|
||||
homedecor.register("light_switch", {
|
||||
description = "Light switch",
|
||||
tiles = {
|
||||
"homedecor_light_switch_edges.png",
|
||||
"homedecor_light_switch_edges.png",
|
||||
"homedecor_light_switch_edges.png",
|
||||
"homedecor_light_switch_edges.png",
|
||||
"homedecor_light_switch_back.png",
|
||||
"homedecor_light_switch_front.png"
|
||||
},
|
||||
inventory_image = "homedecor_light_switch_inv.png",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.125, -0.5, 0.4375, 0.125, -0.1875, 0.5 },
|
||||
{ -0.03125, -0.3125, 0.40625, 0.03125, -0.25, 0.5 },
|
||||
|
||||
}
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.1875, -0.5625, 0.375, 0.1875, -0.1250, 0.5 },
|
||||
}
|
||||
},
|
||||
groups = {cracky=3,dig_immediate=2},
|
||||
walkable = false
|
||||
})
|
||||
|
||||
|
||||
homedecor.register("doorbell", {
|
||||
tiles = { "homedecor_doorbell.png" },
|
||||
inventory_image = "homedecor_doorbell_inv.png",
|
||||
description = "Doorbell",
|
||||
groups = {snappy=3},
|
||||
walkable = false,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.0625, 0, 0.46875, 0.0625, 0.1875, 0.5}, -- NodeBox1
|
||||
{-0.03125, 0.0625, 0.45, 0.03125, 0.125, 0.4675}, -- NodeBox2
|
||||
}
|
||||
},
|
||||
on_punch = function(pos, node, puncher, pointed_thing)
|
||||
minetest.sound_play("homedecor_doorbell", {
|
||||
pos = pos,
|
||||
gain = 1.0,
|
||||
max_hear_distance = 15
|
||||
})
|
||||
end
|
||||
})
|
@ -1,157 +0,0 @@
|
||||
-- Various home electronics
|
||||
|
||||
local S = homedecor.gettext
|
||||
|
||||
homedecor.register("speaker", {
|
||||
description = S("Large Stereo Speaker"),
|
||||
mesh="homedecor_speaker_large.obj",
|
||||
tiles = {
|
||||
"homedecor_speaker_sides.png",
|
||||
"homedecor_speaker_front.png"
|
||||
},
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_punch = function(pos, node, puncher, pointed_thing)
|
||||
minetest.set_node(pos, {name = "homedecor:speaker_open", param2 = node.param2})
|
||||
end
|
||||
})
|
||||
|
||||
homedecor.register("speaker_open", {
|
||||
description = S("Large Stereo Speaker, open front"),
|
||||
mesh="homedecor_speaker_large_open.obj",
|
||||
tiles = {
|
||||
"homedecor_speaker_sides.png",
|
||||
"homedecor_speaker_driver.png",
|
||||
"homedecor_speaker_open_front.png",
|
||||
"homedecor_generic_metal_black.png"
|
||||
},
|
||||
groups = { snappy = 3, not_in_creative_inventory=1 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_punch = function(pos, node, puncher, pointed_thing)
|
||||
minetest.set_node(pos, {name = "homedecor:speaker", param2 = node.param2})
|
||||
end
|
||||
})
|
||||
|
||||
local spk_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -3/16, -8/16, 1/16, 3/16, -2/16, 7/16 }
|
||||
}
|
||||
|
||||
homedecor.register("speaker_small", {
|
||||
description = S("Small Surround Speaker"),
|
||||
mesh="homedecor_speaker_small.obj",
|
||||
tiles = {
|
||||
"homedecor_speaker_sides.png",
|
||||
"homedecor_speaker_front.png"
|
||||
},
|
||||
selection_box = spk_cbox,
|
||||
walkable = false,
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
homedecor.register("stereo", {
|
||||
description = S("Stereo Receiver"),
|
||||
tiles = { 'homedecor_stereo_top.png',
|
||||
'homedecor_stereo_bottom.png',
|
||||
'homedecor_stereo_left.png^[transformFX',
|
||||
'homedecor_stereo_left.png',
|
||||
'homedecor_stereo_back.png',
|
||||
'homedecor_stereo_front.png'},
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
homedecor.register("projection_screen", {
|
||||
description = S("Projection Screen Material"),
|
||||
drawtype = 'signlike',
|
||||
tiles = { 'homedecor_projection_screen.png' },
|
||||
wield_image = 'homedecor_projection_screen_inv.png',
|
||||
inventory_image = 'homedecor_projection_screen_inv.png',
|
||||
walkable = false,
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
paramtype2 = 'wallmounted',
|
||||
selection_box = {
|
||||
type = "wallmounted",
|
||||
--wall_side = = <default>
|
||||
},
|
||||
})
|
||||
|
||||
homedecor.register("television", {
|
||||
description = S("Small CRT Television"),
|
||||
tiles = { 'homedecor_television_top.png',
|
||||
'homedecor_television_bottom.png',
|
||||
'homedecor_television_left.png^[transformFX',
|
||||
'homedecor_television_left.png',
|
||||
'homedecor_television_back.png',
|
||||
{ name="homedecor_television_front_animated.png",
|
||||
animation={
|
||||
type="vertical_frames",
|
||||
aspect_w=16,
|
||||
aspect_h=16,
|
||||
length=80.0
|
||||
}
|
||||
}
|
||||
},
|
||||
light_source = default.LIGHT_MAX - 1,
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
homedecor.register("dvd_vcr", {
|
||||
description = S("DVD and VCR"),
|
||||
tiles = {
|
||||
"homedecor_dvdvcr_top.png",
|
||||
"homedecor_dvdvcr_bottom.png",
|
||||
"homedecor_dvdvcr_sides.png",
|
||||
"homedecor_dvdvcr_sides.png^[transformFX",
|
||||
"homedecor_dvdvcr_back.png",
|
||||
"homedecor_dvdvcr_front.png",
|
||||
},
|
||||
inventory_image = "homedecor_dvdvcr_inv.png",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.3125, -0.5, -0.25, 0.3125, -0.375, 0.1875},
|
||||
{-0.25, -0.5, -0.25, 0.25, -0.1875, 0.125},
|
||||
}
|
||||
},
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
local tel_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.25, -0.5, -0.1875, 0.25, -0.21, 0.15 }
|
||||
}
|
||||
|
||||
homedecor.register("telephone", {
|
||||
mesh = "homedecor_telephone.obj",
|
||||
tiles = {
|
||||
"homedecor_telephone_dial.png",
|
||||
"homedecor_telephone_base.png",
|
||||
"homedecor_telephone_handset.png",
|
||||
"homedecor_telephone_cord.png",
|
||||
},
|
||||
inventory_image = "homedecor_telephone_inv.png",
|
||||
description = S("Telephone"),
|
||||
groups = {snappy=3},
|
||||
selection_box = tel_cbox,
|
||||
walkable = false,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = "homedecor:telephone",
|
||||
label = "sfx",
|
||||
interval = 30,
|
||||
chance = 15,
|
||||
action = function(pos, node)
|
||||
minetest.sound_play("homedecor_telephone_ringing", {
|
||||
pos = pos,
|
||||
gain = 1.0,
|
||||
max_hear_distance = 5
|
||||
})
|
||||
end
|
||||
})
|
@ -1,162 +0,0 @@
|
||||
local S = homedecor.gettext
|
||||
|
||||
local table_colors = {
|
||||
{ "", S("Table"), homedecor.plain_wood },
|
||||
{ "_mahogany", S("Mahogany Table"), homedecor.mahogany_wood },
|
||||
{ "_white", S("White Table"), homedecor.white_wood }
|
||||
}
|
||||
|
||||
for _, t in ipairs(table_colors) do
|
||||
local suffix, desc, texture = unpack(t)
|
||||
|
||||
homedecor.register("table"..suffix, {
|
||||
description = desc,
|
||||
tiles = { texture },
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.4, -0.5, -0.4, -0.3, 0.4, -0.3 },
|
||||
{ 0.3, -0.5, -0.4, 0.4, 0.4, -0.3 },
|
||||
{ -0.4, -0.5, 0.3, -0.3, 0.4, 0.4 },
|
||||
{ 0.3, -0.5, 0.3, 0.4, 0.4, 0.4 },
|
||||
{ -0.5, 0.4, -0.5, 0.5, 0.5, 0.5 },
|
||||
{ -0.4, -0.2, -0.3, -0.3, -0.1, 0.3 },
|
||||
{ 0.3, -0.2, -0.4, 0.4, -0.1, 0.3 },
|
||||
{ -0.3, -0.2, -0.4, 0.4, -0.1, -0.3 },
|
||||
{ -0.3, -0.2, 0.3, 0.3, -0.1, 0.4 },
|
||||
},
|
||||
},
|
||||
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
end
|
||||
|
||||
local chaircolors = {
|
||||
{ "", S("plain") },
|
||||
{ "black", S("black") },
|
||||
{ "red", S("red") },
|
||||
{ "pink", S("pink") },
|
||||
{ "violet", S("violet") },
|
||||
{ "blue", S("blue") },
|
||||
{ "dark_green", S("dark green") },
|
||||
}
|
||||
|
||||
local kc_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.3125, -0.5, -0.3125, 0.3125, 0.5, 0.3125 },
|
||||
}
|
||||
|
||||
local ac_cbox = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, 0, 0.5 },
|
||||
{-0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
|
||||
}
|
||||
}
|
||||
|
||||
for _, t in ipairs(chaircolors) do
|
||||
|
||||
local woolcolor, colordesc = unpack(t)
|
||||
local color = woolcolor
|
||||
local chairtiles
|
||||
|
||||
if woolcolor == "" then
|
||||
chairtiles = {
|
||||
homedecor.plain_wood,
|
||||
homedecor.plain_wood
|
||||
}
|
||||
else
|
||||
color = "_"..woolcolor
|
||||
chairtiles = {
|
||||
homedecor.plain_wood,
|
||||
"wool"..color..".png",
|
||||
}
|
||||
end
|
||||
|
||||
homedecor.register("chair"..color, {
|
||||
description = S("Kitchen chair (@1)", colordesc),
|
||||
mesh = "homedecor_kitchen_chair.obj",
|
||||
tiles = chairtiles,
|
||||
selection_box = kc_cbox,
|
||||
collision_box = kc_cbox,
|
||||
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
pos.y = pos.y+0 -- where do I put my ass ?
|
||||
homedecor.sit(pos, node, clicker)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
if color ~= "" then
|
||||
homedecor.register("armchair"..color, {
|
||||
description = S("Armchair (@1)", colordesc),
|
||||
mesh = "forniture_armchair.obj",
|
||||
tiles = {
|
||||
"wool"..color..".png",
|
||||
"wool_dark_grey.png",
|
||||
"default_wood.png"
|
||||
},
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
node_box = ac_cbox
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:armchair"..color.." 2",
|
||||
recipe = {
|
||||
{ "wool:"..woolcolor,""},
|
||||
{ "group:wood","group:wood" },
|
||||
{ "wool:"..woolcolor,"wool:"..woolcolor },
|
||||
},
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
local ob_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.5, -0.5, 0, 0.5, 0.5, 0.5 }
|
||||
}
|
||||
|
||||
minetest.register_node(":homedecor:openframe_bookshelf", {
|
||||
description = S("Bookshelf (open-frame)"),
|
||||
drawtype = "mesh",
|
||||
mesh = "homedecor_openframe_bookshelf.obj",
|
||||
tiles = {
|
||||
"homedecor_openframe_bookshelf_books.png",
|
||||
"default_wood.png"
|
||||
},
|
||||
groups = {choppy=3,oddly_breakable_by_hand=2,flammable=3},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
selection_box = ob_cbox,
|
||||
collision_box = ob_cbox,
|
||||
})
|
||||
|
||||
homedecor.register("wall_shelf", {
|
||||
description = S("Wall Shelf"),
|
||||
tiles = {
|
||||
"homedecor_wood_table_large_edges.png",
|
||||
},
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, 0.4, 0.47, 0.5, 0.47, 0.5},
|
||||
{-0.5, 0.47, -0.1875, 0.5, 0.5, 0.5}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
-- Aliases for 3dforniture mod.
|
||||
|
||||
minetest.register_alias("3dforniture:table", "homedecor:table")
|
||||
minetest.register_alias("3dforniture:chair", "homedecor:chair")
|
||||
minetest.register_alias("3dforniture:armchair", "homedecor:armchair_black")
|
||||
minetest.register_alias("homedecor:armchair", "homedecor:armchair_black")
|
||||
|
||||
minetest.register_alias('table', 'homedecor:table')
|
||||
minetest.register_alias('chair', 'homedecor:chair')
|
||||
minetest.register_alias('armchair', 'homedecor:armchair')
|
@ -1,262 +0,0 @@
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:table", "homedecor:chair 2",
|
||||
recipe = {
|
||||
{ "group:wood","group:wood", "group:wood" },
|
||||
{ "group:stick", "", "group:stick" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "homedecor:table_mahogany",
|
||||
recipe = {
|
||||
"homedecor:table",
|
||||
"dye:brown",
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "homedecor:table_mahogany",
|
||||
recipe = {
|
||||
"homedecor:table",
|
||||
"unifieddyes:dark_orange",
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "homedecor:table_white",
|
||||
recipe = {
|
||||
"homedecor:table",
|
||||
"dye:white",
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "homedecor:table",
|
||||
burntime = 30,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "homedecor:table_mahogany",
|
||||
burntime = 30,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "homedecor:table_white",
|
||||
burntime = 30,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:chair 2",
|
||||
recipe = {
|
||||
{ "group:stick",""},
|
||||
{ "group:wood","group:wood" },
|
||||
{ "group:stick","group:stick" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "homedecor:chair",
|
||||
burntime = 15,
|
||||
})
|
||||
|
||||
local chaircolors = { "black", "red", "pink", "violet", "blue", "dark_green" }
|
||||
|
||||
for _, color in ipairs(chaircolors) do
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "homedecor:chair_"..color,
|
||||
recipe = {
|
||||
"homedecor:chair",
|
||||
"wool:white",
|
||||
"dye:"..color
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "homedecor:chair_"..color,
|
||||
recipe = {
|
||||
"homedecor:chair",
|
||||
"wool:"..color
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "homedecor:chair_"..color,
|
||||
burntime = 15,
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "homedecor:armchair",
|
||||
burntime = 30,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:table_lamp_white_off",
|
||||
recipe = {
|
||||
{"default:paper","default:torch" ,"default:paper"},
|
||||
{"","group:stick",""},
|
||||
{"","stairs:slab_wood",""},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:table_lamp_white_off",
|
||||
recipe = {
|
||||
{"default:paper","default:torch" ,"default:paper"},
|
||||
{"","group:stick",""},
|
||||
{"","moreblocks:slab_wood",""},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:standing_lamp_white_off",
|
||||
recipe = {
|
||||
{"homedecor:table_lamp_white_off"},
|
||||
{"group:stick"},
|
||||
{"group:stick"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "homedecor:table_lamp_white_off",
|
||||
burntime = 10,
|
||||
})
|
||||
|
||||
local lamp_colors = { "blue", "green", "pink", "red", "violet" }
|
||||
|
||||
for _, color in ipairs(lamp_colors) do
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:table_lamp_"..color.."_off",
|
||||
recipe = {
|
||||
{"wool:"..color,"default:torch" ,"wool:"..color},
|
||||
{"","group:stick",""},
|
||||
{"","stairs:slab_wood",""},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:table_lamp_"..color.."_off",
|
||||
recipe = {
|
||||
{"wool:"..color,"default:torch" ,"wool:"..color},
|
||||
{"","group:stick",""},
|
||||
{"","moreblocks:slab_wood",""},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "homedecor:table_lamp_"..color.."_off",
|
||||
recipe = {
|
||||
"dye:"..color,
|
||||
"homedecor:table_lamp_off",
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "homedecor:table_lamp_"..color.."_off",
|
||||
burntime = 10,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:standing_lamp_"..color.."_off",
|
||||
recipe = {
|
||||
{"homedecor:table_lamp_"..color.."_off"},
|
||||
{"group:stick"},
|
||||
{"group:stick"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "homedecor:standing_lamp_"..color.."_off",
|
||||
recipe = {
|
||||
"homedecor:standing_lamp_off",
|
||||
"dye:"..color
|
||||
},
|
||||
})
|
||||
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:toilet",
|
||||
recipe = {
|
||||
{"","","bucket:bucket_water"},
|
||||
{ "group:marble","group:marble", "group:marble" },
|
||||
{ "", "bucket:bucket_empty", "" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:sink",
|
||||
recipe = {
|
||||
{ "group:marble","bucket:bucket_empty", "group:marble" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:taps",
|
||||
recipe = {
|
||||
{ "default:steel_ingot","bucket:bucket_water", "default:steel_ingot" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:taps_brass",
|
||||
recipe = {
|
||||
{ "technic:brass_ingot","bucket:bucket_water", "technic:brass_ingot" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:shower_tray",
|
||||
recipe = {
|
||||
{ "group:marble","bucket:bucket_water", "group:marble" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:shower_head",
|
||||
recipe = {
|
||||
{"default:steel_ingot", "bucket:bucket_water"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:bars 6",
|
||||
recipe = {
|
||||
{ "default:steel_ingot","default:steel_ingot","default:steel_ingot" },
|
||||
{ "homedecor:pole_wrought_iron","homedecor:pole_wrought_iron","homedecor:pole_wrought_iron" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:L_binding_bars 3",
|
||||
recipe = {
|
||||
{ "homedecor:bars","" },
|
||||
{ "homedecor:bars","homedecor:bars" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:torch_wall 10",
|
||||
recipe = {
|
||||
{ "default:coal_lump" },
|
||||
{ "default:steel_ingot" },
|
||||
},
|
||||
})
|
@ -1,207 +0,0 @@
|
||||
|
||||
local cutlery_cbox = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -5/16, -8/16, -6/16, 5/16, -7/16, 2/16 },
|
||||
{ -2/16, -8/16, 2/16, 2/16, -4/16, 6/16 }
|
||||
}
|
||||
}
|
||||
|
||||
homedecor.register("cutlery_set", {
|
||||
drawtype = "mesh",
|
||||
mesh = "homedecor_cutlery_set.obj",
|
||||
tiles = { "homedecor_cutlery_set.png" },
|
||||
inventory_image = "homedecor_cutlery_set_inv.png",
|
||||
description = "Cutlery set",
|
||||
groups = {snappy=3},
|
||||
selection_box = cutlery_cbox,
|
||||
walkable = false,
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
})
|
||||
|
||||
local bottle_cbox = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.125, -0.5, -0.125, 0.125, 0, 0.125}
|
||||
}
|
||||
}
|
||||
|
||||
local fbottle_cbox = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.375, -0.5, -0.3125, 0.375, 0, 0.3125 }
|
||||
}
|
||||
}
|
||||
|
||||
local bottle_colors = {"brown", "green"}
|
||||
|
||||
for _, b in ipairs(bottle_colors) do
|
||||
|
||||
homedecor.register("bottle_"..b, {
|
||||
tiles = { "homedecor_bottle_"..b..".png" },
|
||||
inventory_image = "homedecor_bottle_"..b.."_inv.png",
|
||||
description = "Bottle ("..b..")",
|
||||
mesh = "homedecor_bottle.obj",
|
||||
walkable = false,
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
selection_box = bottle_cbox
|
||||
})
|
||||
|
||||
-- 4-bottle sets
|
||||
|
||||
homedecor.register("4_bottles_"..b, {
|
||||
tiles = {
|
||||
"homedecor_bottle_"..b..".png",
|
||||
"homedecor_bottle_"..b..".png"
|
||||
},
|
||||
inventory_image = "homedecor_4_bottles_"..b.."_inv.png",
|
||||
description = "Four "..b.." bottles",
|
||||
mesh = "homedecor_4_bottles.obj",
|
||||
walkable = false,
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
selection_box = fbottle_cbox
|
||||
})
|
||||
end
|
||||
|
||||
homedecor.register("4_bottles_multi", {
|
||||
tiles = {
|
||||
"homedecor_bottle_brown.png",
|
||||
"homedecor_bottle_green.png"
|
||||
},
|
||||
inventory_image = "homedecor_4_bottles_multi_inv.png",
|
||||
description = "Four misc brown/green bottles",
|
||||
mesh = "homedecor_4_bottles.obj",
|
||||
groups = {snappy=3},
|
||||
walkable = false,
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
selection_box = fbottle_cbox
|
||||
})
|
||||
|
||||
local wine_cbox = homedecor.nodebox.slab_z(-0.75)
|
||||
homedecor.register("wine_rack", {
|
||||
description = "Wine Rack",
|
||||
mesh = "homedecor_wine_rack.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_wood_red.png",
|
||||
"homedecor_bottle_brown.png",
|
||||
"homedecor_bottle_brown2.png",
|
||||
"homedecor_bottle_brown3.png",
|
||||
"homedecor_bottle_brown4.png"
|
||||
},
|
||||
inventory_image = "homedecor_wine_rack_inv.png",
|
||||
groups = {choppy=2},
|
||||
selection_box = wine_cbox,
|
||||
collision_box = wine_cbox,
|
||||
sounds = default.node_sound_defaults(),
|
||||
})
|
||||
|
||||
homedecor.register("dartboard", {
|
||||
description = "Dartboard",
|
||||
mesh = "homedecor_dartboard.obj",
|
||||
tiles = { "homedecor_dartboard.png" },
|
||||
inventory_image = "homedecor_dartboard_inv.png",
|
||||
wield_image = "homedecor_dartboard_inv.png",
|
||||
paramtype2 = "wallmounted",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "wallmounted",
|
||||
},
|
||||
groups = {choppy=2,dig_immediate=2,attached_node=1},
|
||||
legacy_wallmounted = true,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
homedecor.register("beer_tap", {
|
||||
description = "Beer tap",
|
||||
mesh = "homedecor_beer_taps.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_metal_bright.png",
|
||||
"homedecor_generic_metal_black.png",
|
||||
},
|
||||
inventory_image = "homedecor_beertap_inv.png",
|
||||
groups = { snappy=3 },
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -0.25, -0.5, -0.4375, 0.25, 0.235, 0 }
|
||||
},
|
||||
on_punch = function(pos, node, puncher, pointed_thing)
|
||||
local wielditem = puncher:get_wielded_item()
|
||||
local inv = puncher:get_inventory()
|
||||
|
||||
local wieldname = wielditem:get_name()
|
||||
if wieldname == "vessels:drinking_glass" then
|
||||
if inv:room_for_item("main", "homedecor:beer_mug 1") then
|
||||
wielditem:take_item()
|
||||
puncher:set_wielded_item(wielditem)
|
||||
inv:add_item("main", "homedecor:beer_mug 1")
|
||||
minetest.chat_send_player(puncher:get_player_name(), "Ahh, a frosty cold beer - look in your inventory for it!")
|
||||
else
|
||||
minetest.chat_send_player(puncher:get_player_name(), "No room in your inventory to add a beer mug!")
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:beer_tap",
|
||||
recipe = {
|
||||
{ "group:stick","default:steel_ingot","group:stick" },
|
||||
{ "homedecor:kitchen_faucet","default:steel_ingot","homedecor:kitchen_faucet" },
|
||||
{ "default:steel_ingot","default:steel_ingot","default:steel_ingot" }
|
||||
},
|
||||
})
|
||||
|
||||
local beer_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -5/32, -8/16, -9/32 , 7/32, -2/16, 1/32 }
|
||||
}
|
||||
|
||||
homedecor.register("beer_mug", {
|
||||
description = "Beer mug",
|
||||
drawtype = "mesh",
|
||||
mesh = "homedecor_beer_mug.obj",
|
||||
tiles = { "homedecor_beer_mug.png" },
|
||||
inventory_image = "homedecor_beer_mug_inv.png",
|
||||
groups = { snappy=3, oddly_breakable_by_hand=3 },
|
||||
walkable = false,
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
selection_box = beer_cbox,
|
||||
on_use = minetest.item_eat(2)
|
||||
})
|
||||
|
||||
local svm_cbox = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5}
|
||||
}
|
||||
|
||||
homedecor.register("soda_machine", {
|
||||
description = "Soda Vending Machine",
|
||||
mesh = "homedecor_soda_machine.obj",
|
||||
tiles = {"homedecor_soda_machine.png"},
|
||||
groups = {snappy=3},
|
||||
selection_box = svm_cbox,
|
||||
collision_box = svm_cbox,
|
||||
expand = { top="placeholder" },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_rotate = screwdriver.rotate_simple,
|
||||
on_punch = function(pos, node, puncher, pointed_thing)
|
||||
local wielditem = puncher:get_wielded_item()
|
||||
local wieldname = wielditem:get_name()
|
||||
local fdir_to_fwd = { {0, -1}, {-1, 0}, {0, 1}, {1, 0} }
|
||||
local fdir = node.param2
|
||||
local pos_drop = { x=pos.x+fdir_to_fwd[fdir+1][1], y=pos.y, z=pos.z+fdir_to_fwd[fdir+1][2] }
|
||||
if wieldname == "homedecor:coin" then
|
||||
wielditem:take_item()
|
||||
puncher:set_wielded_item(wielditem)
|
||||
minetest.spawn_item(pos_drop, "homedecor:soda_can")
|
||||
minetest.sound_play("insert_coin", {
|
||||
pos=pos, max_hear_distance = 5
|
||||
})
|
||||
else
|
||||
minetest.chat_send_player(puncher:get_player_name(), "Please insert a coin in the machine.")
|
||||
end
|
||||
end
|
||||
})
|
@ -1,22 +0,0 @@
|
||||
local handlerpath = homedecor.modpath .. "/handlers/"
|
||||
|
||||
-- nodebox arithmetics and helpers
|
||||
-- (please keep non-generic nodeboxes with their node definition)
|
||||
dofile(handlerpath.."nodeboxes.lua")
|
||||
|
||||
-- expand and unexpand decor
|
||||
dofile(handlerpath.."expansion.lua")
|
||||
|
||||
-- register nodes that cook stuff
|
||||
dofile(handlerpath.."furnaces.lua")
|
||||
|
||||
-- inventory related functionality, like initialization, ownership and spawning locked versions
|
||||
dofile(handlerpath.."inventory.lua")
|
||||
|
||||
-- glue it all together into a registration function
|
||||
dofile(handlerpath.."registration.lua")
|
||||
|
||||
-- some nodes have particle spawners
|
||||
dofile(handlerpath.."water_particles.lua")
|
||||
|
||||
dofile(handlerpath.."sit.lua")
|
@ -1,133 +0,0 @@
|
||||
-- Home Decor mod by VanessaE
|
||||
--
|
||||
-- Mostly my own code, with bits and pieces lifted from Minetest's default
|
||||
-- lua files and from ironzorg's flowers mod. Many thanks to GloopMaster
|
||||
-- for helping me figure out the inventories used in the nightstands/dressers.
|
||||
--
|
||||
-- The code for ovens, nightstands, refrigerators are basically modified
|
||||
-- copies of the code for chests and furnaces.
|
||||
|
||||
local modpath = minetest.get_modpath("homedecor")
|
||||
|
||||
-- Load support for intllib.
|
||||
local S, NS = dofile(modpath.."/intllib.lua")
|
||||
|
||||
homedecor = {
|
||||
modpath = modpath,
|
||||
|
||||
gettext = S,
|
||||
ngettext = NS,
|
||||
|
||||
-- infinite stacks
|
||||
expect_infinite_stacks = minetest.setting_getbool("creative_mode") and not minetest.get_modpath("unified_inventory")
|
||||
}
|
||||
|
||||
-- Determine if the item being pointed at is the underside of a node (e.g a ceiling)
|
||||
function homedecor.find_ceiling(itemstack, placer, pointed_thing)
|
||||
-- most of this is copied from the rotate-and-place function in builtin
|
||||
local unode = core.get_node_or_nil(pointed_thing.under)
|
||||
if not unode then
|
||||
return
|
||||
end
|
||||
local undef = core.registered_nodes[unode.name]
|
||||
if undef and undef.on_rightclick then
|
||||
undef.on_rightclick(pointed_thing.under, unode, placer,
|
||||
itemstack, pointed_thing)
|
||||
return
|
||||
end
|
||||
|
||||
local above = pointed_thing.above
|
||||
local under = pointed_thing.under
|
||||
local iswall = (above.y == under.y)
|
||||
local isceiling = not iswall and (above.y < under.y)
|
||||
local anode = core.get_node_or_nil(above)
|
||||
if not anode then
|
||||
return
|
||||
end
|
||||
local pos = pointed_thing.above
|
||||
local node = anode
|
||||
|
||||
if undef and undef.buildable_to then
|
||||
pos = pointed_thing.under
|
||||
node = unode
|
||||
end
|
||||
|
||||
if core.is_protected(pos, placer:get_player_name()) then
|
||||
core.record_protection_violation(pos,
|
||||
placer:get_player_name())
|
||||
return
|
||||
end
|
||||
|
||||
local ndef = core.registered_nodes[node.name]
|
||||
if not ndef or not ndef.buildable_to then
|
||||
return
|
||||
end
|
||||
return isceiling, pos
|
||||
end
|
||||
|
||||
screwdriver = screwdriver or {}
|
||||
|
||||
homedecor.plain_wood = "homedecor_generic_wood_plain.png^"..
|
||||
"(homedecor_generic_wood_boards_overlay.png^[colorize:#a7682020:100)"
|
||||
|
||||
homedecor.mahogany_wood = "(homedecor_generic_wood_plain.png^[colorize:#401010:125)^"..
|
||||
"(homedecor_generic_wood_boards_overlay.png^[colorize:#66493880:200)"
|
||||
|
||||
homedecor.white_wood = "(homedecor_generic_wood_plain.png^[colorize:#e0f0ff:200)^"..
|
||||
"(homedecor_generic_wood_boards_overlay.png^[colorize:#ffffff:200)"
|
||||
|
||||
homedecor.dark_wood = "(homedecor_generic_wood_plain.png^[colorize:#140900:200)^"..
|
||||
"(homedecor_generic_wood_boards_overlay.png^[colorize:#21110180:180)"
|
||||
|
||||
|
||||
-- load different handler subsystems
|
||||
dofile(modpath.."/handlers/init.lua")
|
||||
|
||||
-- load various other components
|
||||
dofile(modpath.."/misc-nodes.lua") -- the catch-all for all misc nodes
|
||||
dofile(modpath.."/tables.lua")
|
||||
dofile(modpath.."/electronics.lua")
|
||||
dofile(modpath.."/shutters.lua")
|
||||
|
||||
dofile(modpath.."/roofing.lua")
|
||||
|
||||
dofile(modpath.."/foyer.lua")
|
||||
|
||||
dofile(modpath.."/doors_and_gates.lua")
|
||||
|
||||
dofile(modpath.."/fences.lua")
|
||||
|
||||
dofile(modpath.."/lighting.lua")
|
||||
|
||||
dofile(modpath.."/kitchen_appliances.lua")
|
||||
dofile(modpath.."/kitchen_furniture.lua")
|
||||
dofile(modpath.."/gastronomy.lua")
|
||||
|
||||
dofile(modpath.."/bathroom_furniture.lua")
|
||||
dofile(modpath.."/bathroom_sanitation.lua")
|
||||
|
||||
dofile(modpath.."/bedroom.lua")
|
||||
|
||||
dofile(modpath.."/laundry.lua")
|
||||
|
||||
dofile(modpath.."/office.lua")
|
||||
|
||||
dofile(modpath.."/clocks.lua")
|
||||
dofile(modpath.."/electrics.lua")
|
||||
|
||||
dofile(modpath.."/window_treatments.lua")
|
||||
|
||||
dofile(modpath.."/furniture.lua")
|
||||
dofile(modpath.."/furniture_medieval.lua")
|
||||
dofile(modpath.."/furniture_recipes.lua")
|
||||
dofile(modpath.."/climate-control.lua")
|
||||
|
||||
dofile(modpath.."/cobweb.lua")
|
||||
dofile(modpath.."/books.lua")
|
||||
dofile(modpath.."/exterior.lua")
|
||||
dofile(modpath.."/trash_cans.lua")
|
||||
dofile(modpath.."/wardrobe.lua")
|
||||
|
||||
dofile(modpath.."/crafts.lua")
|
||||
|
||||
print("[HomeDecor] " .. S("Loaded!"))
|
@ -1,45 +0,0 @@
|
||||
|
||||
-- Fallback functions for when `intllib` is not installed.
|
||||
-- Code released under Unlicense <http://unlicense.org>.
|
||||
|
||||
-- Get the latest version of this file at:
|
||||
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
|
||||
|
||||
local function format(str, ...)
|
||||
local args = { ... }
|
||||
local function repl(escape, open, num, close)
|
||||
if escape == "" then
|
||||
local replacement = tostring(args[tonumber(num)])
|
||||
if open == "" then
|
||||
replacement = replacement..close
|
||||
end
|
||||
return replacement
|
||||
else
|
||||
return "@"..open..num..close
|
||||
end
|
||||
end
|
||||
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
|
||||
end
|
||||
|
||||
local gettext, ngettext
|
||||
if minetest.get_modpath("intllib") then
|
||||
if intllib.make_gettext_pair then
|
||||
-- New method using gettext.
|
||||
gettext, ngettext = intllib.make_gettext_pair()
|
||||
else
|
||||
-- Old method using text files.
|
||||
gettext = intllib.Getter()
|
||||
end
|
||||
end
|
||||
|
||||
-- Fill in missing functions.
|
||||
|
||||
gettext = gettext or function(msgid, ...)
|
||||
return format(msgid, ...)
|
||||
end
|
||||
|
||||
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
|
||||
return format(n==1 and msgid or msgid_plural, ...)
|
||||
end
|
||||
|
||||
return gettext, ngettext
|
@ -1,256 +0,0 @@
|
||||
-- This file supplies refrigerators
|
||||
|
||||
local S = homedecor.gettext
|
||||
|
||||
local function N_(x) return x end
|
||||
|
||||
-- steel-textured fridge
|
||||
homedecor.register("refrigerator_steel", {
|
||||
mesh = "homedecor_refrigerator.obj",
|
||||
tiles = { "homedecor_refrigerator_steel.png" },
|
||||
inventory_image = "homedecor_refrigerator_steel_inv.png",
|
||||
description = S("Refrigerator (stainless steel)"),
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
selection_box = homedecor.nodebox.slab_y(2),
|
||||
collision_box = homedecor.nodebox.slab_y(2),
|
||||
expand = { top="placeholder" },
|
||||
infotext=S("Refrigerator"),
|
||||
inventory = {
|
||||
size=50,
|
||||
lockable=true,
|
||||
},
|
||||
on_rotate = screwdriver.rotate_simple
|
||||
})
|
||||
|
||||
-- white, enameled fridge
|
||||
homedecor.register("refrigerator_white", {
|
||||
mesh = "homedecor_refrigerator.obj",
|
||||
tiles = { "homedecor_refrigerator_white.png" },
|
||||
inventory_image = "homedecor_refrigerator_white_inv.png",
|
||||
description = S("Refrigerator"),
|
||||
groups = {snappy=3},
|
||||
selection_box = homedecor.nodebox.slab_y(2),
|
||||
collision_box = homedecor.nodebox.slab_y(2),
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
expand = { top="placeholder" },
|
||||
infotext=S("Refrigerator"),
|
||||
inventory = {
|
||||
size=50,
|
||||
lockable=true,
|
||||
},
|
||||
on_rotate = screwdriver.rotate_simple
|
||||
})
|
||||
|
||||
minetest.register_alias("homedecor:refrigerator_white_bottom", "homedecor:refrigerator_white")
|
||||
minetest.register_alias("homedecor:refrigerator_white_top", "air")
|
||||
|
||||
minetest.register_alias("homedecor:refrigerator_steel_bottom", "homedecor:refrigerator_steel")
|
||||
minetest.register_alias("homedecor:refrigerator_steel_top", "air")
|
||||
|
||||
minetest.register_alias("homedecor:refrigerator_white_bottom_locked", "homedecor:refrigerator_white_locked")
|
||||
minetest.register_alias("homedecor:refrigerator_white_top_locked", "air")
|
||||
minetest.register_alias("homedecor:refrigerator_locked", "homedecor:refrigerator_white_locked")
|
||||
|
||||
minetest.register_alias("homedecor:refrigerator_steel_bottom_locked", "homedecor:refrigerator_steel_locked")
|
||||
minetest.register_alias("homedecor:refrigerator_steel_top_locked", "air")
|
||||
|
||||
-- kitchen "furnaces"
|
||||
homedecor.register_furnace("oven", {
|
||||
description = S("Oven"),
|
||||
tile_format = "homedecor_oven_%s%s.png",
|
||||
output_slots = 4,
|
||||
output_width = 2,
|
||||
cook_speed = 1.25,
|
||||
})
|
||||
|
||||
homedecor.register_furnace("oven_steel", {
|
||||
description = S("Oven (stainless steel)"),
|
||||
tile_format = "homedecor_oven_steel_%s%s.png",
|
||||
output_slots = 4,
|
||||
output_width = 2,
|
||||
cook_speed = 1.25,
|
||||
})
|
||||
|
||||
homedecor.register_furnace("microwave_oven", {
|
||||
description = S("Microwave Oven"),
|
||||
tiles = {
|
||||
"homedecor_microwave_top.png", "homedecor_microwave_top.png^[transformR180",
|
||||
"homedecor_microwave_top.png^[transformR270", "homedecor_microwave_top.png^[transformR90",
|
||||
"homedecor_microwave_top.png^[transformR180", "homedecor_microwave_front.png"
|
||||
},
|
||||
tiles_active = {
|
||||
"homedecor_microwave_top.png", "homedecor_microwave_top.png^[transformR180",
|
||||
"homedecor_microwave_top.png^[transformR270", "homedecor_microwave_top.png^[transformR90",
|
||||
"homedecor_microwave_top.png^[transformR180", "homedecor_microwave_front_active.png"
|
||||
},
|
||||
output_slots = 2,
|
||||
output_width = 2,
|
||||
cook_speed = 1.5,
|
||||
extra_nodedef_fields = {
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = { -0.5, -0.5, -0.125, 0.5, 0.125, 0.5 },
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- coffee!
|
||||
-- coffee!
|
||||
-- coffee!
|
||||
|
||||
local cm_cbox = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ 0, -8/16, 0, 7/16, 3/16, 8/16 },
|
||||
{ -4/16, -8/16, -6/16, -1/16, -5/16, -3/16 }
|
||||
}
|
||||
}
|
||||
|
||||
homedecor.register("coffee_maker", {
|
||||
mesh = "homedecor_coffeemaker.obj",
|
||||
tiles = {
|
||||
"homedecor_coffeemaker_decanter.png",
|
||||
"homedecor_coffeemaker_cup.png",
|
||||
"homedecor_coffeemaker_case.png",
|
||||
},
|
||||
description = S("Coffee Maker"),
|
||||
inventory_image = "homedecor_coffeemaker_inv.png",
|
||||
walkable = false,
|
||||
groups = {snappy=3},
|
||||
selection_box = cm_cbox,
|
||||
node_box = cm_cbox,
|
||||
on_rotate = screwdriver.disallow
|
||||
})
|
||||
|
||||
local fdir_to_steampos = {
|
||||
x = { 0.15, 0.275, -0.15, -0.275 },
|
||||
z = { 0.275, -0.15, -0.275, 0.15 }
|
||||
}
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = "homedecor:coffee_maker",
|
||||
label = "sfx",
|
||||
interval = 2,
|
||||
chance = 1,
|
||||
action = function(pos, node)
|
||||
local fdir = node.param2
|
||||
if fdir and fdir < 4 then
|
||||
|
||||
local steamx = fdir_to_steampos.x[fdir + 1]
|
||||
local steamz = fdir_to_steampos.z[fdir + 1]
|
||||
|
||||
minetest.add_particlespawner({
|
||||
amount = 1,
|
||||
time = 1,
|
||||
minpos = {x=pos.x - steamx, y=pos.y - 0.35, z=pos.z - steamz},
|
||||
maxpos = {x=pos.x - steamx, y=pos.y - 0.35, z=pos.z - steamz},
|
||||
minvel = {x=-0.003, y=0.01, z=-0.003},
|
||||
maxvel = {x=0.003, y=0.01, z=-0.003},
|
||||
minacc = {x=0.0,y=-0.0,z=-0.0},
|
||||
maxacc = {x=0.0,y=0.003,z=-0.0},
|
||||
minexptime = 2,
|
||||
maxexptime = 5,
|
||||
minsize = 1,
|
||||
maxsize = 1.2,
|
||||
collisiondetection = false,
|
||||
texture = "homedecor_steam.png",
|
||||
})
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
homedecor.register("toaster", {
|
||||
description = S("Toaster"),
|
||||
tiles = { "homedecor_toaster_sides.png" },
|
||||
inventory_image = "homedecor_toaster_inv.png",
|
||||
walkable = false,
|
||||
groups = { snappy=3 },
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.0625, -0.5, -0.125, 0.125, -0.3125, 0.125}, -- NodeBox1
|
||||
},
|
||||
},
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
local fdir = node.param2
|
||||
minetest.set_node(pos, { name = "homedecor:toaster_loaf", param2 = fdir })
|
||||
minetest.sound_play("toaster", {
|
||||
pos = pos,
|
||||
gain = 1.0,
|
||||
max_hear_distance = 5
|
||||
})
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
homedecor.register("toaster_loaf", {
|
||||
tiles = {
|
||||
"homedecor_toaster_toploaf.png",
|
||||
"homedecor_toaster_sides.png",
|
||||
"homedecor_toaster_sides.png",
|
||||
"homedecor_toaster_sides.png",
|
||||
"homedecor_toaster_sides.png",
|
||||
"homedecor_toaster_sides.png"
|
||||
},
|
||||
walkable = false,
|
||||
groups = { snappy=3, not_in_creative_inventory=1 },
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.0625, -0.5, -0.125, 0.125, -0.3125, 0.125}, -- NodeBox1
|
||||
{-0.03125, -0.3125, -0.0935, 0, -0.25, 0.0935}, -- NodeBox2
|
||||
{0.0625, -0.3125, -0.0935, 0.0935, -0.25, 0.0935}, -- NodeBox3
|
||||
},
|
||||
},
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
local fdir = node.param2
|
||||
minetest.set_node(pos, { name = "homedecor:toaster", param2 = fdir })
|
||||
return itemstack
|
||||
end,
|
||||
drop = "homedecor:toaster"
|
||||
})
|
||||
|
||||
|
||||
homedecor.register("dishwasher", {
|
||||
description = S("Dishwasher"),
|
||||
drawtype = "nodebox",
|
||||
tiles = {
|
||||
"homedecor_dishwasher_top.png",
|
||||
"homedecor_dishwasher_bottom.png",
|
||||
"homedecor_dishwasher_sides.png",
|
||||
"homedecor_dishwasher_sides.png^[transformFX",
|
||||
"homedecor_dishwasher_back.png",
|
||||
"homedecor_dishwasher_front.png"
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
|
||||
{-0.5, -0.5, -0.5, 0.5, 0.5, -0.4375},
|
||||
{-0.5, -0.5, -0.5, 0.5, 0.1875, 0.1875},
|
||||
{-0.4375, -0.5, -0.5, 0.4375, 0.4375, 0.4375},
|
||||
}
|
||||
},
|
||||
selection_box = { type = "regular" },
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
groups = { snappy = 3 },
|
||||
})
|
||||
|
||||
local materials = { N_("granite"), N_("marble"), N_("steel"), N_("wood") }
|
||||
|
||||
for _, m in ipairs(materials) do
|
||||
homedecor.register("dishwasher_"..m, {
|
||||
description = S("Dishwasher (@1)", S(m)),
|
||||
tiles = {
|
||||
"homedecor_kitchen_cabinet_top_"..m..".png",
|
||||
"homedecor_dishwasher_bottom.png",
|
||||
"homedecor_dishwasher_sides.png",
|
||||
"homedecor_dishwasher_sides.png^[transformFX",
|
||||
"homedecor_dishwasher_back.png",
|
||||
"homedecor_dishwasher_front.png"
|
||||
},
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
end
|
@ -1,157 +0,0 @@
|
||||
-- This file supplies Kitchen cabinets and kitchen sink
|
||||
|
||||
local S = homedecor.gettext
|
||||
|
||||
local cabinet_sides = "(default_wood.png^[transformR90)^homedecor_kitchen_cabinet_bevel.png"
|
||||
local cabinet_bottom = "(default_wood.png^[colorize:#000000:100)^(homedecor_kitchen_cabinet_bevel.png^[colorize:#46321580)"
|
||||
|
||||
local function N_(x) return x end
|
||||
|
||||
local counter_materials = { "", N_("granite"), N_("marble"), N_("steel") }
|
||||
|
||||
for _, mat in ipairs(counter_materials) do
|
||||
|
||||
local desc = S("Kitchen Cabinet")
|
||||
local material = ""
|
||||
|
||||
if mat ~= "" then
|
||||
desc = S("Kitchen Cabinet (@1 top)", S(mat))
|
||||
material = "_"..mat
|
||||
end
|
||||
|
||||
homedecor.register("kitchen_cabinet"..material, {
|
||||
description = desc,
|
||||
tiles = { 'homedecor_kitchen_cabinet_top'..material..'.png',
|
||||
cabinet_bottom,
|
||||
cabinet_sides,
|
||||
cabinet_sides,
|
||||
cabinet_sides,
|
||||
'homedecor_kitchen_cabinet_front.png'},
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
infotext=S("Kitchen Cabinet"),
|
||||
inventory = {
|
||||
size=24,
|
||||
lockable=true,
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
local kitchen_cabinet_half_box = homedecor.nodebox.slab_y(0.5, 0.5)
|
||||
homedecor.register("kitchen_cabinet_half", {
|
||||
description = S('Half-height Kitchen Cabinet (on ceiling)'),
|
||||
tiles = {
|
||||
cabinet_sides,
|
||||
cabinet_bottom,
|
||||
cabinet_sides,
|
||||
cabinet_sides,
|
||||
cabinet_sides,
|
||||
'homedecor_kitchen_cabinet_front_half.png'
|
||||
},
|
||||
selection_box = kitchen_cabinet_half_box,
|
||||
node_box = kitchen_cabinet_half_box,
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
infotext=S("Kitchen Cabinet"),
|
||||
inventory = {
|
||||
size=12,
|
||||
lockable=true,
|
||||
},
|
||||
})
|
||||
|
||||
homedecor.register("kitchen_cabinet_with_sink", {
|
||||
description = S("Kitchen Cabinet with sink"),
|
||||
mesh = "homedecor_kitchen_sink.obj",
|
||||
tiles = {
|
||||
"homedecor_kitchen_sink_top.png",
|
||||
"homedecor_kitchen_cabinet_front.png",
|
||||
cabinet_sides,
|
||||
cabinet_bottom
|
||||
},
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
infotext=S("Under-sink cabinet"),
|
||||
inventory = {
|
||||
size=16,
|
||||
lockable=true,
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -8/16, -8/16, -8/16, 8/16, 6/16, 8/16 },
|
||||
{ -8/16, 6/16, -8/16, -6/16, 8/16, 8/16 },
|
||||
{ 6/16, 6/16, -8/16, 8/16, 8/16, 8/16 },
|
||||
{ -8/16, 6/16, -8/16, 8/16, 8/16, -6/16 },
|
||||
{ -8/16, 6/16, 6/16, 8/16, 8/16, 8/16 },
|
||||
}
|
||||
},
|
||||
on_destruct = function(pos)
|
||||
homedecor.stop_particle_spawner({x=pos.x, y=pos.y+1, z=pos.z})
|
||||
end
|
||||
})
|
||||
|
||||
local cp_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.375, -0.5, -0.5, 0.375, -0.3125, 0.3125 }
|
||||
}
|
||||
|
||||
homedecor.register("copper_pans", {
|
||||
description = "Copper pans",
|
||||
mesh = "homedecor_copper_pans.obj",
|
||||
tiles = { "homedecor_polished_copper.png" },
|
||||
inventory_image = "homedecor_copper_pans_inv.png",
|
||||
groups = { snappy=3 },
|
||||
selection_box = cp_cbox,
|
||||
walkable = false,
|
||||
on_place = minetest.rotate_node
|
||||
})
|
||||
|
||||
local kf_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -2/16, -8/16, 1/16, 2/16, -1/16, 8/16 }
|
||||
}
|
||||
|
||||
homedecor.register("kitchen_faucet", {
|
||||
mesh = "homedecor_kitchen_faucet.obj",
|
||||
tiles = { "homedecor_generic_metal_bright.png" },
|
||||
inventory_image = "homedecor_kitchen_faucet_inv.png",
|
||||
description = "Kitchen Faucet",
|
||||
groups = {snappy=3},
|
||||
selection_box = kf_cbox,
|
||||
walkable = false,
|
||||
on_rotate = screwdriver.disallow,
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-1, z=pos.z})
|
||||
if below and
|
||||
below.name == "homedecor:sink" or
|
||||
below.name == "homedecor:kitchen_cabinet_with_sink" or
|
||||
below.name == "homedecor:kitchen_cabinet_with_sink_locked" then
|
||||
local particledef = {
|
||||
outlet = { x = 0, y = -0.19, z = 0.13 },
|
||||
velocity_x = { min = -0.05, max = 0.05 },
|
||||
velocity_y = -0.3,
|
||||
velocity_z = { min = -0.1, max = 0 },
|
||||
spread = 0
|
||||
}
|
||||
homedecor.start_particle_spawner(pos, node, particledef, "homedecor_faucet")
|
||||
end
|
||||
return itemstack
|
||||
end,
|
||||
on_destruct = homedecor.stop_particle_spawner
|
||||
})
|
||||
|
||||
homedecor.register("paper_towel", {
|
||||
mesh = "homedecor_paper_towel.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_quilted_paper.png",
|
||||
"default_wood.png"
|
||||
},
|
||||
inventory_image = "homedecor_paper_towel_inv.png",
|
||||
description = S("Paper towels"),
|
||||
groups = { snappy=3 },
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -0.4375, 0.125, 0.0625, 0.4375, 0.4375, 0.5 }
|
||||
},
|
||||
})
|
@ -1,61 +0,0 @@
|
||||
-- laundry devices
|
||||
|
||||
homedecor.register("washing_machine", {
|
||||
description = "Washing Machine",
|
||||
tiles = {
|
||||
"homedecor_washing_machine_top.png",
|
||||
"homedecor_washing_machine_bottom.png",
|
||||
"homedecor_washing_machine_sides.png",
|
||||
"homedecor_washing_machine_sides.png^[transformFX",
|
||||
"homedecor_washing_machine_back.png",
|
||||
"homedecor_washing_machine_front.png"
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, 0.375, 0.375},
|
||||
{-0.5, -0.5, 0.3125, 0.5, 0.5, 0.5},
|
||||
}
|
||||
},
|
||||
selection_box = { type = "regular" },
|
||||
groups = { snappy = 3 },
|
||||
})
|
||||
|
||||
homedecor.register("dryer", {
|
||||
description = "Tumble dryer",
|
||||
tiles = {
|
||||
"homedecor_dryer_top.png",
|
||||
"homedecor_dryer_bottom.png",
|
||||
"homedecor_dryer_sides.png",
|
||||
"homedecor_dryer_sides.png^[transformFX",
|
||||
"homedecor_dryer_back.png",
|
||||
"homedecor_dryer_front.png"
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, 0.375, 0.375},
|
||||
{-0.5, -0.5, 0.3125, 0.5, 0.5, 0.5},
|
||||
}
|
||||
},
|
||||
selection_box = { type = "regular" },
|
||||
groups = { snappy = 3 },
|
||||
})
|
||||
|
||||
local ib_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -6/16, -8/16, -4/16, 17/16, 4/16, 4/16 }
|
||||
}
|
||||
|
||||
homedecor.register("ironing_board", {
|
||||
description = "Ironing board",
|
||||
mesh = "homedecor_ironing_board.obj",
|
||||
tiles = {
|
||||
"wool_grey.png",
|
||||
"homedecor_generic_metal_black.png^[brighten"
|
||||
},
|
||||
expand = {right = "placeholder"},
|
||||
groups = { snappy = 3 },
|
||||
selection_box = ib_cbox,
|
||||
collision_box = ib_cbox
|
||||
})
|
@ -1,550 +0,0 @@
|
||||
-- This file supplies glowlights
|
||||
|
||||
local dirs2 = { 9, 18, 7, 12 }
|
||||
|
||||
local S = homedecor.gettext
|
||||
|
||||
local function N_(x) return x end
|
||||
|
||||
local colors = { N_("yellow"), N_("white") }
|
||||
|
||||
for i in ipairs(colors) do
|
||||
local color = colors[i]
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = { "homedecor:glowlight_thin_"..color },
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
minetest.set_node(pos, {name = "homedecor:glowlight_quarter_"..color, param2 = 20})
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = { "homedecor:glowlight_thick_"..color },
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
minetest.set_node(pos, {name = "homedecor:glowlight_half_"..color, param2 = 20})
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = { "homedecor:glowlight_thin_"..color.."_wall" },
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local fdir = node.param2 or 0
|
||||
local nfdir = dirs2[fdir+1]
|
||||
minetest.set_node(pos, {name = "homedecor:glowlight_quarter_"..color, param2 = nfdir})
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = { "homedecor:glowlight_thick_"..color.."_wall" },
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local fdir = node.param2 or 0
|
||||
local nfdir = dirs2[fdir+1]
|
||||
minetest.set_node(pos, {name = "homedecor:glowlight_half_"..color, param2 = nfdir})
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = { "homedecor:glowlight_small_cube_"..color.."_ceiling" },
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
minetest.set_node(pos, {name = "homedecor:glowlight_small_cube_"..color, param2 = 20})
|
||||
end,
|
||||
})
|
||||
|
||||
local glowlight_nodebox = {
|
||||
half = homedecor.nodebox.slab_y(1/2),
|
||||
quarter = homedecor.nodebox.slab_y(1/4),
|
||||
small_cube = {
|
||||
type = "fixed",
|
||||
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
|
||||
},
|
||||
}
|
||||
|
||||
homedecor.register("glowlight_half_"..color, {
|
||||
description = S("Thick Glowlight (@1)", S(color)),
|
||||
tiles = {
|
||||
"homedecor_glowlight_"..color.."_top.png",
|
||||
"homedecor_glowlight_"..color.."_bottom.png",
|
||||
"homedecor_glowlight_thick_"..color.."_sides.png",
|
||||
"homedecor_glowlight_thick_"..color.."_sides.png",
|
||||
"homedecor_glowlight_thick_"..color.."_sides.png",
|
||||
"homedecor_glowlight_thick_"..color.."_sides.png"
|
||||
},
|
||||
selection_box = glowlight_nodebox.half,
|
||||
node_box = glowlight_nodebox.half,
|
||||
groups = { snappy = 3 },
|
||||
light_source = default.LIGHT_MAX,
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
on_place = minetest.rotate_node
|
||||
})
|
||||
|
||||
homedecor.register("glowlight_quarter_"..color, {
|
||||
description = S("Thin Glowlight (@1)", S(color)),
|
||||
tiles = {
|
||||
"homedecor_glowlight_"..color.."_top.png",
|
||||
"homedecor_glowlight_"..color.."_bottom.png",
|
||||
"homedecor_glowlight_thin_"..color.."_sides.png",
|
||||
"homedecor_glowlight_thin_"..color.."_sides.png",
|
||||
"homedecor_glowlight_thin_"..color.."_sides.png",
|
||||
"homedecor_glowlight_thin_"..color.."_sides.png"
|
||||
},
|
||||
selection_box = glowlight_nodebox.quarter,
|
||||
node_box = glowlight_nodebox.quarter,
|
||||
groups = { snappy = 3 },
|
||||
light_source = default.LIGHT_MAX-1,
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
on_place = minetest.rotate_node
|
||||
})
|
||||
|
||||
-- Glowlight "cubes"
|
||||
|
||||
homedecor.register("glowlight_small_cube_"..color, {
|
||||
description = S("Small Glowlight Cube (@1)", S(color)),
|
||||
tiles = {
|
||||
"homedecor_glowlight_cube_"..color.."_tb.png",
|
||||
"homedecor_glowlight_cube_"..color.."_tb.png",
|
||||
"homedecor_glowlight_cube_"..color.."_sides.png",
|
||||
"homedecor_glowlight_cube_"..color.."_sides.png",
|
||||
"homedecor_glowlight_cube_"..color.."_sides.png",
|
||||
"homedecor_glowlight_cube_"..color.."_sides.png"
|
||||
},
|
||||
selection_box = glowlight_nodebox.small_cube,
|
||||
node_box = glowlight_nodebox.small_cube,
|
||||
groups = { snappy = 3 },
|
||||
light_source = default.LIGHT_MAX-1,
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
on_place = minetest.rotate_node
|
||||
})
|
||||
|
||||
end
|
||||
|
||||
homedecor.register("plasma_lamp", {
|
||||
description = S("Plasma Lamp"),
|
||||
drawtype = "glasslike_framed",
|
||||
tiles = {"default_gold_block.png","homedecor_glass_face_clean.png"},
|
||||
special_tiles = {
|
||||
{
|
||||
name="homedecor_plasma_storm.png",
|
||||
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0},
|
||||
}
|
||||
},
|
||||
use_texture_alpha = true,
|
||||
light_source = default.LIGHT_MAX - 1,
|
||||
sunlight_propagates = true,
|
||||
groups = {cracky=3,oddly_breakable_by_hand=3},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
||||
minetest.swap_node(pos, {name = "homedecor:plasma_lamp", param2 = 255})
|
||||
end
|
||||
})
|
||||
|
||||
homedecor.register("plasma_ball", {
|
||||
description = S("Plasma Ball"),
|
||||
mesh = "homedecor_plasma_ball.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_plastic_black.png",
|
||||
{
|
||||
name = "homedecor_plasma_ball_streamers.png",
|
||||
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0},
|
||||
},
|
||||
"homedecor_plasma_ball_glass.png"
|
||||
},
|
||||
inventory_image = "homedecor_plasma_ball_inv.png",
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -0.1875, -0.5, -0.1875, 0.1875, 0, 0.1875 }
|
||||
},
|
||||
walkable = false,
|
||||
use_texture_alpha = true,
|
||||
light_source = default.LIGHT_MAX - 5,
|
||||
sunlight_propagates = true,
|
||||
groups = {cracky=3,oddly_breakable_by_hand=3},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
})
|
||||
|
||||
local tc_cbox = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.1875, -0.5, -0.1875, 0.1875, 0.375, 0.1875 },
|
||||
}
|
||||
}
|
||||
|
||||
homedecor.register("candle", {
|
||||
description = S("Thick Candle"),
|
||||
mesh = "homedecor_candle_thick.obj",
|
||||
tiles = {
|
||||
'homedecor_candle_sides.png',
|
||||
{name="homedecor_candle_flame.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
|
||||
},
|
||||
inventory_image = "homedecor_candle_inv.png",
|
||||
selection_box = tc_cbox,
|
||||
walkable = false,
|
||||
groups = { snappy = 3 },
|
||||
light_source = default.LIGHT_MAX-4,
|
||||
})
|
||||
|
||||
local c_cbox = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.125, -0.5, -0.125, 0.125, 0.05, 0.125 },
|
||||
}
|
||||
}
|
||||
|
||||
homedecor.register("candle_thin", {
|
||||
description = S("Thin Candle"),
|
||||
mesh = "homedecor_candle_thin.obj",
|
||||
tiles = {
|
||||
'homedecor_candle_sides.png',
|
||||
{name="homedecor_candle_flame.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
|
||||
},
|
||||
inventory_image = "homedecor_candle_thin_inv.png",
|
||||
selection_box = c_cbox,
|
||||
walkable = false,
|
||||
groups = { snappy = 3 },
|
||||
light_source = default.LIGHT_MAX-4,
|
||||
})
|
||||
|
||||
local cs_cbox = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.15625, -0.5, -0.15625, 0.15625, 0.3125, 0.15625 },
|
||||
}
|
||||
}
|
||||
|
||||
homedecor.register("candlestick_wrought_iron", {
|
||||
description = S("Candlestick (wrought iron)"),
|
||||
mesh = "homedecor_candlestick.obj",
|
||||
tiles = {
|
||||
"homedecor_candle_sides.png",
|
||||
{name="homedecor_candle_flame.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
|
||||
"homedecor_generic_metal_wrought_iron.png",
|
||||
},
|
||||
inventory_image = "homedecor_candlestick_wrought_iron_inv.png",
|
||||
selection_box = cs_cbox,
|
||||
walkable = false,
|
||||
groups = { snappy = 3 },
|
||||
light_source = default.LIGHT_MAX-4,
|
||||
})
|
||||
|
||||
homedecor.register("candlestick_brass", {
|
||||
description = S("Candlestick (brass)"),
|
||||
mesh = "homedecor_candlestick.obj",
|
||||
tiles = {
|
||||
"homedecor_candle_sides.png",
|
||||
{name="homedecor_candle_flame.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
|
||||
"homedecor_generic_metal_brass.png",
|
||||
},
|
||||
inventory_image = "homedecor_candlestick_brass_inv.png",
|
||||
selection_box = cs_cbox,
|
||||
walkable = false,
|
||||
groups = { snappy = 3 },
|
||||
light_source = default.LIGHT_MAX-4,
|
||||
})
|
||||
|
||||
homedecor.register("wall_sconce", {
|
||||
description = S("Wall sconce"),
|
||||
mesh = "homedecor_wall_sconce.obj",
|
||||
tiles = {
|
||||
'homedecor_candle_sides.png',
|
||||
{name="homedecor_candle_flame.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}},
|
||||
'homedecor_wall_sconce_back.png',
|
||||
'homedecor_generic_metal_wrought_iron.png',
|
||||
},
|
||||
inventory_image = "homedecor_wall_sconce_inv.png",
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -0.1875, -0.25, 0.3125, 0.1875, 0.25, 0.5 }
|
||||
},
|
||||
walkable = false,
|
||||
groups = { snappy = 3 },
|
||||
light_source = default.LIGHT_MAX-4,
|
||||
})
|
||||
|
||||
local ol_cbox = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -5/16, -8/16, -3/16, 5/16, 4/16, 3/16 },
|
||||
}
|
||||
}
|
||||
|
||||
homedecor.register("oil_lamp", {
|
||||
description = S("Oil lamp (hurricane)"),
|
||||
mesh = "homedecor_oil_lamp.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_metal_brass.png",
|
||||
"homedecor_generic_metal_black.png",
|
||||
"homedecor_generic_metal_black.png^[colorize:#ff0000:160",
|
||||
"homedecor_oil_lamp_wick.png",
|
||||
"homedecor_generic_metal_black.png^[colorize:#ff0000:150",
|
||||
"homedecor_oil_lamp_glass.png",
|
||||
},
|
||||
use_texture_alpha = true,
|
||||
inventory_image = "homedecor_oil_lamp_inv.png",
|
||||
selection_box = ol_cbox,
|
||||
walkable = false,
|
||||
groups = { snappy = 3 },
|
||||
light_source = default.LIGHT_MAX-3,
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
})
|
||||
|
||||
homedecor.register("oil_lamp_tabletop", {
|
||||
description = S("Oil Lamp (tabletop)"),
|
||||
mesh = "homedecor_oil_lamp_tabletop.obj",
|
||||
tiles = {"homedecor_oil_lamp_tabletop.png"},
|
||||
inventory_image = "homedecor_oil_lamp_tabletop_inv.png",
|
||||
selection_box = ol_cbox,
|
||||
collision_box = ol_cbox,
|
||||
groups = { snappy = 3 },
|
||||
light_source = default.LIGHT_MAX-3,
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
})
|
||||
|
||||
local gl_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.25, -0.5, -0.25, 0.25, 0.45, 0.25 },
|
||||
}
|
||||
|
||||
minetest.register_alias("homedecor:wall_lantern", "homedecor:ground_lantern")
|
||||
|
||||
homedecor.register("ground_lantern", {
|
||||
description = S("Ground Lantern"),
|
||||
mesh = "homedecor_ground_lantern.obj",
|
||||
tiles = { "homedecor_light.png", "homedecor_generic_metal_wrought_iron.png" },
|
||||
use_texture_alpha = true,
|
||||
inventory_image = "homedecor_ground_lantern_inv.png",
|
||||
wield_image = "homedecor_ground_lantern_inv.png",
|
||||
groups = {snappy=3},
|
||||
light_source = 11,
|
||||
selection_box = gl_cbox,
|
||||
walkable = false
|
||||
})
|
||||
|
||||
local hl_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.25, -0.5, -0.2, 0.25, 0.5, 0.5 },
|
||||
}
|
||||
|
||||
homedecor.register("hanging_lantern", {
|
||||
description = S("Hanging Lantern"),
|
||||
mesh = "homedecor_hanging_lantern.obj",
|
||||
tiles = { "homedecor_generic_metal_wrought_iron.png", "homedecor_light.png" },
|
||||
use_texture_alpha = true,
|
||||
inventory_image = "homedecor_hanging_lantern_inv.png",
|
||||
wield_image = "homedecor_hanging_lantern_inv.png",
|
||||
groups = {snappy=3},
|
||||
light_source = 11,
|
||||
selection_box = hl_cbox,
|
||||
walkable = false
|
||||
})
|
||||
|
||||
local cl_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.35, -0.45, -0.35, 0.35, 0.5, 0.35 }
|
||||
}
|
||||
|
||||
homedecor.register("ceiling_lantern", {
|
||||
drawtype = "mesh",
|
||||
mesh = "homedecor_ceiling_lantern.obj",
|
||||
tiles = { "homedecor_light.png", "homedecor_generic_metal_wrought_iron.png" },
|
||||
use_texture_alpha = true,
|
||||
inventory_image = "homedecor_ceiling_lantern_inv.png",
|
||||
description = "Ceiling Lantern",
|
||||
groups = {snappy=3},
|
||||
light_source = 11,
|
||||
selection_box = cl_cbox,
|
||||
walkable = false
|
||||
})
|
||||
|
||||
homedecor.register("lattice_lantern_large", {
|
||||
description = S("Lattice lantern (large)"),
|
||||
tiles = { 'homedecor_lattice_lantern_large.png' },
|
||||
groups = { snappy = 3 },
|
||||
light_source = default.LIGHT_MAX,
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
})
|
||||
|
||||
homedecor.register("lattice_lantern_small", {
|
||||
description = S("Lattice lantern (small)"),
|
||||
tiles = {
|
||||
'homedecor_lattice_lantern_small_tb.png',
|
||||
'homedecor_lattice_lantern_small_tb.png',
|
||||
'homedecor_lattice_lantern_small_sides.png'
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
|
||||
},
|
||||
groups = { snappy = 3 },
|
||||
light_source = default.LIGHT_MAX-1,
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
on_place = minetest.rotate_node
|
||||
})
|
||||
|
||||
local repl = { off="low", low="med", med="hi", hi="max", max="off", }
|
||||
|
||||
local lamp_colors = {
|
||||
{ N_("white"), "#ffffffe0:175" },
|
||||
{ N_("blue"), "#2626c6e0:200" },
|
||||
{ N_("green"), "#27a927e0:200" },
|
||||
{ N_("pink"), "#ff8fb7e0:200" },
|
||||
{ N_("red"), "#ad2323e0:200" },
|
||||
{ N_("violet"), "#7f29d7e0:200" },
|
||||
}
|
||||
|
||||
local tlamp_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.25, -0.5, -0.25, 0.25, 0.5, 0.25 }
|
||||
}
|
||||
|
||||
local slamp_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.25, -0.5, -0.25, 0.25, 1.5, 0.25 }
|
||||
}
|
||||
|
||||
local function reg_lamp(suffix, nxt, tilesuffix, light, color)
|
||||
local lampcolor = "_"..color[1]
|
||||
local colordesc = S(color[1])
|
||||
local woolcolor = color[1]
|
||||
local invcolor = color[2]
|
||||
local wool_brighten = (light or 0) * 7
|
||||
local bulb_brighten = (light or 0) * 14
|
||||
|
||||
homedecor.register("table_lamp"..lampcolor.."_"..suffix, {
|
||||
description = S("Table Lamp (@1)", colordesc),
|
||||
mesh = "homedecor_table_lamp.obj",
|
||||
tiles = {
|
||||
"wool_"..woolcolor..".png^[colorize:#ffffff:"..wool_brighten,
|
||||
"homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:"..bulb_brighten,
|
||||
"homedecor_generic_wood_red.png",
|
||||
"homedecor_generic_metal_black.png^[brighten",
|
||||
},
|
||||
inventory_image = "homedecor_table_lamp_foot_inv.png^(homedecor_table_lamp_top_inv.png^[colorize:"..invcolor..")",
|
||||
walkable = false,
|
||||
light_source = light,
|
||||
selection_box = tlamp_cbox,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
groups = {cracky=2,oddly_breakable_by_hand=1,
|
||||
not_in_creative_inventory=((light ~= nil) and 1) or nil,
|
||||
},
|
||||
drop = "homedecor:table_lamp"..lampcolor.."_off",
|
||||
on_punch = function(pos, node, puncher)
|
||||
node.name = "homedecor:table_lamp"..lampcolor.."_"..repl[suffix]
|
||||
minetest.set_node(pos, node)
|
||||
end,
|
||||
})
|
||||
|
||||
-- standing lamps
|
||||
|
||||
homedecor.register("standing_lamp"..lampcolor.."_"..suffix, {
|
||||
description = S("Standing Lamp (@1)", colordesc),
|
||||
mesh = "homedecor_standing_lamp.obj",
|
||||
tiles = {
|
||||
"wool_"..woolcolor..".png^[colorize:#ffffff:"..wool_brighten,
|
||||
"homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:"..bulb_brighten,
|
||||
"homedecor_generic_wood_red.png",
|
||||
"homedecor_generic_metal_black.png^[brighten",
|
||||
},
|
||||
inventory_image = "homedecor_standing_lamp_foot_inv.png^(homedecor_standing_lamp_top_inv.png^[colorize:"..invcolor..")",
|
||||
walkable = false,
|
||||
light_source = light,
|
||||
groups = {cracky=2,oddly_breakable_by_hand=1,
|
||||
not_in_creative_inventory=((light ~= nil) and 1) or nil,
|
||||
},
|
||||
selection_box = slamp_cbox,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_rotate = screwdriver.rotate_simple,
|
||||
on_punch = function(pos, node, puncher)
|
||||
node.name = "homedecor:standing_lamp"..lampcolor.."_"..repl[suffix]
|
||||
minetest.set_node(pos, node)
|
||||
end,
|
||||
expand = { top="placeholder" },
|
||||
})
|
||||
|
||||
minetest.register_alias("homedecor:standing_lamp_bottom"..lampcolor.."_"..suffix, "homedecor:standing_lamp"..lampcolor.."_"..suffix)
|
||||
minetest.register_alias("homedecor:standing_lamp_top"..lampcolor.."_"..suffix, "air")
|
||||
|
||||
-- for old maps that had the original 3dforniture mod
|
||||
if lampcolor == "" then
|
||||
minetest.register_alias("3dforniture:table_lamp_"..suffix, "homedecor:table_lamp_"..suffix)
|
||||
end
|
||||
end
|
||||
|
||||
for _, color in ipairs(lamp_colors) do
|
||||
reg_lamp("off", "low", "", nil, color )
|
||||
reg_lamp("low", "med", "l", 3, color )
|
||||
reg_lamp("med", "hi", "m", 7, color )
|
||||
reg_lamp("hi", "max", "h", 11, color )
|
||||
reg_lamp("max", "off", "x", 14, color )
|
||||
end
|
||||
|
||||
local dlamp_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.2, -0.5, -0.15, 0.32, 0.12, 0.15 },
|
||||
}
|
||||
|
||||
local dlamp_colors = { N_("red"), N_("blue"), N_("green"), N_("violet") }
|
||||
|
||||
for _, color in ipairs(dlamp_colors) do
|
||||
homedecor.register("desk_lamp_"..color, {
|
||||
description = S("Desk Lamp (@1)", S(color)),
|
||||
mesh = "homedecor_desk_lamp.obj",
|
||||
tiles = {
|
||||
"homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:200",
|
||||
"homedecor_generic_metal_black.png^[colorize:"..color..":150",
|
||||
"homedecor_generic_metal_black.png",
|
||||
"homedecor_generic_metal_black.png^[colorize:"..color..":150"
|
||||
},
|
||||
inventory_image = "homedecor_desk_lamp_stem_inv.png^(homedecor_desk_lamp_metal_inv.png^[colorize:"..color..":140)",
|
||||
selection_box = dlamp_cbox,
|
||||
walkable = false,
|
||||
groups = {snappy=3},
|
||||
})
|
||||
end
|
||||
|
||||
homedecor.register("ceiling_lamp", {
|
||||
description = S("Ceiling Lamp"),
|
||||
mesh = "homedecor_ceiling_lamp.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_metal_brass.png",
|
||||
"homedecor_ceiling_lamp_glass.png",
|
||||
"homedecor_table_standing_lamp_lightbulb.png^[colorize:#ffffff:200",
|
||||
"homedecor_generic_plastic_black.png^[colorize:#442d04:200",
|
||||
},
|
||||
inventory_image = "homedecor_ceiling_lamp_inv.png",
|
||||
light_source = default.LIGHT_MAX,
|
||||
groups = {snappy=3},
|
||||
walkable = false,
|
||||
on_punch = function(pos, node, puncher)
|
||||
minetest.set_node(pos, {name = "homedecor:ceiling_lamp_off"})
|
||||
end,
|
||||
})
|
||||
|
||||
homedecor.register("ceiling_lamp_off", {
|
||||
description = S("Ceiling Lamp (off)"),
|
||||
mesh = "homedecor_ceiling_lamp.obj",
|
||||
tiles = {
|
||||
"homedecor_generic_metal_brass.png",
|
||||
"homedecor_ceiling_lamp_glass.png",
|
||||
"homedecor_table_standing_lamp_lightbulb.png",
|
||||
"homedecor_generic_plastic_black.png^[colorize:#442d04:200",
|
||||
},
|
||||
groups = {snappy=3, not_in_creative_inventory=1},
|
||||
walkable = false,
|
||||
on_punch = function(pos, node, puncher)
|
||||
minetest.set_node(pos, {name = "homedecor:ceiling_lamp"})
|
||||
end,
|
||||
drop = "homedecor:ceiling_lamp"
|
||||
})
|