diff options
Diffstat (limited to 'moretrees')
81 files changed, 2064 insertions, 0 deletions
diff --git a/moretrees/LICENSE b/moretrees/LICENSE new file mode 100644 index 0000000..c4742e6 --- /dev/null +++ b/moretrees/LICENSE @@ -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/. diff --git a/moretrees/README.md b/moretrees/README.md new file mode 100644 index 0000000..905cefa --- /dev/null +++ b/moretrees/README.md @@ -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://forum.minetest.net/viewtopic.php?f=11&t=12999">biome_lib</a> and default diff --git a/moretrees/biome_defs.lua b/moretrees/biome_defs.lua new file mode 100644 index 0000000..34d8e4e --- /dev/null +++ b/moretrees/biome_defs.lua @@ -0,0 +1,188 @@ + +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:dirt_with_dry_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", + "default:dirt_with_grass", + "woodsoils:dirt_with_leaves_1", + "woodsoils:grass_with_leaves_1", + "woodsoils:grass_with_leaves_2" + }, + avoid_nodes = {"moretrees:jungletree_trunk"}, + max_count = 12, + avoid_radius = 3, + rarity = 85, + seed_diff = 329, + min_elevation = 1, + near_nodes = {"default:jungletree"}, + near_nodes_size = 6, + near_nodes_vertical = 2, + near_nodes_count = 1, + plantlife_limit = -0.9, +} + +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 +} diff --git a/moretrees/crafts.lua b/moretrees/crafts.lua new file mode 100644 index 0000000..515a097 --- /dev/null +++ b/moretrees/crafts.lua @@ -0,0 +1,151 @@ +local S = moretrees.intllib + +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", +}) + + diff --git a/moretrees/default_settings.txt b/moretrees/default_settings.txt new file mode 100644 index 0000000..a34ea23 --- /dev/null +++ b/moretrees/default_settings.txt @@ -0,0 +1,68 @@ +-- 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 after a very short +-- delay. This reduces mapgen lag in some situations. + +moretrees.spawn_saplings = false + +-- Set this to true to allow defining stairs/slabs/etc. If Moreblocks is +-- installed, this will use that mod's Stairs Plus component. Otherwise, it +-- will use the default stairs mod in minetest_game, if present + +moretrees.enable_stairs = 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 + +-- Enable this if you want moretrees to redefine default apples so that they +-- fall when leaves decay/are dug. + +moretrees.enable_redefine_apple = true + +-- Set this to true to enable leaf decay of all trees except the default ones. + +moretrees.enable_leafdecay = true + +-- various related settings to configure leaf decay. + +moretrees.leafdecay_delay = 2 +moretrees.leafdecay_chance = 5 +moretrees.leafdecay_radius = 5 +moretrees.palm_leafdecay_radius = 10 + +-- 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 diff --git a/moretrees/depends.txt b/moretrees/depends.txt new file mode 100644 index 0000000..c666762 --- /dev/null +++ b/moretrees/depends.txt @@ -0,0 +1,6 @@ +default +biome_lib +stairs? +moreblocks? +intllib? + diff --git a/moretrees/init.lua b/moretrees/init.lua new file mode 100644 index 0000000..d2c5128 --- /dev/null +++ b/moretrees/init.lua @@ -0,0 +1,299 @@ +-- 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 the old jungletree and conifers mods). + +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") then + io.close() + dofile(worldpath.."/moretrees_settings.txt") +end + +-- Boilerplate to support localized strings if intllib mod is installed. +local S +if minetest.get_modpath("intllib") then + S = intllib.Getter() +else + S = function(s) return s end +end +moretrees.intllib = S + +-- clone node + +function moretrees.clone_node(name) + local node2 = {} + local node = minetest.registered_nodes[name] + for k,v in pairs(node) do + node2[k]=v + end + return node2 +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") + +-- 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 + biome_lib:register_generate_plant(moretrees.beech_biome, moretrees.spawn_beech_object) +end + +if moretrees.enable_apple_tree then + biome_lib:register_generate_plant(moretrees.apple_tree_biome, moretrees.spawn_apple_tree_object) +end + +if moretrees.enable_oak then + biome_lib:register_generate_plant(moretrees.oak_biome, moretrees.spawn_oak_object) +end + +if moretrees.enable_sequoia then + biome_lib:register_generate_plant(moretrees.sequoia_biome, moretrees.spawn_sequoia_object) +end + +if moretrees.enable_palm then + biome_lib:register_generate_plant(moretrees.palm_biome, moretrees.spawn_palm_object) +end + +if moretrees.enable_pine then + biome_lib:register_generate_plant(moretrees.pine_biome, moretrees.spawn_pine_object) +end + +if moretrees.enable_rubber_tree then + biome_lib:register_generate_plant(moretrees.rubber_tree_biome, moretrees.spawn_rubber_tree_object) +end + +if moretrees.enable_willow then + biome_lib:register_generate_plant(moretrees.willow_biome, moretrees.spawn_willow_object) +end + +if moretrees.enable_acacia then + biome_lib:register_generate_plant(moretrees.acacia_biome, moretrees.spawn_acacia_object) +end + +if moretrees.enable_birch then + biome_lib:register_generate_plant(moretrees.birch_biome, moretrees.spawn_birch_object) +end + +if moretrees.enable_spruce then + biome_lib:register_generate_plant(moretrees.spruce_biome, moretrees.spawn_spruce_object) +end + +if moretrees.enable_jungle_tree then + biome_lib:register_generate_plant(moretrees.jungletree_biome, moretrees.spawn_jungletree_object) +end + +if moretrees.enable_fir then + biome_lib:register_generate_plant(moretrees.fir_biome, moretrees.spawn_fir_object) + if minetest.get_modpath("snow") then + biome_lib: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)")) diff --git a/moretrees/locale/de.txt b/moretrees/locale/de.txt new file mode 100644 index 0000000..cab8d6f --- /dev/null +++ b/moretrees/locale/de.txt @@ -0,0 +1,73 @@ +# 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 (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) diff --git a/moretrees/locale/template.txt b/moretrees/locale/template.txt new file mode 100644 index 0000000..8c167f5 --- /dev/null +++ b/moretrees/locale/template.txt @@ -0,0 +1,73 @@ +# 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 (Yellow) = +Jungle Tree Leaves (Red) = +Douglas Fir Leaves (Bright) = +Rubber Tree Trunk (Empty) = + +[Moretrees] Loaded (2013-02-11) = diff --git a/moretrees/node_defs.lua b/moretrees/node_defs.lua new file mode 100644 index 0000000..8328bef --- /dev/null +++ b/moretrees/node_defs.lua @@ -0,0 +1,430 @@ +local S = moretrees.intllib + +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 }, + {"willow", "Willow Tree"}, + {"rubber_tree", "Rubber Tree"}, + {"fir", "Douglas Fir", "fir_cone", "Fir Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 }, + + {"jungletree", "Jungle Tree", nil, nil, nil, nil, "default_junglesapling.png" }, + {"pine", "Pine Tree", "pine_cone", "Pine Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8, "default_pine_sapling.png" }, + {"acacia", "Acacia Tree", nil, nil, nil, nil, "default_acacia_sapling.png" }, +} + +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_plantlike_leaves_visual_scale = 1 + +if moretrees.plantlike_leaves then + moretrees_new_leaves_drawtype = "plantlike" + moretrees_plantlike_leaves_visual_scale = 1.189 +end + +-- redefine default leaves to handle plantlike and/or leaf decay options + +if moretrees.plantlike_leaves then + minetest.override_item("default:leaves", { + inventory_image = minetest.inventorycube("default_leaves.png"), + drawtype = "plantlike", + visual_scale = 1.189 + }) +else + minetest.override_item("default:leaves", { + waving = 1 + }) +end + +-- redefine default jungle leaves for same + +if moretrees.plantlike_leaves then + minetest.override_item("default:jungleleaves", { + inventory_image = minetest.inventorycube("default_jungleleaves.png"), + drawtype = "plantlike", + visual_scale = 1.189 + }) +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] + + local saptex = moretrees.treelist[i][7] + + if treename ~= "jungletree" -- the default game provides jungle tree, acacia, and pine trunk/planks nodes. + and treename ~= "acacia" + and treename ~= "pine" then + + saptex = "moretrees_"..treename.."_sapling.png" + + 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 = {saptex}, + inventory_image = saptex, + 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(), + }) + + -- 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 + local decay = moretrees.leafdecay_radius + + if treename == "palm" then + droprarity = 20 + decay = moretrees.palm_leafdecay_radius + 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.png" }, + inventory_image = moretrees_leaves_inventory_image, + paramtype = "light", + groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = decay}, + sounds = default.node_sound_leaves_defaults(), + + drop = { + max_items = 1, + items = { + {items = {"moretrees:"..treename.."_sapling"}, rarity = droprarity }, + {items = {"moretrees:"..treename.."_leaves"} } + } + }, + }) + + if moretrees.enable_stairs then + if minetest.get_modpath("moreblocks") 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", + } + ) + elseif minetest.get_modpath("stairs") then + stairs.register_stair_and_slab( + "moretrees_"..treename.."_trunk", + "moretrees:"..treename.."_trunk", + { snappy=1, choppy=2, oddly_breakable_by_hand=1, flammable=2 }, + { "moretrees_"..treename.."_trunk_top.png", + "moretrees_"..treename.."_trunk_top.png", + "moretrees_"..treename.."_trunk.png" + }, + S(treedesc.." Trunk Stair"), + S(treedesc.." Trunk Slab"), + default.node_sound_wood_defaults() + ) + + stairs.register_stair_and_slab( + "moretrees_"..treename.."_planks", + "moretrees:"..treename.."_planks", + { snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3 }, + { "moretrees_"..treename.."_wood.png" }, + S(treedesc.." Planks Stair"), + S(treedesc.." Planks Slab"), + default.node_sound_wood_defaults() + ) + + end + end + end + + minetest.register_node("moretrees:"..treename.."_sapling_ongen", { + description = S(treedesc.." Sapling"), + drawtype = "plantlike", + tiles = {saptex}, + inventory_image = saptex, + 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" + }) + + 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: + +local jungleleaves = {"yellow","red"} +local jungleleavesnames = {"Yellow", "Red"} +for color = 1, #jungleleaves 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]..".png"}, + inventory_image = moretrees_leaves_inventory_image, + paramtype = "light", + groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = moretrees.leafdecay_radius }, + drop = { + max_items = 1, + items = { + {items = {"default:junglesapling"}, 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.png" }, + inventory_image = moretrees_leaves_inventory_image, + paramtype = "light", + groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = moretrees.leafdecay_radius }, + 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 + local appledef = moretrees.clone_node("default:apple") + appledef.groups.attached_node = 1 + minetest.register_node(":default:apple", appledef) +end + +table.insert(moretrees.avoidnodes, "default:jungletree") +table.insert(moretrees.avoidnodes, "default:pine_tree") +table.insert(moretrees.avoidnodes, "default:acacia_tree") +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, "default:pine_sapling") + table.insert(moretrees.avoidnodes, "default:acacia_sapling") +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, +}) + +-- To get Moretrees to generate its own jungle trees among the default mapgen +-- we need our own copy of that node, which moretrees will match against. + +local jungle_tree = moretrees.clone_node("default:jungletree") +minetest.register_node("moretrees:jungletree_trunk", jungle_tree) + +-- For compatibility with old nodes, recently-changed nodes, and default 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("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") + +minetest.register_alias("moretrees:jungletree_sapling", "default:junglesapling") +minetest.register_alias("moretrees:jungletree_trunk_sideways", "moreblocks:horizontal_jungle_tree") +minetest.register_alias("moretrees:jungletree_planks", "default:junglewood") +minetest.register_alias("moretrees:jungletree_leaves_green", "default:jungleleaves") + +minetest.register_alias("jungletree:leaves_green", "default:jungleleaves") +minetest.register_alias("jungletree:leaves_red", "moretrees:jungletree_leaves_red") +minetest.register_alias("jungletree:leaves_yellow", "moretrees:jungletree_leaves_yellow") + +minetest.register_alias("moretrees:acacia_trunk", "default:acacia_tree") +minetest.register_alias("moretrees:acacia_planks", "default:acacia_wood") +minetest.register_alias("moretrees:acacia_sapling", "default:acacia_sapling") +minetest.register_alias("moretrees:acacia_leaves", "default:acacia_leaves") + +minetest.register_alias("moretrees:pine_trunk", "default:pine_tree") +minetest.register_alias("moretrees:pine_planks", "default:pine_wood") +minetest.register_alias("moretrees:pine_sapling", "default:pine_sapling") +minetest.register_alias("moretrees:pine_leaves", "default:pine_needles") diff --git a/moretrees/saplings.lua b/moretrees/saplings.lua new file mode 100644 index 0000000..8004612 --- /dev/null +++ b/moretrees/saplings.lua @@ -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 + + biome_lib:dbg(dump(moretrees[tree_biome].surface)) + biome_lib: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], + }) + + biome_lib: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 + +biome_lib: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" +}) + +biome_lib: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" +}) + +biome_lib: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" +}) + +biome_lib: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" +}) + +biome_lib: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" +}) + +biome_lib: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" +}) + +biome_lib:grow_plants({ + grow_delay = moretrees.sapling_interval, + grow_chance = moretrees.sapling_chance, + grow_plant = "default:junglesapling", + grow_nodes = moretrees.jungletree_biome.surface, + grow_function = "moretrees.grow_jungletree" +}) + +biome_lib: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" +}) + diff --git a/moretrees/textures/moretrees_acorn.png b/moretrees/textures/moretrees_acorn.png Binary files differnew file mode 100644 index 0000000..dc2ef32 --- /dev/null +++ b/moretrees/textures/moretrees_acorn.png diff --git a/moretrees/textures/moretrees_acorn_muffin.png b/moretrees/textures/moretrees_acorn_muffin.png Binary files differnew file mode 100644 index 0000000..166ca83 --- /dev/null +++ b/moretrees/textures/moretrees_acorn_muffin.png diff --git a/moretrees/textures/moretrees_acorn_muffin_batter.png b/moretrees/textures/moretrees_acorn_muffin_batter.png Binary files differnew file mode 100644 index 0000000..b22e749 --- /dev/null +++ b/moretrees/textures/moretrees_acorn_muffin_batter.png diff --git a/moretrees/textures/moretrees_apple_tree_leaves.png b/moretrees/textures/moretrees_apple_tree_leaves.png Binary files differnew file mode 100644 index 0000000..75ec063 --- /dev/null +++ b/moretrees/textures/moretrees_apple_tree_leaves.png diff --git a/moretrees/textures/moretrees_apple_tree_sapling.png b/moretrees/textures/moretrees_apple_tree_sapling.png Binary files differnew file mode 100644 index 0000000..04f93fd --- /dev/null +++ b/moretrees/textures/moretrees_apple_tree_sapling.png diff --git a/moretrees/textures/moretrees_apple_tree_trunk.png b/moretrees/textures/moretrees_apple_tree_trunk.png Binary files differnew file mode 100644 index 0000000..573fd85 --- /dev/null +++ b/moretrees/textures/moretrees_apple_tree_trunk.png diff --git a/moretrees/textures/moretrees_apple_tree_trunk_top.png b/moretrees/textures/moretrees_apple_tree_trunk_top.png Binary files differnew file mode 100644 index 0000000..d261753 --- /dev/null +++ b/moretrees/textures/moretrees_apple_tree_trunk_top.png diff --git a/moretrees/textures/moretrees_apple_tree_wood.png b/moretrees/textures/moretrees_apple_tree_wood.png Binary files differnew file mode 100644 index 0000000..242f3ee --- /dev/null +++ b/moretrees/textures/moretrees_apple_tree_wood.png diff --git a/moretrees/textures/moretrees_beech_leaves.png b/moretrees/textures/moretrees_beech_leaves.png Binary files differnew file mode 100644 index 0000000..8463f53 --- /dev/null +++ b/moretrees/textures/moretrees_beech_leaves.png diff --git a/moretrees/textures/moretrees_beech_sapling.png b/moretrees/textures/moretrees_beech_sapling.png Binary files differnew file mode 100644 index 0000000..ff42cc4 --- /dev/null +++ b/moretrees/textures/moretrees_beech_sapling.png diff --git a/moretrees/textures/moretrees_beech_trunk.png b/moretrees/textures/moretrees_beech_trunk.png Binary files differnew file mode 100644 index 0000000..06b4ae9 --- /dev/null +++ b/moretrees/textures/moretrees_beech_trunk.png diff --git a/moretrees/textures/moretrees_beech_trunk_top.png b/moretrees/textures/moretrees_beech_trunk_top.png Binary files differnew file mode 100644 index 0000000..7285985 --- /dev/null +++ b/moretrees/textures/moretrees_beech_trunk_top.png diff --git a/moretrees/textures/moretrees_beech_wood.png b/moretrees/textures/moretrees_beech_wood.png Binary files differnew file mode 100644 index 0000000..d6e3f9d --- /dev/null +++ b/moretrees/textures/moretrees_beech_wood.png diff --git a/moretrees/textures/moretrees_birch_leaves.png b/moretrees/textures/moretrees_birch_leaves.png Binary files differnew file mode 100644 index 0000000..547f133 --- /dev/null +++ b/moretrees/textures/moretrees_birch_leaves.png diff --git a/moretrees/textures/moretrees_birch_sapling.png b/moretrees/textures/moretrees_birch_sapling.png Binary files differnew file mode 100644 index 0000000..afb03f3 --- /dev/null +++ b/moretrees/textures/moretrees_birch_sapling.png diff --git a/moretrees/textures/moretrees_birch_trunk.png b/moretrees/textures/moretrees_birch_trunk.png Binary files differnew file mode 100644 index 0000000..2b222f7 --- /dev/null +++ b/moretrees/textures/moretrees_birch_trunk.png diff --git a/moretrees/textures/moretrees_birch_trunk_top.png b/moretrees/textures/moretrees_birch_trunk_top.png Binary files differnew file mode 100644 index 0000000..6e5b3bb --- /dev/null +++ b/moretrees/textures/moretrees_birch_trunk_top.png diff --git a/moretrees/textures/moretrees_birch_wood.png b/moretrees/textures/moretrees_birch_wood.png Binary files differnew file mode 100644 index 0000000..621f8ee --- /dev/null +++ b/moretrees/textures/moretrees_birch_wood.png diff --git a/moretrees/textures/moretrees_coconut.png b/moretrees/textures/moretrees_coconut.png Binary files differnew file mode 100644 index 0000000..2107b5f --- /dev/null +++ b/moretrees/textures/moretrees_coconut.png diff --git a/moretrees/textures/moretrees_coconut_milk.png b/moretrees/textures/moretrees_coconut_milk.png Binary files differnew file mode 100644 index 0000000..9a54ad8 --- /dev/null +++ b/moretrees/textures/moretrees_coconut_milk.png diff --git a/moretrees/textures/moretrees_coconut_milk_inv.png b/moretrees/textures/moretrees_coconut_milk_inv.png Binary files differnew file mode 100644 index 0000000..f636578 --- /dev/null +++ b/moretrees/textures/moretrees_coconut_milk_inv.png diff --git a/moretrees/textures/moretrees_fir_cone.png b/moretrees/textures/moretrees_fir_cone.png Binary files differnew file mode 100644 index 0000000..45eef92 --- /dev/null +++ b/moretrees/textures/moretrees_fir_cone.png diff --git a/moretrees/textures/moretrees_fir_leaves.png b/moretrees/textures/moretrees_fir_leaves.png Binary files differnew file mode 100644 index 0000000..6643b87 --- /dev/null +++ b/moretrees/textures/moretrees_fir_leaves.png diff --git a/moretrees/textures/moretrees_fir_leaves_bright.png b/moretrees/textures/moretrees_fir_leaves_bright.png Binary files differnew file mode 100644 index 0000000..e3b2e6f --- /dev/null +++ b/moretrees/textures/moretrees_fir_leaves_bright.png diff --git a/moretrees/textures/moretrees_fir_nuts.png b/moretrees/textures/moretrees_fir_nuts.png Binary files differnew file mode 100644 index 0000000..a534149 --- /dev/null +++ b/moretrees/textures/moretrees_fir_nuts.png diff --git a/moretrees/textures/moretrees_fir_sapling.png b/moretrees/textures/moretrees_fir_sapling.png Binary files differnew file mode 100644 index 0000000..642123c --- /dev/null +++ b/moretrees/textures/moretrees_fir_sapling.png diff --git a/moretrees/textures/moretrees_fir_trunk.png b/moretrees/textures/moretrees_fir_trunk.png Binary files differnew file mode 100644 index 0000000..cc0c559 --- /dev/null +++ b/moretrees/textures/moretrees_fir_trunk.png diff --git a/moretrees/textures/moretrees_fir_trunk_top.png b/moretrees/textures/moretrees_fir_trunk_top.png Binary files differnew file mode 100644 index 0000000..d17decf --- /dev/null +++ b/moretrees/textures/moretrees_fir_trunk_top.png diff --git a/moretrees/textures/moretrees_fir_wood.png b/moretrees/textures/moretrees_fir_wood.png Binary files differnew file mode 100644 index 0000000..7f49079 --- /dev/null +++ b/moretrees/textures/moretrees_fir_wood.png diff --git a/moretrees/textures/moretrees_jungletree_leaves_green.png b/moretrees/textures/moretrees_jungletree_leaves_green.png Binary files differnew file mode 100644 index 0000000..52d4a5a --- /dev/null +++ b/moretrees/textures/moretrees_jungletree_leaves_green.png diff --git a/moretrees/textures/moretrees_jungletree_leaves_red.png b/moretrees/textures/moretrees_jungletree_leaves_red.png Binary files differnew file mode 100644 index 0000000..d26593e --- /dev/null +++ b/moretrees/textures/moretrees_jungletree_leaves_red.png diff --git a/moretrees/textures/moretrees_jungletree_leaves_yellow.png b/moretrees/textures/moretrees_jungletree_leaves_yellow.png Binary files differnew file mode 100644 index 0000000..d116455 --- /dev/null +++ b/moretrees/textures/moretrees_jungletree_leaves_yellow.png diff --git a/moretrees/textures/moretrees_oak_leaves.png b/moretrees/textures/moretrees_oak_leaves.png Binary files differnew file mode 100644 index 0000000..aa587c5 --- /dev/null +++ b/moretrees/textures/moretrees_oak_leaves.png diff --git a/moretrees/textures/moretrees_oak_sapling.png b/moretrees/textures/moretrees_oak_sapling.png Binary files differnew file mode 100644 index 0000000..eef6a72 --- /dev/null +++ b/moretrees/textures/moretrees_oak_sapling.png diff --git a/moretrees/textures/moretrees_oak_trunk.png b/moretrees/textures/moretrees_oak_trunk.png Binary files differnew file mode 100644 index 0000000..b0ca910 --- /dev/null +++ b/moretrees/textures/moretrees_oak_trunk.png diff --git a/moretrees/textures/moretrees_oak_trunk_top.png b/moretrees/textures/moretrees_oak_trunk_top.png Binary files differnew file mode 100644 index 0000000..526d302 --- /dev/null +++ b/moretrees/textures/moretrees_oak_trunk_top.png diff --git a/moretrees/textures/moretrees_oak_wood.png b/moretrees/textures/moretrees_oak_wood.png Binary files differnew file mode 100644 index 0000000..05d02f9 --- /dev/null +++ b/moretrees/textures/moretrees_oak_wood.png diff --git a/moretrees/textures/moretrees_palm_leaves.png b/moretrees/textures/moretrees_palm_leaves.png Binary files differnew file mode 100644 index 0000000..90b0700 --- /dev/null +++ b/moretrees/textures/moretrees_palm_leaves.png diff --git a/moretrees/textures/moretrees_palm_sapling.png b/moretrees/textures/moretrees_palm_sapling.png Binary files differnew file mode 100644 index 0000000..aaa3415 --- /dev/null +++ b/moretrees/textures/moretrees_palm_sapling.png diff --git a/moretrees/textures/moretrees_palm_trunk.png b/moretrees/textures/moretrees_palm_trunk.png Binary files differnew file mode 100644 index 0000000..da255bc --- /dev/null +++ b/moretrees/textures/moretrees_palm_trunk.png diff --git a/moretrees/textures/moretrees_palm_trunk_top.png b/moretrees/textures/moretrees_palm_trunk_top.png Binary files differnew file mode 100644 index 0000000..fe07ae3 --- /dev/null +++ b/moretrees/textures/moretrees_palm_trunk_top.png diff --git a/moretrees/textures/moretrees_palm_wood.png b/moretrees/textures/moretrees_palm_wood.png Binary files differnew file mode 100644 index 0000000..c0c0ed6 --- /dev/null +++ b/moretrees/textures/moretrees_palm_wood.png diff --git a/moretrees/textures/moretrees_pine_cone.png b/moretrees/textures/moretrees_pine_cone.png Binary files differnew file mode 100644 index 0000000..5e1fae9 --- /dev/null +++ b/moretrees/textures/moretrees_pine_cone.png diff --git a/moretrees/textures/moretrees_pine_nuts.png b/moretrees/textures/moretrees_pine_nuts.png Binary files differnew file mode 100644 index 0000000..e39f895 --- /dev/null +++ b/moretrees/textures/moretrees_pine_nuts.png diff --git a/moretrees/textures/moretrees_raw_coconut.png b/moretrees/textures/moretrees_raw_coconut.png Binary files differnew file mode 100644 index 0000000..ca318ed --- /dev/null +++ b/moretrees/textures/moretrees_raw_coconut.png diff --git a/moretrees/textures/moretrees_rubber_tree_leaves.png b/moretrees/textures/moretrees_rubber_tree_leaves.png Binary files differnew file mode 100644 index 0000000..e35f51b --- /dev/null +++ b/moretrees/textures/moretrees_rubber_tree_leaves.png diff --git a/moretrees/textures/moretrees_rubber_tree_sapling.png b/moretrees/textures/moretrees_rubber_tree_sapling.png Binary files differnew file mode 100644 index 0000000..d2e06d0 --- /dev/null +++ b/moretrees/textures/moretrees_rubber_tree_sapling.png diff --git a/moretrees/textures/moretrees_rubber_tree_trunk.png b/moretrees/textures/moretrees_rubber_tree_trunk.png Binary files differnew file mode 100644 index 0000000..c5da574 --- /dev/null +++ b/moretrees/textures/moretrees_rubber_tree_trunk.png diff --git a/moretrees/textures/moretrees_rubber_tree_trunk_empty.png b/moretrees/textures/moretrees_rubber_tree_trunk_empty.png Binary files differnew file mode 100644 index 0000000..55423bc --- /dev/null +++ b/moretrees/textures/moretrees_rubber_tree_trunk_empty.png diff --git a/moretrees/textures/moretrees_rubber_tree_trunk_top.png b/moretrees/textures/moretrees_rubber_tree_trunk_top.png Binary files differnew file mode 100644 index 0000000..25b86a9 --- /dev/null +++ b/moretrees/textures/moretrees_rubber_tree_trunk_top.png diff --git a/moretrees/textures/moretrees_rubber_tree_wood.png b/moretrees/textures/moretrees_rubber_tree_wood.png Binary files differnew file mode 100644 index 0000000..3c83f0e --- /dev/null +++ b/moretrees/textures/moretrees_rubber_tree_wood.png diff --git a/moretrees/textures/moretrees_sequoia_leaves.png b/moretrees/textures/moretrees_sequoia_leaves.png Binary files differnew file mode 100644 index 0000000..594c958 --- /dev/null +++ b/moretrees/textures/moretrees_sequoia_leaves.png diff --git a/moretrees/textures/moretrees_sequoia_sapling.png b/moretrees/textures/moretrees_sequoia_sapling.png Binary files differnew file mode 100644 index 0000000..b11bc0b --- /dev/null +++ b/moretrees/textures/moretrees_sequoia_sapling.png diff --git a/moretrees/textures/moretrees_sequoia_trunk.png b/moretrees/textures/moretrees_sequoia_trunk.png Binary files differnew file mode 100644 index 0000000..552cdf5 --- /dev/null +++ b/moretrees/textures/moretrees_sequoia_trunk.png diff --git a/moretrees/textures/moretrees_sequoia_trunk_top.png b/moretrees/textures/moretrees_sequoia_trunk_top.png Binary files differnew file mode 100644 index 0000000..d1891fd --- /dev/null +++ b/moretrees/textures/moretrees_sequoia_trunk_top.png diff --git a/moretrees/textures/moretrees_sequoia_wood.png b/moretrees/textures/moretrees_sequoia_wood.png Binary files differnew file mode 100644 index 0000000..2e43595 --- /dev/null +++ b/moretrees/textures/moretrees_sequoia_wood.png diff --git a/moretrees/textures/moretrees_spruce_cone.png b/moretrees/textures/moretrees_spruce_cone.png Binary files differnew file mode 100644 index 0000000..1c9da85 --- /dev/null +++ b/moretrees/textures/moretrees_spruce_cone.png diff --git a/moretrees/textures/moretrees_spruce_leaves.png b/moretrees/textures/moretrees_spruce_leaves.png Binary files differnew file mode 100644 index 0000000..6643b87 --- /dev/null +++ b/moretrees/textures/moretrees_spruce_leaves.png diff --git a/moretrees/textures/moretrees_spruce_nuts.png b/moretrees/textures/moretrees_spruce_nuts.png Binary files differnew file mode 100644 index 0000000..130c11c --- /dev/null +++ b/moretrees/textures/moretrees_spruce_nuts.png diff --git a/moretrees/textures/moretrees_spruce_sapling.png b/moretrees/textures/moretrees_spruce_sapling.png Binary files differnew file mode 100644 index 0000000..0275afb --- /dev/null +++ b/moretrees/textures/moretrees_spruce_sapling.png diff --git a/moretrees/textures/moretrees_spruce_trunk.png b/moretrees/textures/moretrees_spruce_trunk.png Binary files differnew file mode 100644 index 0000000..cc0c559 --- /dev/null +++ b/moretrees/textures/moretrees_spruce_trunk.png diff --git a/moretrees/textures/moretrees_spruce_trunk_top.png b/moretrees/textures/moretrees_spruce_trunk_top.png Binary files differnew file mode 100644 index 0000000..3876c5b --- /dev/null +++ b/moretrees/textures/moretrees_spruce_trunk_top.png diff --git a/moretrees/textures/moretrees_spruce_wood.png b/moretrees/textures/moretrees_spruce_wood.png Binary files differnew file mode 100644 index 0000000..47aa326 --- /dev/null +++ b/moretrees/textures/moretrees_spruce_wood.png diff --git a/moretrees/textures/moretrees_willow_leaves.png b/moretrees/textures/moretrees_willow_leaves.png Binary files differnew file mode 100644 index 0000000..e1d26d9 --- /dev/null +++ b/moretrees/textures/moretrees_willow_leaves.png diff --git a/moretrees/textures/moretrees_willow_sapling.png b/moretrees/textures/moretrees_willow_sapling.png Binary files differnew file mode 100644 index 0000000..18414de --- /dev/null +++ b/moretrees/textures/moretrees_willow_sapling.png diff --git a/moretrees/textures/moretrees_willow_trunk.png b/moretrees/textures/moretrees_willow_trunk.png Binary files differnew file mode 100644 index 0000000..a3bd5f0 --- /dev/null +++ b/moretrees/textures/moretrees_willow_trunk.png diff --git a/moretrees/textures/moretrees_willow_trunk_top.png b/moretrees/textures/moretrees_willow_trunk_top.png Binary files differnew file mode 100644 index 0000000..c54c182 --- /dev/null +++ b/moretrees/textures/moretrees_willow_trunk_top.png diff --git a/moretrees/textures/moretrees_willow_wood.png b/moretrees/textures/moretrees_willow_wood.png Binary files differnew file mode 100644 index 0000000..21c5742 --- /dev/null +++ b/moretrees/textures/moretrees_willow_wood.png diff --git a/moretrees/tree_biomes.txt b/moretrees/tree_biomes.txt new file mode 100644 index 0000000..3e4533c --- /dev/null +++ b/moretrees/tree_biomes.txt @@ -0,0 +1,34 @@ +
+ Elevation Temperature Nearness to Nearby What nodes Perlin Avoid
+Tree type (m) (approx., °C) some node water to spawn on seed diff radius
+-----------------------------------------------------------------------------------------------------------------------
+jungle tree - 5 to +10 above +15 water, 20 10 dirt_with_grass 329 5
+fir above +25 -20 to +10 n/a n/a dirt_with_grass 359 8
+firs on snow above +15 -20 to +10 n/a n/a snow:snow 359 8
+palm - 1 to + 1 +15 to +32 water, 15 10 sand 330 5
+apple + 1 to +10 +23 to +32 n/a n/a dirt_with grass 331 15
+oak 0 to +10 + 4 to +16 n/a n/a dirt_with grass 332 15
+sequoia 0 to +10 -30 to +50 n/a n/a dirt_with grass 333 10
+birch +10 to +15 -20 to +10 n/a n/a dirt_with grass 334 5
+spruce above +20 -20 to +10 n/a n/a dirt_with grass 335 10
+pine n/a n/a water, 15 5 dirt_with grass 336 10
+willow - 5 to + 5 n/a water, 15 5 dirt_with grass 337 20
+acacia n/a n/a n/a n/a dirt_with_grass,
+ desert_sand n/a 15
+rubber - 5 to + 5 above +32 water, 15 10 dirt_with_grass 338 20
+
+beech n/a n/a n/a n/a dirt_with_grass 2 10
+
+
+Notes:
+------
+
+Beech trees are meant to replace default trees, but are themselves disabled by default. They grow in the same areas
+as the default ones do, and under the same conditions.
+
+Acacia trees depend on humidity as their primary control, and they don't use the fertile ground option. They grow near
+the edges of a desert biome, occasionally into the grass beyond, and anywhere else on desert sand or dirt with grass,
+where the humidity is low (but not bone dry).
+
+Fir trees appear in a snow biome only with older versions of SPlizard's Snow Biomes mod. In more recent versions,
+these trees will not grow, due to an engine bug.
diff --git a/moretrees/tree_models.lua b/moretrees/tree_models.lua new file mode 100644 index 0000000..3443057 --- /dev/null +++ b/moretrees/tree_models.lua @@ -0,0 +1,246 @@ +moretrees.beech_model={ + axiom="FFFFFBFB", + rules_a="[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fd]]////[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fd]]////[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fdd]]", + rules_b="[&&&F[++^Fd][--&d]//d[+^d][--&d]]////[&&&F[++^Fd][--&d]//d[+^d][--&d]]////[&&&F[++^Fd][--&Fd]//d[+^d][--&d]]", + rules_c="/", + rules_d="F", + trunk="moretrees:beech_trunk", + leaves="moretrees:beech_leaves", + angle=30, + iterations=2, + random_level=0, + trunk_type="single", + thin_branches=true +} + +moretrees.apple_tree_model={ + axiom="FFFFFAFFBF", + rules_a="[&&&FFFFF&&FFFF][&&&++++FFFFF&&FFFF][&&&----FFFFF&&FFFF]", + rules_b="[&&&++FFFFF&&FFFF][&&&--FFFFF&&FFFF][&&&------FFFFF&&FFFF]", + trunk="moretrees:apple_tree_trunk", + leaves="moretrees:apple_tree_leaves", + angle=30, + iterations=2, + random_level=0, + trunk_type="single", + thin_branches=true, + fruit="default:apple", + fruit_chance=15, +} + +moretrees.oak_model={ + axiom="FFFFFFA", + rules_a="[&FFBFA]////[&BFFFA]////[&FBFFA]", + rules_b="[&FFFA]////[&FFFA]////[&FFFA]", + trunk="moretrees:oak_trunk", + leaves="moretrees:oak_leaves", + angle=30, + iterations=5, + random_level=2, + trunk_type="crossed", + thin_branches=false, + fruit="moretrees:acorn", + fruit_chance=3, +} + +moretrees.sequoia_model={ + axiom="FFFFFFFFFFddccA///cccFddcFA///ddFcFA/cFFddFcdBddd/A/ccdcddd/ccAddddcFBcccAccFdFcFBcccc/BFdFFcFFdcccc/B", + rules_a="[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]////[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]////[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]", + rules_b="[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]////[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]////[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]", + rules_c="/", + rules_d="F", + trunk="moretrees:sequoia_trunk", + leaves="moretrees:sequoia_leaves", + angle=30, + iterations=2, + random_level=0, + trunk_type="crossed", + thin_branches=true +} + +moretrees.birch_model1={ + axiom="FFFFFdddccA/FFFFFFcA/FFFFFFcB", + rules_a="[&&&dddd^^ddddddd][&&&---dddd^^ddddddd][&&&+++dddd^^ddddddd][&&&++++++dddd^^ddddddd]", + rules_b="[&&&ddd^^ddddd][&&&---ddd^^ddddd][&&&+++ddd^^ddddd][&&&++++++ddd^^ddddd]", + rules_c="/", + rules_d="F", + trunk="moretrees:birch_trunk", + leaves="moretrees:birch_leaves", + angle=30, + iterations=2, + random_level=0, + trunk_type="single", + thin_branches=true +} + +moretrees.birch_model2={ + axiom="FFFdddccA/FFFFFccA/FFFFFccB", + rules_a="[&&&dFFF^^FFFdd][&&&---dFFF^^FFFdd][&&&+++dFFF^^FFFdd][&&&++++++dFFF^^FFFdd]", + rules_b="[&&&dFF^^FFFd][&&&---dFFF^^FFFd][&&&+++dFF^^FFFd][&&&++++++dFF^^FFFd]", + rules_c="/", + rules_d="F", + trunk="moretrees:birch_trunk", + leaves="moretrees:birch_leaves", + angle=30, + iterations=2, + random_level=0, + trunk_type="single", + thin_branches=true +} + +moretrees.palm_model={ + axiom="FFcccccc&FFFFFddd[^&&&GR][^///&&&GR][^//////&&&GR][^***&&&GR]FA//A//A//A//A//A", + rules_a="[&fb&bbb[++f--&ffff&ff][--f++&ffff&ff]&ffff&bbbb&b]", + rules_b="f", + rules_c="/", + rules_d="F", + trunk="moretrees:palm_trunk", + leaves="moretrees:palm_leaves", + angle=30, + iterations=2, + random_level=0, + trunk_type="single", + thin_branches=true, + fruit="moretrees:coconut", + fruit_chance=0 +} + +moretrees.spruce_model1={ + axiom="FFFFFAFFFFFFBFFFFFFCFFFFFFDFFFFFF[&&&F^^FF][&&&++F^^FF][&&&++++F^^FF][&&&++++++F^^FF][&&&--F^^FF][&&&----F^^FF][FFFFf]", + rules_a="[&&&FFFFFF^^FFF][&&&++FFFFFF^^FFF][&&&++++FFFFFF^^FFF][&&&++++++FFFFFF^^FFF][&&&--FFFFFF^^FFF][&&&----FFFFFF^^FFF]", + rules_b="[&&&FFFFF^^FFF][&&&++FFFFF^^FFF][&&&++++FFFFF^^FFF][&&&++++++FFFFF^^FFF][&&&--FFFFF^^FFF][&&&----FFFFF^^FFF]", + rules_c="[&&&FFFF^^FFF][&&&++FFFF^^FFF][&&&++++FFFF^^FFF][&&&++++++FFFF^^FFF][&&&--FFFF^^FFF][&&&----FFFF^^FFF]", + rules_d="[&&&FFF^^FFF][&&&++FFF^^FFF][&&&++++FFF^^FFF][&&&++++++FFF^^FFF][&&&--FFF^^FFF][&&&----FFF^^FFF]", + trunk="moretrees:spruce_trunk", + leaves="moretrees:spruce_leaves", + angle=30, + iterations=2, + random_level=0, + trunk_type="crossed", + thin_branches=true, + fruit="moretrees:spruce_cone", + fruit_chance=8 +} + +moretrees.spruce_model2={ + axiom="FFFFFFBFFFFFFCFFFFFFDFFFFFF[&&&F^^FF][&&&++F^^FF][&&&++++F^^FF][&&&++++++F^^FF][&&&--F^^FF][&&&----F^^FF][FFFFf]", + rules_b="[&&&FFFFF^^FFF][&&&++FFFFF^^FFF][&&&++++FFFFF^^FFF][&&&++++++FFFFF^^FFF][&&&--FFFFF^^FFF][&&&----FFFFF^^FFF]", + rules_c="[&&&FFFF^^FFF][&&&++FFFF^^FFF][&&&++++FFFF^^FFF][&&&++++++FFFF^^FFF][&&&--FFFF^^FFF][&&&----FFFF^^FFF]", + rules_d="[&&&FFF^^FFF][&&&++FFF^^FFF][&&&++++FFF^^FFF][&&&++++++FFF^^FFF][&&&--FFF^^FFF][&&&----FFF^^FFF]", + trunk="moretrees:spruce_trunk", + leaves="moretrees:spruce_leaves", + angle=30, + iterations=2, + random_level=0, + trunk_type="crossed", + thin_branches=true, + fruit="moretrees:spruce_cone", + fruit_chance=8 +} + +moretrees.pine_model={ + axiom="FFFFFcccdddB///cFdFB////cFdFB///cFdFB///cFdFA///cFdFA///cFdFB[FF]f", + rules_a="[&&&TTTT[++^TFdd][--&TFd]//Tdd[+^Fd][--&Fdd]]", + rules_b="[&&&TTT[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]", + rules_c="/", + rules_d="F", + trunk="default:pine_tree", + leaves="default:pine_needles", + angle=30, + iterations=2, + random_level=0, + trunk_type="single", + thin_branches=true, + fruit="moretrees:pine_cone", + fruit_chance=8 +} + +moretrees.willow_model={ + axiom="FFFFFFFFccA", + rules_a="[&FF&FFFF&&F&FFFFFFFdddd][**&FF&FFFF&&F&FFFFFFFdddd][//&FF&FFFF&&F&FFFFFFFdddd][////&FF&FFFF&&F&FFFFFFFdddd][//////&FF&FFFF&&F&FFFFFFFdddd][////////&FF&FFFF&&F&FFFFFFFdddd]", + rules_c="/", + rules_d="F", + trunk="moretrees:willow_trunk", + leaves="moretrees:willow_leaves", + angle=30, + iterations=2, + random_level=0, + trunk_type="crossed", + thin_branches=true +} + +moretrees.acacia_model={ + axiom="FFFFFFccccA", + rules_a = "[B]//[B]//[B]//[B]", + rules_b = "&TTTT&TT^^G&&----GGGGGG++GGG++" -- line up with the "canvas" edge + .."fffffffGG++G++" -- first layer, drawn in a zig-zag raster pattern + .."Gffffffff--G--" + .."ffffffffG++G++" + .."fffffffff--G--" + .."fffffffff++G++" + .."fffffffff--G--" + .."ffffffffG++G++" + .."Gffffffff--G--" + .."fffffffGG" + .."^^G&&----GGGGGGG++GGGGGG++" -- re-align to second layer canvas edge + .."ffffGGG++G++" -- second layer + .."GGfffff--G--" + .."ffffffG++G++" + .."fffffff--G--" + .."ffffffG++G++" + .."GGfffff--G--" + .."ffffGGG", + rules_c = "/", + trunk="default:acacia_tree", + leaves="default:acacia_leaves", + angle=45, + iterations=3, + random_level=0, + trunk_type="single", + thin_branches=true, +} + +moretrees.rubber_tree_model={ + axiom="FFFFA", + rules_a="[&FFBFA]////[&BFFFA]////[&FBFFA]", + rules_b="[&FFA]////[&FFA]////[&FFA]", + trunk="moretrees:rubber_tree_trunk", + leaves="moretrees:rubber_tree_leaves", + angle=35, + iterations=3, + random_level=1, + trunk_type="double", + thin_branches=true +} + +moretrees.jungletree_model={ + axiom=nil, + rules_a=nil, + rules_b=nil, + trunk="moretrees:jungletree_trunk", + leaves="default:jungleleaves", + leaves2=nil, + leaves2_chance=nil, + angle=45, + iterations=nil, + random_level=2, + trunk_type=nil, + thin_branches=true, + fruit_chance=15, + fruit="vines:vine" +} + +moretrees.fir_model={ + axiom="FFFAF[&&-F][&&+F][&&---F][&&+++F]Fff", + rules_a=nil, + rules_b=nil, + trunk="moretrees:fir_trunk", + leaves=nil, + angle=45, + iterations=7, + random_level=5, + trunk_type="single", + thin_branches=true, + fruit="moretrees:fir_cone", + fruit_chance=8 +} |