initial commit
subgame + mods
1
mods/moretrees/.gitignore
vendored
Executable file
@ -0,0 +1 @@
|
||||
*~
|
392
mods/moretrees/LICENSE
Executable file
@ -0,0 +1,392 @@
|
||||
Minetest mod moretrees
|
||||
======================
|
||||
|
||||
All source code:
|
||||
© 2013, Vanessa Ezekowitz <vanessaezekowitz@gmail.com>
|
||||
Published under the terms and conditions of the WTFPL.
|
||||
All sapling textures (textures/*_sapling.png):
|
||||
© 2013, Tim Huppertz <mitroman@naturalnet.de>
|
||||
Published under the terms and conditions of CC-BY-SA-3.0 Unported.
|
||||
All other textures:
|
||||
© 2013, Vanessa Ezekowitz <vanessaezekowitz@gmail.com>
|
||||
Published under the terms and conditions of CC-BY-SA-3.0 Unported.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
Version 2, December 2004
|
||||
|
||||
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
||||
|
||||
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.
|
||||
|
||||
This license is commonly known as "WTFPL".
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Creative Commons Legal Code
|
||||
|
||||
Attribution-ShareAlike 3.0 Unported
|
||||
|
||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||
LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
|
||||
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||
REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
|
||||
DAMAGES RESULTING FROM ITS USE.
|
||||
|
||||
License
|
||||
|
||||
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
|
||||
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
|
||||
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
|
||||
AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
|
||||
|
||||
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
|
||||
TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
|
||||
BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
|
||||
CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
|
||||
CONDITIONS.
|
||||
|
||||
1. Definitions
|
||||
|
||||
a. "Adaptation" means a work based upon the Work, or upon the Work and
|
||||
other pre-existing works, such as a translation, adaptation,
|
||||
derivative work, arrangement of music or other alterations of a
|
||||
literary or artistic work, or phonogram or performance and includes
|
||||
cinematographic adaptations or any other form in which the Work may be
|
||||
recast, transformed, or adapted including in any form recognizably
|
||||
derived from the original, except that a work that constitutes a
|
||||
Collection will not be considered an Adaptation for the purpose of
|
||||
this License. For the avoidance of doubt, where the Work is a musical
|
||||
work, performance or phonogram, the synchronization of the Work in
|
||||
timed-relation with a moving image ("synching") will be considered an
|
||||
Adaptation for the purpose of this License.
|
||||
b. "Collection" means a collection of literary or artistic works, such as
|
||||
encyclopedias and anthologies, or performances, phonograms or
|
||||
broadcasts, or other works or subject matter other than works listed
|
||||
in Section 1(f) below, which, by reason of the selection and
|
||||
arrangement of their contents, constitute intellectual creations, in
|
||||
which the Work is included in its entirety in unmodified form along
|
||||
with one or more other contributions, each constituting separate and
|
||||
independent works in themselves, which together are assembled into a
|
||||
collective whole. A work that constitutes a Collection will not be
|
||||
considered an Adaptation (as defined below) for the purposes of this
|
||||
License.
|
||||
c. "Creative Commons Compatible License" means a license that is listed
|
||||
at http://creativecommons.org/compatiblelicenses that has been
|
||||
approved by Creative Commons as being essentially equivalent to this
|
||||
License, including, at a minimum, because that license: (i) contains
|
||||
terms that have the same purpose, meaning and effect as the License
|
||||
Elements of this License; and, (ii) explicitly permits the relicensing
|
||||
of adaptations of works made available under that license under this
|
||||
License or a Creative Commons jurisdiction license with the same
|
||||
License Elements as this License.
|
||||
d. "Distribute" means to make available to the public the original and
|
||||
copies of the Work or Adaptation, as appropriate, through sale or
|
||||
other transfer of ownership.
|
||||
e. "License Elements" means the following high-level license attributes
|
||||
as selected by Licensor and indicated in the title of this License:
|
||||
Attribution, ShareAlike.
|
||||
f. "Licensor" means the individual, individuals, entity or entities that
|
||||
offer(s) the Work under the terms of this License.
|
||||
g. "Original Author" means, in the case of a literary or artistic work,
|
||||
the individual, individuals, entity or entities who created the Work
|
||||
or if no individual or entity can be identified, the publisher; and in
|
||||
addition (i) in the case of a performance the actors, singers,
|
||||
musicians, dancers, and other persons who act, sing, deliver, declaim,
|
||||
play in, interpret or otherwise perform literary or artistic works or
|
||||
expressions of folklore; (ii) in the case of a phonogram the producer
|
||||
being the person or legal entity who first fixes the sounds of a
|
||||
performance or other sounds; and, (iii) in the case of broadcasts, the
|
||||
organization that transmits the broadcast.
|
||||
h. "Work" means the literary and/or artistic work offered under the terms
|
||||
of this License including without limitation any production in the
|
||||
literary, scientific and artistic domain, whatever may be the mode or
|
||||
form of its expression including digital form, such as a book,
|
||||
pamphlet and other writing; a lecture, address, sermon or other work
|
||||
of the same nature; a dramatic or dramatico-musical work; a
|
||||
choreographic work or entertainment in dumb show; a musical
|
||||
composition with or without words; a cinematographic work to which are
|
||||
assimilated works expressed by a process analogous to cinematography;
|
||||
a work of drawing, painting, architecture, sculpture, engraving or
|
||||
lithography; a photographic work to which are assimilated works
|
||||
expressed by a process analogous to photography; a work of applied
|
||||
art; an illustration, map, plan, sketch or three-dimensional work
|
||||
relative to geography, topography, architecture or science; a
|
||||
performance; a broadcast; a phonogram; a compilation of data to the
|
||||
extent it is protected as a copyrightable work; or a work performed by
|
||||
a variety or circus performer to the extent it is not otherwise
|
||||
considered a literary or artistic work.
|
||||
i. "You" means an individual or entity exercising rights under this
|
||||
License who has not previously violated the terms of this License with
|
||||
respect to the Work, or who has received express permission from the
|
||||
Licensor to exercise rights under this License despite a previous
|
||||
violation.
|
||||
j. "Publicly Perform" means to perform public recitations of the Work and
|
||||
to communicate to the public those public recitations, by any means or
|
||||
process, including by wire or wireless means or public digital
|
||||
performances; to make available to the public Works in such a way that
|
||||
members of the public may access these Works from a place and at a
|
||||
place individually chosen by them; to perform the Work to the public
|
||||
by any means or process and the communication to the public of the
|
||||
performances of the Work, including by public digital performance; to
|
||||
broadcast and rebroadcast the Work by any means including signs,
|
||||
sounds or images.
|
||||
k. "Reproduce" means to make copies of the Work by any means including
|
||||
without limitation by sound or visual recordings and the right of
|
||||
fixation and reproducing fixations of the Work, including storage of a
|
||||
protected performance or phonogram in digital form or other electronic
|
||||
medium.
|
||||
|
||||
2. Fair Dealing Rights. Nothing in this License is intended to reduce,
|
||||
limit, or restrict any uses free from copyright or rights arising from
|
||||
limitations or exceptions that are provided for in connection with the
|
||||
copyright protection under copyright law or other applicable laws.
|
||||
|
||||
3. License Grant. Subject to the terms and conditions of this License,
|
||||
Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
|
||||
perpetual (for the duration of the applicable copyright) license to
|
||||
exercise the rights in the Work as stated below:
|
||||
|
||||
a. to Reproduce the Work, to incorporate the Work into one or more
|
||||
Collections, and to Reproduce the Work as incorporated in the
|
||||
Collections;
|
||||
b. to create and Reproduce Adaptations provided that any such Adaptation,
|
||||
including any translation in any medium, takes reasonable steps to
|
||||
clearly label, demarcate or otherwise identify that changes were made
|
||||
to the original Work. For example, a translation could be marked "The
|
||||
original work was translated from English to Spanish," or a
|
||||
modification could indicate "The original work has been modified.";
|
||||
c. to Distribute and Publicly Perform the Work including as incorporated
|
||||
in Collections; and,
|
||||
d. to Distribute and Publicly Perform Adaptations.
|
||||
e. For the avoidance of doubt:
|
||||
|
||||
i. Non-waivable Compulsory License Schemes. In those jurisdictions in
|
||||
which the right to collect royalties through any statutory or
|
||||
compulsory licensing scheme cannot be waived, the Licensor
|
||||
reserves the exclusive right to collect such royalties for any
|
||||
exercise by You of the rights granted under this License;
|
||||
ii. Waivable Compulsory License Schemes. In those jurisdictions in
|
||||
which the right to collect royalties through any statutory or
|
||||
compulsory licensing scheme can be waived, the Licensor waives the
|
||||
exclusive right to collect such royalties for any exercise by You
|
||||
of the rights granted under this License; and,
|
||||
iii. Voluntary License Schemes. The Licensor waives the right to
|
||||
collect royalties, whether individually or, in the event that the
|
||||
Licensor is a member of a collecting society that administers
|
||||
voluntary licensing schemes, via that society, from any exercise
|
||||
by You of the rights granted under this License.
|
||||
|
||||
The above rights may be exercised in all media and formats whether now
|
||||
known or hereafter devised. The above rights include the right to make
|
||||
such modifications as are technically necessary to exercise the rights in
|
||||
other media and formats. Subject to Section 8(f), all rights not expressly
|
||||
granted by Licensor are hereby reserved.
|
||||
|
||||
4. Restrictions. The license granted in Section 3 above is expressly made
|
||||
subject to and limited by the following restrictions:
|
||||
|
||||
a. You may Distribute or Publicly Perform the Work only under the terms
|
||||
of this License. You must include a copy of, or the Uniform Resource
|
||||
Identifier (URI) for, this License with every copy of the Work You
|
||||
Distribute or Publicly Perform. You may not offer or impose any terms
|
||||
on the Work that restrict the terms of this License or the ability of
|
||||
the recipient of the Work to exercise the rights granted to that
|
||||
recipient under the terms of the License. You may not sublicense the
|
||||
Work. You must keep intact all notices that refer to this License and
|
||||
to the disclaimer of warranties with every copy of the Work You
|
||||
Distribute or Publicly Perform. When You Distribute or Publicly
|
||||
Perform the Work, You may not impose any effective technological
|
||||
measures on the Work that restrict the ability of a recipient of the
|
||||
Work from You to exercise the rights granted to that recipient under
|
||||
the terms of the License. This Section 4(a) applies to the Work as
|
||||
incorporated in a Collection, but this does not require the Collection
|
||||
apart from the Work itself to be made subject to the terms of this
|
||||
License. If You create a Collection, upon notice from any Licensor You
|
||||
must, to the extent practicable, remove from the Collection any credit
|
||||
as required by Section 4(c), as requested. If You create an
|
||||
Adaptation, upon notice from any Licensor You must, to the extent
|
||||
practicable, remove from the Adaptation any credit as required by
|
||||
Section 4(c), as requested.
|
||||
b. You may Distribute or Publicly Perform an Adaptation only under the
|
||||
terms of: (i) this License; (ii) a later version of this License with
|
||||
the same License Elements as this License; (iii) a Creative Commons
|
||||
jurisdiction license (either this or a later license version) that
|
||||
contains the same License Elements as this License (e.g.,
|
||||
Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible
|
||||
License. If you license the Adaptation under one of the licenses
|
||||
mentioned in (iv), you must comply with the terms of that license. If
|
||||
you license the Adaptation under the terms of any of the licenses
|
||||
mentioned in (i), (ii) or (iii) (the "Applicable License"), you must
|
||||
comply with the terms of the Applicable License generally and the
|
||||
following provisions: (I) You must include a copy of, or the URI for,
|
||||
the Applicable License with every copy of each Adaptation You
|
||||
Distribute or Publicly Perform; (II) You may not offer or impose any
|
||||
terms on the Adaptation that restrict the terms of the Applicable
|
||||
License or the ability of the recipient of the Adaptation to exercise
|
||||
the rights granted to that recipient under the terms of the Applicable
|
||||
License; (III) You must keep intact all notices that refer to the
|
||||
Applicable License and to the disclaimer of warranties with every copy
|
||||
of the Work as included in the Adaptation You Distribute or Publicly
|
||||
Perform; (IV) when You Distribute or Publicly Perform the Adaptation,
|
||||
You may not impose any effective technological measures on the
|
||||
Adaptation that restrict the ability of a recipient of the Adaptation
|
||||
from You to exercise the rights granted to that recipient under the
|
||||
terms of the Applicable License. This Section 4(b) applies to the
|
||||
Adaptation as incorporated in a Collection, but this does not require
|
||||
the Collection apart from the Adaptation itself to be made subject to
|
||||
the terms of the Applicable License.
|
||||
c. If You Distribute, or Publicly Perform the Work or any Adaptations or
|
||||
Collections, You must, unless a request has been made pursuant to
|
||||
Section 4(a), keep intact all copyright notices for the Work and
|
||||
provide, reasonable to the medium or means You are utilizing: (i) the
|
||||
name of the Original Author (or pseudonym, if applicable) if supplied,
|
||||
and/or if the Original Author and/or Licensor designate another party
|
||||
or parties (e.g., a sponsor institute, publishing entity, journal) for
|
||||
attribution ("Attribution Parties") in Licensor's copyright notice,
|
||||
terms of service or by other reasonable means, the name of such party
|
||||
or parties; (ii) the title of the Work if supplied; (iii) to the
|
||||
extent reasonably practicable, the URI, if any, that Licensor
|
||||
specifies to be associated with the Work, unless such URI does not
|
||||
refer to the copyright notice or licensing information for the Work;
|
||||
and (iv) , consistent with Ssection 3(b), in the case of an
|
||||
Adaptation, a credit identifying the use of the Work in the Adaptation
|
||||
(e.g., "French translation of the Work by Original Author," or
|
||||
"Screenplay based on original Work by Original Author"). The credit
|
||||
required by this Section 4(c) may be implemented in any reasonable
|
||||
manner; provided, however, that in the case of a Adaptation or
|
||||
Collection, at a minimum such credit will appear, if a credit for all
|
||||
contributing authors of the Adaptation or Collection appears, then as
|
||||
part of these credits and in a manner at least as prominent as the
|
||||
credits for the other contributing authors. For the avoidance of
|
||||
doubt, You may only use the credit required by this Section for the
|
||||
purpose of attribution in the manner set out above and, by exercising
|
||||
Your rights under this License, You may not implicitly or explicitly
|
||||
assert or imply any connection with, sponsorship or endorsement by the
|
||||
Original Author, Licensor and/or Attribution Parties, as appropriate,
|
||||
of You or Your use of the Work, without the separate, express prior
|
||||
written permission of the Original Author, Licensor and/or Attribution
|
||||
Parties.
|
||||
d. Except as otherwise agreed in writing by the Licensor or as may be
|
||||
otherwise permitted by applicable law, if You Reproduce, Distribute or
|
||||
Publicly Perform the Work either by itself or as part of any
|
||||
Adaptations or Collections, You must not distort, mutilate, modify or
|
||||
take other derogatory action in relation to the Work which would be
|
||||
prejudicial to the Original Author's honor or reputation. Licensor
|
||||
agrees that in those jurisdictions (e.g. Japan), in which any exercise
|
||||
of the right granted in Section 3(b) of this License (the right to
|
||||
make Adaptations) would be deemed to be a distortion, mutilation,
|
||||
modification or other derogatory action prejudicial to the Original
|
||||
Author's honor and reputation, the Licensor will waive or not assert,
|
||||
as appropriate, this Section, to the fullest extent permitted by the
|
||||
applicable national law, to enable You to reasonably exercise Your
|
||||
right under Section 3(b) of this License (right to make Adaptations)
|
||||
but not otherwise.
|
||||
|
||||
5. Representations, Warranties and Disclaimer
|
||||
|
||||
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
|
||||
OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
|
||||
KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
|
||||
INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
|
||||
LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
|
||||
WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
|
||||
OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
|
||||
|
||||
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
|
||||
LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
|
||||
ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
|
||||
ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
|
||||
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
7. Termination
|
||||
|
||||
a. This License and the rights granted hereunder will terminate
|
||||
automatically upon any breach by You of the terms of this License.
|
||||
Individuals or entities who have received Adaptations or Collections
|
||||
from You under this License, however, will not have their licenses
|
||||
terminated provided such individuals or entities remain in full
|
||||
compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
|
||||
survive any termination of this License.
|
||||
b. Subject to the above terms and conditions, the license granted here is
|
||||
perpetual (for the duration of the applicable copyright in the Work).
|
||||
Notwithstanding the above, Licensor reserves the right to release the
|
||||
Work under different license terms or to stop distributing the Work at
|
||||
any time; provided, however that any such election will not serve to
|
||||
withdraw this License (or any other license that has been, or is
|
||||
required to be, granted under the terms of this License), and this
|
||||
License will continue in full force and effect unless terminated as
|
||||
stated above.
|
||||
|
||||
8. Miscellaneous
|
||||
|
||||
a. Each time You Distribute or Publicly Perform the Work or a Collection,
|
||||
the Licensor offers to the recipient a license to the Work on the same
|
||||
terms and conditions as the license granted to You under this License.
|
||||
b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
|
||||
offers to the recipient a license to the original Work on the same
|
||||
terms and conditions as the license granted to You under this License.
|
||||
c. If any provision of this License is invalid or unenforceable under
|
||||
applicable law, it shall not affect the validity or enforceability of
|
||||
the remainder of the terms of this License, and without further action
|
||||
by the parties to this agreement, such provision shall be reformed to
|
||||
the minimum extent necessary to make such provision valid and
|
||||
enforceable.
|
||||
d. No term or provision of this License shall be deemed waived and no
|
||||
breach consented to unless such waiver or consent shall be in writing
|
||||
and signed by the party to be charged with such waiver or consent.
|
||||
e. This License constitutes the entire agreement between the parties with
|
||||
respect to the Work licensed here. There are no understandings,
|
||||
agreements or representations with respect to the Work not specified
|
||||
here. Licensor shall not be bound by any additional provisions that
|
||||
may appear in any communication from You. This License may not be
|
||||
modified without the mutual written agreement of the Licensor and You.
|
||||
f. The rights granted under, and the subject matter referenced, in this
|
||||
License were drafted utilizing the terminology of the Berne Convention
|
||||
for the Protection of Literary and Artistic Works (as amended on
|
||||
September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
|
||||
Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
|
||||
and the Universal Copyright Convention (as revised on July 24, 1971).
|
||||
These rights and subject matter take effect in the relevant
|
||||
jurisdiction in which the License terms are sought to be enforced
|
||||
according to the corresponding provisions of the implementation of
|
||||
those treaty provisions in the applicable national law. If the
|
||||
standard suite of rights granted under applicable copyright law
|
||||
includes additional rights not granted under this License, such
|
||||
additional rights are deemed to be included in the License; this
|
||||
License is not intended to restrict the license of any rights under
|
||||
applicable law.
|
||||
|
||||
|
||||
Creative Commons Notice
|
||||
|
||||
Creative Commons is not a party to this License, and makes no warranty
|
||||
whatsoever in connection with the Work. Creative Commons will not be
|
||||
liable to You or any party on any legal theory for any damages
|
||||
whatsoever, including without limitation any general, special,
|
||||
incidental or consequential damages arising in connection to this
|
||||
license. Notwithstanding the foregoing two (2) sentences, if Creative
|
||||
Commons has expressly identified itself as the Licensor hereunder, it
|
||||
shall have all rights and obligations of Licensor.
|
||||
|
||||
Except for the limited purpose of indicating to the public that the
|
||||
Work is licensed under the CCPL, Creative Commons does not authorize
|
||||
the use by either party of the trademark "Creative Commons" or any
|
||||
related trademark or logo of Creative Commons without the prior
|
||||
written consent of Creative Commons. Any permitted use will be in
|
||||
compliance with Creative Commons' then-current trademark usage
|
||||
guidelines, as may be published on its website or otherwise made
|
||||
available upon request from time to time. For the avoidance of doubt,
|
||||
this trademark restriction does not form part of the License.
|
||||
|
||||
Creative Commons may be contacted at http://creativecommons.org/.
|
11
mods/moretrees/README.md
Executable file
@ -0,0 +1,11 @@
|
||||
More trees!
|
||||
|
||||
This mod adds a whole bunch of new types of trees to the game
|
||||
|
||||
Much of the code here came from cisoun's conifers mod and bas080's
|
||||
jungle trees mod, and big contributions by RealBadAngel.
|
||||
|
||||
Brought together into one mod and made L-systems compatible by Vanessa
|
||||
Ezekowitz.
|
||||
|
||||
Dependencies: <a href="https://github.com/VanessaE/plantlife">plants_lib</a> and default
|
183
mods/moretrees/biome_defs.lua
Executable file
@ -0,0 +1,183 @@
|
||||
|
||||
moretrees.beech_biome = {
|
||||
surface = "default:dirt_with_grass",
|
||||
avoid_nodes = moretrees.avoidnodes,
|
||||
avoid_radius = 8,
|
||||
seed_diff = 2,
|
||||
rarity = 50,
|
||||
max_count = 20,
|
||||
}
|
||||
|
||||
moretrees.palm_biome = {
|
||||
surface = "default:sand",
|
||||
avoid_nodes = moretrees.avoidnodes,
|
||||
avoid_radius = 5,
|
||||
seed_diff = 330,
|
||||
min_elevation = -1,
|
||||
max_elevation = 1,
|
||||
near_nodes = {"default:water_source"},
|
||||
near_nodes_size = 15,
|
||||
near_nodes_count = 10,
|
||||
temp_min = 0.25,
|
||||
temp_max = -0.15,
|
||||
rarity = 50,
|
||||
max_count = 10,
|
||||
}
|
||||
|
||||
moretrees.apple_tree_biome = {
|
||||
surface = "default:dirt_with_grass",
|
||||
avoid_nodes = moretrees.avoidnodes,
|
||||
avoid_radius = 10,
|
||||
seed_diff = 331,
|
||||
min_elevation = 1,
|
||||
max_elevation = 10,
|
||||
temp_min = 0.1,
|
||||
temp_max = -0.15,
|
||||
rarity = 75,
|
||||
max_count = 5,
|
||||
}
|
||||
|
||||
moretrees.oak_biome = {
|
||||
surface = "default:dirt_with_grass",
|
||||
avoid_nodes = moretrees.avoidnodes,
|
||||
avoid_radius = 15,
|
||||
seed_diff = 332,
|
||||
min_elevation = 0,
|
||||
max_elevation = 10,
|
||||
temp_min = 0.4,
|
||||
temp_max = 0.2,
|
||||
rarity = 50,
|
||||
max_count = 5,
|
||||
}
|
||||
|
||||
moretrees.sequoia_biome = {
|
||||
surface = "default:dirt_with_grass",
|
||||
avoid_nodes = moretrees.avoidnodes,
|
||||
avoid_radius = 10,
|
||||
seed_diff = 333,
|
||||
min_elevation = 0,
|
||||
max_elevation = 10,
|
||||
temp_min = 1,
|
||||
temp_max = -0.4,
|
||||
rarity = 90,
|
||||
max_count = 5,
|
||||
}
|
||||
|
||||
moretrees.birch_biome = {
|
||||
surface = "default:dirt_with_grass",
|
||||
avoid_nodes = moretrees.avoidnodes,
|
||||
avoid_radius = 5,
|
||||
seed_diff = 334,
|
||||
min_elevation = 10,
|
||||
max_elevation = 15,
|
||||
temp_min = 0.9,
|
||||
temp_max = 0.3,
|
||||
rarity = 50,
|
||||
max_count = 10,
|
||||
}
|
||||
|
||||
moretrees.willow_biome = {
|
||||
surface = "default:dirt_with_grass",
|
||||
avoid_nodes = moretrees.avoidnodes,
|
||||
avoid_radius = 10,
|
||||
seed_diff = 337,
|
||||
min_elevation = -5,
|
||||
max_elevation = 5,
|
||||
near_nodes = {"default:water_source"},
|
||||
near_nodes_size = 15,
|
||||
near_nodes_count = 5,
|
||||
rarity = 75,
|
||||
max_count = 5,
|
||||
}
|
||||
|
||||
moretrees.acacia_biome = {
|
||||
surface = { "default:dirt_with_grass", "default:desert_sand" },
|
||||
avoid_nodes = moretrees.avoidnodes,
|
||||
avoid_radius = 15,
|
||||
seed_diff = 1,
|
||||
rarity = 50,
|
||||
max_count = 15,
|
||||
plantlife_limit = -1,
|
||||
humidity_min = 0.3,
|
||||
humidity_max = 0,
|
||||
}
|
||||
|
||||
moretrees.rubber_tree_biome = {
|
||||
surface = "default:dirt_with_grass",
|
||||
avoid_nodes = moretrees.avoidnodes,
|
||||
avoid_radius = 10,
|
||||
seed_diff = 338,
|
||||
min_elevation = -5,
|
||||
max_elevation = 5,
|
||||
near_nodes = {"default:water_source"},
|
||||
near_nodes_size = 15,
|
||||
near_nodes_count = 10,
|
||||
temp_min = -0.15,
|
||||
rarity = 75,
|
||||
max_count = 10,
|
||||
}
|
||||
|
||||
moretrees.jungletree_biome = {
|
||||
surface = "default:dirt_with_grass",
|
||||
avoid_nodes = moretrees.avoidnodes,
|
||||
avoid_radius = 5,
|
||||
seed_diff = 329,
|
||||
min_elevation = -5,
|
||||
max_elevation = 10,
|
||||
temp_min = 0.25,
|
||||
near_nodes = {"default:water_source"},
|
||||
near_nodes_size = 20,
|
||||
near_nodes_count = 7,
|
||||
rarity = 10,
|
||||
max_count = 10,
|
||||
}
|
||||
|
||||
moretrees.spruce_biome = {
|
||||
surface = "default:dirt_with_grass",
|
||||
avoid_nodes = moretrees.avoidnodes,
|
||||
avoid_radius = 10,
|
||||
seed_diff = 335,
|
||||
min_elevation = 20,
|
||||
temp_min = 0.9,
|
||||
temp_max = 0.7,
|
||||
rarity = 50,
|
||||
max_count = 5,
|
||||
}
|
||||
|
||||
moretrees.pine_biome = {
|
||||
surface = "default:dirt_with_grass",
|
||||
avoid_nodes = moretrees.avoidnodes,
|
||||
avoid_radius = 10,
|
||||
seed_diff = 336,
|
||||
near_nodes = {"default:water_source"},
|
||||
near_nodes_size = 15,
|
||||
near_nodes_count = 5,
|
||||
rarity = 50,
|
||||
max_count = 10,
|
||||
}
|
||||
|
||||
moretrees.fir_biome = {
|
||||
surface = "default:dirt_with_grass",
|
||||
avoid_nodes = moretrees.avoidnodes,
|
||||
avoid_radius = 10,
|
||||
seed_diff = 359,
|
||||
min_elevation = 25,
|
||||
temp_min = 0.9,
|
||||
temp_max = 0.3,
|
||||
rarity = 50,
|
||||
max_count = 10,
|
||||
}
|
||||
|
||||
moretrees.fir_biome_snow = {
|
||||
surface = {"snow:dirt_with_snow", "snow:snow"},
|
||||
below_nodes = {"default:dirt", "default:dirt_with_grass", "snow:dirt_with_snow"},
|
||||
avoid_nodes = moretrees.avoidnodes,
|
||||
avoid_radius = 10,
|
||||
seed_diff = 359,
|
||||
rarity = 50,
|
||||
max_count = 10,
|
||||
check_air = false,
|
||||
delete_above = true,
|
||||
spawn_replace_node = true
|
||||
}
|
||||
|
158
mods/moretrees/crafts.lua
Executable file
@ -0,0 +1,158 @@
|
||||
-- Boilerplate to support localized strings if intllib mod is installed.
|
||||
local S
|
||||
if (minetest.get_modpath("intllib")) then
|
||||
dofile(minetest.get_modpath("intllib").."/intllib.lua")
|
||||
S = intllib.Getter(minetest.get_current_modname())
|
||||
else
|
||||
S = function ( s ) return s end
|
||||
end
|
||||
|
||||
for i in ipairs(moretrees.treelist) do
|
||||
local treename = moretrees.treelist[i][1]
|
||||
|
||||
minetest.register_craft({
|
||||
output = "moretrees:"..treename.."_trunk 2",
|
||||
recipe = {
|
||||
{"moretrees:"..treename.."_trunk_sideways"},
|
||||
{"moretrees:"..treename.."_trunk_sideways"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "moretrees:"..treename.."_planks 4",
|
||||
recipe = {
|
||||
"moretrees:"..treename.."_trunk"
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "moretrees:"..treename.."_planks 4",
|
||||
recipe = {
|
||||
"moretrees:"..treename.."_trunk_sideways"
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "moretrees:"..treename.."_sapling",
|
||||
burntime = 10,
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "moretrees:rubber_tree_planks 4",
|
||||
recipe = {
|
||||
"moretrees:rubber_tree_trunk_empty"
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "group:moretrees_leaves",
|
||||
burntime = 1,
|
||||
})
|
||||
|
||||
-- Food recipes!
|
||||
|
||||
minetest.register_craftitem("moretrees:coconut_milk", {
|
||||
description = S("Coconut Milk"),
|
||||
inventory_image = "moretrees_coconut_milk_inv.png",
|
||||
wield_image = "moretrees_coconut_milk.png",
|
||||
on_use = minetest.item_eat(2),
|
||||
})
|
||||
|
||||
minetest.register_craftitem("moretrees:raw_coconut", {
|
||||
description = S("Raw Coconut"),
|
||||
inventory_image = "moretrees_raw_coconut.png",
|
||||
on_use = minetest.item_eat(4),
|
||||
})
|
||||
|
||||
minetest.register_craftitem("moretrees:acorn_muffin_batter", {
|
||||
description = S("Acorn Muffin batter"),
|
||||
inventory_image = "moretrees_acorn_muffin_batter.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("moretrees:acorn_muffin", {
|
||||
description = S("Acorn Muffin"),
|
||||
inventory_image = "moretrees_acorn_muffin.png",
|
||||
on_use = minetest.item_eat(4),
|
||||
})
|
||||
|
||||
minetest.register_craftitem("moretrees:spruce_nuts", {
|
||||
description = S("Roasted Spruce Cone Nuts"),
|
||||
inventory_image = "moretrees_spruce_nuts.png",
|
||||
on_use = minetest.item_eat(1),
|
||||
})
|
||||
|
||||
minetest.register_craftitem("moretrees:pine_nuts", {
|
||||
description = S("Roasted Pine Cone Nuts"),
|
||||
inventory_image = "moretrees_pine_nuts.png",
|
||||
on_use = minetest.item_eat(1),
|
||||
})
|
||||
|
||||
minetest.register_craftitem("moretrees:fir_nuts", {
|
||||
description = S("Roasted Fir Cone Nuts"),
|
||||
inventory_image = "moretrees_fir_nuts.png",
|
||||
on_use = minetest.item_eat(1),
|
||||
})
|
||||
|
||||
for i in ipairs(moretrees.cutting_tools) do
|
||||
local tool = moretrees.cutting_tools[i]
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "moretrees:coconut_milk",
|
||||
recipe = {
|
||||
"moretrees:coconut",
|
||||
"vessels:drinking_glass",
|
||||
tool
|
||||
},
|
||||
replacements = {
|
||||
{ "moretrees:coconut", "moretrees:raw_coconut" },
|
||||
{ tool, tool }
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "moretrees:acorn_muffin_batter",
|
||||
recipe = {
|
||||
"moretrees:acorn",
|
||||
"moretrees:acorn",
|
||||
"moretrees:acorn",
|
||||
"moretrees:acorn",
|
||||
"moretrees:coconut_milk",
|
||||
},
|
||||
replacements = {
|
||||
{ "moretrees:coconut_milk", "vessels:drinking_glass" }
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "moretrees:acorn_muffin 4",
|
||||
recipe = "moretrees:acorn_muffin_batter",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "moretrees:spruce_nuts 4",
|
||||
recipe = "moretrees:spruce_cone",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "moretrees:pine_nuts 4",
|
||||
recipe = "moretrees:pine_cone",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "moretrees:fir_nuts 4",
|
||||
recipe = "moretrees:fir_cone",
|
||||
})
|
||||
|
||||
|
87
mods/moretrees/default_settings.txt
Executable file
@ -0,0 +1,87 @@
|
||||
-- Global configuration variables
|
||||
|
||||
-- Enable the various kinds of trees.
|
||||
|
||||
moretrees.enable_apple_tree = true
|
||||
moretrees.enable_oak = true
|
||||
moretrees.enable_sequoia = true
|
||||
moretrees.enable_palm = true
|
||||
moretrees.enable_pine = true
|
||||
moretrees.enable_rubber_tree = true
|
||||
moretrees.enable_willow = true
|
||||
moretrees.enable_acacia = true
|
||||
moretrees.enable_birch = true
|
||||
moretrees.enable_spruce = true
|
||||
moretrees.enable_jungle_tree = true
|
||||
moretrees.enable_fir = true
|
||||
moretrees.enable_beech = false
|
||||
|
||||
-- set this to true to make moretrees spawn saplings at mapgen time instead
|
||||
-- of fully-grown trees, which will grow into full trees very quickly. With
|
||||
-- older versions of plants_lib, doing this will reduce mapgen lag.
|
||||
|
||||
moretrees.spawn_saplings = false
|
||||
|
||||
-- Set this to true to allow usage of the stairsplus mod in moreblocks
|
||||
|
||||
moretrees.enable_stairsplus = true
|
||||
|
||||
-- Set this to true if you want the plantlike drawtype for leaves, which
|
||||
-- improves some peoples' framerates without resorting to making leaf nodes opaque.
|
||||
-- Affects default leaves and default jungle leaves also.
|
||||
|
||||
moretrees.plantlike_leaves = false
|
||||
|
||||
-- Set this to true to enable leaf decay of all trees except the default ones.
|
||||
|
||||
moretrees.enable_leafdecay = true
|
||||
|
||||
-- Enable this one if you want this mod's leafdecay code to affect the old
|
||||
-- default trees too; this setting is independent of the one above. You'll
|
||||
-- want to manually disable the default leafdecay code in minetest_game if
|
||||
-- you enable this, otherwise you'll have two sets of leaf decay code running
|
||||
-- at the same time, which will just waste CPU for no benefit.
|
||||
|
||||
moretrees.enable_default_leafdecay = true
|
||||
|
||||
-- Enable this one for default *jungle* leaves
|
||||
|
||||
moretrees.enable_default_jungle_leafdecay = true
|
||||
|
||||
-- Enable this if you want moretrees to redefine default apples so that they
|
||||
-- fall when leaves decay/are dug.
|
||||
|
||||
moretrees.enable_redefine_apple = true
|
||||
|
||||
-- various settings to configure default and default-jungle leaf decay.
|
||||
|
||||
moretrees.leafdecay_delay = 2
|
||||
moretrees.leafdecay_chance = 100
|
||||
moretrees.leafdecay_radius = 5
|
||||
|
||||
moretrees.default_jungle_leafdecay_delay = 2
|
||||
moretrees.default_jungle_leafdecay_chance = 100
|
||||
moretrees.default_jungle_leafdecay_radius = 5
|
||||
|
||||
moretrees.palm_leafdecay_radius = 15
|
||||
|
||||
moretrees.default_leafdecay_delay = 3
|
||||
moretrees.default_leafdecay_chance = 50
|
||||
moretrees.default_leafdecay_radius = 4
|
||||
|
||||
-- Change these settings if you want default trees to be gradually cut down
|
||||
-- above the elevation where firs normally generate.
|
||||
|
||||
moretrees.firs_remove_default_trees = false
|
||||
moretrees.firs_remove_interval = 2
|
||||
moretrees.firs_remove_chance = 150
|
||||
|
||||
-- Sapling settings
|
||||
|
||||
moretrees.sapling_interval = 500
|
||||
moretrees.sapling_chance = 20
|
||||
|
||||
-- If this variable is set to true, drop leaves out as entities during leaf
|
||||
-- decay, rather than just disappearing them.
|
||||
|
||||
moretrees.decay_leaves_as_items = false
|
4
mods/moretrees/depends.txt
Executable file
@ -0,0 +1,4 @@
|
||||
default
|
||||
plants_lib
|
||||
moreblocks?
|
||||
|
304
mods/moretrees/init.lua
Executable file
@ -0,0 +1,304 @@
|
||||
-- More trees! 2013-04-07
|
||||
--
|
||||
-- This mod adds more types of trees to the game
|
||||
--
|
||||
-- Some of the node definitions and textures came from cisoun's conifers mod
|
||||
-- and bas080's jungle trees mod.
|
||||
--
|
||||
-- Brought together into one mod and made L-systems compatible by Vanessa
|
||||
-- Ezekowitz.
|
||||
--
|
||||
-- Firs and Jungle tree axioms/rules by Vanessa Ezekowitz, with the
|
||||
-- latter having been tweaked by RealBadAngel, most other axioms/rules written
|
||||
-- by RealBadAngel.
|
||||
--
|
||||
-- License: WTFPL for all parts (code and textures, including those copied
|
||||
-- from the jungletree and conifers mods) except the default jungle tree trunk
|
||||
-- texture, which is CC-By-SA.
|
||||
|
||||
moretrees = {}
|
||||
|
||||
-- Read the default config file (and if necessary, copy it to the world folder).
|
||||
|
||||
local worldpath=minetest.get_worldpath()
|
||||
local modpath=minetest.get_modpath("moretrees")
|
||||
|
||||
dofile(modpath.."/default_settings.txt")
|
||||
|
||||
if io.open(worldpath.."/moretrees_settings.txt","r") == nil then
|
||||
|
||||
io.input(modpath.."/default_settings.txt")
|
||||
io.output(worldpath.."/moretrees_settings.txt")
|
||||
|
||||
local size = 2^13 -- good buffer size (8K)
|
||||
while true do
|
||||
local block = io.read(size)
|
||||
if not block then
|
||||
io.close()
|
||||
break
|
||||
end
|
||||
io.write(block)
|
||||
end
|
||||
else
|
||||
dofile(worldpath.."/moretrees_settings.txt")
|
||||
end
|
||||
|
||||
-- Boilerplate to support localized strings if intllib mod is installed.
|
||||
local S
|
||||
if (minetest.get_modpath("intllib")) then
|
||||
dofile(minetest.get_modpath("intllib").."/intllib.lua")
|
||||
S = intllib.Getter(minetest.get_current_modname())
|
||||
else
|
||||
S = function ( s ) return s end
|
||||
end
|
||||
|
||||
-- infinite stacks checking
|
||||
|
||||
if minetest.get_modpath("unified_inventory") or not minetest.setting_getbool("creative_mode") then
|
||||
moretrees.expect_infinite_stacks = false
|
||||
else
|
||||
moretrees.expect_infinite_stacks = true
|
||||
end
|
||||
|
||||
-- tables, load other files
|
||||
|
||||
moretrees.cutting_tools = {
|
||||
"default:axe_bronze",
|
||||
"default:axe_diamond",
|
||||
"default:axe_mese",
|
||||
"default:axe_steel",
|
||||
"glooptest:axe_alatro",
|
||||
"glooptest:axe_arol",
|
||||
"moreores:axe_mithril",
|
||||
"moreores:axe_silver",
|
||||
"titanium:axe",
|
||||
}
|
||||
|
||||
dofile(modpath.."/tree_models.lua")
|
||||
dofile(modpath.."/node_defs.lua")
|
||||
dofile(modpath.."/biome_defs.lua")
|
||||
dofile(modpath.."/saplings.lua")
|
||||
dofile(modpath.."/crafts.lua")
|
||||
dofile(modpath.."/leafdecay.lua")
|
||||
|
||||
-- tree spawning setup
|
||||
|
||||
if moretrees.spawn_saplings then
|
||||
moretrees.spawn_beech_object = "moretrees:beech_sapling_ongen"
|
||||
moretrees.spawn_apple_tree_object = "moretrees:apple_tree_sapling_ongen"
|
||||
moretrees.spawn_oak_object = "moretrees:oak_sapling_ongen"
|
||||
moretrees.spawn_sequoia_object = "moretrees:sequoia_sapling_ongen"
|
||||
moretrees.spawn_palm_object = "moretrees:palm_sapling_ongen"
|
||||
moretrees.spawn_pine_object = "moretrees:pine_sapling_ongen"
|
||||
moretrees.spawn_rubber_tree_object = "moretrees:rubber_tree_sapling_ongen"
|
||||
moretrees.spawn_willow_object = "moretrees:willow_sapling_ongen"
|
||||
moretrees.spawn_acacia_object = "moretrees:acacia_sapling_ongen"
|
||||
moretrees.spawn_birch_object = "moretrees:birch_sapling_ongen"
|
||||
moretrees.spawn_spruce_object = "moretrees:spruce_sapling_ongen"
|
||||
moretrees.spawn_jungletree_object = "moretrees:jungletree_sapling_ongen"
|
||||
moretrees.spawn_fir_object = "moretrees:fir_sapling_ongen"
|
||||
moretrees.spawn_fir_snow_object = "snow:sapling_pine"
|
||||
else
|
||||
moretrees.spawn_beech_object = moretrees.beech_model
|
||||
moretrees.spawn_apple_tree_object = moretrees.apple_tree_model
|
||||
moretrees.spawn_oak_object = moretrees.oak_model
|
||||
moretrees.spawn_sequoia_object = moretrees.sequoia_model
|
||||
moretrees.spawn_palm_object = moretrees.palm_model
|
||||
moretrees.spawn_pine_object = moretrees.pine_model
|
||||
moretrees.spawn_rubber_tree_object = moretrees.rubber_tree_model
|
||||
moretrees.spawn_willow_object = moretrees.willow_model
|
||||
moretrees.spawn_acacia_object = moretrees.acacia_model
|
||||
moretrees.spawn_birch_object = "moretrees:grow_birch"
|
||||
moretrees.spawn_spruce_object = "moretrees:grow_spruce"
|
||||
moretrees.spawn_jungletree_object = "moretrees:grow_jungletree"
|
||||
moretrees.spawn_fir_object = "moretrees:grow_fir"
|
||||
moretrees.spawn_fir_snow_object = "moretrees:grow_fir_snow"
|
||||
end
|
||||
|
||||
|
||||
if moretrees.enable_beech then
|
||||
plantslib:register_generate_plant(moretrees.beech_biome, moretrees.spawn_beech_object)
|
||||
end
|
||||
|
||||
if moretrees.enable_apple_tree then
|
||||
plantslib:register_generate_plant(moretrees.apple_tree_biome, moretrees.spawn_apple_tree_object)
|
||||
end
|
||||
|
||||
if moretrees.enable_oak then
|
||||
plantslib:register_generate_plant(moretrees.oak_biome, moretrees.spawn_oak_object)
|
||||
end
|
||||
|
||||
if moretrees.enable_sequoia then
|
||||
plantslib:register_generate_plant(moretrees.sequoia_biome, moretrees.spawn_sequoia_object)
|
||||
end
|
||||
|
||||
if moretrees.enable_palm then
|
||||
plantslib:register_generate_plant(moretrees.palm_biome, moretrees.spawn_palm_object)
|
||||
end
|
||||
|
||||
if moretrees.enable_pine then
|
||||
plantslib:register_generate_plant(moretrees.pine_biome, moretrees.spawn_pine_object)
|
||||
end
|
||||
|
||||
if moretrees.enable_rubber_tree then
|
||||
plantslib:register_generate_plant(moretrees.rubber_tree_biome, moretrees.spawn_rubber_tree_object)
|
||||
end
|
||||
|
||||
if moretrees.enable_willow then
|
||||
plantslib:register_generate_plant(moretrees.willow_biome, moretrees.spawn_willow_object)
|
||||
end
|
||||
|
||||
if moretrees.enable_acacia then
|
||||
plantslib:register_generate_plant(moretrees.acacia_biome, moretrees.spawn_acacia_object)
|
||||
end
|
||||
|
||||
if moretrees.enable_birch then
|
||||
plantslib:register_generate_plant(moretrees.birch_biome, moretrees.spawn_birch_object)
|
||||
end
|
||||
|
||||
if moretrees.enable_spruce then
|
||||
plantslib:register_generate_plant(moretrees.spruce_biome, moretrees.spawn_spruce_object)
|
||||
end
|
||||
|
||||
if moretrees.enable_jungle_tree then
|
||||
plantslib:register_generate_plant(moretrees.jungletree_biome, moretrees.spawn_jungletree_object)
|
||||
end
|
||||
|
||||
if moretrees.enable_fir then
|
||||
plantslib:register_generate_plant(moretrees.fir_biome, moretrees.spawn_fir_object)
|
||||
if minetest.get_modpath("snow") then
|
||||
plantslib:register_generate_plant(moretrees.fir_biome_snow, moretrees.spawn_fir_snow_object)
|
||||
end
|
||||
end
|
||||
|
||||
-- Code to spawn a birch tree
|
||||
|
||||
function moretrees:grow_birch(pos)
|
||||
minetest.remove_node(pos)
|
||||
if math.random(1,2) == 1 then
|
||||
minetest.spawn_tree(pos, moretrees.birch_model1)
|
||||
else
|
||||
minetest.spawn_tree(pos, moretrees.birch_model2)
|
||||
end
|
||||
end
|
||||
|
||||
-- Code to spawn a spruce tree
|
||||
|
||||
function moretrees:grow_spruce(pos)
|
||||
minetest.remove_node(pos)
|
||||
if math.random(1,2) == 1 then
|
||||
minetest.spawn_tree(pos, moretrees.spruce_model1)
|
||||
else
|
||||
minetest.spawn_tree(pos, moretrees.spruce_model2)
|
||||
end
|
||||
end
|
||||
|
||||
-- Code to spawn jungle trees
|
||||
|
||||
moretrees.jt_axiom1 = "FFFA"
|
||||
moretrees.jt_rules_a1 = "FFF[&&-FBf[&&&Ff]^^^Ff][&&+FBFf[&&&FFf]^^^Ff][&&---FBFf[&&&Ff]^^^Ff][&&+++FBFf[&&&Ff]^^^Ff]F/A"
|
||||
moretrees.jt_rules_b1 = "[-Ff&f][+Ff&f]B"
|
||||
|
||||
moretrees.jt_axiom2 = "FFFFFA"
|
||||
moretrees.jt_rules_a2 = "FFFFF[&&-FFFBF[&&&FFff]^^^FFf][&&+FFFBFF[&&&FFff]^^^FFf][&&---FFFBFF[&&&FFff]^^^FFf][&&+++FFFBFF[&&&FFff]^^^FFf]FF/A"
|
||||
moretrees.jt_rules_b2 = "[-FFf&ff][+FFf&ff]B"
|
||||
|
||||
moretrees.ct_rules_a1 = "FF[FF][&&-FBF][&&+FBF][&&---FBF][&&+++FBF]F/A"
|
||||
moretrees.ct_rules_b1 = "[-FBf][+FBf]"
|
||||
|
||||
moretrees.ct_rules_a2 = "FF[FF][&&-FBF][&&+FBF][&&---FBF][&&+++FBF]F/A"
|
||||
moretrees.ct_rules_b2 = "[-fB][+fB]"
|
||||
|
||||
function moretrees:grow_jungletree(pos)
|
||||
local r1 = math.random(2)
|
||||
local r2 = math.random(3)
|
||||
if r1 == 1 then
|
||||
moretrees.jungletree_model.leaves2 = "moretrees:jungletree_leaves_red"
|
||||
else
|
||||
moretrees.jungletree_model.leaves2 = "moretrees:jungletree_leaves_yellow"
|
||||
end
|
||||
moretrees.jungletree_model.leaves2_chance = math.random(25, 75)
|
||||
|
||||
if r2 == 1 then
|
||||
moretrees.jungletree_model.trunk_type = "single"
|
||||
moretrees.jungletree_model.iterations = 2
|
||||
moretrees.jungletree_model.axiom = moretrees.jt_axiom1
|
||||
moretrees.jungletree_model.rules_a = moretrees.jt_rules_a1
|
||||
moretrees.jungletree_model.rules_b = moretrees.jt_rules_b1
|
||||
elseif r2 == 2 then
|
||||
moretrees.jungletree_model.trunk_type = "double"
|
||||
moretrees.jungletree_model.iterations = 4
|
||||
moretrees.jungletree_model.axiom = moretrees.jt_axiom2
|
||||
moretrees.jungletree_model.rules_a = moretrees.jt_rules_a2
|
||||
moretrees.jungletree_model.rules_b = moretrees.jt_rules_b2
|
||||
elseif r2 == 3 then
|
||||
moretrees.jungletree_model.trunk_type = "crossed"
|
||||
moretrees.jungletree_model.iterations = 4
|
||||
moretrees.jungletree_model.axiom = moretrees.jt_axiom2
|
||||
moretrees.jungletree_model.rules_a = moretrees.jt_rules_a2
|
||||
moretrees.jungletree_model.rules_b = moretrees.jt_rules_b2
|
||||
end
|
||||
|
||||
minetest.remove_node(pos)
|
||||
local leaves = minetest.find_nodes_in_area({x = pos.x-1, y = pos.y, z = pos.z-1}, {x = pos.x+1, y = pos.y+10, z = pos.z+1}, "default:leaves")
|
||||
for leaf in ipairs(leaves) do
|
||||
minetest.remove_node(leaves[leaf])
|
||||
end
|
||||
minetest.spawn_tree(pos, moretrees.jungletree_model)
|
||||
end
|
||||
|
||||
-- code to spawn fir trees
|
||||
|
||||
function moretrees:grow_fir(pos)
|
||||
if math.random(2) == 1 then
|
||||
moretrees.fir_model.leaves="moretrees:fir_leaves"
|
||||
else
|
||||
moretrees.fir_model.leaves="moretrees:fir_leaves_bright"
|
||||
end
|
||||
if math.random(2) == 1 then
|
||||
moretrees.fir_model.rules_a = moretrees.ct_rules_a1
|
||||
moretrees.fir_model.rules_b = moretrees.ct_rules_b1
|
||||
else
|
||||
moretrees.fir_model.rules_a = moretrees.ct_rules_a2
|
||||
moretrees.fir_model.rules_b = moretrees.ct_rules_b2
|
||||
end
|
||||
|
||||
moretrees.fir_model.iterations = 7
|
||||
moretrees.fir_model.random_level = 5
|
||||
|
||||
minetest.remove_node(pos)
|
||||
local leaves = minetest.find_nodes_in_area({x = pos.x, y = pos.y, z = pos.z}, {x = pos.x, y = pos.y+5, z = pos.z}, "default:leaves")
|
||||
for leaf in ipairs(leaves) do
|
||||
minetest.remove_node(leaves[leaf])
|
||||
end
|
||||
minetest.spawn_tree(pos,moretrees.fir_model)
|
||||
end
|
||||
|
||||
-- same thing, but a smaller version that grows only in snow biomes
|
||||
|
||||
function moretrees:grow_fir_snow(pos)
|
||||
if math.random(2) == 1 then
|
||||
moretrees.fir_model.leaves="moretrees:fir_leaves"
|
||||
else
|
||||
moretrees.fir_model.leaves="moretrees:fir_leaves_bright"
|
||||
end
|
||||
if math.random(2) == 1 then
|
||||
moretrees.fir_model.rules_a = moretrees.ct_rules_a1
|
||||
moretrees.fir_model.rules_b = moretrees.ct_rules_b1
|
||||
else
|
||||
moretrees.fir_model.rules_a = moretrees.ct_rules_a2
|
||||
moretrees.fir_model.rules_b = moretrees.ct_rules_b2
|
||||
end
|
||||
|
||||
moretrees.fir_model.iterations = 2
|
||||
moretrees.fir_model.random_level = 2
|
||||
|
||||
minetest.remove_node(pos)
|
||||
local leaves = minetest.find_nodes_in_area({x = pos.x, y = pos.y, z = pos.z}, {x = pos.x, y = pos.y+5, z = pos.z}, "default:leaves")
|
||||
for leaf in ipairs(leaves) do
|
||||
minetest.remove_node(leaves[leaf])
|
||||
end
|
||||
minetest.spawn_tree(pos,moretrees.fir_model)
|
||||
end
|
||||
|
||||
print(S("[Moretrees] Loaded (2013-02-11)"))
|
117
mods/moretrees/leafdecay.lua
Executable file
@ -0,0 +1,117 @@
|
||||
-- leaf decay
|
||||
|
||||
-- this function is based on the default leafdecay code
|
||||
local process_drops = function(pos, name)
|
||||
local drops = minetest.get_node_drops(name)
|
||||
for _,dropitem in ipairs(drops) do
|
||||
if dropitem ~= name
|
||||
or (string.find(name, "leaves") and moretrees.decay_leaves_as_items) then
|
||||
local newpos = {
|
||||
x=pos.x + math.random() - 0.5,
|
||||
y=pos.y + math.random() - 0.5,
|
||||
z=pos.z + math.random() - 0.5
|
||||
}
|
||||
minetest.add_item(newpos, dropitem)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if moretrees.enable_leafdecay then
|
||||
for i in ipairs(moretrees.treelist) do
|
||||
local treename = moretrees.treelist[i][1]
|
||||
if treename ~= "jungletree" and treename ~= "fir" and treename ~= "palm" then
|
||||
minetest.register_abm({
|
||||
nodenames = "moretrees:"..treename.."_leaves",
|
||||
interval = moretrees.leafdecay_delay,
|
||||
chance = moretrees.leafdecay_chance,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if minetest.find_node_near(pos, moretrees.leafdecay_radius, { "ignore", "moretrees:"..treename.."_trunk" }) then return end
|
||||
process_drops(pos, node.name)
|
||||
minetest.remove_node(pos)
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"moretrees:jungletree_leaves_red","moretrees:jungletree_leaves_green","moretrees:jungletree_leaves_yellow"},
|
||||
interval = moretrees.leafdecay_delay,
|
||||
chance = moretrees.leafdecay_chance,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if minetest.find_node_near(pos, moretrees.leafdecay_radius, {"ignore", "default:jungletree", "moretrees:jungletree_trunk"}) then return end
|
||||
process_drops(pos, node.name)
|
||||
minetest.remove_node(pos)
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"moretrees:fir_leaves", "moretrees:fir_leaves_bright"},
|
||||
interval = moretrees.leafdecay_delay,
|
||||
chance = moretrees.leafdecay_chance,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if minetest.find_node_near(pos, moretrees.leafdecay_radius, { "ignore", "moretrees:fir_trunk" }) then return end
|
||||
process_drops(pos, node.name)
|
||||
minetest.remove_node(pos)
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = "moretrees:palm_leaves",
|
||||
interval = moretrees.leafdecay_delay,
|
||||
chance = moretrees.leafdecay_chance,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if minetest.find_node_near(pos, moretrees.palm_leafdecay_radius, { "ignore", "moretrees:palm_trunk" }) then return end
|
||||
process_drops(pos, node.name)
|
||||
minetest.remove_node(pos)
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
if moretrees.enable_default_leafdecay then
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = "default:leaves",
|
||||
interval = moretrees.default_leafdecay_delay,
|
||||
chance = moretrees.default_leafdecay_chance,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if minetest.find_node_near(pos, moretrees.default_leafdecay_radius, { "ignore", "default:tree" }) then return end
|
||||
process_drops(pos, node.name)
|
||||
minetest.remove_node(pos)
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
-- Decay apple tree blossoms from nature_classic mod
|
||||
if minetest.get_modpath("nature_classic") then
|
||||
minetest.register_abm({
|
||||
nodenames = "moretrees:apple_blossoms",
|
||||
interval = moretrees.default_leafdecay_delay,
|
||||
chance = moretrees.default_leafdecay_chance,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if minetest.find_node_near(pos, moretrees.leafdecay_radius, { "ignore", "moretrees:apple_tree_trunk" }) then return end
|
||||
process_drops(pos, "moretrees:apple_tree_leaves")
|
||||
minetest.remove_node(pos)
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
if moretrees.enable_default_jungle_leafdecay then
|
||||
minetest.register_abm({
|
||||
nodenames = "default:jungleleaves",
|
||||
interval = moretrees.default_jungle_leafdecay_delay,
|
||||
chance = moretrees.default_jungle_leafdecay_chance,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
if minetest.find_node_near(pos, moretrees.default_jungle_leafdecay_radius, { "ignore", "default:jungletree" }) then return end
|
||||
process_drops(pos, node.name)
|
||||
minetest.remove_node(pos)
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
end
|
||||
|
74
mods/moretrees/locale/de.txt
Executable file
@ -0,0 +1,74 @@
|
||||
# Translation by Xanthin
|
||||
|
||||
### crafts.lua ###
|
||||
Coconut Milk = Kokosnussmilch
|
||||
Raw Coconut = Kokosnussfleisch
|
||||
Acorn Muffin batter = Eichelmuffinteig
|
||||
Acorn Muffin = Eichelmuffin
|
||||
Roasted Spruce Cone Nuts = Geroestete Fichtenzapfen
|
||||
Roasted Pine Cone Nuts = Geroestete Kiefernzapfen
|
||||
Roasted Fir Cone Nuts = Geroestete Tannenzapfen
|
||||
|
||||
### node_defs.lua ###
|
||||
Beech Tree Trunk = Buchenstamm
|
||||
Apple Tree Trunk = Apfelbaumstamm
|
||||
Oak Tree Trunk = Eichenstamm
|
||||
Giant Sequoia Trunk = Riesenmammutbaumstamm
|
||||
Birch Tree Trunk = Birkenstamm
|
||||
Palm Tree Trunk = Palmenstamm
|
||||
Spruce Tree Trunk = Fichtenstamm
|
||||
Pine Tree Trunk = Kiefernstamm
|
||||
Willow Tree Trunk = Weidenstamm
|
||||
Rubber Tree Trunk = Gummibaumstamm
|
||||
Jungle Tree Trunk = Tropenbaumstamm
|
||||
Douglas Fir Trunk = Douglasienstamm
|
||||
Beech Tree Planks = Buchebretter
|
||||
Apple Tree Planks = Apfelbaumbretter
|
||||
Oak Tree Planks = Eichenbretter
|
||||
Giant Sequoia Planks = Riesenmammutbaumbretter
|
||||
Birch Tree Planks = Birkebretter
|
||||
Palm Tree Planks = Palmenbretter
|
||||
Spruce Tree Planks = Fichtenbretter
|
||||
Pine Tree Planks = Kiefernbretter
|
||||
Willow Tree Planks = Weidenbretter
|
||||
Rubber Tree Planks = Gummibaumbretter
|
||||
Jungle Tree Planks = Tropenholzbretter
|
||||
Douglas Fir Planks = Douglasienbretter
|
||||
Beech Tree Sapling = Buchesetzling
|
||||
Apple Tree Sapling = Apfelbaumsetzling
|
||||
Oak Tree Sapling = Eichensetzling
|
||||
Giant Sequoia Sapling = Riesenmammutbaumsetzling
|
||||
Birch Tree Sapling = Birkensetzling
|
||||
Palm Tree Sapling = Palmensetzling
|
||||
Spruce Tree Sapling = Fichtensetzling
|
||||
Pine Tree Sapling = Kiefernsetzling
|
||||
Willow Tree Sapling = Weidensetzling
|
||||
Rubber Tree Sapling = Gummibaumsetzling
|
||||
Jungle Tree Sapling = Tropenbaumsetzling
|
||||
Douglas Fir Sapling = Douglasiensetzling
|
||||
Beech Tree Leaves = Buchenlaub
|
||||
Apple Tree Leaves = Apfelbaumlaub
|
||||
Oak Tree Leaves = Eichenlaub
|
||||
Giant Sequoia Leaves = Riesenmammutbaumlaub
|
||||
Birch Tree Leaves = Birkenlaub
|
||||
Palm Tree Leaves = Palmenlaub
|
||||
Spruce Tree Leaves = Fichtennadeln
|
||||
Pine Tree Leaves = Kiefernnadeln
|
||||
Willow Tree Leaves = Weidenlaub
|
||||
Rubber Tree Leaves = Gummibaumlaub
|
||||
Jungle Tree Leaves = Tropenbaumlaub
|
||||
Douglas Fir Leaves = Douglasiennadeln
|
||||
|
||||
Acorn = Eichel
|
||||
Coconut = Kokosnuss
|
||||
Spruce Cone = Fichtenzapfen
|
||||
Pine Cone = Kiefernzapfen
|
||||
Fir Cone = Tannenzapfen
|
||||
Jungle Sapling = Tropenbaumsetzling
|
||||
Jungle Tree Leaves (Green) = Tropenbaumlaub (gruen)
|
||||
Jungle Tree Leaves (Yellow) = Tropenbaumlaub (gelb)
|
||||
Jungle Tree Leaves (Red) = Tropenbaumlaub (rot)
|
||||
Douglas Fir Leaves (Bright) = Douglasiennadeln (breit)
|
||||
Rubber Tree Trunk (Empty) = Gummibaumstamm (leer)
|
||||
|
||||
[Moretrees] Loaded (2013-02-11) = [Moretrees] geladen (2013-02-11)
|
74
mods/moretrees/locale/template.txt
Executable file
@ -0,0 +1,74 @@
|
||||
# Template
|
||||
|
||||
### crafts.lua ###
|
||||
Coconut Milk =
|
||||
Raw Coconut =
|
||||
Acorn Muffin batter =
|
||||
Acorn Muffin =
|
||||
Roasted Spruce Cone Nuts =
|
||||
Roasted Pine Cone Nuts =
|
||||
Roasted Fir Cone Nuts =
|
||||
|
||||
### node_defs.lua ###
|
||||
Beech Tree Trunk =
|
||||
Apple Tree Trunk =
|
||||
Oak Tree Trunk =
|
||||
Giant Sequoia Trunk =
|
||||
Birch Tree Trunk =
|
||||
Palm Tree Trunk =
|
||||
Spruce Tree Trunk =
|
||||
Pine Tree Trunk =
|
||||
Willow Tree Trunk =
|
||||
Rubber Tree Trunk =
|
||||
Jungle Tree Trunk =
|
||||
Douglas Fir Trunk =
|
||||
Beech Tree Planks =
|
||||
Apple Tree Planks =
|
||||
Oak Tree Planks =
|
||||
Giant Sequoia Planks =
|
||||
Birch Tree Planks =
|
||||
Palm Tree Planks =
|
||||
Spruce Tree Planks =
|
||||
Pine Tree Planks =
|
||||
Willow Tree Planks =
|
||||
Rubber Tree Planks =
|
||||
Jungle Tree Planks =
|
||||
Douglas Fir Planks =
|
||||
Beech Tree Sapling =
|
||||
Apple Tree Sapling =
|
||||
Oak Tree Sapling =
|
||||
Giant Sequoia Sapling =
|
||||
Birch Tree Sapling =
|
||||
Palm Tree Sapling =
|
||||
Spruce Tree Sapling =
|
||||
Pine Tree Sapling =
|
||||
Willow Tree Sapling =
|
||||
Rubber Tree Sapling =
|
||||
Jungle Tree Sapling =
|
||||
Douglas Fir Sapling =
|
||||
Beech Tree Leaves =
|
||||
Apple Tree Leaves =
|
||||
Oak Tree Leaves =
|
||||
Giant Sequoia Leaves =
|
||||
Birch Tree Leaves =
|
||||
Palm Tree Leaves =
|
||||
Spruce Tree Leaves =
|
||||
Pine Tree Leaves =
|
||||
Willow Tree Leaves =
|
||||
Rubber Tree Leaves =
|
||||
Jungle Tree Leaves =
|
||||
Douglas Fir Leaves =
|
||||
|
||||
Acorn =
|
||||
Coconut =
|
||||
Spruce Cone =
|
||||
Pine Cone =
|
||||
Fir Cone =
|
||||
Jungle Sapling =
|
||||
Jungle Tree Leaves (Green) =
|
||||
Jungle Tree Leaves (Yellow) =
|
||||
Jungle Tree Leaves (Red) =
|
||||
Douglas Fir Leaves (Bright) =
|
||||
Rubber Tree Trunk (Empty) =
|
||||
|
||||
[Moretrees] Loaded (2013-02-11) =
|
438
mods/moretrees/node_defs.lua
Executable file
@ -0,0 +1,438 @@
|
||||
-- Boilerplate to support localized strings if intllib mod is installed.
|
||||
local S
|
||||
if (minetest.get_modpath("intllib")) then
|
||||
dofile(minetest.get_modpath("intllib").."/intllib.lua")
|
||||
S = intllib.Getter(minetest.get_current_modname())
|
||||
else
|
||||
S = function ( s ) return s end
|
||||
end
|
||||
|
||||
moretrees.avoidnodes = {}
|
||||
|
||||
moretrees.treelist = {
|
||||
{"beech", "Beech Tree"},
|
||||
{"apple_tree", "Apple Tree"},
|
||||
{"oak", "Oak Tree", "acorn", "Acorn", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
|
||||
{"sequoia", "Giant Sequoia"},
|
||||
{"birch", "Birch Tree"},
|
||||
{"palm", "Palm Tree", "coconut", "Coconut", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 1.0 },
|
||||
{"spruce", "Spruce Tree", "spruce_cone", "Spruce Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
|
||||
{"pine", "Pine Tree", "pine_cone", "Pine Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
|
||||
{"willow", "Willow Tree"},
|
||||
{"acacia", "Acacia Tree"},
|
||||
{"rubber_tree", "Rubber Tree"},
|
||||
{"jungletree", "Jungle Tree"},
|
||||
{"fir", "Douglas Fir", "fir_cone", "Fir Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
|
||||
}
|
||||
|
||||
local dirs1 = { 21, 20, 23, 22, 21 }
|
||||
local dirs2 = { 12, 9, 18, 7, 12 }
|
||||
local dirs3 = { 14, 11, 16, 5, 14 }
|
||||
|
||||
local moretrees_new_leaves_drawtype = "allfaces_optional"
|
||||
local moretrees_new_leaves_extension = ".png"
|
||||
local moretrees_plantlike_leaves_visual_scale = 1
|
||||
|
||||
if moretrees.plantlike_leaves then
|
||||
moretrees_new_leaves_drawtype = "plantlike"
|
||||
moretrees_new_leaves_extension = "_plantlike.png"
|
||||
moretrees_plantlike_leaves_visual_scale = 1.189
|
||||
end
|
||||
|
||||
-- redefine default leaves to handle plantlike and/or leaf decay options
|
||||
|
||||
if moretrees.enable_default_leafdecay then
|
||||
minetest.override_item("default:leaves", {
|
||||
groups = { snappy = 3, flammable = 2, leaves = 1 }
|
||||
})
|
||||
end
|
||||
if moretrees.plantlike_leaves then
|
||||
minetest.override_item("default:leaves", {
|
||||
inventory_image = minetest.inventorycube("default_leaves.png"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 1.189,
|
||||
tiles = { "default_leaves_plantlike.png" }
|
||||
})
|
||||
else
|
||||
minetest.override_item("default:leaves", {
|
||||
waving = 1
|
||||
})
|
||||
end
|
||||
|
||||
-- redefine default jungle leaves for same
|
||||
|
||||
if moretrees.enable_default_leafdecay then
|
||||
minetest.override_item("default:jungleleaves", {
|
||||
groups = { snappy = 3, flammable = 2, leaves = 1 }
|
||||
})
|
||||
end
|
||||
if moretrees.plantlike_leaves then
|
||||
minetest.override_item("default:jungleleaves", {
|
||||
inventory_image = minetest.inventorycube("default_jungleleaves.png"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 1.189,
|
||||
tiles = { "default_jungleleaves_plantlike.png" }
|
||||
})
|
||||
else
|
||||
minetest.override_item("default:jungleleaves", {
|
||||
waving = 1
|
||||
})
|
||||
end
|
||||
|
||||
for i in ipairs(moretrees.treelist) do
|
||||
local treename = moretrees.treelist[i][1]
|
||||
local treedesc = moretrees.treelist[i][2]
|
||||
local fruit = moretrees.treelist[i][3]
|
||||
local fruitdesc = moretrees.treelist[i][4]
|
||||
local selbox = moretrees.treelist[i][5]
|
||||
local vscale = moretrees.treelist[i][6]
|
||||
|
||||
if treename ~= "jungletree" then -- the default game provides jungle tree trunk/planks nodes.
|
||||
|
||||
minetest.register_node("moretrees:"..treename.."_trunk", {
|
||||
description = S(treedesc.." Trunk"),
|
||||
tiles = {
|
||||
"moretrees_"..treename.."_trunk_top.png",
|
||||
"moretrees_"..treename.."_trunk_top.png",
|
||||
"moretrees_"..treename.."_trunk.png"
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = true,
|
||||
groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_place = minetest.rotate_node,
|
||||
})
|
||||
|
||||
minetest.register_node("moretrees:"..treename.."_planks", {
|
||||
description = S(treedesc.." Planks"),
|
||||
tiles = {"moretrees_"..treename.."_wood.png"},
|
||||
is_ground_content = true,
|
||||
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("moretrees:"..treename.."_sapling", {
|
||||
description = S(treedesc.." Sapling"),
|
||||
drawtype = "plantlike",
|
||||
tiles = {"moretrees_"..treename.."_sapling.png"},
|
||||
inventory_image = "moretrees_"..treename.."_sapling.png",
|
||||
paramtype = "light",
|
||||
paramtype2 = "waving",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
|
||||
},
|
||||
groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,sapling=1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("moretrees:"..treename.."_sapling_ongen", {
|
||||
description = S(treedesc.." Sapling"),
|
||||
drawtype = "plantlike",
|
||||
tiles = {"moretrees_"..treename.."_sapling.png"},
|
||||
inventory_image = "moretrees_"..treename.."_sapling.png",
|
||||
paramtype = "light",
|
||||
paramtype2 = "waving",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
|
||||
},
|
||||
groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,not_in_creative_inventory=1,sapling=1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
drop = "moretrees:"..treename.."_sapling"
|
||||
})
|
||||
|
||||
-- player will get a sapling with 1/100 chance
|
||||
-- player will get leaves only if he/she gets no saplings,
|
||||
-- this is because max_items is 1
|
||||
|
||||
|
||||
local droprarity = 100
|
||||
|
||||
if treename == "palm" then
|
||||
droprarity = 20
|
||||
end
|
||||
|
||||
local moretrees_leaves_inventory_image = nil
|
||||
local moretrees_new_leaves_waving = nil
|
||||
|
||||
if moretrees.plantlike_leaves then
|
||||
moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_"..treename.."_leaves.png")
|
||||
else
|
||||
moretrees_new_leaves_waving = 1
|
||||
end
|
||||
|
||||
minetest.register_node("moretrees:"..treename.."_leaves", {
|
||||
description = S(treedesc.." Leaves"),
|
||||
drawtype = moretrees_new_leaves_drawtype,
|
||||
waving = moretrees_new_leaves_waving,
|
||||
visual_scale = moretrees_plantlike_leaves_visual_scale,
|
||||
tiles = { "moretrees_"..treename.."_leaves"..moretrees_new_leaves_extension },
|
||||
inventory_image = moretrees_leaves_inventory_image,
|
||||
paramtype = "light",
|
||||
groups = {snappy=3, flammable=2, leaves=1, moretrees_leaves=1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {"moretrees:"..treename.."_sapling"}, rarity = droprarity },
|
||||
{items = {"moretrees:"..treename.."_leaves"} }
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
if minetest.get_modpath("moreblocks") and moretrees.enable_stairsplus then
|
||||
|
||||
-- stairsplus:register_all(modname, subname, recipeitem, {fields})
|
||||
|
||||
stairsplus:register_all(
|
||||
"moretrees",
|
||||
treename.."_trunk",
|
||||
"moretrees:"..treename.."_trunk",
|
||||
{
|
||||
groups = { snappy=1, choppy=2, oddly_breakable_by_hand=1, flammable=2, not_in_creative_inventory=1 },
|
||||
tiles = {
|
||||
"moretrees_"..treename.."_trunk_top.png",
|
||||
"moretrees_"..treename.."_trunk_top.png",
|
||||
"moretrees_"..treename.."_trunk.png"
|
||||
},
|
||||
description = S(treedesc.." Trunk"),
|
||||
drop = treename.."_trunk",
|
||||
}
|
||||
)
|
||||
|
||||
stairsplus:register_all(
|
||||
"moretrees",
|
||||
treename.."_planks",
|
||||
"moretrees:"..treename.."_planks",
|
||||
{
|
||||
groups = { snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, not_in_creative_inventory=1 },
|
||||
tiles = { "moretrees_"..treename.."_wood.png" },
|
||||
description = S(treedesc.." Planks"),
|
||||
drop = treename.."_planks",
|
||||
}
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
if fruit then
|
||||
minetest.register_node("moretrees:"..fruit, {
|
||||
description = S(fruitdesc),
|
||||
drawtype = "plantlike",
|
||||
tiles = { "moretrees_"..fruit..".png" },
|
||||
inventory_image = "moretrees_"..fruit..".png^[transformR180",
|
||||
wield_image = "moretrees_"..fruit..".png^[transformR180",
|
||||
visual_scale = vscale,
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = selbox
|
||||
},
|
||||
groups = {fleshy=3,dig_immediate=3,flammable=2, attached_node=1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = { "moretrees:"..treename.."_trunk_sideways" },
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local fdir = node.param2 or 0
|
||||
nfdir = dirs2[fdir+1]
|
||||
minetest.add_node(pos, {name = "moretrees:"..treename.."_trunk", param2 = nfdir})
|
||||
end,
|
||||
})
|
||||
|
||||
table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_trunk")
|
||||
|
||||
if moretrees.spawn_saplings then
|
||||
table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_sapling")
|
||||
table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_sapling_ongen")
|
||||
end
|
||||
end
|
||||
|
||||
-- Extra nodes for jungle trees:
|
||||
|
||||
minetest.register_node("moretrees:jungletree_sapling", {
|
||||
description = S("Jungle Sapling"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 1.0,
|
||||
tiles = {"default_junglesapling.png"},
|
||||
inventory_image = "default_junglesapling.png",
|
||||
wield_image = "default_junglesapling.png",
|
||||
paramtype = "light",
|
||||
paramtype2 = "waving",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
|
||||
},
|
||||
groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,sapling=1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("moretrees:jungletree_sapling_ongen", {
|
||||
description = S("Jungle Sapling"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 1.0,
|
||||
tiles = {"default_junglesapling.png"},
|
||||
inventory_image = "default_junglesapling.png",
|
||||
wield_image = "default_junglesapling.png",
|
||||
paramtype = "light",
|
||||
paramtype2 = "waving",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
|
||||
},
|
||||
groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,not_in_creative_inventory=1,sapling=1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
drop = "moretrees:jungletree_sapling"
|
||||
})
|
||||
|
||||
local jungleleaves = {"green","yellow","red"}
|
||||
local jungleleavesnames = {"Green", "Yellow", "Red"}
|
||||
for color = 1, 3 do
|
||||
local leave_name = "moretrees:jungletree_leaves_"..jungleleaves[color]
|
||||
|
||||
local moretrees_leaves_inventory_image = nil
|
||||
|
||||
if moretrees.plantlike_leaves then
|
||||
moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_jungletree_leaves_"..jungleleaves[color]..".png")
|
||||
else
|
||||
moretrees_new_leaves_waving = 1
|
||||
end
|
||||
|
||||
minetest.register_node(leave_name, {
|
||||
description = S("Jungle Tree Leaves ("..jungleleavesnames[color]..")"),
|
||||
drawtype = moretrees_new_leaves_drawtype,
|
||||
waving = moretrees_new_leaves_waving,
|
||||
visual_scale = moretrees_plantlike_leaves_visual_scale,
|
||||
tiles = {"moretrees_jungletree_leaves_"..jungleleaves[color]..moretrees_new_leaves_extension},
|
||||
inventory_image = moretrees_leaves_inventory_image,
|
||||
paramtype = "light",
|
||||
groups = {snappy=3, flammable=2, leaves=1, moretrees_leaves=1},
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {'moretrees:jungletree_sapling'}, rarity = 100 },
|
||||
{items = {"moretrees:jungletree_leaves_"..jungleleaves[color]} }
|
||||
}
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
end
|
||||
|
||||
-- Extra needles for firs
|
||||
|
||||
local moretrees_leaves_inventory_image = nil
|
||||
|
||||
if moretrees.plantlike_leaves then
|
||||
moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_fir_leaves_bright.png")
|
||||
end
|
||||
|
||||
minetest.register_node("moretrees:fir_leaves_bright", {
|
||||
drawtype = moretrees_new_leaves_drawtype,
|
||||
waving = moretrees_new_leaves_waving,
|
||||
visual_scale = moretrees_plantlike_leaves_visual_scale,
|
||||
description = S("Douglas Fir Leaves (Bright)"),
|
||||
tiles = { "moretrees_fir_leaves_bright"..moretrees_new_leaves_extension },
|
||||
inventory_image = moretrees_leaves_inventory_image,
|
||||
paramtype = "light",
|
||||
groups = {snappy=3, flammable=2, leaves=1, moretrees_leaves=1 },
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{items = {'moretrees:fir_sapling'}, rarity = 100 },
|
||||
{items = {'moretrees:fir_leaves_bright'} }
|
||||
}
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults()
|
||||
})
|
||||
|
||||
if moretrees.enable_redefine_apple then
|
||||
minetest.override_item("default:apple",
|
||||
{groups = { fleshy=3, dig_immediate=3, flammable=2, leafdecay=3, leafdecay_drop=1, attached_node = 1}
|
||||
})
|
||||
end
|
||||
|
||||
table.insert(moretrees.avoidnodes, "default:jungletree")
|
||||
table.insert(moretrees.avoidnodes, "moretrees:jungletree_trunk")
|
||||
table.insert(moretrees.avoidnodes, "moretrees:fir_trunk")
|
||||
table.insert(moretrees.avoidnodes, "default:tree")
|
||||
|
||||
if moretrees.spawn_saplings then
|
||||
table.insert(moretrees.avoidnodes, "snow:sapling_pine")
|
||||
table.insert(moretrees.avoidnodes, "default:junglesapling")
|
||||
table.insert(moretrees.avoidnodes, "moretrees:jungle_tree_sapling")
|
||||
table.insert(moretrees.avoidnodes, "moretrees:jungle_tree_sapling_ongen")
|
||||
end
|
||||
|
||||
-- "empty" (tapped) rubber tree nodes
|
||||
|
||||
minetest.register_node("moretrees:rubber_tree_trunk_empty", {
|
||||
description = S("Rubber Tree Trunk (Empty)"),
|
||||
tiles = {
|
||||
"moretrees_rubber_tree_trunk_top.png",
|
||||
"moretrees_rubber_tree_trunk_top.png",
|
||||
"moretrees_rubber_tree_trunk_empty.png"
|
||||
},
|
||||
is_ground_content = true,
|
||||
groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
paramtype2 = "facedir",
|
||||
on_place = minetest.rotate_node,
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = { "moretrees:rubber_tree_trunk_empty_sideways" },
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local fdir = node.param2 or 0
|
||||
nfdir = dirs2[fdir+1]
|
||||
minetest.add_node(pos, {name = "moretrees:rubber_tree_trunk_empty", param2 = nfdir})
|
||||
end,
|
||||
})
|
||||
|
||||
-- For compatibility with old nodes and recently-changed nodes.
|
||||
|
||||
minetest.register_alias("technic:rubber_tree_full", "moretrees:rubber_tree_trunk")
|
||||
minetest.register_alias("farming_plus:rubber_tree_full", "moretrees:rubber_tree_trunk")
|
||||
minetest.register_alias("farming:rubber_tree_full", "moretrees:rubber_tree_trunk")
|
||||
|
||||
minetest.register_alias("technic:rubber_leaves", "moretrees:rubber_tree_leaves")
|
||||
minetest.register_alias("farming_plus:rubber_leaves", "moretrees:rubber_tree_leaves")
|
||||
minetest.register_alias("farming:rubber_leaves", "moretrees:rubber_tree_leaves")
|
||||
|
||||
minetest.register_alias("technic:rubber_tree_sapling", "moretrees:rubber_tree_sapling")
|
||||
minetest.register_alias("farming_plus:rubber_sapling", "moretrees:rubber_tree_sapling")
|
||||
minetest.register_alias("farming:rubber_sapling", "moretrees:rubber_tree_sapling")
|
||||
|
||||
minetest.register_alias("default:junglesapling","moretrees:jungletree_sapling")
|
||||
minetest.register_alias("moretrees:jungletree_trunk_sideways", "moreblocks:horizontal_jungle_tree")
|
||||
minetest.register_alias("moretrees:jungletree_trunk", "default:jungletree")
|
||||
minetest.register_alias("moretrees:jungletree_planks", "default:junglewood")
|
||||
|
||||
minetest.register_alias("jungletree:leaves_green", "moretrees:jungletree_leaves_green")
|
||||
minetest.register_alias("jungletree:leaves_red", "moretrees:jungletree_leaves_red")
|
||||
minetest.register_alias("jungletree:leaves_yellow", "moretrees:jungletree_leaves_yellow")
|
||||
|
||||
minetest.register_alias("moretrees:conifer_trunk", "moretrees:fir_trunk")
|
||||
minetest.register_alias("moretrees:conifer_trunk_sideways", "moretrees:fir_trunk_sideways")
|
||||
minetest.register_alias("moretrees:conifer_leaves", "moretrees:fir_leaves")
|
||||
minetest.register_alias("moretrees:conifer_leaves_bright", "moretrees:fir_leaves_bright")
|
||||
minetest.register_alias("moretrees:conifer_sapling", "moretrees:fir_sapling")
|
||||
|
||||
minetest.register_alias("conifers:trunk", "moretrees:fir_trunk")
|
||||
minetest.register_alias("conifers:trunk_reversed", "moretrees:fir_trunk_sideways")
|
||||
minetest.register_alias("conifers:leaves", "moretrees:fir_leaves")
|
||||
minetest.register_alias("conifers:leaves_special", "moretrees:fir_leaves_bright")
|
||||
minetest.register_alias("conifers:sapling", "moretrees:fir_sapling")
|
||||
|
93
mods/moretrees/saplings.lua
Executable file
@ -0,0 +1,93 @@
|
||||
-- sapling growth
|
||||
|
||||
for i in ipairs(moretrees.treelist) do
|
||||
local treename = moretrees.treelist[i][1]
|
||||
local tree_model = treename.."_model"
|
||||
local tree_biome = treename.."_biome"
|
||||
|
||||
if treename ~= "birch" and treename ~= "spruce" and treename ~= "fir" and treename ~= "jungletree" then
|
||||
|
||||
plantslib:dbg(dump(moretrees[tree_biome].surface))
|
||||
plantslib:grow_plants({
|
||||
grow_delay = moretrees.sapling_interval,
|
||||
grow_chance = moretrees.sapling_chance,
|
||||
grow_plant = "moretrees:"..treename.."_sapling",
|
||||
grow_nodes = moretrees[tree_biome].surface,
|
||||
grow_function = moretrees[tree_model],
|
||||
})
|
||||
|
||||
plantslib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:"..treename.."_sapling_ongen",
|
||||
grow_nodes = moretrees[tree_biome].surface,
|
||||
grow_function = moretrees[tree_model],
|
||||
})
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
plantslib:grow_plants({
|
||||
grow_delay = moretrees.sapling_interval,
|
||||
grow_chance = moretrees.sapling_chance,
|
||||
grow_plant = "moretrees:birch_sapling",
|
||||
grow_nodes = moretrees.birch_biome.surface,
|
||||
grow_function = "moretrees:grow_birch"
|
||||
})
|
||||
|
||||
plantslib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:birch_sapling_ongen",
|
||||
grow_nodes = moretrees.birch_biome.surface,
|
||||
grow_function = "moretrees:grow_birch"
|
||||
})
|
||||
|
||||
plantslib:grow_plants({
|
||||
grow_delay = moretrees.sapling_interval,
|
||||
grow_chance = moretrees.sapling_chance,
|
||||
grow_plant = "moretrees:spruce_sapling",
|
||||
grow_nodes = moretrees.spruce_biome.surface,
|
||||
grow_function = "moretrees:grow_spruce"
|
||||
})
|
||||
|
||||
plantslib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:spruce_sapling_ongen",
|
||||
grow_nodes = moretrees.spruce_biome.surface,
|
||||
grow_function = "moretrees:grow_spruce"
|
||||
})
|
||||
|
||||
plantslib:grow_plants({
|
||||
grow_delay = moretrees.sapling_interval,
|
||||
grow_chance = moretrees.sapling_chance,
|
||||
grow_plant = "moretrees:fir_sapling",
|
||||
grow_nodes = moretrees.fir_biome.surface,
|
||||
grow_function = "moretrees:grow_fir"
|
||||
})
|
||||
|
||||
plantslib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:fir_sapling_ongen",
|
||||
grow_nodes = moretrees.fir_biome.surface,
|
||||
grow_function = "moretrees:grow_fir"
|
||||
})
|
||||
|
||||
plantslib:grow_plants({
|
||||
grow_delay = moretrees.sapling_interval,
|
||||
grow_chance = moretrees.sapling_chance,
|
||||
grow_plant = "moretrees:jungletree_sapling",
|
||||
grow_nodes = moretrees.jungletree_biome.surface,
|
||||
grow_function = "moretrees:grow_jungletree"
|
||||
})
|
||||
|
||||
plantslib:grow_plants({
|
||||
grow_delay = 2,
|
||||
grow_chance = 30,
|
||||
grow_plant = "moretrees:jungletree_sapling_ongen",
|
||||
grow_nodes = moretrees.jungletree_biome.surface,
|
||||
grow_function = "moretrees:grow_jungletree"
|
||||
})
|
||||
|
BIN
mods/moretrees/textures/default_jungleleaves_plantlike.png
Executable file
After Width: | Height: | Size: 390 B |
BIN
mods/moretrees/textures/default_leaves_plantlike.png
Executable file
After Width: | Height: | Size: 404 B |
BIN
mods/moretrees/textures/moretrees_acacia_leaves.png
Executable file
After Width: | Height: | Size: 340 B |
BIN
mods/moretrees/textures/moretrees_acacia_leaves_plantlike.png
Executable file
After Width: | Height: | Size: 278 B |
BIN
mods/moretrees/textures/moretrees_acacia_sapling.png
Executable file
After Width: | Height: | Size: 359 B |
BIN
mods/moretrees/textures/moretrees_acacia_trunk.png
Executable file
After Width: | Height: | Size: 682 B |
BIN
mods/moretrees/textures/moretrees_acacia_trunk_top.png
Executable file
After Width: | Height: | Size: 731 B |
BIN
mods/moretrees/textures/moretrees_acacia_wood.png
Executable file
After Width: | Height: | Size: 364 B |
BIN
mods/moretrees/textures/moretrees_acorn.png
Executable file
After Width: | Height: | Size: 417 B |
BIN
mods/moretrees/textures/moretrees_acorn_muffin.png
Executable file
After Width: | Height: | Size: 782 B |
BIN
mods/moretrees/textures/moretrees_acorn_muffin_batter.png
Executable file
After Width: | Height: | Size: 619 B |
BIN
mods/moretrees/textures/moretrees_apple_tree_leaves.png
Executable file
After Width: | Height: | Size: 385 B |
BIN
mods/moretrees/textures/moretrees_apple_tree_leaves_plantlike.png
Executable file
After Width: | Height: | Size: 338 B |
BIN
mods/moretrees/textures/moretrees_apple_tree_sapling.png
Executable file
After Width: | Height: | Size: 375 B |
BIN
mods/moretrees/textures/moretrees_apple_tree_trunk.png
Executable file
After Width: | Height: | Size: 1.1 KiB |
BIN
mods/moretrees/textures/moretrees_apple_tree_trunk_top.png
Executable file
After Width: | Height: | Size: 525 B |
BIN
mods/moretrees/textures/moretrees_apple_tree_wood.png
Executable file
After Width: | Height: | Size: 481 B |
BIN
mods/moretrees/textures/moretrees_beech_leaves.png
Executable file
After Width: | Height: | Size: 220 B |
BIN
mods/moretrees/textures/moretrees_beech_leaves_plantlike.png
Executable file
After Width: | Height: | Size: 404 B |
BIN
mods/moretrees/textures/moretrees_beech_sapling.png
Executable file
After Width: | Height: | Size: 372 B |
BIN
mods/moretrees/textures/moretrees_beech_trunk.png
Executable file
After Width: | Height: | Size: 980 B |
BIN
mods/moretrees/textures/moretrees_beech_trunk_top.png
Executable file
After Width: | Height: | Size: 947 B |
BIN
mods/moretrees/textures/moretrees_beech_wood.png
Executable file
After Width: | Height: | Size: 197 B |
BIN
mods/moretrees/textures/moretrees_birch_leaves.png
Executable file
After Width: | Height: | Size: 496 B |
BIN
mods/moretrees/textures/moretrees_birch_leaves_plantlike.png
Executable file
After Width: | Height: | Size: 433 B |
BIN
mods/moretrees/textures/moretrees_birch_sapling.png
Executable file
After Width: | Height: | Size: 465 B |
BIN
mods/moretrees/textures/moretrees_birch_trunk.png
Executable file
After Width: | Height: | Size: 975 B |
BIN
mods/moretrees/textures/moretrees_birch_trunk_top.png
Executable file
After Width: | Height: | Size: 832 B |
BIN
mods/moretrees/textures/moretrees_birch_wood.png
Executable file
After Width: | Height: | Size: 1.1 KiB |
BIN
mods/moretrees/textures/moretrees_coconut.png
Executable file
After Width: | Height: | Size: 985 B |
BIN
mods/moretrees/textures/moretrees_coconut_milk.png
Executable file
After Width: | Height: | Size: 227 B |
BIN
mods/moretrees/textures/moretrees_coconut_milk_inv.png
Executable file
After Width: | Height: | Size: 275 B |
BIN
mods/moretrees/textures/moretrees_fir_cone.png
Executable file
After Width: | Height: | Size: 244 B |
BIN
mods/moretrees/textures/moretrees_fir_leaves.png
Executable file
After Width: | Height: | Size: 225 B |
BIN
mods/moretrees/textures/moretrees_fir_leaves_bright.png
Executable file
After Width: | Height: | Size: 225 B |
BIN
mods/moretrees/textures/moretrees_fir_leaves_bright_plantlike.png
Executable file
After Width: | Height: | Size: 212 B |
BIN
mods/moretrees/textures/moretrees_fir_leaves_plantlike.png
Executable file
After Width: | Height: | Size: 212 B |
BIN
mods/moretrees/textures/moretrees_fir_nuts.png
Executable file
After Width: | Height: | Size: 390 B |
BIN
mods/moretrees/textures/moretrees_fir_sapling.png
Executable file
After Width: | Height: | Size: 325 B |
BIN
mods/moretrees/textures/moretrees_fir_trunk.png
Executable file
After Width: | Height: | Size: 770 B |
BIN
mods/moretrees/textures/moretrees_fir_trunk_top.png
Executable file
After Width: | Height: | Size: 942 B |
BIN
mods/moretrees/textures/moretrees_fir_wood.png
Executable file
After Width: | Height: | Size: 1.0 KiB |
BIN
mods/moretrees/textures/moretrees_jungletree_leaves_green.png
Executable file
After Width: | Height: | Size: 220 B |
BIN
mods/moretrees/textures/moretrees_jungletree_leaves_green_plantlike.png
Executable file
After Width: | Height: | Size: 206 B |
BIN
mods/moretrees/textures/moretrees_jungletree_leaves_red.png
Executable file
After Width: | Height: | Size: 220 B |
BIN
mods/moretrees/textures/moretrees_jungletree_leaves_red_plantlike.png
Executable file
After Width: | Height: | Size: 206 B |
BIN
mods/moretrees/textures/moretrees_jungletree_leaves_yellow.png
Executable file
After Width: | Height: | Size: 220 B |
BIN
mods/moretrees/textures/moretrees_jungletree_leaves_yellow_plantlike.png
Executable file
After Width: | Height: | Size: 206 B |
BIN
mods/moretrees/textures/moretrees_oak_leaves.png
Executable file
After Width: | Height: | Size: 749 B |
BIN
mods/moretrees/textures/moretrees_oak_leaves_plantlike.png
Executable file
After Width: | Height: | Size: 620 B |
BIN
mods/moretrees/textures/moretrees_oak_sapling.png
Executable file
After Width: | Height: | Size: 409 B |
BIN
mods/moretrees/textures/moretrees_oak_trunk.png
Executable file
After Width: | Height: | Size: 998 B |
BIN
mods/moretrees/textures/moretrees_oak_trunk_top.png
Executable file
After Width: | Height: | Size: 542 B |
BIN
mods/moretrees/textures/moretrees_oak_wood.png
Executable file
After Width: | Height: | Size: 618 B |
BIN
mods/moretrees/textures/moretrees_palm_leaves.png
Executable file
After Width: | Height: | Size: 918 B |
BIN
mods/moretrees/textures/moretrees_palm_leaves_plantlike.png
Executable file
After Width: | Height: | Size: 766 B |
BIN
mods/moretrees/textures/moretrees_palm_sapling.png
Executable file
After Width: | Height: | Size: 259 B |
BIN
mods/moretrees/textures/moretrees_palm_trunk.png
Executable file
After Width: | Height: | Size: 319 B |
BIN
mods/moretrees/textures/moretrees_palm_trunk_top.png
Executable file
After Width: | Height: | Size: 422 B |
BIN
mods/moretrees/textures/moretrees_palm_wood.png
Executable file
After Width: | Height: | Size: 598 B |
BIN
mods/moretrees/textures/moretrees_pine_cone.png
Executable file
After Width: | Height: | Size: 336 B |
BIN
mods/moretrees/textures/moretrees_pine_leaves.png
Executable file
After Width: | Height: | Size: 225 B |
BIN
mods/moretrees/textures/moretrees_pine_leaves_plantlike.png
Executable file
After Width: | Height: | Size: 212 B |
BIN
mods/moretrees/textures/moretrees_pine_nuts.png
Executable file
After Width: | Height: | Size: 399 B |
BIN
mods/moretrees/textures/moretrees_pine_sapling.png
Executable file
After Width: | Height: | Size: 468 B |
BIN
mods/moretrees/textures/moretrees_pine_trunk.png
Executable file
After Width: | Height: | Size: 1.1 KiB |
BIN
mods/moretrees/textures/moretrees_pine_trunk_top.png
Executable file
After Width: | Height: | Size: 472 B |
BIN
mods/moretrees/textures/moretrees_pine_wood.png
Executable file
After Width: | Height: | Size: 648 B |
BIN
mods/moretrees/textures/moretrees_raw_coconut.png
Executable file
After Width: | Height: | Size: 484 B |
BIN
mods/moretrees/textures/moretrees_rubber_tree_leaves.png
Executable file
After Width: | Height: | Size: 220 B |
BIN
mods/moretrees/textures/moretrees_rubber_tree_leaves_plantlike.png
Executable file
After Width: | Height: | Size: 206 B |
BIN
mods/moretrees/textures/moretrees_rubber_tree_sapling.png
Executable file
After Width: | Height: | Size: 304 B |
BIN
mods/moretrees/textures/moretrees_rubber_tree_trunk.png
Executable file
After Width: | Height: | Size: 723 B |
BIN
mods/moretrees/textures/moretrees_rubber_tree_trunk_empty.png
Executable file
After Width: | Height: | Size: 1.1 KiB |
BIN
mods/moretrees/textures/moretrees_rubber_tree_trunk_top.png
Executable file
After Width: | Height: | Size: 556 B |
BIN
mods/moretrees/textures/moretrees_rubber_tree_wood.png
Executable file
After Width: | Height: | Size: 454 B |
BIN
mods/moretrees/textures/moretrees_sequoia_leaves.png
Executable file
After Width: | Height: | Size: 225 B |
BIN
mods/moretrees/textures/moretrees_sequoia_leaves_plantlike.png
Executable file
After Width: | Height: | Size: 212 B |
BIN
mods/moretrees/textures/moretrees_sequoia_sapling.png
Executable file
After Width: | Height: | Size: 462 B |
BIN
mods/moretrees/textures/moretrees_sequoia_trunk.png
Executable file
After Width: | Height: | Size: 647 B |
BIN
mods/moretrees/textures/moretrees_sequoia_trunk_top.png
Executable file
After Width: | Height: | Size: 616 B |
BIN
mods/moretrees/textures/moretrees_sequoia_wood.png
Executable file
After Width: | Height: | Size: 1.0 KiB |
BIN
mods/moretrees/textures/moretrees_spruce_cone.png
Executable file
After Width: | Height: | Size: 496 B |
BIN
mods/moretrees/textures/moretrees_spruce_leaves.png
Executable file
After Width: | Height: | Size: 225 B |
BIN
mods/moretrees/textures/moretrees_spruce_leaves_plantlike.png
Executable file
After Width: | Height: | Size: 212 B |
BIN
mods/moretrees/textures/moretrees_spruce_nuts.png
Executable file
After Width: | Height: | Size: 396 B |
BIN
mods/moretrees/textures/moretrees_spruce_sapling.png
Executable file
After Width: | Height: | Size: 291 B |