From 87aa4d12f2686f6fd2966e333d9bdbcf6d55a5f3 Mon Sep 17 00:00:00 2001 From: juraj Date: Sat, 20 Feb 2016 02:56:14 +0100 Subject: [PATCH] initial commit --- LICENSE.txt | 774 +++++++++++++++ README.md | 59 ++ clams/depends.txt | 1 + clams/init.lua | 392 ++++++++ clams/readme.txt | 29 + clams/textures/clams_algae.png | Bin 0 -> 1037 bytes clams/textures/clams_algaeused.png | Bin 0 -> 997 bytes clams/textures/clams_collectedalgae.png | Bin 0 -> 1207 bytes clams/textures/clams_crushedwhite.png | Bin 0 -> 989 bytes clams/textures/clams_whiteshell.png | Bin 0 -> 1988 bytes modpack.txt | 0 noairblocks/depends.txt | 1 + noairblocks/init.lua | 230 +++++ noairblocks/readme.txt | 12 + seacobble/depends.txt | 6 + seacobble/init.lua | 139 +++ seacobble/readme.txt | 22 + seacobble/textures/seacobble_seacobble.png | Bin 0 -> 1511 bytes .../textures/seacobble_seacobble_aqua.png | Bin 0 -> 1534 bytes .../textures/seacobble_seacobble_cyan.png | Bin 0 -> 1529 bytes .../textures/seacobble_seacobble_lime.png | Bin 0 -> 1523 bytes .../textures/seacobble_seacobble_magenta.png | Bin 0 -> 1561 bytes .../seacobble_seacobble_redviolet.png | Bin 0 -> 1482 bytes .../textures/seacobble_seacobble_skyblue.png | Bin 0 -> 1536 bytes seacoral/depends.txt | 4 + seacoral/init.lua | 650 ++++++++++++ seacoral/readme.txt | 21 + seacoral/textures/seacoral_coralaqua.png | Bin 0 -> 1135 bytes seacoral/textures/seacoral_coralcyan.png | Bin 0 -> 1083 bytes seacoral/textures/seacoral_corallime.png | Bin 0 -> 1225 bytes seacoral/textures/seacoral_coralmagenta.png | Bin 0 -> 1172 bytes seacoral/textures/seacoral_coralredviolet.png | Bin 0 -> 1238 bytes seacoral/textures/seacoral_coralskyblue.png | Bin 0 -> 1095 bytes seaglass/depends.txt | 6 + seaglass/init.lua | 741 ++++++++++++++ seaglass/readme.txt | 13 + seaglass/textures/seaglass_seaglass.png | Bin 0 -> 1100 bytes seaglass/textures/seaglass_seaglass_black.png | Bin 0 -> 1394 bytes seaglass/textures/seaglass_seaglass_blue.png | Bin 0 -> 1488 bytes seaglass/textures/seaglass_seaglass_red.png | Bin 0 -> 1452 bytes seaglass/textures/seaglass_seaglass_white.png | Bin 0 -> 1342 bytes .../textures/seaglass_seaglass_yellow.png | Bin 0 -> 1459 bytes seagravel/depends.txt | 6 + seagravel/init.lua | 181 ++++ seagravel/readme.txt | 16 + seagravel/textures/seagravel_seagravel.png | Bin 0 -> 1425 bytes .../textures/seagravel_seagravel_aqua.png | Bin 0 -> 1288 bytes .../textures/seagravel_seagravel_cyan.png | Bin 0 -> 1271 bytes .../textures/seagravel_seagravel_lime.png | Bin 0 -> 1232 bytes .../textures/seagravel_seagravel_magenta.png | Bin 0 -> 1337 bytes .../seagravel_seagravel_redviolet.png | Bin 0 -> 1101 bytes .../textures/seagravel_seagravel_skyblue.png | Bin 0 -> 1146 bytes sealamps/depends.txt | 3 + sealamps/init.lua | 74 ++ sealamps/readme.txt | 27 + sealamps/textures/sealamps_lantern.png | Bin 0 -> 991 bytes .../textures/sealamps_lantern_on_ceiling.png | Bin 0 -> 1010 bytes .../textures/sealamps_lantern_on_floor.png | Bin 0 -> 1012 bytes sealamps/textures/sealamps_torch_animated.png | Bin 0 -> 1823 bytes .../sealamps_torch_on_ceiling_animated.png | Bin 0 -> 1653 bytes sealamps/textures/sealamps_torch_on_floor.png | Bin 0 -> 972 bytes .../sealamps_torch_on_floor_animated.png | Bin 0 -> 1697 bytes seaplants/depends.txt | 2 + seaplants/init.lua | 539 ++++++++++ seaplants/readme.txt | 24 + seaplants/textures/seaplants_kelpbrown.png | Bin 0 -> 1104 bytes .../textures/seaplants_kelpbrownmiddle.png | Bin 0 -> 1338 bytes seaplants/textures/seaplants_kelpgreen.png | Bin 0 -> 1229 bytes .../textures/seaplants_kelpgreenmiddle.png | Bin 0 -> 1356 bytes .../textures/seaplants_seagrassgreen.png | Bin 0 -> 1044 bytes seaplants/textures/seaplants_seagrassred.png | Bin 0 -> 1046 bytes seaplants/textures/seaplants_seasaladmix.png | Bin 0 -> 1257 bytes seastone/depends.txt | 6 + seastone/init.lua | 165 ++++ seastone/readme.txt | 16 + seastone/textures/seastone_seastone.png | Bin 0 -> 1417 bytes seastone/textures/seastone_seastone_aqua.png | Bin 0 -> 1430 bytes seastone/textures/seastone_seastone_cyan.png | Bin 0 -> 1386 bytes seastone/textures/seastone_seastone_lime.png | Bin 0 -> 1387 bytes .../textures/seastone_seastone_magenta.png | Bin 0 -> 1507 bytes .../textures/seastone_seastone_redviolet.png | Bin 0 -> 1318 bytes .../textures/seastone_seastone_skyblue.png | Bin 0 -> 1495 bytes seastonebrick/depends.txt | 4 + seastonebrick/init.lua | 131 +++ seastonebrick/readme.txt | 22 + .../textures/seastonebrick_seastonebrick.png | Bin 0 -> 1431 bytes .../seastonebrick_seastonebrick_aqua.png | Bin 0 -> 1454 bytes .../seastonebrick_seastonebrick_cyan.png | Bin 0 -> 1387 bytes .../seastonebrick_seastonebrick_lime.png | Bin 0 -> 1402 bytes .../seastonebrick_seastonebrick_magenta.png | Bin 0 -> 1507 bytes .../seastonebrick_seastonebrick_redviolet.png | Bin 0 -> 1339 bytes .../seastonebrick_seastonebrick_skyblue.png | Bin 0 -> 1509 bytes seawrecks/depends.txt | 1 + seawrecks/init.lua | 926 ++++++++++++++++++ seawrecks/readme.txt | 42 + stairsshine/README.txt | 33 + stairsshine/depends.txt | 1 + stairsshine/init.lua | 219 +++++ whiteshell/depends.txt | 2 + whiteshell/init.lua | 82 ++ whiteshell/readme.txt | 16 + 101 files changed, 5638 insertions(+) create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 clams/depends.txt create mode 100644 clams/init.lua create mode 100644 clams/readme.txt create mode 100644 clams/textures/clams_algae.png create mode 100644 clams/textures/clams_algaeused.png create mode 100644 clams/textures/clams_collectedalgae.png create mode 100644 clams/textures/clams_crushedwhite.png create mode 100644 clams/textures/clams_whiteshell.png create mode 100644 modpack.txt create mode 100644 noairblocks/depends.txt create mode 100644 noairblocks/init.lua create mode 100644 noairblocks/readme.txt create mode 100644 seacobble/depends.txt create mode 100644 seacobble/init.lua create mode 100644 seacobble/readme.txt create mode 100644 seacobble/textures/seacobble_seacobble.png create mode 100644 seacobble/textures/seacobble_seacobble_aqua.png create mode 100644 seacobble/textures/seacobble_seacobble_cyan.png create mode 100644 seacobble/textures/seacobble_seacobble_lime.png create mode 100644 seacobble/textures/seacobble_seacobble_magenta.png create mode 100644 seacobble/textures/seacobble_seacobble_redviolet.png create mode 100644 seacobble/textures/seacobble_seacobble_skyblue.png create mode 100644 seacoral/depends.txt create mode 100644 seacoral/init.lua create mode 100644 seacoral/readme.txt create mode 100644 seacoral/textures/seacoral_coralaqua.png create mode 100644 seacoral/textures/seacoral_coralcyan.png create mode 100644 seacoral/textures/seacoral_corallime.png create mode 100644 seacoral/textures/seacoral_coralmagenta.png create mode 100644 seacoral/textures/seacoral_coralredviolet.png create mode 100644 seacoral/textures/seacoral_coralskyblue.png create mode 100644 seaglass/depends.txt create mode 100644 seaglass/init.lua create mode 100644 seaglass/readme.txt create mode 100644 seaglass/textures/seaglass_seaglass.png create mode 100644 seaglass/textures/seaglass_seaglass_black.png create mode 100644 seaglass/textures/seaglass_seaglass_blue.png create mode 100644 seaglass/textures/seaglass_seaglass_red.png create mode 100644 seaglass/textures/seaglass_seaglass_white.png create mode 100644 seaglass/textures/seaglass_seaglass_yellow.png create mode 100644 seagravel/depends.txt create mode 100644 seagravel/init.lua create mode 100644 seagravel/readme.txt create mode 100644 seagravel/textures/seagravel_seagravel.png create mode 100644 seagravel/textures/seagravel_seagravel_aqua.png create mode 100644 seagravel/textures/seagravel_seagravel_cyan.png create mode 100644 seagravel/textures/seagravel_seagravel_lime.png create mode 100644 seagravel/textures/seagravel_seagravel_magenta.png create mode 100644 seagravel/textures/seagravel_seagravel_redviolet.png create mode 100644 seagravel/textures/seagravel_seagravel_skyblue.png create mode 100644 sealamps/depends.txt create mode 100644 sealamps/init.lua create mode 100644 sealamps/readme.txt create mode 100644 sealamps/textures/sealamps_lantern.png create mode 100644 sealamps/textures/sealamps_lantern_on_ceiling.png create mode 100644 sealamps/textures/sealamps_lantern_on_floor.png create mode 100644 sealamps/textures/sealamps_torch_animated.png create mode 100644 sealamps/textures/sealamps_torch_on_ceiling_animated.png create mode 100644 sealamps/textures/sealamps_torch_on_floor.png create mode 100644 sealamps/textures/sealamps_torch_on_floor_animated.png create mode 100644 seaplants/depends.txt create mode 100644 seaplants/init.lua create mode 100644 seaplants/readme.txt create mode 100644 seaplants/textures/seaplants_kelpbrown.png create mode 100644 seaplants/textures/seaplants_kelpbrownmiddle.png create mode 100644 seaplants/textures/seaplants_kelpgreen.png create mode 100644 seaplants/textures/seaplants_kelpgreenmiddle.png create mode 100644 seaplants/textures/seaplants_seagrassgreen.png create mode 100644 seaplants/textures/seaplants_seagrassred.png create mode 100644 seaplants/textures/seaplants_seasaladmix.png create mode 100644 seastone/depends.txt create mode 100644 seastone/init.lua create mode 100644 seastone/readme.txt create mode 100644 seastone/textures/seastone_seastone.png create mode 100644 seastone/textures/seastone_seastone_aqua.png create mode 100644 seastone/textures/seastone_seastone_cyan.png create mode 100644 seastone/textures/seastone_seastone_lime.png create mode 100644 seastone/textures/seastone_seastone_magenta.png create mode 100644 seastone/textures/seastone_seastone_redviolet.png create mode 100644 seastone/textures/seastone_seastone_skyblue.png create mode 100644 seastonebrick/depends.txt create mode 100644 seastonebrick/init.lua create mode 100644 seastonebrick/readme.txt create mode 100644 seastonebrick/textures/seastonebrick_seastonebrick.png create mode 100644 seastonebrick/textures/seastonebrick_seastonebrick_aqua.png create mode 100644 seastonebrick/textures/seastonebrick_seastonebrick_cyan.png create mode 100644 seastonebrick/textures/seastonebrick_seastonebrick_lime.png create mode 100644 seastonebrick/textures/seastonebrick_seastonebrick_magenta.png create mode 100644 seastonebrick/textures/seastonebrick_seastonebrick_redviolet.png create mode 100644 seastonebrick/textures/seastonebrick_seastonebrick_skyblue.png create mode 100644 seawrecks/depends.txt create mode 100644 seawrecks/init.lua create mode 100644 seawrecks/readme.txt create mode 100644 stairsshine/README.txt create mode 100644 stairsshine/depends.txt create mode 100644 stairsshine/init.lua create mode 100644 whiteshell/depends.txt create mode 100644 whiteshell/init.lua create mode 100644 whiteshell/readme.txt diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..3b0ad44 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,774 @@ +Licenses +-------------- + +Copyright (C) 2012 Perttu Ahola (celeron55) + +This program is free software. It comes without any warranty, to +the extent permitted by applicable law. You can redistribute it +and/or modify it under the terms of the Do What The Fuck You Want +To Public License, Version 2, as published by Sam Hocevar. See +http://sam.zoy.org/wtfpl/COPYING for more details. + +------------------------------------------------------------------------------------------------ +License sounds dirt, sand, gravel, sand, stone and leaves +------------------------------------------------------------------------------------------------ + +Mito551 (sounds) (CC BY-SA) + +--------------------------------------------------------------- +License dirt, tree and chests textures +--------------------------------------------------------------- + +Cisoun's WTFPL texture pack + +--------------------------------------------------------------------------------------------------------- +License sand, desert_sand, sandstonebrick and torch textures +--------------------------------------------------------------------------------------------------------- + +VanessaE (WTFPL) + +-------------------------------------------------------- +License animated water textures +-------------------------------------------------------- + +RealBadAngel's animated water (WTFPL) + +---------------------------------------------------------- +License cobble and wood textures +---------------------------------------------------------- + +Originating from G4JC's Almost MC Texture Pack + +------------------------------------------------------------------------------------------------------------------ +License of the sea-modpack +------------------------------------------------------------------------------------------------------------------ + +Copyright (C) Topywo + +License of media (textures and sounds) sea-modpack +----------------------------------------------------------------------------------------- +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +http://creativecommons.org/licenses/by-sa/3.0/ + +Specific code of the sea-modpack +--------------------------------------------------------- +Follows GNU LGPL 2.1 or later as described under "License of source code" and further + +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Licence of celeron55's mob and default/mapgen.lua code and other code/textures/sound used not listed here, unless someone states and proves otherwise, is considered to be +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Copyright (C) 2010-2012 celeron55, Perttu Ahola + + +--------------------------------------- +License of source code: +--------------------------------------- +Copyright (C) 2011-2012 celeron55, Perttu Ahola +See README.txt in each mod directory for information about other authors. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +http://www.gnu.org/licenses/lgpl-2.1.html + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +License of media (textures and sounds) +-------------------------------------- +Copyright (C) 2010-2012 celeron55, Perttu Ahola +See README.txt in each mod directory for information about other authors. + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +http://creativecommons.org/licenses/by-sa/3.0/ + +License of menu/header.png +Copyright (C) 2013 BlockMen CC BY-3.0 + + +----------------------------------------------------------------------------------------- +*License GNU General Public License version 3 or later. +----------------------------------------------------------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..488e0c7 --- /dev/null +++ b/README.md @@ -0,0 +1,59 @@ +------------------------------------------------------------------------------------------------- +sea-modpack +------------------------------------------------------------------------------------------------- + +Version 0.4.0 + +- clams --> collect algae for seaglass and crushed white shells for blocks +- noairblocks --> removes the airblocks around seacorals, seaplants and sealamps +- seacobble --> cobble in the colors white/neutral, aqua, cyan, lime, magenta, redviolet and skyblue +- seacoral --> give some health directly and can be used as dyes with the unified dyes mod + and optionally the color machine mod + Colors: aqua, cyan, lime, magenta, redviolet and skyblue +- seaglass --> seaglass that can be on or off in the colors, neutral, white, yellow, red, blue and black +- seagravel --> gravel in the colors white/neutral, aqua, cyan, lime, magenta, redviolet and skyblue +- sealamps --> a torch that burns under water and a diving lantern +- seaplants --> provide some health when eating them, combine them to make a seasalad mix +- seastone --> stone in the colors white/neutral, aqua, cyan, lime, magenta, redviolet and skyblue +- seastonebrick --> stonebrick in the colors white/neutral, aqua, cyan, lime, magenta, redviolet and skyblue +- seawrecks --> This version two types, consisting of 'default' materials +- stairsshine --> Just like minetest_game's stairs supports stair- and slabmaking for the blocks, + this one supports blocks that have a lightsource_14 +- whiteshell --> provides some more crushed white shells for blocks + +----------------------------------------------- +Dependencies ? = optional +----------------------------------------------- + +- clams --> default +- noairblocks --> default +- seacobble --> default, dye, stairs, clams, whiteshell? , colormachine? +- seacoral --> default, noairblocks, unifieddyes, colormachine? +- seaglass --> default, dye, stairs, clams, stairsshine? , colormachine? +- seagravel --> default, dye, stairs, clams, whiteshell? , colormachine? +- sealamps --> default, bucket, noairblocks +- seaplants --> default, noairblocks +- seastone --> default, dye, stairs, clams, whiteshell? , colormachine? +- seastonebrick --> default, stairs, seastone, colormachine? +- seawrecks --> default +- stairsshine --> default +- whiteshell --> default, clams + + +---------------------------------- +Credits +---------------------------------- + +- Celeron55 for making minetest and this mod possible (the mapgen.lua code (and part of his mob mod code) and for the minetest_game stairs mod) +- Kahrl for the minetest_game stairs mod +- VanessaE for making unifieddyes (among of a lot of other good mods) +- Cornernote (for the dye_code in an older sea version). Thanks for all your work for minetest cornernote! +- Chinchow, for asking me what I was doing (nothing constructive till then) +- Sapier, because of his fish in his animals-mod I understood you could build something under water without an waterblock around it. +- Inocudom, for the support of this modpack (and telling me about Jeija's hydro-turbine). +- Jeija (because of the hydro-turbine (mesecons)). +- Neuromancer for the constructive feed-back concerning the performance. +- Sokomine for constructive feedback of the total modpack +- Mossmanikin for his support +- Jouster27 for the helpful feedback about version 0.3.0 +- Chlue simple abm profiling ( https://forum.minetest.net/viewtopic.php?pid=113112#p113112 ) diff --git a/clams/depends.txt b/clams/depends.txt new file mode 100644 index 0000000..331d858 --- /dev/null +++ b/clams/depends.txt @@ -0,0 +1 @@ +default \ No newline at end of file diff --git a/clams/init.lua b/clams/init.lua new file mode 100644 index 0000000..9c6cb3f --- /dev/null +++ b/clams/init.lua @@ -0,0 +1,392 @@ +-- NODES + +minetest.register_node("clams:sandalgae", { + description = "Sandalgae", + tiles = {"default_sand.png^clams_algae.png"}, + paramtype = "light", + is_ground_content = true, + groups = {crumbly=3, falling_node=1, sand=1}, + drop = { + items = { + { + items = {'"clams:collectedalgae" 4'}, + }, + { + items = {'clams:sandalgaeused'}, + } + } + }, + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("clams:dirtalgae", { + description = "Dirtalgae", + tiles = {"default_dirt.png^clams_algae.png"}, + paramtype = "light", + is_ground_content = true, + groups = {crumbly=3}, + drop = { + items = { + { + items = {'"clams:collectedalgae" 4'}, + }, + { + items = {'clams:dirtalgaeused'}, + } + } + }, + sounds = default.node_sound_dirt_defaults, +}) + +minetest.register_node("clams:sandalgaeused", { + description = "Used sandalgae", + tiles = {"default_sand.png^clams_algaeused.png"}, + inventory_image = {"default_sand.png^clams_algaeused.png"}, + is_ground_content = true, + groups = {crumbly=3, falling_node=1, sand=1}, + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("clams:dirtalgaeused", { + description = "Used dirtalgae", + tiles = {"default_dirt.png^clams_algaeused.png"}, + inventory_image = {"default_dirt.png^clams_algaeused.png"}, + is_ground_content = true, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults(), +}) + + +-- ENTITIES + + +-- The registration of the entities' code is copied from celeron55's mob (the DM's fireball) + + +minetest.register_entity("clams:whiteshell", { + description="White shell", + hp_max = 15, + physical = true, + collisionbox = {-0.2,-0.2,-0.2, 0.2,0.2,0.2}, + visual = "sprite", + visual_size = {x=0.5, y=0.5}, + textures = {"clams_whiteshell.png^[makealpha:128,128,0"}, + spritediv = {x=1, y=3}, + initial_sprite_basepos = {x=0, y=0}, + drops = { + {name = "clams:crushedwhite", chance = 1, min = 1, max = 4}, + }, + + phase = 0, + phasetimer = 0, + + on_activate = function(self, staticdata) + minetest.log("whiteshell activated!") + end, + + on_step = function(self, dtime) + self.phasetimer = self.phasetimer + dtime + if self.phasetimer > 2.0 then + self.phasetimer = self.phasetimer - 2.0 + self.phase = self.phase + 1 + if self.phase >= 3 then + self.phase = 0 + end + self.object:setsprite({x=0, y=self.phase}) + phasearmor = { + [0]={fleshy=0}, + [1]={fleshy=30}, + [2]={fleshy=70} + } + self.object:set_armor_groups(phasearmor[self.phase]) + end + end, + + on_punch = function(self, hitter) + if self.object:get_hp() <= 0 then + if hitter and hitter:is_player() and hitter:get_inventory() then + for _,drop in ipairs(self.drops) do + if math.random(1, drop.chance) == 1 then + hitter:get_inventory():add_item("main", ItemStack(drop.name.." "..math.random(drop.min, drop.max))) + end + end + else + for _,drop in ipairs(self.drops) do + if math.random(1, drop.chance) == 1 then + for i=1,math.random(drop.min, drop.max) do + local obj = minetest.add_item(self.object:getpos(), drop.name) + if obj then + obj:get_luaentity().collect = true + local x = math.random(1, 5) + if math.random(1,2) == 1 then + x = -x + end + local z = math.random(1, 5) + if math.random(1,2) == 1 then + z = -z + end + obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z}) + end + end + end + end + end + end + end, +}) + + +-- CRAFT ITEMS + + +minetest.register_craftitem("clams:collectedalgae", { + description = "Collected algae", + inventory_image = "clams_collectedalgae.png", +}) + +minetest.register_craftitem("clams:crushedwhite", { + description = "Crushed white shell", + inventory_image = "clams_crushedwhite.png", +}) + + +-- ALGAE GENERATION + + +minetest.register_ore({ + ore_type = "scatter", + ore = "clams:sandalgae", + wherein = "default:sand", + clust_scarcity = 9*9*9, + clust_num_ores = 16, + clust_size = 4, + height_max = -4, + height_min = -60, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "clams:dirtalgae", + wherein = "default:dirt", + clust_scarcity = 9*9*9, + clust_num_ores = 16, + clust_size = 4, + height_max = -4, + height_min = -60, +}) + + +local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, height_min, height_max) + if maxp.y < height_min or minp.y > height_max then + return + end + local y_min = math.max(minp.y, height_min) + local y_max = math.min(maxp.y, height_max) + if chunk_size >= y_max - y_min + 1 then + return + end + local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1) + local pr = PseudoRandom(seed) + local num_chunks = math.floor(chunks_per_volume * volume) + local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk) + for i=1,num_chunks do + local y0 = pr:next(y_min, y_max-chunk_size+1) + if y0 >= height_min and y0 <= height_max then + local x0 = pr:next(minp.x, maxp.x-chunk_size+1) + local z0 = pr:next(minp.z, maxp.z-chunk_size+1) + local p0 = {x=x0, y=y0, z=z0} + for x1=0,chunk_size-1 do + for y1=0,chunk_size-1 do + for z1=0,chunk_size-1 do + if pr:next(1,inverse_chance) == 1 then + local x2 = x0+x1 + local y2 = y0+y1 + local z2 = z0+z1 + local p2 = {x=x2, y=y2, z=z2} + if minetest.get_node(p2).name == wherein then + minetest.set_node(p2, {name=name}) + end + end + end + end + end + end + end +end + + +--ABM's + + +minetest.register_abm({ + nodenames = {"clams:sandalgaeused"}, + interval = 30, + chance = 20, + action = function(pos, node, active_object_count, active_object_count_wider) + local y = {x = pos.x, y = pos.y + 1, z = pos.z } + local yy = {x = pos.x, y = pos.y + 2, z = pos.z } + if minetest.get_node(y).name == "default:water_source" or + minetest.get_node(y).name == "noairblocks:water_sourcex" then + if minetest.get_node(yy).name == "default:water_source" or + minetest.get_node(yy).name == "noairblocks:water_sourcex" then + minetest.add_node(pos, {name = "clams:sandalgae"}) else + return + end + end + end, +}) + +minetest.register_abm({ + nodenames = {"clams:dirtalgaeused"}, + interval = 30, + chance = 20, + action = function(pos, node, active_object_count, active_object_count_wider) + local y = {x = pos.x, y = pos.y + 1, z = pos.z } + local yy = {x = pos.x, y = pos.y + 2, z = pos.z } + if minetest.get_node(y).name == "default:water_source" or + minetest.get_node(y).name == "noairblocks:water_sourcex" then + if minetest.get_node(yy).name == "default:water_source" or + minetest.get_node(yy).name == "noairblocks:water_sourcex" then + minetest.add_node(pos, {name = "clams:dirtalgae"}) else + return + end + end + end, +}) + +minetest.register_abm({ + nodenames = {"clams:sandalgae"}, + interval = 40, + chance = 40, + action = function(pos, node, active_object_count, active_object_count_wider) + local y = {x = pos.x, y = pos.y + 1, z = pos.z } + local yy = {x = pos.x, y = pos.y + 2, z = pos.z } + if (active_object_count_wider + active_object_count_wider) > 40 then + return + elseif (minetest.get_node(y).name == "default:water_source" or + minetest.get_node(y).name == "noairblocks:water_sourcex") then + if (minetest.get_node(yy).name == "default:water_source" or + minetest.get_node(yy).name == "noairblocks:water_sourcex") then + pos.y=pos.y + 1 + minetest.add_entity(pos, "clams:whiteshell") + end + end + end, +}) + +minetest.register_abm({ + nodenames = {"clams:dirtalgae"}, + interval = 40, + chance = 40, + action = function(pos, node, active_object_count, active_object_count_wider) + local y = {x = pos.x, y = pos.y + 1, z = pos.z } + local yy = {x = pos.x, y = pos.y + 2, z = pos.z } + if (active_object_count_wider + active_object_count_wider) > 40 then + return + elseif (minetest.get_node(y).name == "default:water_source" or + minetest.get_node(y).name == "noairblocks:water_sourcex") then + if (minetest.get_node(yy).name == "default:water_source" or + minetest.get_node(yy).name == "noairblocks:water_sourcex") then + pos.y=pos.y + 1 + minetest.add_entity(pos, "clams:whiteshell") + end + end + end, +}) + + +-- ALIASES + + +minetest.register_alias("clams:yellowalgae","clams:collectedalgae") +minetest.register_alias("clams:redalgae","clams:collectedalgae") +minetest.register_alias("clams:bluealgae","clams:collectedalgae") + +minetest.register_alias("clams:yellowshell","clams:whiteshell") +minetest.register_alias("clams:redshell","clams:whiteshell") +minetest.register_alias("clams:blueshell","clams:whiteshell") + +minetest.register_alias("clams:yellowseedsanddirt","clams:sandalgae") +minetest.register_alias("clams:redseedsanddirt","clams:dirtalgae") +minetest.register_alias("clams:blueseedsanddirt","clams:sandalgae") + +minetest.register_alias("clams:yellowseed","clams:collectedalgae") +minetest.register_alias("clams:redseed","clams:collectedalgae") +minetest.register_alias("clams:blueseed","clams:collectedalgae") + +minetest.register_alias("clams:sanddirt","clams:sandalgaeused") +minetest.register_alias("clams:sanddirtalgae","clams:dirtalgae") +minetest.register_alias("clams:sanddirtused","clams:dirtalgaeused") + +minetest.register_alias("clams:sandbalgae","clams:sandalgae") +minetest.register_alias("clams:dirtbalgae","clams:dirtalgae") + +minetest.register_alias("clams:crushedyellow","clams:crushedwhite") +minetest.register_alias("clams:crushedred","clams:crushedwhite") +minetest.register_alias("clams:crushedblue","clams:crushedwhite") +minetest.register_alias("clams:crushedblack","clams:crushedwhite") + +minetest.register_alias("clams:emptybleacher","colormachine:colormachine") +minetest.register_alias("clams:filledbleacher","colormachine:colormachine") +minetest.register_alias("clams:readybleacher","colormachine:colormachine") + +if( minetest.get_modpath( "colormachine") ~= nil ) then + minetest.register_alias("clams:emptybleacher","colormachine:colormachine") + minetest.register_alias("clams:filledbleacher","colormachine:colormachine") + minetest.register_alias("clams:readybleacher","colormachine:colormachine") else + minetest.register_alias("clams:emptybleacher","default:mese") + minetest.register_alias("clams:filledbleacher","default:mese") + minetest.register_alias("clams:readybleacher","default:mese") + return +end + + +-- ALIASES OLDEST VERSION + + +minetest.register_alias("algae:yellowalgae","clams:collectedalgae") +minetest.register_alias("algae:redalgae","clams:collectedalgae") +minetest.register_alias("algae:bluealgae","clams:collectedalgae") + +minetest.register_alias("algae:sandalgae","clams:sandalgae") +minetest.register_alias("algae:dirtalgae","clams:dirtalgae") +minetest.register_alias("algae:sandbalgae","clams:sandalgae") +minetest.register_alias("algae:dirtbalgae","clams:dirtalgae") + +minetest.register_alias("sea_cult:emptybleacher","colormachine:colormachine") +minetest.register_alias("sea_cult:filledbleacher","colormachine:colormachine") +minetest.register_alias("sea_cult:readybleacher","colormachine:colormachine") + +if( minetest.get_modpath( "colormachine") ~= nil ) then + minetest.register_alias("sea_cult:emptybleacher","colormachine:colormachine") + minetest.register_alias("sea_cult:filledbleacher","colormachine:colormachine") + minetest.register_alias("sea_cult:readybleacher","colormachine:colormachine") else + minetest.register_alias("sea_cult:emptybleacher","default:mese") + minetest.register_alias("sea_cult:filledbleacher","default:mese") + minetest.register_alias("sea_cult:readybleacher","default:mese") + return +end + +minetest.register_alias("sea_cult:sanddirt","clams:sandalgaeused") +minetest.register_alias("sea_cult:sanddirtalgae","clams:dirtalgae") +minetest.register_alias("sea_cult:sanddirtused","clams:dirtalgaeused") + +minetest.register_alias("shells:yellowshell","clams:whiteshell") +minetest.register_alias("shells:redshell","clams:whiteshell") +minetest.register_alias("shells:blueshell","clams:whiteshell") + +minetest.register_alias("shells:yellowseed","clams:collectedalgae") +minetest.register_alias("shells:redseed","clams:collectedalgae") +minetest.register_alias("shells:blueseed","clams:collectedalgae") + +minetest.register_alias("shells:crushedyellow","clams:crushedwhite") +minetest.register_alias("shells:crushedred","clams:crushedwhite") +minetest.register_alias("shells:crushedblue","clams:crushedwhite") +minetest.register_alias("shells:crushedblack","clams:crushedwhite") +minetest.register_alias("shells:crushedwhite","clams:crushedwhite") + +minetest.register_alias("shells_dye:yellowlightglass","clams:yellowlightglass") +minetest.register_alias("shells_dye:redlightglass","clams:redlightglass") +minetest.register_alias("shells_dye:bluelightglass","clams:bluelightglass") +minetest.register_alias("shells_dye:whitelightglass","clams:whitelightglass") +minetest.register_alias("shells_dye:blacklightglass","clams:blacklightglass") \ No newline at end of file diff --git a/clams/readme.txt b/clams/readme.txt new file mode 100644 index 0000000..048a724 --- /dev/null +++ b/clams/readme.txt @@ -0,0 +1,29 @@ +Sounds: +sounds = default.node_sound_sand_defaults(), default.node_sound_dirt_defaults(), + +Copyright (C) 2010-2012 celeron55, Perttu Ahola + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +http://creativecommons.org/licenses/by-sa/3.0/ + + +.png's: +default_sand.png +VanessaE (WTFPL) + +default_water_source_animated.png +default_water_flowing_animated.png +RealBadAngel's animated water (WTFPL) + +default_dirt.png +Cisoun's WTFPL texture pack + + +Code: +minetest/games/minetest_game/mods/default/mapgen.lua --> ore generation +minetest/games/minetest_game/mods/default/nodes.lua --> water + +Copyright (C) 2011-2012 celeron55, Perttu Ahola +GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. \ No newline at end of file diff --git a/clams/textures/clams_algae.png b/clams/textures/clams_algae.png new file mode 100644 index 0000000000000000000000000000000000000000..95de9c5da69df4963007edb520f0d8d2bbaaa5b1 GIT binary patch literal 1037 zcmZuvOGuSb5FWY}VF|X09+Zm?7}Caq3X-f)axl!&kaCfA3xk@dTxfSuY21Y^B!+fH ziJOYBT_YKSRA3Sz1{E}A1=52G3SC&H)BIPE`)J@lXU@;e`5tpRYN~hT=dH{GfPAbh z-{*Tl^etNGYvH&Z28cn;?z##;TI#dZW`43LR8>TnnTQZEgrEQdzyJh*0KvO*eyM^8 zFar@FLik^if(i%&6A%IhzbU6J7v4maS%?^sLNI0}5=8c#ND;*oMD^9Fnu-bw6B7~! z3}V8{B!rBC0vnSO3I+~jgz6Om4MVD5H46^0wvg7BPXC|sF;*Ch; z6|71k$m}_(`u(1us;|Lv*qfNL3JD{V^JP;~L1EWHrl{ij(A0HD-I-wSOgf$$I0xy& zokevj4xEC|aSk$_^JBV{XvoH*#Dc^D34&&M4Nf%8ZXnUD4rDQ6Me-Ri1j>{fy%9Dc zWfY$r0=dr2*MN{YA14XQAOv1+APOu%?9WyVSe*hmP%4It=gs%zDVFc3+wv^l*tKlZ zF1UvtMYZEUY>7upZ}>ZSZ1U20!-unlhfejNE}vFm*3mj*!~aoruTsW literal 0 HcmV?d00001 diff --git a/clams/textures/clams_algaeused.png b/clams/textures/clams_algaeused.png new file mode 100644 index 0000000000000000000000000000000000000000..52c438da652c55656c05123d8b4c0b1ee6571ae8 GIT binary patch literal 997 zcmZvaPe{~J5XZ*~*%r5rE<$VA;hnm)cq$Mf+eIfsWR(s`ObIVy`jOrMEqbJ z020`r$@#iJ8nITNJIgi(up5R>k7Rvo)nV1ed}q<8sv^S7M1+VT1O*TP1|R?g2%gpS zOBF&B-)UHEJmzI-UEg}_2ouy zgiS~p#XE;UUT6JlK&bDJiv(p50zYmb3M@eE&sGdrT>?0$`n@}{YmWy{F>_+%*h+DD zIq~{%TX$(-0w%|j4>qS-Hoxy3SZn|NCY?Ujx(*x956txE`Ac$jyt5}&X)hFB{kc`> z$X|f>XUk`P<>D`XCi|uz^4#e3x8d@o9~-x~CKgxrJ-JfsT0K7g_|u`@%Jr$j(rgTp zHzrFbOCP)7ZTa)n%G|T;{CsNZ++xT1{N;sf_aEiD*Vb>&-2G5YwS8Sa`m&{G3orhi Qjin>em>tY4^p4*72P7@il>h($ literal 0 HcmV?d00001 diff --git a/clams/textures/clams_collectedalgae.png b/clams/textures/clams_collectedalgae.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f602fb3681a9539ce452b1fc8abf283001efb3 GIT binary patch literal 1207 zcmZvaeN5I>6vt0u1Qeqw>Lx6-U67YHU=}g8KWIGYVc|5X?U@VTg0{9(>Qq?bAHr7A zXp_TWrD1J?FE~l9PP3JpXw%I#G9|6E2z!>~(21bSLcN{madSL8{kD7Wxxd|WKi~5` zw`tkZ#mPytlK>zYmz2J2>yzP;5N~tFm|p`B2g_cn4A|C3hL0@Xc0T;6s)#T%5h0>; zP5}gf0SEvAoMpxQQUwuU1|mQN_kV{JR6rP*fDq8xO)+V)crT*NLd1yVoM%=dL1c@G z6j3ZdRGUqzS5aYMVnRZPPQ0)(2_d5+$DTUQbA#>gS?`O z)rVfK?r?TA%$%9XGXozYt+@}VCdI%Je2jAt?VN2VmJ)8VXHjB7Vuu7yCwUDfbb{SL zqLVU^#S<%%^?<=qbh+U-!d^%j#X5&TR%i5UK#1;-i3DX30z2+O6j*@Ro~?LbH3?v# z$k&%UWh%fU8?m&cviR(w)+2AGm81sxa%b+^US0V3iK6#YYi8EIl^!a(o}JUUqI2}I z=JMxqMia9_DeFV|39naneKB`##*RO(rxef0X?gVE)V%ya!llvj;vM?K$iTM0e_I&m z)6Oky8{B-eYVD6(TkGDqUDJ5#v)m&sbAn}0pU9I_?d?6oQwsLCUwpndcp-S}%0Hj( zTsP7^ZF9?CRVy;^8>)L(C`%^MZ0ePoQS_v z%${+pK4snD$yYA*jeYXW*)vDqORvZ{e|1y#2My)jf95U8Y%Uw2Cq7?Qb@;0`9?FRu zUwo`Ee&w(IS@AbgX9ZU_Zb@t2elB76y#;Hx4vnO`6_(xja%0Qo^=Il9?afXaNU#59{n*{1Ef4a2LJ#7 literal 0 HcmV?d00001 diff --git a/clams/textures/clams_crushedwhite.png b/clams/textures/clams_crushedwhite.png new file mode 100644 index 0000000000000000000000000000000000000000..d4322e82dd8e8a792ef9f47615438f591dc84ad7 GIT binary patch literal 989 zcmZuwO-Phs5FRRQS$4@Xh<>1qcMn?~`Z@F?9kR6=$Ym)byk!SjusIYFT|87o7>G5e zwDORIAtgaJfl(A)f*`4bhvtxYC^9dW)Fqnc`vlqDuNU6;o%xt~pJ$$#ucuTzoK3Gw z13(s!6pr~_AMI3~pBsN#2f$J&9c^oI*WzvQW$szDR8>TnnTQZEgrEQdzyJh*0Ku~o zpHx8vn1KioA^a~$K?Q_?2?zm$zm!Nz!kdUP3lSqy2*#{Lg2-+YDWbT6sD3(CQ&C}I zVnV`zK}=Yggpe^%U}I83!N7rxP(31`VTkipYtT@n5|Ee|F@tWAOWSJYcuyCMl&%3+F zcdUA~DRt$q?f>(7_v7*Dsi}eD{KIRL1FhM{x}5(`V?A3xZM%PCWcpdTF!TG+hy2;q zKbm*F8E$~`qmJ1xT`Sw4*WWxj_wmN|gZ{h9X3iOlzW PZ$uVbiiOeUQL~#`bbfpHA zM9DaUK)4{`4jLg6=o&_Zs3_wC3P-TqfDn^M{S9JebQ5Z+`gVna2+;N+}@(V~h}j5ON$x z0U!Wi01yBW0FGsi`a~%p1Yish0uTc3|AHu>1P}}`0tf=gv6n`rjfUq5p%@c{FocNX zc#J7R1VYSggeZiB84yx-GO9c!lwg7pMi4;`a)c+CVnh(ckV72iF`@_($YBog2vQco zK^}6$`INqf1_^l;5MlfuCe!C%SjJ@tncUTQbY*EnAwO@_C7Np zrR?PRQS5obQ%ngW7-GcuVxA&OAi=B-#8XHKs}J&&)jgCw5{xPHDjpN?KS&%7lP%C3KWS>R!A9isQ9ve4&Ngr%)2L$c_L)Bv+S z{Z%dYb_KJol@`{~MxnO@*K4Z6%eF^G6pA{Z=<8_{pJbJOvC?(mNm+@!X@GA&cK4IF zyG?Db`yb~gU%TC)h^W1BXnn%H^wlcEIH{490YN>3ebskO(rX0SX4cF+01xeSfkGEbdFR#sT{nW+9rDbqX-25k_v*XH7VNRK= zRZ`W;B86pw!m{P%%P)Tn`(c|)TStdLHFx~fg<C_R6Vm>)GRU z%6O&E`S3aJTYN=_FI>3L^+LDi*WUSV!WI{kgB5Y!*$Uy~9TTpGx2~J)Ad#3JwqkYp zytmjfZJBZTTUmt@{yrM^-8a@C-u+Sa;LKPg==xpjdi&}7WowhAc~!gSXG`9)ExzT=8iM}lTQE=F)b_i!^r!Zn!421=LP&{2ozZ&c%3tywm9**GD#Ifv?)s;6q(zu(VKu`(!;H-|GN z&(;Qog!n$MKdII>K78mVIB+jL*ijSd+*+UGFR&82GyUxC?JpM`?HmX^881|%N%9TH zY!BHW2F%?UlqI!`q-<^u3B!tmUc6}AC=QOV+Fg}kT-k*mjn5qPpZ=F5XJ_%GkZMiy z`JR+%hTmrR9bo|d{qj4%_1dSr^fgc}JrZ52lp3k#dU|@M-rD%XthVmfkFHL28(bBa zqc-2$r{7Re(O#Pv4EuDC8b5g(ZH;~!UAjr7ERsGEySg5H@JwN$HZS$Io%W#VtExX1 zNc3|Za;uMw-}cvc9|-46vav9}7Nu-``Lm_1dbKipUwN&hGBfCo`BtsdotiLNoh&!t z>xP5UvHh_kWv-sKTa-_AOSeeYioQBHcHZgul$4`B4wBQKE|il?f%U41%UZid=HpED zz7!@WD<4qoX;h|X>n_b@T@i5uj zJWXAOtg^#a+0}1+JmbvS(@y8>-%G5taxp3OE-I0Abe7A5f4NfE(K4`5T75Jru41v7 zTV~w8E?{Ngoo8@j?B|WTF~I9--P&DEemN<@y;-TdGfd=7gZ&#EpXoxru8GoS#g4Tq mXjAl_`)!|bXTEW3_p}d|E6K+p9DSpmK3 water + +Copyright (C) 2011-2012 celeron55, Perttu Ahola +GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. diff --git a/seacobble/depends.txt b/seacobble/depends.txt new file mode 100644 index 0000000..257d73b --- /dev/null +++ b/seacobble/depends.txt @@ -0,0 +1,6 @@ +default +dye +stairs +clams +whiteshell? +colormachine? \ No newline at end of file diff --git a/seacobble/init.lua b/seacobble/init.lua new file mode 100644 index 0000000..dee0081 --- /dev/null +++ b/seacobble/init.lua @@ -0,0 +1,139 @@ +-- NODES + + +minetest.register_node("seacobble:seacobble", { + description = "Sea cobblestone", + tiles = {"seacobble_seacobble.png"}, + is_ground_content = true, + groups = {cracky=3, stone=2}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("seacobble:seacobble_cyan", { + description = "Sea cobblestone cyan", + tiles = {"seacobble_seacobble_cyan.png"}, + is_ground_content = true, + groups = {cracky=3, stone=2}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("seacobble:seacobble_magenta", { + description = "Sea cobblestone magenta", + tiles = {"seacobble_seacobble_magenta.png"}, + is_ground_content = true, + groups = {cracky=3, stone=2}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("seacobble:seacobble_lime", { + description = "Sea cobblestone lime", + tiles = {"seacobble_seacobble_lime.png"}, + is_ground_content = true, + groups = {cracky=3, stone=2}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("seacobble:seacobble_aqua", { + description = "Sea cobblestone aqua", + tiles = {"seacobble_seacobble_aqua.png"}, + is_ground_content = true, + groups = {cracky=3, stone=2}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("seacobble:seacobble_skyblue", { + description = "Sea cobblestone skyblue", + tiles = {"seacobble_seacobble_skyblue.png"}, + is_ground_content = true, + groups = {cracky=3, stone=2}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("seacobble:seacobble_redviolet", { + description = "Sea cobblestone redviolet", + tiles = {"seacobble_seacobble_redviolet.png"}, + is_ground_content = true, + groups = {cracky=3, stone=2}, + sounds = default.node_sound_stone_defaults(), +}) + + +-- STAIRS + + +stairs.register_stair_and_slab("seacobble", "seacobble:seacobble", + {cracky=3, stone=2}, + {"seacobble_seacobble.png"}, + "Seacobble stair", + "Seacobble slab", + default.node_sound_stone_defaults()) + +stairs.register_stair_and_slab("seacobble_cyan", "seacobble:seacobble_cyan", + {cracky=3, stone=2}, + {"seacobble_seacobble_cyan.png"}, + "Seacobble stair cyan", + "Seacobble slab cyan", + default.node_sound_stone_defaults()) + +stairs.register_stair_and_slab("seacobble_magenta", "seacobble:seacobble_magenta", + {cracky=3, stone=2}, + {"seacobble_seacobble_magenta.png"}, + "Seacobble stair magenta", + "Seacobble slab magenta", + default.node_sound_stone_defaults()) + +stairs.register_stair_and_slab("seacobble_lime", "seacobble:seacobble_lime", + {cracky=3, stone=2}, + {"seacobble_seacobble_lime.png"}, + "Seacobble stair lime", + "Seacobble slab lime", + default.node_sound_stone_defaults()) + +stairs.register_stair_and_slab("seacobble_aqua", "seacobble:seacobble_aqua", + {cracky=3, stone=2}, + {"seacobble_seacobble_aqua.png"}, + "Seacobble stair aqua", + "Seacobble slab aqua", + default.node_sound_stone_defaults()) + +stairs.register_stair_and_slab("seacobble_skyblue", "seacobble:seacobble_skyblue", + {cracky=3, stone=2}, + {"seacobble_seacobble_skyblue.png"}, + "Seacobble stair skyblue ", + "Seacobble slab skyblue", + default.node_sound_stone_defaults()) + +stairs.register_stair_and_slab("seacobble_redviolet", "seacobble:seacobble_redviolet", + {cracky=3, stone=2}, + {"seacobble_seacobble_redviolet.png"}, + "Seacobble stair redviolet", + "Seacobble slab redviolet", + default.node_sound_stone_defaults()) + + +-- CRAFTING + + +local register_seacobble_craft = function(output,recipe) + minetest.register_craft({ + type = 'shapeless', + output = output, + recipe = recipe, + }) +end + +register_seacobble_craft("seacobble:seacobble", {'clams:crushedwhite', 'default:cobble'}) + +register_seacobble_craft("seacobble:seacobble_cyan", {'seacobble:seacobble', 'dye:cyan'}) +register_seacobble_craft("seacobble:seacobble_magenta", {'seacobble:seacobble', 'dye:magenta'}) +register_seacobble_craft("seacobble:seacobble_lime", {'seacobble:seacobble', 'dye:lime'}) +register_seacobble_craft("seacobble:seacobble_aqua", {'seacobble:seacobble', 'dye:aqua'}) +register_seacobble_craft("seacobble:seacobble_skyblue", {'seacobble:seacobble', 'dye:skyblue'}) +register_seacobble_craft("seacobble:seacobble_redviolet", {'seacobble:seacobble', 'dye:redviolet'}) + +register_seacobble_craft("seacobble:seacobble_cyan", {'clams:crushedwhite', 'default:cobble','dye:cyan'}) +register_seacobble_craft("seacobble:seacobble_magenta", {'clams:crushedwhite', 'default:cobble','dye:magenta'}) +register_seacobble_craft("seacobble:seacobble_lime", {'clams:crushedwhite', 'default:cobble','dye:lime'}) +register_seacobble_craft("seacobble:seacobble_aqua", {'clams:crushedwhite', 'default:cobble','dye:aqua'}) +register_seacobble_craft("seacobble:seacobble_skyblue", {'clams:crushedwhite', 'default:cobble','dye:skyblue'}) +register_seacobble_craft("seacobble:seacobble_redviolet", {'clams:crushedwhite', 'default:cobble','dye:redviolet'}) \ No newline at end of file diff --git a/seacobble/readme.txt b/seacobble/readme.txt new file mode 100644 index 0000000..68ae307 --- /dev/null +++ b/seacobble/readme.txt @@ -0,0 +1,22 @@ +Sounds: +sounds = default.node_sound_stone_defaults() + +Copyright (C) 2010-2012 celeron55, Perttu Ahola + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +http://creativecommons.org/licenses/by-sa/3.0/ + + +Cobble texture is based on: +.png's: +default_cobble.png +Originating from G4JC's Almost MC Texture Pack + + +Code: +minetest/games/minetest_game/mods/default/nodes.lua --> cobble + +Copyright (C) 2011-2012 celeron55, Perttu Ahola +GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. \ No newline at end of file diff --git a/seacobble/textures/seacobble_seacobble.png b/seacobble/textures/seacobble_seacobble.png new file mode 100644 index 0000000000000000000000000000000000000000..a9af184fc9ed830a335187f03002afc55d09744b GIT binary patch literal 1511 zcmZux4NO!=5T0-tF9s=C!%-y-*cUwvMI;nz!(D}P)J3F7wAB^_L@0<0h3ZvMt_F$q z2Z#>gCzdwyYpm%J{+41D8`D~>sT2=#xoiOGNyJj5mJ~v;Zuc-TAf06Q&AvCY-#6b( z-l^D_cb6|)wG053lPwW(^6BPSYA3m$J(nH~pn}-w9R_(6b4$!Ugggm{an2cIh)5|V zgeZ!_0T=)RPyhm;$gD-LI0wc65hw*hK>5EQ4x9l)Knj!qQRGdF(iX!D#yBFQ6bYe< zA`m&Hj1ZJQrJN8Z9YVO=B~`&0XULEuC6p*cVS*t?$|ymiPz422P6;ClDpXLyWrRWm zQRebFe*uj!HXo28KF5^$JcE^79LN%Xv3No-&XF;hNGO#N$T?+|_a^0KXSsE7qhxf?~XI$^@bo1(8(dO;C zBrLGcU|6=s5LWM7beGrPx|ZEN`MB%fPo4_9#%MGi9m)>=Qm50Em6d5Un(E1jHSVro zOixY0g;?!Tlj+8W?<@~@RrFh}9oMfXUhZFU%K1U4m#gYnvS(#wW!J>Z;h{Y##Xd#h zjBdrg{q3;X(iXk;)5C{HuVh{BkGg0%T`O-KdE5EUCXk=^HmhOWc*JDVe-)E?-e@vq z@u|MPzTVz*+S4_$=>-J|-6OfBcKD&Y`((y>Mt`>FKvMDUiZ^t+Ym9mPXgM?x;1cay zo@&eS3RnBocXWhkt>Z@b@Ivnc+1Vde7}UO%w@d9sdz-6jwd$I^RD~VXKFp498CD& zUiIn|+ncPdwgWY>CnM{^>eGXwe1F{+*qGr2KFVLEez)`U^72fko1RT(vpzHwj@4?r zCQ^#W{>k^ROer3joGC9apPfD80_vK5ft&PtQ$fLa-mBnjZn6D2J^fij+{SIKJJuW4 zxZla!veFQhanaHnG(I+#nVGqDr?i(`U9+;X_9P|_4GzX#>brL@$?qZC+mt-Z<_C literal 0 HcmV?d00001 diff --git a/seacobble/textures/seacobble_seacobble_aqua.png b/seacobble/textures/seacobble_seacobble_aqua.png new file mode 100644 index 0000000000000000000000000000000000000000..add73916191c5ca25e7e16ec16ff903c959c3626 GIT binary patch literal 1534 zcmZuv4NR0r5S<_?1W>VRa`@ANep*i{5}z-mB{2$ZVm zsT-7r5NvF(NDvhC7D_2J(VhwdQCe)e8mp8bf>s2jy+gNqm>7P#$?ncpSU5EQ4x9m_KoO7tQRGjP(k8Xn!3k%wJ|eiR+m<~ZOe!-LPYU=3Qa1NBs-z-;N8u+a2ji8K z?$}anO%{}Kq>La{2!g^VXbqC+7`Xu%pO8T)6G%Bh*#im+jxX0XBUCWtlrY&j0x0Vo zKMe%N_eYWhPJtoFZ~=@1Wq?$UEfYYwqyQ3VbhR(Fvj?#IfrP!UThhMjcx#ew8~oD# z<8b3KtHn1Zo_Z9!ycM_p!lv*%za@EdT#V%f+PjC`6Lg-qaL@htkdf)S!#f_Xcl~60 z)MvBm&z{BdOTQ*=&HS)3Zn1N2N=bFEwQlDQmsgRyzVL5~HAQ(Db?0x-b#qJiDLT3{ z9gmbpR+RR<+!yWTYHBy9>F1|J>rX8rzJ7kE`ZvyYEjILEcIWX&2_H4pKC3%dvHaFbe5W#FIFPe|o%RKk*1gu=7k?aW zdh+C-eYaj^xhFekw=Lka;)_F4ANO3HSui{Oy(!W9$n5MGFE6j|^l5*7_4MD&>_i_` zVM`oD^(jPCIgspdvsEQx?zepT^nvrK@5}q@(@VWQ{eBOKEZ60yhB|6`JEpNaPMtqR zT@9#h3)=XsBroQnHP|@ReZA<}3Vp)?t;TTT`fBhuTn?!9EYLO=YBlP%fHjS3!-9U# zGkY4kwtUOgXPgI;2di=(lq6N2)P_1H4YYgL&yVQ5`8awg)!Q-W{&((eyxn zJ%K?whXv;LSj|C&oOyn}x^~9)*^qg!NW0pwu zGfc5+V_~X~%E#PTbgZiBx&6=iNtWoyePuYyBW&xe)BY(_e9S}E ztkrAQRG5+%R*7rK{mc#PIt@V{6%HngdfDMnjXFEJJi~_YgN$TK*Zk}^Xw1A z>DNt7-FC6-#>l75-8IV>Tdw83yL51W?h}__Rd({ldlpMtZJnuEwZiOT_379xKHj0% lS2xuxE4q;om~ncqaPart`0|BY!B*Qelkm-9RiV*2{{i~B<@5jm literal 0 HcmV?d00001 diff --git a/seacobble/textures/seacobble_seacobble_cyan.png b/seacobble/textures/seacobble_seacobble_cyan.png new file mode 100644 index 0000000000000000000000000000000000000000..9efadc5ad2fd01ea9283f3f50a1784fd6a529bfb GIT binary patch literal 1529 zcmZuv4N%lY6n}G&Ab#DTlMFfN=|4Ix$3#(Z%;E%Mkx@K983jBAmE;*2eszkYp-HL8 z<4Z9lP)t!VkX8`C`VcaxORY#(KukSM(s9rX&9*(9aX{Lc-Fk2P97epM97(-2yL;{gBM#@GM zjB#Z!Ce*2@O2GvuPDsd*X-wmilOW{Ch-s*iBoxRv(?~;!OsEKrNv5^u3-KHpzpHpsav_LwmBWI z0*;`M00q>(Y{PWU0J<_37%<&vdxNHg^s~U(#+I>1M>UpR8`t7B z#<}&2tCs9-an}oWrc}l>Y`8xtZQi=7mkoyBK6xdeSIwWPi9N=z_W7r8ru)#v#-R26 z%5TnhfAzo~=65G)RAZf`WaYZlhe_jyW`5v1wo2ld($& zr3Z|wkBHjV_gr;#byn;Py7lXikAtc{6J7J;JRx!A${EwkZ`{Z*SHI_HPu9Dq1ja-x z+;Vu0?OJFnHOljQ@=Zq+#At&!*Rd zgUutNzvpX)sJ zk1sDNNf>PU?qZ-W(*RLNvdzPoyCHBzWZm+}&|9s$y-wt=`@8Ndo9_!rDmFIe+zvkqNvZHpI4IUzfaL_2+!(K~U);PkYxi!oaw zvV5an{Q62_UEw51jI@6`iN5u)x~C4=_05gh*62LFsoPtw-Mf7lGP=p0^Sd8>d}x!m z_fOj)!7l9eZO0m>eV(i@Eik&cxR7QTaB5&m&tK~v*8ZsTIKFD+xgGoBc5mGH@7Ar> z88aYWc>DVL78U7ccXuAvzyE?cbB64!H7}1`wt8ya15^GP|2GHrbTcIDtyb$^&a>X% z9Tk1L?RIv7(X{z;`2Nd}o|GTB)$+$X`QZrzJ{mbQ`QYtG-3x0H!#6 z;p>0v;bRm@F+Jv@$uI0q-h{PHwuZJTc~NCN_*7D6Y(?|E4^GzHTh&sNotv9`J}ay8 hr6oUPJ+M5!I*?5W8ZoV`ztu6wENF6Iv1#6h{{V`c+tC03 literal 0 HcmV?d00001 diff --git a/seacobble/textures/seacobble_seacobble_lime.png b/seacobble/textures/seacobble_seacobble_lime.png new file mode 100644 index 0000000000000000000000000000000000000000..09792a38a849e7789a3c64363dc18d4ffd651912 GIT binary patch literal 1523 zcmZuv4Nw$B6n+DWD4O__9>gfvYDi`}gN|sL5-JNG;t7+eC`cw5FVm#ap)*AZNl|zc zG@4{2hD$w}-CgvVm7O>dz!f6rM9tK$>e#B|Qrc6_C8ZQX5D_AB&KYA8KmZT` z0&oDPv${P=2|@r7AOh#W{x3*^6d(u)0XcA{f9jUj9bO3`i3B2Xj*KZHi6}THZ6iv~ zg*G^s`qWgF6jG2NB;?2$XF>^*gaSEnhKv-UL@qcZh6=gV5sWL&I`XA_3XKcV84!t{ zU}}9H!)h*0WR2flJf(z`B!o`nh&qC#L?Jklwoyv`zc#p(`edpbdnJ@4DNqn6)O<-v zl!6P=b)b@53SA#pQrGRw?h2-r>5QiZd;+PP`xsSI(ZC(>-IRl_%4xTADb6M<5)w&p zB*qb#d`fH3L_5h1DCAQaoP9CZ%}7gz!h=-?3Ys&<>hY~W*Ln&_R@XFGwOpw-ShqXzz?2@AKUJKvwgg6^`w?hOmp)ivzC`H z7_+}9`%>DKmQ@i^5esso#|*g_f57_3KmXP%-^S+(zS?AP+uaM2l9DdwReTyB`ue_0 zvnzJs+_B;Gd+WL*=X+Bq3o9JB(Q;855k?wArVN%OS@jkb9^JzV=Z(RB70MpL- zOD+VOr!BQa)uosGy*)ZQI>*)^jH8XU3I5~W*wU}cP(F7%U9}uM7!{pkYHvNCmbCU% zW2$N4m5G)-7l_IAO4#BVW^p9PI+DE-`nL~@^ZxoBUstoi%gyZRTH`u)ah0LvQgW;m z8IQcH*C!TbeV%sT=+VQaIc(GPlYuquqPn?gDi{*>mCQ4H6%-ZO1fCxErm)97)B5~s zuv*vD_VyFlQkHTv<_p)xXruepp3_Gc7Z=ytN9@}4+ax%Tq3Yi$o8 z@OJFOHf#RfZ|~I>P4UR|uniq#wJyv(6V(5XyNBNv&+^4PW{nt7`=IHkrt5{_#CrRU zNX|a}S^9f_9;?2#;oK1)TM1Tta68w#bb7BZEs6ev2L?YJRO&amEbzj!ecg-~Dw{9Y zP0l*xHZ`XH!;3-Q8-`zQdi0m0!o1}0u|3(#A2enhD;~bEv?1xWwbq;Ga`Ik{u&=nT ZT*6alnBTv(c9(O6`OJurL&0&W{{d9M)@c9$ literal 0 HcmV?d00001 diff --git a/seacobble/textures/seacobble_seacobble_magenta.png b/seacobble/textures/seacobble_seacobble_magenta.png new file mode 100644 index 0000000000000000000000000000000000000000..c83090753c7abf8a297e90d0dad6d1be5e95b4ff GIT binary patch literal 1561 zcmZva4^Y%a6vtnHc47X>Nk9;h`l%QiV2WLt=)oy_pl}E>S|HINqCAtZn@G*SDAkFw zUIHo%e-xA%V6a>jWDFIU%mD*t{IgJoASQxAqn8nGdpP5O^qbk;x4(IBKi~J~>)>Te zM%y~t0>EhE?-wG^ah9dBlKX+QwcY^M5F8k)l~*ya#K0lsO;|q8Ib)1ciim^|MNv2a z1E2s1KmZgOHS8DXz!*>ph(HJ^|L4SkGhh@b0umsKd}&zNaJ*oQQ_2u2A*d*VQjW+7 zq0&a=gfM9k!sRZd3eGsAj3PyXL?H?jjB<($2_*_DR8Ztd7*VK#0tuHM3K2vZi0AwT z8ewcO5Gj4ml=XRrm0B!h$sb-kAsFYBF&Rh@r3d9486%WR8#$NnOM`GOcSQ_SFPPwz zGh~!dlzOS)$QfZ&=7E9}&SZW>aGAFydMHd*W-w0{@HtX8_Zd}6k>CORu*$*E%E{~C zR4h#vlyRhtAXNy0!e6L0NTGwu4aoQl5ri^&i05UFc8Wa>2u89b)^@{YGP3dwa3E$T@PZ+woVE zHIb#};I?ZU!}H9&RoVX}{AqtC?r?dDy`9~Lz6E06`PXfekC`G%?V)5=2EQI$(^>nP zW|CY{#)!j@<`R z@28r-eOx+X8#Sk&z1Z&FTG@KLHAd)U#iDLlHN ztFp&EVa9PM@T}2lwZ6Th;N4VfI9FV7dV1mQEAx6APA`7AF*d8d<6ubn{K@-2b|{Ej z(V{lTcQ*Y!;tz9Q|5qY4H#x}r(CQn#eNP|j!<=1o0Rh%Kwigwh&CAn-g+WHoM-|y* zOHtDr=WP{HQLSnB0(2*lYf?U)P#vP15%XSFO`5--N}tr)k{P#JB21sT&Axkc)AwPe zN#KFpFln#XA*b|^Z$f&Os0+*M%A5as>imx3P((zb&8|h4JRO7D>@Vjfm$~gp(w43{ z)m_#7UB{D!=ei6Pi4(PYM|1Xr{#!?M$D?C!RzG^&>E)Y0Z~jwjr~NC}Cw7J3unaoU LF7qqVMD6?!-3IFO literal 0 HcmV?d00001 diff --git a/seacobble/textures/seacobble_seacobble_redviolet.png b/seacobble/textures/seacobble_seacobble_redviolet.png new file mode 100644 index 0000000000000000000000000000000000000000..dbf84c4a31e243fcaf46e214674640fff9285040 GIT binary patch literal 1482 zcmZux3rv(p5T0_jP;#e42q8!i^jCqP5-Zd`C_<0G;weuJC{3^}R)p0kS_5bWJrpQb z9JCdRHXtBkO7L3NdL?LLRf-f!$#K$E5FbS?LJ9%f64>rxVt90u-JRXc?Dx$#lg*7- z7oxFswgmtU3Dri)-Oe&?tmIm7e5)UT3Llqf`Df+0uBC_$o71qD)02_p(BR8YdDhe8BVCgM4t zhDI2h3`h}QVoH5pz)CI_WQjjhJRun8$e0Wylu8feoH9lbrA;}P?@NPlE>}g&U@w^9 z$QflwkV?KNIOU8mlzC9W31>1tBDl=k5(`scsyea?b&Ip@4sUL3H=X&{qdGA^dvoJk=T1~-2L+mk z4;@ljf1%;7M^wGn63)kX#npaRkt%a`ZV<_1>OOz_WbIcL!oxhnkw2 z_H|!M`1XxDgCS~{b>M2xSAE`z*?srz8@E#p{XaI$J$7?#d-;h5XRqFR)#RcQV0Y`7^mVNWPJL9~}x3cZ3E0Z!ZGW2%ymd-zt|Ml7H z&sENu86WM5E=p+kaR^RwiEEo*qPmxM#@5aC*ex&l&;2nv_vnKF@7U-f-}aUJyO-!w z)P7m1?mvx>zbF5{MgvG|^Ds-yc+}K0 lGV?|LC@Ojzlgg|{*CEb&i5>xNrKmDYl0FE{s%jO#@PS> literal 0 HcmV?d00001 diff --git a/seacobble/textures/seacobble_seacobble_skyblue.png b/seacobble/textures/seacobble_seacobble_skyblue.png new file mode 100644 index 0000000000000000000000000000000000000000..bcd4e70088dd0cb81acfc264c972709ea4230599 GIT binary patch literal 1536 zcmZuv4NTQl6hA)Ez>pCF6Jp}Wf8%2n5KqJv5ClFh2|QmcMiUBV0SJI1v*tZ<4vYb%fCz+u@_#`bI0Ht3A|L^x$e-q=&4(9^aY`8?B?J{kP|6V* zAynFkoDe1rLbyC7Rlyl&lu@KekSIi9f>BP9A)!P;g$jxs2_p(sP$1zlLLq`EGx?l9 zgGLye4TzLJ#gzIyft6e=$P$0PctSAFDPuB`Aj$~JIWk5ll{RuN|Ca{gT%L-U$6heO zDQCzip(y!M!I3kTTVpCD4>5ML_J;m>u z`p9Uk-2(fHb@!b`nCbd;x6T8dH;*hklkJgmszi5D9Sy5X$41ljHW!wgb3?3EVb-Kt zr`H+HNzMP34NTXZ*}7*sUUNA!ae|;`V#+De>)eYy{zfYMAKT^$~bSQz>v0vImT+?^g!t9?7_eHy;fc{vtsc=^)m z0yl$;`}PqZ@%*YSx6IBNb}QZN{5#aqYYMbp)q3i;p`onM-gKqJvEuCdz}TdVLNyu7N%ew`dB{-dp+E`4I)ueSDp@x!W>1>HS8$u_X3?>TMqE-~^* zHB{n!tkh$uqvQDT<9eM^7USdN^Oo1O;bmy(9T+ZtY-95MEWIeV^WB<>9T`od@hdiq zE1%R}P)Aog4&S}2wq1BOvbk>f=Ffjm9qyboXvWJo-!Y^m4DMWSoqyudh+Y?EC@frb zwWr6)DsQ>>!|mCXqo;Kr=EOh#GyDGS+y1Y$g!mk})N(JUJU%Zyp?Kf4W5M~1;B^67 zzk97EmHsD=1?1Ku-*w}~L%%q^cfL{oWl}@9Xl@QFjdH2eUybr`v&;I}ZS6ZrMx*ib kuKM!c=>wG+lamdtmmGq#fBb0jfn}aaL`?X}u=n%-1METNiU0rr literal 0 HcmV?d00001 diff --git a/seacoral/depends.txt b/seacoral/depends.txt new file mode 100644 index 0000000..e1b2c4e --- /dev/null +++ b/seacoral/depends.txt @@ -0,0 +1,4 @@ +default +noairblocks +unifieddyes +colormachine? \ No newline at end of file diff --git a/seacoral/init.lua b/seacoral/init.lua new file mode 100644 index 0000000..2aa6d7d --- /dev/null +++ b/seacoral/init.lua @@ -0,0 +1,650 @@ +-- NODES + + +minetest.register_node("seacoral:coralcyan", { + description = "Cyan Coral", + drawtype = "plantlike", + tiles = {"seacoral_coralcyan.png"}, + inventory_image = "seacoral_coralcyan.png", + wield_image = "seacoral_coralcyan.png", + paramtype = "light", + walkable = false, + climbable = true, + drowning = 1, + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3} + }, + post_effect_color = {a=64, r=100, g=100, b=200}, + groups = {snappy=3, seacoral=1, sea=1,basecolor_cyan=1}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("seacoral:coralmagenta", { + description = "Magenta Coral", + drawtype = "plantlike", + tiles = {"seacoral_coralmagenta.png"}, + inventory_image = "seacoral_coralmagenta.png", + wield_image = "seacoral_coralmagenta.png", + paramtype = "light", + walkable = false, + climbable = true, + drowning = 1, + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + }, + post_effect_color = {a=64, r=100, g=100, b=200}, + groups = {snappy=3, seacoral=1, sea=1,basecolor_magenta=1}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("seacoral:coralaqua", { + description = "Aqua Coral", + drawtype = "plantlike", + tiles = {"seacoral_coralaqua.png"}, + inventory_image = "seacoral_coralaqua.png", + wield_image = "seacoral_coralaqua.png", + paramtype = "light", + walkable = false, + climbable = true, + drowning = 1, + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3} + }, + post_effect_color = {a=64, r=100, g=100, b=200}, + groups = {snappy=3, seacoral=1, sea=1,excolor_aqua=1}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("seacoral:corallime", { + description = "Lime Coral", + drawtype = "plantlike", + tiles = {"seacoral_corallime.png"}, + inventory_image = "seacoral_corallime.png", + wield_image = "seacoral_corallime.png", + paramtype = "light", + walkable = false, + climbable = true, + drowning = 1, + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + }, + post_effect_color = {a=64, r=100, g=100, b=200}, + groups = {snappy=3, seacoral=1, sea=1,excolor_lime=1}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("seacoral:coralskyblue", { + description = "Skyblue Coral", + drawtype = "plantlike", + tiles = {"seacoral_coralskyblue.png"}, + inventory_image = "seacoral_coralskyblue.png", + wield_image = "seacoral_coralskyblue.png", + paramtype = "light", + walkable = false, + climbable = true, + drowning = 1, + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + }, + post_effect_color = {a=64, r=100, g=100, b=200}, + groups = {snappy=3, seacoral=1, sea=1,excolor_skyblue=1}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("seacoral:coralredviolet", { + description = "Redviolet Coral", + drawtype = "plantlike", + tiles = {"seacoral_coralredviolet.png"}, + inventory_image = "seacoral_coralredviolet.png", + wield_image = "seacoral_coralredviolet.png", + paramtype = "light", + walkable = false, + climbable = true, + drowning = 1, + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + }, + post_effect_color = {a=64, r=100, g=100, b=200}, + groups = {snappy=3, seacoral=1, sea=1,excolor_redviolet=1}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("seacoral:seacoralsandcyan", { + description = "Sea coral sand cyan", + tiles = {"default_sand.png"}, + is_ground_content = true, + groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, + drop = 'default:sand', + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("seacoral:seacoraldirtcyan", { + description = "Sea coral dirt cyan", + tiles = {"default_dirt.png"}, + is_ground_content = true, + groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("seacoral:seacoralsandmagenta", { + description = "Sea coral sand magenta", + tiles = {"default_sand.png"}, + is_ground_content = true, + groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, + drop = 'default:sand', + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("seacoral:seacoraldirtmagenta", { + description = "Sea coral dirt magenta", + tiles = {"default_dirt.png"}, + is_ground_content = true, + groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("seacoral:seacoralsandaqua", { + description = "Sea coral sand aqua", + tiles = {"default_sand.png"}, + is_ground_content = true, + groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, + drop = 'default:sand', + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("seacoral:seacoraldirtaqua", { + description = "Sea coral dirt aqua", + tiles = {"default_dirt.png"}, + is_ground_content = true, + groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("seacoral:seacoralsandlime", { + description = "Sea coral sand lime", + tiles = {"default_sand.png"}, + is_ground_content = true, + groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, + drop = 'default:sand', + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("seacoral:seacoraldirtlime", { + description = "Sea coral dirt lime", + tiles = {"default_dirt.png"}, + is_ground_content = true, + groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("seacoral:seacoralsandskyblue", { + description = "Sea coral sand skyblue", + tiles = {"default_sand.png"}, + is_ground_content = true, + groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, + drop = 'default:sand', + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("seacoral:seacoraldirtskyblue", { + description = "Sea coral dirt skyblue", + tiles = {"default_dirt.png"}, + is_ground_content = true, + groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("seacoral:seacoralsandredviolet", { + description = "Sea coral sand redviolet", + tiles = {"default_sand.png"}, + is_ground_content = true, + groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, + drop = 'default:sand', + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("seacoral:seacoraldirtredviolet", { + description = "Sea coral dirt redviolet", + tiles = {"default_dirt.png"}, + is_ground_content = true, + groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults(), +}) + + +-- CRAFTING + + +if( minetest.get_modpath( "colormachine") == nil ) then + register_seacoral_craft = function(output,recipe) + minetest.register_craft({ + type = 'shapeless', + output = output, + recipe = recipe, + }) + end + +register_seacoral_craft('dye:cyan 4', {'seacoral:coralcyan'}) +register_seacoral_craft('dye:magenta 4', {'seacoral:coralmagenta'}) +register_seacoral_craft('dye:lime 4', {'seacoral:corallime'}) +register_seacoral_craft('dye:aqua 4', {'seacoral:coralaqua'}) +register_seacoral_craft('dye:skyblue 4', {'seacoral:coralskyblue'}) +register_seacoral_craft('dye:redviolet 4', {'seacoral:coralredviolet'}) +end + +-- SEACORAL SAND AND DIRT GENERATION + + +minetest.register_ore({ + ore_type = "scatter", + ore = "seacoral:seacoralsandcyan", + wherein = "default:sand", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -4, + height_min = -8, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seacoral:seacoraldirtcyan", + wherein = "default:dirt", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -4, + height_min = -8, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seacoral:seacoralsandmagenta", + wherein = "default:sand", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -4, + height_min = -8, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seacoral:seacoraldirtmagenta", + wherein = "default:dirt", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -4, + height_min = -8, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seacoral:seacoralsandaqua", + wherein = "default:sand", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -4, + height_min = -8, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seacoral:seacoraldirtaqua", + wherein = "default:dirt", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -4, + height_min = -8, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seacoral:seacoralsandlime", + wherein = "default:sand", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -4, + height_min = -8, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seacoral:seacoraldirtlime", + wherein = "default:dirt", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -4, + height_min = -8, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seacoral:seacoralsandskyblue", + wherein = "default:sand", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -4, + height_min = -8, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seacoral:seacoraldirtskyblue", + wherein = "default:dirt", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -4, + height_min = -8, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seacoral:seacoralsandredviolet", + wherein = "default:sand", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -4, + height_min = -8, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seacoral:seacoraldirtredviolet", + wherein = "default:dirt", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -4, + height_min = -8, +}) + +local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, height_min, height_max) + if maxp.y < height_min or minp.y > height_max then + return + end + local y_min = math.max(minp.y, height_min) + local y_max = math.min(maxp.y, height_max) + if chunk_size >= y_max - y_min + 1 then + return + end + local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1) + local pr = PseudoRandom(seed) + local num_chunks = math.floor(chunks_per_volume * volume) + local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk) + for i=1,num_chunks do + local y0 = pr:next(y_min, y_max-chunk_size+1) + if y0 >= height_min and y0 <= height_max then + local x0 = pr:next(minp.x, maxp.x-chunk_size+1) + local z0 = pr:next(minp.z, maxp.z-chunk_size+1) + local p0 = {x=x0, y=y0, z=z0} + for x1=0,chunk_size-1 do + for y1=0,chunk_size-1 do + for z1=0,chunk_size-1 do + if pr:next(1,inverse_chance) == 1 then + local x2 = x0+x1 + local y2 = y0+y1 + local z2 = z0+z1 + local p2 = {x=x2, y=y2, z=z2} + if minetest.get_node(p2).name == wherein then + minetest.set_node(p2, {name=name}) + end + end + end + end + end + end + end +end + + +-- ABM'S + + +minetest.register_abm({ +nodenames = {"seacoral:seacoraldirtcyan"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seacoral:coralcyan"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seacoral:seacoralsandcyan"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seacoral:coralcyan"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seacoral:seacoraldirtmagenta"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seacoral:coralmagenta"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seacoral:seacoralsandmagenta"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seacoral:coralmagenta"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seacoral:seacoraldirtaqua"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seacoral:coralaqua"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seacoral:seacoralsandaqua"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seacoral:coralaqua"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seacoral:seacoraldirtlime"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seacoral:corallime"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seacoral:seacoralsandlime"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seacoral:corallime"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seacoral:seacoraldirtskyblue"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seacoral:coralskyblue"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seacoral:seacoralsandskyblue"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seacoral:coralskyblue"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seacoral:seacoraldirtredviolet"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seacoral:coralredviolet"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seacoral:seacoralsandredviolet"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seacoral:coralredviolet"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"group:seacoral"}, +interval = 3, +chance = 1, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + local yyp = {x = pos.x, y = pos.y + 2, z = pos.z} + if ((minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") and + (minetest.get_node(yyp).name == "default:water_source" or + minetest.get_node(yyp).name == "noairblocks:water_sourcex")) then + local objs = minetest.env:get_objects_inside_radius(pos, 2) + for k, obj in pairs(objs) do + obj:set_hp(obj:get_hp()+ 1) + end + else + return + end +end +}) + + +-- OPTIONAL DEPENDENCY + + +if( minetest.get_modpath( "colormachine") ~= nil ) then + colormachine.basic_dye_sources = { "flowers:rose", "flowers:tulip", "flowers:dandelion_yellow", "seacoral:corallime", "default:cactus", "seacoral:coralaqua", "seacoral:coralcyan", "seacoral:coralskyblue", "flowers:geranium", "flowers:viola", "seacoral:coralmagenta", "seacoral:coralredviolet", "default:stone", "", "", "", "default:coal_lump" }; + else + return +end + + +-- ALIASES + + +minetest.register_alias("seadye:cyan","dye:cyan") +minetest.register_alias("seadye:magenta","dye:magenta") +minetest.register_alias("seadye:lime","dye:lime") +minetest.register_alias("seadye:aqua","dye:aqua") +minetest.register_alias("seadye:skyblue","dye:skyblue") +minetest.register_alias("seadye:redviolet","dye:redviolet") \ No newline at end of file diff --git a/seacoral/readme.txt b/seacoral/readme.txt new file mode 100644 index 0000000..aa9f961 --- /dev/null +++ b/seacoral/readme.txt @@ -0,0 +1,21 @@ +Sounds: +sounds = default.node_sound_dirt_defaults(), + +Mito551 (sounds) (CC BY-SA): + + +.png's: +default_sand.png +VanessaE (WTFPL) + +default_dirt.png +Cisoun's WTFPL texture pack + + +Code: +minetest/games/minetest_game/mods/default/mapgen.lua --> ore generation + +Copyright (C) 2011-2012 celeron55, Perttu Ahola +GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. \ No newline at end of file diff --git a/seacoral/textures/seacoral_coralaqua.png b/seacoral/textures/seacoral_coralaqua.png new file mode 100644 index 0000000000000000000000000000000000000000..92dae19af876623c886e12504afc22cde8b40bd0 GIT binary patch literal 1135 zcmZuweQ3^66h3T5Z-{Bu2*n+uNmf2r!qyxg^R+gKn0&-KK57yPlZ5;+Ck)dzF_sw3 zI>Z_!4bwK6$nmk6m6?w}l!Us@`zr0->(;&ZoL}eM=Q+~YOi1X^ zi5FHTA!Kyq*fS}ipkqg#P%XltM;FRh?Sh6PodJpYAExQ^7uL80kqtjmJnu!7MJy4C zEP_=@1ewhyReRqIRJGIj2=-pQvI+?!lksJ*q=Ld$2YE#ms}H?e-NEc|FjJ;8o(cF5 z(wh4h)u{*mpkk}!C(=J+r5$z;5kZ6|-Wbwp`WIbST6kcv{ zM%W7}qgdw<$m$HA288hb7)ekDA+T@{qQC;gHn!q{)hK`gg;v9u?$H3<#$f7<%*l11 z7hlQ}S?!hh{&aNWq02{} zpHFV?U!H%pVOL904aetK_04&cJz`Pe$cLYQjcpw_bN-Z$qKb{hLsoD2@;Ld_+3izG zdY0Yae{=qaK*y{V@przw%DQ#DvE7xVRV=HojoUPD`O1?giqezgYb&SM<~(Yvjjm`) zX`R?Ts_{Y9_VvYEvp+8AJLBi2xy4V?OJmlwH%_{L?r8h&vdf>o-;iJJ345R^pvC^= Qw#uM}?vKV&BydH?_b literal 0 HcmV?d00001 diff --git a/seacoral/textures/seacoral_coralcyan.png b/seacoral/textures/seacoral_coralcyan.png new file mode 100644 index 0000000000000000000000000000000000000000..e06c03b55d17539bf68361ea052f1eb96e2c8b76 GIT binary patch literal 1083 zcmZvaOGuSb5XYyqP{Dk(35&`&xG+jAL6HKjYc?demu;d<6Rfnc!c7!`m5Xv!QxIWb zPg@ja2$OD#o>(f8kp+`hn-)D#5|ZTRY3>cg>+OSc&YX`k=l7rgoYR|vrO8PdNdSjPVCO%0EP*)}g4^;H0Iu&J!P#I`;%d}Q&q^WjfbMTD7&2oarg3LpRsKmZ8fEGy=h zDu@6x5CI~%{~c0L0byVQLO^FX#iYgJy@)ak5hIdwo>_?mku4@tM6m!-Z8oW1MTLcl z2?-rK@xsa^gp7_HdnP3mbnM6zs-1A?(M9rAr_oSkDv+2bndZ+wtZ508jUQ{C_oB)o zmWV`lf>lWbnJp$&yWav-wb}U?^1D5^g2Gk@c|{eg54~F5;p}LbIWv`K z22LWax&Npp#lR7KjB^m}oNcF;5^l0*QDQ-2hXhWic?~9Xirqk>(=w376DyMSfWc98 zx#2g$UPu|mI)^}3XY^}8i0+Sx1Z5BcJMKXgSb*4`t$1KH31Fbe_bPj4yam57P+VTn z^W*I5+PK`*b*;S>k8eDxJr;i8!w!I%czmz+V@)IHi$){-$=*wnfA`;LLT zSq*Qq_5~Z|O)}m5^Ca_I%c?!&ahXpOj~?#t%CFn0!IV(d(&sZ44p%LB*>|P(Qr3iEaGG7gL~OQ#NCn+NF=Inkpu5$z zX3~*aHhTeC#qy=ib)YnnaBi(MWk#)|v-m@+xn=T4rHrR@ubTsIzwLRR^ZfRl=kq<^ z^K37P6irRLD-8gqVsXJTTSM^?oMiLNAzukF5lWUUFSM;s44+uM?R@-GRS{ukB0@yx zoB{{{0}ucLILk`wr49ISWN;L zDDizidqMypC5i=k%OC#s#a)LY6Z1kRn;M5}!omJ`9}m18uAUdm4?PiV&rNAtTN<5J z@mX$4d&|`c<@4_;%rBl3Iv0*qgOmELv_Iq|~^Md(b z7B@i7%dOi=kB)qlI`CWF9n(*gEouF_c1CgAKdBq?>X(*JX|B1p4zeyDUw!ud_nz%L z-*xKMK-+R3Ewc4OwnQ=L1`HdR*t+PDAymT+m+=67~KePr(^2S06C z^w6q9#}>!xUay;cZ|{>S)mz%`|J@doivM8?XX?|ttqRx-+ek2zLLhG*o eyS{38*GNj~?hl9NO{>}%ZwwYj3J&I1Z2J%23p!B% literal 0 HcmV?d00001 diff --git a/seacoral/textures/seacoral_coralmagenta.png b/seacoral/textures/seacoral_coralmagenta.png new file mode 100644 index 0000000000000000000000000000000000000000..ff3ce01e0432a0ad0ca8f90b4c5927f0fd1c9e5f GIT binary patch literal 1172 zcmZvad1%yE5XUD+QxmX6|FBdcQTm7)|FCL`2WYGAHakY+s)-niX1(wnBT5maK?$Ug z^bjU3DioTuBKb>c3S&eJp7pG;ikfs-6%#ie1T_kR2d}d$NH*&a-h15!V)(@3ZRg{ks)`6R6A>ah=M+Ey z7=Qo}z*$zxFI5l$W*`DYaPK>$paR0c1cZRjZc0f@#d{HD79vI@=RC6#2_joeq=;ex zqS|ayy^0D86B80TbmE1TNeCGoIrdCSDCpRcCsaG((4$M_s}7){NPi$Pzhjy|Z?UE& zPBwn3dESdEi&!EO*$Gx95oETQRPBBXP}OGVQ`CF$$|@v`Os1E;k_rl29pn{NtUmN= zb;q-lVdhMKo*DQKY0Z60H7N#8;8UD~Wan(#zm#~BJ&O_x5<4VtI>2i%q5bRz5*?6% zES^}AtOpE^lFN<15%xmLDAqXyvO1Gr1443tOe83S5ZG}KqQC;g_H4xit4RO@CBF8; z^h|)X`52g4HsxaNqC-_DBe~Tdw!ZnGB=-HOxho3xE}6I>W6Swi#llI&v!ex}ksb9% zCj7O!Bsa2Q^uw1GEnj5x6`cF!(b?U{x=a4M6+OD`aa(#;aAj!vlg}DHqP(8{Zx)Z5 zT6QVBVn#b&-rm|V`pSyZQ18aB&tGv>OMT9`e}maIhtj&gI(=ghY@RizGIM!-XU~YV z#`3C9Z?C%l)5n_^)WmvgBlp7HYchAmrVWGUb%%eS;AZ4q>1w%pBADGbFKbz}VOx9V zu1HaHVR-23@(0nU>5q5c33@ zVDF}#!?sorIZ%A<%=o`A%p8AdS>L0EJ3aUE)0bXnQXU}@mstVqrO7Z)t# literal 0 HcmV?d00001 diff --git a/seacoral/textures/seacoral_coralredviolet.png b/seacoral/textures/seacoral_coralredviolet.png new file mode 100644 index 0000000000000000000000000000000000000000..a0783aef6ea22c10c2c232c32771980d527608ed GIT binary patch literal 1238 zcmZvaeMsI_6vxj~+mqJuYcsCL5J*Wm4|U&^bd`FJ^;PU>!=^D6@vhjLK@>&hre0k550i_n!OXp8NTp z@45R+io>bNS;+v9iaSE3wx&l%Qqbm{IbQ{EHI&?0R%lxv8$Pyp+xh6Hsv^S7M1+XW zIRy{^1|R?gaF&(uOBF;$Wl2r^qts&>BxsA{wG3F^IgWfc-eCezDaNd<+i4)TgB zRv&t`x}(|gFmq-x&kVeRwB}x>niK=a@CnXAymPi)TuQXbo<)fTi5(I+UE(#E&_#9w zi7v@N7Ei25)&mAd@#RL}2zw!A6zd!US)K8(0U^FWCK8lE2<*5AQD6aLd$!_%)g*v{ zV&9n!S1khwv|#9tvfD`qpLHfBiq`to88*66!c0Stoav1kz&tk;w8!ejM@^J1k_-kY`RB~P5LC%;i zydkZ){e!ZDnZxJqz0?s7Jo)p-Q(p&q=5IPZ{(iywK;!e<>s}lBXr^H(?dh9OmQ@VA zp84tD;WYRC=aVgw;>S0<)BGZz>z<$9y0xZt;F;umnijgN;QG;&FUzOe>p$6jBUP6} z=XpN;XXMmZ7qYTzr)#c#dqw1yl3>NI+}_$3UOB&O`e^6Gg{;GOeRHHHIB~Y=r$_ME z$^PMu*X-Hz-Ts-?r~b{XKQwsw&C;W{SLdDCHgn+8{IBg}4U^69bp#sQ<|4i8{}}7} gY+G0NeZNh$F2Er-)NuTz{*}=#VPSEoXM1Jif5#+9UH||9 literal 0 HcmV?d00001 diff --git a/seacoral/textures/seacoral_coralskyblue.png b/seacoral/textures/seacoral_coralskyblue.png new file mode 100644 index 0000000000000000000000000000000000000000..043013a86863e41a62b5cf6d9f5a1c8ff530f71a GIT binary patch literal 1095 zcmZvaeQ3^66vxj-_QJGRG;Gvu){^#EdC4f+aAIq-msX^Sr;P5}gf0SEvAoMpxQ zQUwuU1|mQN_rF65Dj*C@KnUpUrkJ!?ycbbsA!0;w&NC~KAhN|oiYOK!s?8?VtEjLr zF(IKtCtg^YgpkpZW6z|7f{q<|LbVePJ-SG~>MRvhich^IlY0 z#1fInPOvJ8AhX4!YWG`!sx~_xquz^GRv}?zGQI4TR8ZLJAg`!m^`Td*JDeR2GiPS< z%)n`+HTNIYq!>7Yk8uv7owM!CQo>F4EJ`d$?2y3eEU&?Y&afLubXEqkcw$Ae9xynH zE;sx}*b6D6SmzMP>WqF32+{p9k)RAhV8=a(0t*n^vlS1lCIJi-`9=!j=K{pVW69R) z4X?n#QWl4`<-{`V>chA zomf;@RB$Te?D`eIwhxrm{LHUdzM`+UFyU@p@#vGTR-DkkWMXan(#j+K!@>HmfkvOxADo|=-SjyxJ!y?=zcCp)zNJ2p z^CKPh6&03ORfHy*H|_0xn|Gm>FV!xnIeoU_a7Nkn7jcePR-f-4>N>goLC@7wUoN(A z_wb?4z|)KMoyn;qM;DJyhO#!dpSeZ}b?(8-{rMwnLI;DbEor%fkN&hZjXhuAH2!IE XZr|lqH#>&jhi$>q@{- glass + +Copyright (C) 2011-2012 celeron55, Perttu Ahola +GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. \ No newline at end of file diff --git a/seaglass/textures/seaglass_seaglass.png b/seaglass/textures/seaglass_seaglass.png new file mode 100644 index 0000000000000000000000000000000000000000..a2689259352b8f41c2fa2e5877e8e7db3e4f7de2 GIT binary patch literal 1100 zcmZvaTS%2b5Xa|~rC6ao^w5pcR=P+;RNzBl#xb2p5tHblhwdaah*m@wLwkwr0uET_ ziwIpU?I9Z_R49oEEsKbt$wCFeA}G`@RBm&QARbR2?C$Kx&i?-MpFNkCn>8zbUOWKI z!t7wat%;!#H{Iq%Lw+~FRLI*}kZD^V9zMKy+xgI^sv^S7M1+XWIRy{^1|R?gaF!MI zOBFO-$qcPKj&X3k9H znStX-Ywj4;q!>7ik8%zoowM!4QbJAkEJ`d$?2y3eB(K4QPOuwDbW#Sgcw$Ae9xynH zEI0H<*b6D6SmzMP>Wq912$B6Uk)RAhV8=a(0t*n^vlS1lCIJi-{<>F8i2(@2Vlbm1 zt+RC7GwRrwxHsohaA6DFp4(h^Z*}G^NUAO`KQ%L{ytkGX7FTDre%{bDQ1sw^;OsSk zryZAIadJ%A(~&K2YT`Clq#w(9(!V>4XD>~zh`Ul)5!e6n`?93ABlYt2`o7{FZws0> zv{sCi>^ZS2xuC%xceTH>gKO{q{Ig(Q-=o8gC4a9Dc5SU}Oi2!&Ti?Crb?kx5%P-!z z@v5yOt*NxKD5L$wjGJqRQ}aKro72(rc<9cOuFk42P2Uct2K>t5T?^iQ!0ip^3tM`g zUpSp#bF%)>!<8{*gQN2kjy9~=Kl=Aq#+!F1`)aC3_H>?aPERP?pR#0H-H>Dr1eUk& dJg|9o@1m-^N%cS0cLhS;U}kQxanr6d{{SCR2rK{q literal 0 HcmV?d00001 diff --git a/seaglass/textures/seaglass_seaglass_black.png b/seaglass/textures/seaglass_seaglass_black.png new file mode 100644 index 0000000000000000000000000000000000000000..473fc58802c315d841d811173b27bc0bfc5ac112 GIT binary patch literal 1394 zcmZuve@qor6g~naLrFj@Mp+h@CI&2;E0_cUkK~ddd-CSqt2aXgB0J3#{4sPhCl)`Z zc9oYht$A?so4z=kA>Qedjx; zIzMl9Xh>8D0EF^vgHhjMz8(CeK3^PDg#dw&zosBdyJ~u?=}T!(`IeNDh=dS`$T??> zNdN*600_VVn9lNhk`jnO2tWkRf&E{Q1W7;w1Ojs4O#kGU<`1ukq!5HCI7h~m5E79% z7urUYoRc;~CbfF$Q+a6t-%hZnee0jpRGst|MpSqFXMf zI6iC}umtAYV$#ym8Xct@>rQpX6+gc^H7#xQ-=?mvHxs^EV09MOr5mzi@BVmtMMLXL z{jY!0_1v9_2~&4_W^C2Ar@{-Z>yH}0_2e{-)Va^Cz1?^z`Ez4UVPuENl$g6XHpZ9( zAIk%FTWi^|kzH#owyI)tShyjmWyxuL@BEIXSHp`IN*Y)h+TZzSRlRY4*lT@ZMPGX> z2{XH})^1yMEH%Z zp%bM=b(_qu>^+OGdcEF&YyJJTD|4go-M@d_Gm(>1o#L3h;5}98P3+5G@`TknP_fii z+4t!mZg=1i)u%YFM4s7keQYW%WZYG|Ew83|=RZzQcSO-;%ez+R_?|1m5+L%nMN8xBN9kEH}Idsz!$ ztdV!=x8#G-iSKmAxjmi*8NrKI-P)C4GF=}nk7%Q<9KRpP?V|KH$glr&(NOn!M^_hcJ-hR literal 0 HcmV?d00001 diff --git a/seaglass/textures/seaglass_seaglass_blue.png b/seaglass/textures/seaglass_seaglass_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..4d1aa09922ddef8576ee8974dbbf72758804e71d GIT binary patch literal 1488 zcmZuvc}&zt6rSaB7g(Vj%Yvv&`=e_#MGJz65>~RNJ1xgTuy|D{keXHoh#*SIa>$Aj zLCjzfsG&grkW$(%(2PXOO$!Yc5uuU}O+hh`mdJu=71~Z`F){Dgf7fH}~HMD6D;TiR^tV%%e}E+FE!<2*sEngds$N zz%Zr=5ePB25uy+hZa_%+$*D3*D8U3Hj39yn6bK`jVnh(cP(T7^7*PZX6tI98f|N%H zkU?Q7pVC!mkdWno2;*0nT%VV)oQnyWt5dtyhHlmdO&kaZ^ zKLxgiJtK@_N)W*iBhD8yiYS2u^EwctkP==WWR%x!%3cY^m06C*1$+g`oBI-#Q{li% z@N1LYyayNvXl1#k8NrMo ziXq{hg8=b5S55;2EBnJq0*V1afQK_cD8K|D%*U26fGMW{IMC9%v(?N30JDowy)VkY z&vURZ$^C#+{@vu6)SGpqp)rXi>6&Z3jS3fuq(EeD;d5+9amNK0v18c|m34_m>``wY zpV-s=Thi5AUf28YDE@RUZMd?;`nk`<$I85Y*PhcBG{!-Loah%U8%ncHRa zJThh8Ox6~hVYx2e5TjkF^e=zy;^M&HIls5IU+QRG+>q|ksFPmxo$`zdADfliHaqSN zmpoG1%5xp#W^K!Gmc@e&n&N`)=#~r=Iyz4k}u7GxQ!58%#h{jQ$N zsuqv7_NeN{s!Xl+Xu@1r@h0h%E+^EEsJ?RcJ1>`Ijtq=#n$1&HZjTs#eb@XtZ(H$4=M!HR`|iu1xCv%-6WxXgxSt<~);- z^!z(@)3#c-A-|Ew4mx*(e`mDkFMhR-Su%Nrx^6}>s;t-(qI$G3BQ+028x~zZy=Ce8 z$$KY1AKTmYZ`t>uTlP#?)^;6`zi10Q85sPts6r>Y=UI2!7?fme{mB1X*Aq!bw*E%u z#LbRQ&of1R=RyM#L^i4O>G`bEFrHIAr9Co!J#hSnh&caqAF!&CPD6Y7aPPMr<^hSZ zgK@i?n*UOsOD<3Bm&Y8duFIk86QzaK6}j#YUmTtQ!{UCams{M&g>|w?rzYL)!upL@ zY!>oDvSMnyYl>3p_2-=@#179Q6v~E{L-$Tw>g-P4AM8G{FzY)|^@TdiZQ#vVch3m_ ydg)__G|3y|^UY5+`A$JYZ|Q%vj?_;p9%i2)@182X8@}5#pKyPe`kUa`v;P5!WV{6c literal 0 HcmV?d00001 diff --git a/seaglass/textures/seaglass_seaglass_red.png b/seaglass/textures/seaglass_seaglass_red.png new file mode 100644 index 0000000000000000000000000000000000000000..42df7d78ec21edc7dd722348d7a51a92447bea97 GIT binary patch literal 1452 zcmZuv4@}fm9Df`n><)@c6Og~c4?>g>FoZBb{@G(UAcvAh4KTQfJrg7eqU11%J6Vpe z0qKazNw^_PRQ95V1oH$OAX%uhx4Huw8?weq&~v7*cepv=dfR*N`+fU<-{WMK#DFQ%*AdHdpe?bf}iYOo;h+u>z@sm}WH9V)30Z>8!V#{KR| zYx*XPQQ?;g&u=}nFS@m5=PU7b-CsO7Tq|#BeUK9{Pv=Mbj!d9WkJtLOCSL9hFw{isPTz$tD%v#t3WfWgM^$bEnSYo{ zOW!gkY}o8Lep5F!Q5k7|({45-s!T82E%#U7TIe$b+ec&-jaBp>$uXswrtj*`4(^zD zoA@UBl<$|y`0Os#!icsZHMJx17iWAW&ZeR7$&=>By*F0n95G!PN^+UW^$mVE=XcQ7 zxfpNE*y~jppZWQy9K1EJpVrhUAF5r;%FElR_I5;3Jljb-fnUA2eBg?m*a-Lsw+GR4yAhl{Z@Azq+_B*HmBT zrnJlac8lj)_i_*Wb#aP=^6wpsed^=o$``T&Pj?4SYTBKCnAtGuQR&`f>l3Xn&FZ}E za=$n4M004t`=cjsrd+H!7TSH!`Bur>XU4U&!_8A?(}vcM_Kf)*9`p)HUfqzP%%9v; z*#C~!Zrs*;^Ynz_*zt~0cy&I+j%A4bHiq*BEpuYXXBtp40a{tn1w4m)|-Vq9SPx zQM21F*ze7bGY@!seEqkg{-}TNh-|$&qd3{i%k=n@j~}glkP`cNSZV&rwWBECH8!*^ za7(Q5p9GuY10IBX84 zw+l98MOc?wg%A;t?JP3);=r~nH0O#*?H1wzQIJ=>-ne>Z>zPX%PX`t=E2W4C5dlC- z$wDY0NC*@HgpejH=!sb^K;iUgrR5FpJ@L21G8S}7({hy;LAY9dBd z0Ay@L22jQTU~?L(niVTjgoJ<~K`O0?2^9i?L`j;E5fn(0s1eviNYEf>@|owMfl{*p zk?20A(dQnl;SxYL_`%|7t(ZwElL&|=f|yY$ATl;GoBxdg%;uCjh`m;ti4`gWLc^Cd zBP&p3>OjrF%G3v%P2GX)xnM?_*?304`;ex&_fQQL13UvCq@0+moN;HD5@@m}#YhT} zB%qKyPitX_&XQZ8;&~ZBN+U6#=>Z9ebIT3P2x)~(piJjLps922G=P}fA45_w35CLh zYoS<>5=drjl@`Q?f-pccYd9`+fe;~naHbbKzQzx7H~JD|-t2QMDqLJ({q2XYoXfh; zR+rmyt@viBeL+*BBP#VywLNM_=3SZFdvbT}_^p(EeS2MF=?T4s>msb~5#O$p-tWRz z!qGUmyghmIV~`^k#dft0jD%l|o>(^i#H)pkJ8bd!uiLV(efn-v>7%{ZhlYN-bi3}U zt&uUOJZrL&o-MCPUzX#2Ppy-zRfNH|e?@KVE}TSpI1E$LYEOMhzDc{#YL z+!mjlT~w1~jgE%qw>ow=td4K`_5C#G=-IUcmNa(nNi1@C{!EkZfmEm5Wn1EZxWe^P zPN*YxYy6-`3Ysc!_ns@XR37|hWb)Kk9$#ut`$)!xfg53 z_78g#LP}dLwcX|C%0i>q!TY-_BL`(m)XQBrdakbWQ2mwSF&M~ej*47veZF(-?;~}6 zqt)KcXKu%4T0+h@9IJ|1J28Cr^R{Zt;#YiSKf0?j{@L!Uyr=_Sccb8o&3zwyP_qn^p}K+A}-1?6gK7t}ofL^SyNURMv?H lGrmm>f37+6y5o-?9X9zzR(ECX>7N7B0P8n6yE2}6<3Hxtcy#~( literal 0 HcmV?d00001 diff --git a/seaglass/textures/seaglass_seaglass_yellow.png b/seaglass/textures/seaglass_seaglass_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..8c1030994199f8d5cf3f3c8617d8d1a4db0bc75a GIT binary patch literal 1459 zcmZuv2~3nn6du;1fD*RbVq0;=rN2cB0%D{dT#L)H6S<+yrdC~!MUFnm3PmMVjDesQ zEIS0dfJF{tjTS|Pv8Ihepe+&5(vsSA8jna)735GXks{MsObkaSnVI({@6GqU@4ds( zkztMwOB@hFj##IO6}Q~F?dFTq^(jw4Xda3Vj}H|tpW1xt;=<$B#TcWM5<&m~V=PG$ zLx>_o5CViSLXyau^TZgU6cK^|5XMOQzaWMfMU)@{2r$Bu_-RhsTzF0?BZLAFj6sq( zAq;?GOoR=4nqKtvG6fKp6|uz@l0zc4Uk;*|It z_MCD?7zIi&0l}AW28?1#L><5xW>nONITLkTvuA<{Wv1f^0bfCi=DtJ~R0Qx8{2b-b zOyz_-y%cMcIiU;)#XuwsNMf_JMuO-xxe-t{D+3eCfiMiB2Lwqlvs~+p5Ke&+OhxA~ z0#WD8X~1Y^e*{Uy2%>;QI7gHrLJ<%#wv;2n1O+63rq<2(Wv?M5%fuRW{QAxnWu58D zus2cv@xkiqD^A#~NNj9LE(`Tj$%i@D*sZy(`ReV#=6xqBt1I>&_Z*#PYx`m1V#hq6 z*2KBo0J zG8Pq{*7y01CWpzq!cL=&8-tWaEre`2_=U|SU6t>%^pj7^{kK(A#h!h=zLu@Fv~CQn zdmdoSI=wB`*3AZWxuib1$H2Q}ZV z%eio`d$>p6P~4^-hDEw3qiH|wn6xQ8w(whJUhZ<4N0ddet7F)+#RUboy?1{oKcsre zgxhdN%_cAXs*Z*_Z+q8wFYYUP;dda;QZ5fv$o7

Wa`+nQ9Xn3_&Y1mFDKn?P`5e zX6u;{r#i>1{3J!p$-4su9!iD7uGP9*s`@agC9UAvRl}XI0pqEPZ@iRRZBtFhkemmn z6hpE0$J8v^vU)0)BV#8!cFNz5hsZ$wzM#RQ&7sNtXL)PJuT!KDy|Zd$XxA zapdTRcg_qxUJ$uxD68Gr_t{>KNaX;I~sC(tE zE6)dP+>^fb-d_(ROw~Srx9sh>|7GtA#kkA4D81LA>sw1sS=M(gO|fZH`Hlp+d~Hnh S9hywEjvx+=)SL@39Q+U8oT<71 literal 0 HcmV?d00001 diff --git a/seagravel/depends.txt b/seagravel/depends.txt new file mode 100644 index 0000000..257d73b --- /dev/null +++ b/seagravel/depends.txt @@ -0,0 +1,6 @@ +default +dye +stairs +clams +whiteshell? +colormachine? \ No newline at end of file diff --git a/seagravel/init.lua b/seagravel/init.lua new file mode 100644 index 0000000..53472c0 --- /dev/null +++ b/seagravel/init.lua @@ -0,0 +1,181 @@ +-- NODES + + +minetest.register_node("seagravel:seagravel", { + description = "Sea gravel", + tiles = {"seagravel_seagravel.png"}, + is_ground_content = true, + groups = {crumbly=2, falling_node=1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.5}, + dug = {name="default_gravel_footstep", gain=1.0}, + }), +}) + +minetest.register_node("seagravel:seagravel_cyan", { + description = "Sea gravel cyan", + tiles = {"seagravel_seagravel_cyan.png"}, + is_ground_content = true, + groups = {crumbly=2, falling_node=1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.5}, + dug = {name="default_gravel_footstep", gain=1.0}, + }), +}) + +minetest.register_node("seagravel:seagravel_magenta", { + description = "Sea gravel magenta", + tiles = {"seagravel_seagravel_magenta.png"}, + is_ground_content = true, + groups = {crumbly=2, falling_node=1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.5}, + dug = {name="default_gravel_footstep", gain=1.0}, + }), +}) + +minetest.register_node("seagravel:seagravel_lime", { + description = "Sea gravel lime", + tiles = {"seagravel_seagravel_lime.png"}, + is_ground_content = true, + groups = {crumbly=2, falling_node=1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.5}, + dug = {name="default_gravel_footstep", gain=1.0}, + }), +}) + +minetest.register_node("seagravel:seagravel_aqua", { + description = "Sea gravel aqua", + tiles = {"seagravel_seagravel_aqua.png"}, + is_ground_content = true, + groups = {crumbly=2, falling_node=1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.5}, + dug = {name="default_gravel_footstep", gain=1.0}, + }), +}) + +minetest.register_node("seagravel:seagravel_skyblue", { + description = "Sea gravel skyblue", + tiles = {"seagravel_seagravel_skyblue.png"}, + is_ground_content = true, + groups = {crumbly=2, falling_node=1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.5}, + dug = {name="default_gravel_footstep", gain=1.0}, + }), +}) + +minetest.register_node("seagravel:seagravel_redviolet", { + description = "Sea gravel redviolet", + tiles = {"seagravel_seagravel_redviolet.png"}, + is_ground_content = true, + groups = {crumbly=2, falling_node=1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.5}, + dug = {name="default_gravel_footstep", gain=1.0}, + }), +}) + + +-- STAIRS + + +stairs.register_stair_and_slab("seagravel", "seagravel:seagravel", + {crumbly=2, falling_node=1}, + {"seagravel_seagravel.png"}, + "Seagravel stair", + "Seagravel slab", + default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.5}, + dug = {name="default_gravel_footstep", gain=1.0}, + })) + +stairs.register_stair_and_slab("seagravel_cyan", "seagravel:seagravel_cyan", + {crumbly=2, falling_node=1}, + {"seagravel_seagravel_cyan.png"}, + "Seagravel stair cyan", + "Seagravel slab cyan", + default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.5}, + dug = {name="default_gravel_footstep", gain=1.0}, + })) + +stairs.register_stair_and_slab("seagravel_magenta", "seagravel:seagravel_magenta", + {crumbly=2, falling_node=1}, + {"seagravel_seagravel_magenta.png"}, + "Seagravel stair magenta", + "Seagravel slab magenta", + default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.5}, + dug = {name="default_gravel_footstep", gain=1.0}, + })) + +stairs.register_stair_and_slab("seagravel_lime", "seagravel:seagravel_lime", + {cracky=3, stone=2}, + {"seagravel_seagravel_lime.png"}, + "Seagravel stair lime", + "Seagravel slab lime", + default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.5}, + dug = {name="default_gravel_footstep", gain=1.0}, + })) + +stairs.register_stair_and_slab("seagravel_aqua", "seagravel:seagravel_aqua", + {crumbly=2, falling_node=1}, + {"seagravel_seagravel_aqua.png"}, + "Seagravel stair aqua", + "Seagravel slab aqua", + default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.5}, + dug = {name="default_gravel_footstep", gain=1.0}, + })) + +stairs.register_stair_and_slab("seagravel_skyblue", "seagravel:seagravel_skyblue", + {crumbly=2, falling_node=1}, + {"seagravel_seagravel_skyblue.png"}, + "Seagravel stair skyblue ", + "Seagravel slab skyblue", + default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.5}, + dug = {name="default_gravel_footstep", gain=1.0}, + })) + +stairs.register_stair_and_slab("seagravel_redviolet", "seagravel:seagravel_redviolet", + {crumbly=2, falling_node=1}, + {"seagravel_seagravel_redviolet.png"}, + "Seagravel stair redviolet", + "Seagravel slab redviolet", + default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.5}, + dug = {name="default_gravel_footstep", gain=1.0}, + })) + + +-- CRAFTING + + +local register_seagravel_craft = function(output,recipe) + minetest.register_craft({ + type = 'shapeless', + output = output, + recipe = recipe, + }) +end + +register_seagravel_craft("seagravel:seagravel", {'clams:crushedwhite', 'default:gravel'}) + +register_seagravel_craft("seagravel:seagravel_cyan", {'seagravel:seagravel', 'dye:cyan'}) +register_seagravel_craft("seagravel:seagravel_magenta", {'seagravel:seagravel', 'dye:magenta'}) +register_seagravel_craft("seagravel:seagravel_lime", {'seagravel:seagravel', 'dye:lime'}) +register_seagravel_craft("seagravel:seagravel_aqua", {'seagravel:seagravel', 'dye:aqua'}) +register_seagravel_craft("seagravel:seagravel_skyblue", {'seagravel:seagravel', 'dye:skyblue'}) +register_seagravel_craft("seagravel:seagravel_redviolet", {'seagravel:seagravel', 'dye:redviolet'}) + +register_seagravel_craft("seagravel:seagravel_cyan", {'clams:crushedwhite', 'default:gravel','dye:cyan'}) +register_seagravel_craft("seagravel:seagravel_magenta", {'clams:crushedwhite', 'default:gravel','dye:magenta'}) +register_seagravel_craft("seagravel:seagravel_lime", {'clams:crushedwhite', 'default:gravel','dye:lime'}) +register_seagravel_craft("seagravel:seagravel_aqua", {'clams:crushedwhite', 'default:gravel','dye:aqua'}) +register_seagravel_craft("seagravel:seagravel_skyblue", {'clams:crushedwhite', 'default:gravel','dye:skyblue'}) +register_seagravel_craft("seagravel:seagravel_redviolet", {'clams:crushedwhite', 'default:gravel','dye:redviolet'}) \ No newline at end of file diff --git a/seagravel/readme.txt b/seagravel/readme.txt new file mode 100644 index 0000000..e1fa67b --- /dev/null +++ b/seagravel/readme.txt @@ -0,0 +1,16 @@ +Sounds: +sounds = default.node_sound_dirt_defaults() + +Copyright (C) 2010-2012 celeron55, Perttu Ahola + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +http://creativecommons.org/licenses/by-sa/3.0/ + + +Code: +minetest/games/minetest_game/mods/default/nodes.lua --> gravel + +Copyright (C) 2011-2012 celeron55, Perttu Ahola +GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. \ No newline at end of file diff --git a/seagravel/textures/seagravel_seagravel.png b/seagravel/textures/seagravel_seagravel.png new file mode 100644 index 0000000000000000000000000000000000000000..20c9e2a9562710e9a08194e1cc098674c1013cec GIT binary patch literal 1425 zcmZux4@{L+6h9JfuZOT#88D~Fvrhzu1PhTiCVvF&B0L!5fe;CfC?T%32@GEh9Euc( z$q}REQ3Hn<1uSGY(TK`TS}b0|lCdM0V~rG)sNBGa+kLn>knVQxJ?Gmw_xC%$bN0QT zVA}1hU#ABEXZA`|qPh+Ct#eT4shR`908c?eY*Msx<>Ho$msFm#FCr2`AR_0SF{Wu6 z0SEvD-~bFjQ&}rM5rGhZ2%H0Bp#5JE0SOQY$bmCpntEwP+DdpS1R)B}kuk1m5|KC; zjG?kQC&q*_7$bEms*(f=6v&Y?&NQY8DUgs0&X8$bLy4R?6HG&mOU_6|XiPF~F`wuO zG$zDSK#uqrQ|a>vR&lW-EBuw>Nhyd>2$je5R!Bfn6hHwjE}O4|BY;CJi;76{wwW>Tz};~7BQM79Ssib^ zoO|7KwcBXA^=s4fH+{YJk(--cT=Zpoe(=v9{7e7SCjCK|a{uzCOWh&vhSR}2eT3sn z*0cuPe)HYiJ@q9E<5Et4BQK@=R*Do}A zTmAYgo4V4r0vMyr<}Ie?ME9)z&QK5A++4S(?wBFP>vZ6n7uM>{pPPq*w%0p1cioyU zEiSfNt>LDgqLv8;Q@9;W1Qk(s<#|M*_@4o^6mTZJy4Ou6iHh!4B|HR1pi66JEtImJz&9@80 zcdlFdJJ09jnZDc`v}Whp=wYH)KTAsUugl2DXlZF_FjZ9VYfG*j%nX=)`0#Gm?EL(E zcIu71;Hs!iXJX0|TXWJH6F#y{ptjYus_@DNo#Xm~GEen)>ged$=;1LXZJ7bT7hY*? z9UC1T5e@yny`I|sOYXtAp@D&ckdto(*H1aU*Q5jY>RmeHClhq9urVPsS!e8BHRV+C TOvzA4n|;7ov?;1RGPCSI4DF%h literal 0 HcmV?d00001 diff --git a/seagravel/textures/seagravel_seagravel_aqua.png b/seagravel/textures/seagravel_seagravel_aqua.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c69e2b12d683bdb8c7b7f522d0bbe226945b45 GIT binary patch literal 1288 zcmZuxeM}Wp6hA_!@iCcXZ4g;`D|0BZ3A4!*6jp}?0zNWeQ~t`XOv*h*U#wBy?!(Oiue;rQ&%Hb6{(k3o&hEk7 zoTs9~W5WR;3ZKr%cYAbT&JJ;_w`Ow+Kq%xsYKJ2CCVX5GmKhN_APGZPUa8eGZh` z>$n7v9e%KQ)`}{NxIiRw9;`|t$n0!Vb?-X^Ro!ZA5PK_DS%rj=$?;{Yq=LdO53-6X zEajq0d4;0gF3K#?tr5(^R=BrrNnYj8v- z$qghrEdp6Au_Cz|Fc_MeZlFil3Mr$w${~=;b80srOs$V23CbV@&fS72umG`ZTd~0E zD1ZZ+7(I(Z?gE(6jTz~lg+1BaTGpQ%S-Eng>A~eOWl`Zfk7h)yij48@dw<>Lt26Jp z&~tIq6Rj_l7G_+l>?Yy9XARHFOW0{Bk^U z>*}A@|Kh1V)cj^gbyClgEdL|@ne*DdODj*j`eSk9uOY2Xe%ZbE@lyp0Pk1lOxyFv{ zl+-P~hw}G?ch=;8wP>u+Lre3z;$Q9vefKe6>T=)Rc?16EDtEV+cYPimw(Nn~v)Yo* zj10ZvJJ~#VZU2s2zYYI9wyCqmpVAkd-LfFR_>Yg=^1q?Bp*QM+`N{!V?`r< z(SsVl&A4pmj7POpx^{?&H@!7JxjoqW*9eZ*l?EaF~ z)msXZ>l;q5Ia=uZGi%S=hv(c#O)QB^IP&Pq6}}32=#mFtJYHH6)jNM^xY$$Q_{|%0 zwpBM@=`I~#H>;r{=3Gx&`&r-KBB847x5|E~{P$qi$Io7m^qg%wf5|)k((!_<-*2wj z5PC6TMOZ>=?|lEzSmGxgOI|y$bLoBPp|)KkYj?eOxVHb{*S|ec8#~lDnpU~~O2pv3 jwyvuAop8?=pQ?%oGZPUa z8eMhg@uU;2@M*t!pbCsjD`$bCM6U!Y{(L-J7LhGiR7zJprOckATi%( zI)CnAot7}!@ng-iR#aKUB_feK!Kx&J%q}KXcfSiz)y>AnsJCL3RY(|_oL;s{Dk$vg zAgie2>O-rp?r?TA%sDfj=M21$bj`g-by6HSf{$?yqMdWw@uh^DY+008kk}xB(FtCI z6FSarAkhgK$YO~V$@PH2P;|NBH^Np(8O3!Dfn1%@uK^*tKTaelgAlmm7DRysh~2Xl z3#?88I8fy4&xlV1hznuCGd@p$;n^=Le#xH}7_@!cY68JPe(H-&e?C}zU}=8o!Q(s6 zJ+(FE*>$g8>ic!oVC~z>HdpO`Jk7KefAVfl^}est6DxnbJ!!4^zHw_tPeoPL{5!+5 zSC%yI_K)uTW>LweyIntQ{`~wkd*fDZa(_SEy!qy>Q}6wC5=sO912ZPWzsD-ijApH# zym#48bGk>f+EaZi%Y!q$m7T9N_q;rFV@h_f9BDiK&tn09&iv=!7>m1-oZvg{540Q{ zh~Lt9^=!rUkB3Dr=R8{N-vTmOV7MBvMUs74y`FFF;BKH@aAPVE*{1gTANyPTehV=u=wX{ zDGyG0>$^pDLrG`){Pop`Qu)F|^RhnkJnRiMWalSdyw(j}Non0V^E{cy+A~so1E;1B zo=d;7r(@0DwhvD?D#&~kD3?-`}n+dt^3ot@a#uz%$EYa=_hth&)Lw=8tzx#mMBrX*B$ezbmUFmJ=< VAR%7H5eruobS_y}{U5jBVIcqj literal 0 HcmV?d00001 diff --git a/seagravel/textures/seagravel_seagravel_lime.png b/seagravel/textures/seagravel_seagravel_lime.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa0132f68be273beca4584fc4d8980f26a2dd8c GIT binary patch literal 1232 zcmZva4@}in6vq#en#yCeo-(7-T1*7?t5;I$LqJ*AXVx5)*+40lOvsP4D#3dq;JHe_Xg3K-^Rd>G&P}R-Grm44Ll~qU>nVep>N-8Mq z>L9DA;_5@IuI@y3D$F@Endc0=hIGxnN_A2kIEhbl4pNqsjmScwLeZID1#8V;}%4L1&H0V z6$`9R0yt3e8(BK-I)IFw=zCyY!AS7rz8AFG8y!7z`^5YET6eTw$+)#({+o51LS21r zks0-0*4Ac!vwwfaqU?^6=R@yI^zJ@WyD-1KW%2y5H|xS8Xn`JOPh(y5Hu!k}&kl-L#=2COU4;j8? zcnDO6YZB0O0}|U6C7@S-)C(SrS^~R^g+fN6PI+6tblmR4%>l2w-FwfuJLi5r=W|YZ zQsQQx#mg20fDdkoP1d)sdoP-=&x(_Kq5-@hDIqmZyJ~u?=}T!(xtEku2*J!mgouV= zNB{xA00e*lhR*VMk`jafW*`DYF#az{f)pSan1B$_&_8*kdBQ6pB(or5L^2G;EQtgn zYnwR&#M9YkW`floC?15IPZwbOcLDLLjrYNlN{{Hc(1^8p?yc5=ycZBp8`A zUsjT&K*72WQWB-m^`VlwZg=)bkQ+$IIT^@85lbZ90|tX;m+PJpR)Qp>(49jdUFYm+K$zVhO%f!7 zAkg6ogaj5qtjAU;V5up92AW=dtLK{l<~cF;_0;G4wk2OYE?@Jn%{U)b7*d={;RRnt zR8>4zkYAgUQ{i{=dUH>($rQML=egb!r5W*qrQYwGE%gDXBGU>>Qr<26@NE3Bf8Xg_ z!*_Z*&wR9ZXh+a*t@~QroGSp{OW$8+3$r_-Hmq`GnHOe;Mfb0Vv*mGJU%B$vgdhC% zUIti??2Qb1w)&QBUz4l3*96V32q?Cua7=mvbgXOp+W+C{QP|=OPh~caj2s^SIR5_j zv@bfR{(6vqV5z?&@VgtgUp=~;gDYztL!UMb!lL$T#bZ~Ub=%X-ekPylT*zxV(Gyj_ z-0b&x+l}^yB>|4=*1r>cH)j{wt1Qk#rVq;IU0GezWLt3b&WnQyKN?%#*nMb!YSh~= zZ>wAx{g%D{%rWbczCSi)7Y(%5Eo@kl)0x{C5){*!8zyX}f3|;i`Jd`tG3l1><2!G9 zWkv?2EDg1eA4~c<>0tke<^0`%r^9QSsz*m1$rHclU4Q4^OLn{Wz~Rfz6~*46)-ZE= z9qmxI{OFLiW0RMD*>yWG*UNWfSI4UHZrAt^mmXz2`uD-u!>)}jS<5a=cCERV^~?)5 zLldX=tc_Z^^M}O#px- zEXdtzYalq{qiwFgawr2J28uQp=h@bWh7T>?c0Ty2s)#T%5h0>;P5}gf0SEvAoMlD) zQUwuU1|mQN_rF65Dj*C@KnUpUriipiycbbsA!0;w&NC~KAhN|oiYOK!s?8?VtEjLr zF(IKtCtg^YgpkpZW6z|7f{q<|LbVePJ-Sf7>I52!j0Y0)Kc@LJhBYlgvhgF$^IlY0 z#1fInPOvJ8AhX4!YWG`!sx~_xq27yERv}?zGQI4TR8ZLJAg`!m^`Td*JD42~GiS#0 z%)oz0Ywj4;q!>7ak8lpcowM!uQi4tPEJ`d$?2y3e1h2t_jI{Dk2;u!Pk)RAhV8=a(0t*n^vlS1lCIJi-`nuDiCjmsoV{T4y zYWHq_Nv~HXZrC$@YLQz~n!Z0a>F4#qm0z-uByVZ|g~^zZG4VHzVic zaM{um6@^`iPpjUScek{ED5?D2S9`B?-m`{|*feZ<*vg~7%JzM49C-PtU{%KFYsF;; z`_^1N5Qw|Dt$)RcZ`+%-@JT`Y)ttw%hmUDoNA;BEx6eNp-rUtU(z^3(#qv1~lQ;M8 ff7e-i@l4E643;-1>^NQ06f_6(w&XrsUsm%Mp=ka* literal 0 HcmV?d00001 diff --git a/seagravel/textures/seagravel_seagravel_skyblue.png b/seagravel/textures/seagravel_seagravel_skyblue.png new file mode 100644 index 0000000000000000000000000000000000000000..f989547a55a430efa84099d3b73365388aa517d8 GIT binary patch literal 1146 zcmZvaduY#Z6vvNkjh3NU&3FEAd8Sdsu!!1z8g}M3BIG*DZF5}0^dlp*ZDQ4M$t9DJOD^ZDwAjS75RuyBe7{Qj?(0*}^PK0?bDr1xyw9_vVA8ncq(Bk? zBx7FgR9m}*M~66@tM)9-0*Hr#3Dd^d)<=eqEZ%lL{HdylFf$P$qH|6G1b_hu00Eq3 z#r#qQ5nu))Km_-vLkcP&3`{@>=3cQN`**uU2@Ec(-q>N&nLm;a&`ZXX#_s2wnG6;bk_aF)^Ky1%eJg}MsFi_;X-#;z^pxrRc z{cBpr{pmdA?;C?UZu9SxuNCGE>XBHOTAnZ=ZtTs1q#@-CpKUuZ?`g1XVo}}x*X;v2 zd$%l$&-t&YBC+ea!$UtOS7w#9ysN%k^du$iLF%I`D=u7oJFCZxqcdOi9d^69rldT( z{)r+1Ne306Hd7w{YUAs>+n@-IR zROJUobuOM2y0kXu)Vg41W2d~6+c)L*tSu~g7}Q&(%{diQnjUVvGx0#^$LC{l~xUcFnjxAiW_(Z#G|iUfr!K>;Ht; l`__C|yzuPt%aezHm_MTI)9L)hBQnBH;+RRfXGbsC`V)Sk9n1g# literal 0 HcmV?d00001 diff --git a/sealamps/depends.txt b/sealamps/depends.txt new file mode 100644 index 0000000..9636281 --- /dev/null +++ b/sealamps/depends.txt @@ -0,0 +1,3 @@ +default +bucket +noairblocks \ No newline at end of file diff --git a/sealamps/init.lua b/sealamps/init.lua new file mode 100644 index 0000000..684738d --- /dev/null +++ b/sealamps/init.lua @@ -0,0 +1,74 @@ +-- NODES + +minetest.register_node("sealamps:torch", { + description = "Sea torch", + drawtype = "torchlike", + tiles = { + {name="sealamps_torch_on_floor_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}}, + {name="sealamps_torch_on_ceiling_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}}, + {name="sealamps_torch_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}} + }, + inventory_image = "sealamps_torch_on_floor.png", + wield_image = "sealamps_torch_on_floor.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + light_source = LIGHT_MAX-1, + selection_box = { + type = "wallmounted", + wall_top = {-0.1, 0.5-0.6, -0.1, 0.1, 0.5, 0.1}, + wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1}, + wall_side = {-0.5, -0.3, -0.1, -0.5+0.3, 0.3, 0.1}, + }, + groups = {choppy=2,dig_immediate=3,flammable=1,attached_node=1,hot=2,sea=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("sealamps:lantern", { + description = "Sea lantern", + drawtype = "torchlike", + tiles = { + {name="sealamps_lantern_on_floor.png"}, + {name="sealamps_lantern_on_ceiling.png"}, + {name="sealamps_lantern.png"} + }, + inventory_image = "sealamps_lantern_on_floor.png", + wield_image = "sealamps_lantern_on_floor.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + light_source = LIGHT_MAX-1, + selection_box = { + type = "wallmounted", + wall_top = {-0.1, 0.5-0.6, -0.1, 0.1, 0.5, 0.1}, + wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1}, + wall_side = {-0.5, -0.3, -0.1, -0.5+0.3, 0.3, 0.1}, + }, + groups = {choppy=2,dig_immediate=3,attached_node=1,hot=2,sea=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults(), +}) + + +-- CRAFTING + + +minetest.register_craft({ + output = 'sealamps:torch 8', + recipe = { + {'bucket:bucket_lava'}, + {'default:coal_lump'}, + {'default:stick'} + }, + replacements = { {'bucket:bucket_lava', 'bucket:bucket_empty'}, }, +}) + +minetest.register_craft({ + output = 'sealamps:lantern 4', + recipe = { + {'default:steel_ingot', 'default:bronze_ingot', 'default:glass'}, + }, +}) \ No newline at end of file diff --git a/sealamps/readme.txt b/sealamps/readme.txt new file mode 100644 index 0000000..df1a634 --- /dev/null +++ b/sealamps/readme.txt @@ -0,0 +1,27 @@ +Copyright (C) 2010-2012 celeron55, Perttu Ahola + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +http://creativecommons.org/licenses/by-sa/3.0/ + + +Sealamps: almost completely based on the torch code from minetest/games/minetest_game/mods/default/nodes.lua + + +Sounds: +sounds = default.node_sound_defaults() + + +.png's: +Sealamps torch .png's are (based (only the colors are slightly adjusted) on) VanessaE's animated torches (WTFPL): +- default_torch_animated.png +- default_torch_on_ceiling_animated.png +- default_torch_on_floor_animated.png +- default_torch_on_floor.png + +Code: +minetest/games/minetest_game/mods/default/nodes.lua --> torch + +Copyright (C) 2011-2012 celeron55, Perttu Ahola +GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. \ No newline at end of file diff --git a/sealamps/textures/sealamps_lantern.png b/sealamps/textures/sealamps_lantern.png new file mode 100644 index 0000000000000000000000000000000000000000..da71ac40ae02d715d211a67d4ff88ca64b4dc3ba GIT binary patch literal 991 zcmZvaO=wd=5XT2oN{rMGTE&los7n#ii&_z^kc3nn46#UB5N)VbEeLZ_Jb7vkQnjFr z2(<`$78Pl6E+R_7gNXDLN*Smp5fn?YUOdP+?-fdt=Y!pyeeCS-KmXa=eWjCane7<> zXv0&5v%YSOM!MDKoy&F+AO(HJa<6YK9u_a=JBvP56%l48B18-!D1ZPk00AIC@T|ly zRS*GYAOb`P|2w3h0>Z!qgn+?sN~9(6CZfzj#E2AvF)NWEvd2V|iH&o0$eR9Kjp zkT75n6ILc6WDFG8n3Pa3a3CX8KM~L{#QCaCG!&@^67wq4{aL}fmWb^9q;1NygoGbx})qym^)L?a|2hA z-rN&r-iU z++E?qjoS6g(|ccSnLd^~SAFyL`K7zn<%OXGzmFH&J0D|vwrBsHiI3~xSI?EX7ailn z#cu=fQ#wYeD46a?6Pl2{mLdD^ak~q*kX038Ba?#Y7ZE zAyEiLMS(-qC4vqTXn08&h%N<2d$0m6!fF01$gbOi_ujn6%=>-J8)|RcUzJEE0H6w6 zTMqkP9nE;m*G)gI2Vgn0AM8l`(F)TFoB7G2p{gRn%tVBUAp`{w00tlc1PESLcBKj; zzzjry2;qN83MwEBOh5=2{H3z8a(EL_W+7rk3c;9_ND$d$B1IGr5Y<S`95vpedGz^7$)g@>sQVdAUi;@8DQh_W+tVrGihCroqqd&qX zq>SR7Lm<~#`Wp~R`{N`*8HB*o4Mc$ji2d7&0jpC02P%w-t;<$;@B~|$J9fR#Uu#Od zZLdyGOg%i*I(hj4C5%MIZWKHRKXKt#zMQ5Dc@T4}_Fn8-*2tp+QvEiVdYLvSA*~vOp*XI&~Ap5Zs7}@f0Ok zhYpJ$1vQsWR);_#D%ha8B=kXa*ubzl#5DgEWY_J%dvD%j=KVhArIQ_PRh3&S0iX&` zBszVsj^>(}uiF;w0zf$=Po-M@X!&XR&HQB1P*o9OW+Fnw5P|{-00R&J0tBxrxl#oY zUMAr8DFh_u6-@VM8P>T($c|rXo|&k!h!-M} zXRs=XAhXA$>hF7is=fv*VQ*r}DkO|d&X-L|1%+J)nWBp8LsQosRTqP~Glh6=;0mNS zcNx{GIB*`m#5pK-&X0vsq9z-Q5(^RsBnZ07YjC0kb_0p7sz4SaRwVBML!e^0(H~(G zQbzI4A&~1V{tXDl{c)0@3_{@P2BN?M#Qtr?fYm901Leo--DMRX%wVD=)jao<>(@R% zTHV@vH=dfAO=bHIR@}N$*IZt9eJYXL^00rX;`qQunY!Fr^R}hB_F20u%>5Z_8jP0@ zzFC^gJm{^@OlLp!A81cs+jsWd?B?9$t8cY?Z|uMQ^-=oXz~lAF_Y;+8KDU32-Q50U z&!z6ViQN6~hj$Ibi=m#Tv9_O?hLhueYqB4%j*iZsPHq_4#J}ftUC*Ik3-59}<6WZz hUoP%gTbsbZg{;(qYtvQ*QmRV^}&&dgw*7o5`C<) zDO1!sc4xL#K3Yg==*v|I6%yq$AMdkE=XA*KInTZS`<(yp{(k@8|K232^;f>hA5rw*2_Vk1ssi@neHhN(jLiBZMG?9LG@r2mlxW z1ONnpW2h;=C#^+(iGTKdY%x9F+m7Jh&YbNm?A_V z#4JXLLP%HuA!Rd@%2PrKCKzD^5#%68c!DWL1VIcr#9ggAvcbv z^c^-x$V5Vf@mo&j&l_5%WsI5ePc@I{38k12280N)3`{8^1Y*o$L@7I;1&~rUbNm$b zJmD#(1Q84|VtO%85hajdRtMrKq=eN6dCKY@Lr*4S&P?QE2EL_a&3(hlq%h)f`YFzV z$aAf`5qQSXZl$|*ajb#n2(t_`@LYHi*AF@2Np{UB~z;yk8 z;zOJ6UYijCMc$fGmH9F8SEer+6rUXk$ayLM9Z9-6D_@_u?r} ztu1(U&jkSD6hK4tU9Ia^OG~GvdbSK-miq_EWWZ)_%D^&OmLb+ZvphlCqbJf0)2-0I z(cAb%7uIk~s{Os>@|KvT zf=l1N^0vYH68=cv_XzRc&hp5@kb_)aic1X_JHWcIw zrGq_IdHYRjz7L}0&S3mfuU6&iCq<7tjFi4o5a>Nh$jQCdeYN|Pf0&VqNHM#*@!#fz zp{9oeNyJK}*QY5$2pa3m-BMIC-1jc8+FBzk$hxvmzO1t#yih-O#8jFa>Hc>>xOCpA zwcCaAjFC=Z@qVFi=56`8!=+YHX=x`P_umYS`lw`k!g>F)RZ?mXj?JM8f*7vy&+ zWgQx-U(wr_s8cRV{>I;=rs39_bDF>Oj1JkC>FX%9YL+OL#4UEMElOU$rcyDjUqI%Y ze!3wMYivHX?x2aU@yEjRdZx`qJ3o=;?p4{V5-rN-`#tl~u~U(G-FDu-8@UkIeeFuJ z<-7WnbW%CTXU^>-F`Q#|*-+9fM;rUW$kQKoSl%Zdl`*Oo2Q_Rgvb-0cIQ{&Uwn$AN z>EB^y-ez*hO;>$Paie3GN#b>tvVrm==Zm-b?F=6_5($qBpOK-u6|=i9ZLGh8l50{bqf}f{^L}&x9@VfbCh?YmXX^Be~Zj zySr8`=(Xl*Qj|9?(GE(la9FpJck0rV7C8K5AabGoYILp zPJ^IT9LB9vaYn`&a5@?uQzUV-^LaihOsl~MEfHiDZ&yqV$S(Qc{qCRN?>^t(?{}w3 zh>vrypI{FFaDcO768Y)`fC$));#PfPPdor4K*F4)SiWTg9~)R0-!a>uloCQP#t0z@ zp&$qp00IC8009625O~zEUz7qu0LB0z03i_m&xry`0KotwfFOVZKWSLla6BV~VoVUi z5F$Zf7*m7@gqYh1Q3we)Af$ZeQW+(bV1f}w5J3S7gb_?JA_!tAAOSOsD1rnESU?Ox z$~^?gpfC_m={qz?$Y3DC_$`yy=M9!?v5`4{c<~q`lwv}7AVi3JU`i1o5Myp5O8NQR zfRyrCV8hfi!YHN$5ezZndNHGj5=b!512GCI;rT&EdEU0@p)g*V!8~5Tw@BXHH&iZ# zg9q@#DhGyEj&BF2Vrw$Pgd$8J!U9Ao~a0P#GB-UbMU_J@lE6a#_)cV~c5fC)gDUt7Werd$Hxpn-AO@4b=yEy!R@ zR8roprw8UPlgxM7cCVsLotg- zH7;#AIC|akdgrFx>)faFNysa3Lw;F3!_J{cG8z(URxVb{pDBFAPgZ3tide7ObE`Qi{xMj1W)zo6lW?gB`W#Y)*9>++PZ}0)} z)L8k(l@g6qv+3URO&>SPzD_UG3-?7g&0th!lf!~COPVpiAs`}YNtrJAdfl|-=-h8y zo=2*ePAcq}zRM@lBR(bo=T<9=#PeSJRiBo8`XK5f^Wm$fQ}kC}O;ZLc@%pF=e+*?Y`){n%SBn4 zOu-!$t}z!@8w1*^7Rl{TSJ@r3H26iPO_aK2B>b}d*yIQLhVF)$N^|dIQ|RT;mo0r$ zwOxvGi==d>W0gf(zJ7-XN2`PbLx1N${uVk*2H7CE~Qr4d_=cya6SVyDz85=gt>+!3t)X5)7q}u&{mohTyWV`jM#n^2Y_q}V)_TX9H?$y%AmE@jXV@ca=hq6H1BZ9HOI?EjICFPR~L_+XP=p=DgY5-=9H2VDG`W-h>22U<$jrw zDgh)y%#{9j$jFow1R-JK6gTD4@_1J@Kt;eTDLG&w%8ZCbj9DXKwwObzo0>u)5Ef3H z)D;F%VQ`WJhnTQ(LJ}9YIFZ;nRrAdnXslWb6kweh{;Xj`OGXZU-aL0TgK8wQNSuI~ zs4@_-n8p1OuvyH>bLw5)U@8iRgkHFbDJ!B5abwe{kKLl~EV~{S&eZb4z;$Faca0iS z0$j!CoTGZ@Vq05E)?|m8Kv|GjC|QHo6hdq4CQ)n1V5kd>C3*l#QeSTNM&K$2*619Q zM4k1ofvLVfA(9NFLUG(lji4lmXRA)IkU#;dev1d2nj^T&U8nm`EG$*p3pYDjiysaw zboYH8ntm|3``gx&U-yh2nSK4U*tBo--}dLrouhC5UcXT}K7Z-(t&V}^#WwD~I?+DV zys32l_x-7nfwwPLe$3se{5f`L^2?`F6?<`euxDoL>Rwj^7_2OaxHo?=Z`ENV}w#n2oHn^aSu!>A_QX0ZA2+QpBs=; zK8tLGdPW$IbG3-}tzoBN8&rEu^d zenjQK@XGP+&{XtIW|&Zf2}D?g2#EBJS_3Y0NVx$b^o2=i-87{HWE030+p8YdYV^S7`V%4IRi z+g-W!i8n&5>sXTiH}mRHu0nRBQ0AIsamJ=!Q)W1^*eup?yJd#dVqB%!wAnMy8`(Il z6YS1v6|OtA%=#!HGj~zIk?@9+gs%L8gn@t%lBEu}iM9)^%?+6YOML^g zMQwz`S30_K^XRB(fj;^V+G@M-mgA{brX3X>P)*bklUxSthng6(RC76=lcjj3ftJPQ>otWa#d? z@#R0MH9pN(1g~9+UJ_Pu&(7jp^fX;+tL%%2fIPqFDi@u^{lVO30hnm*Qtp;5aBTJn zEw4Nn?X4_PT}nSX&PsSc{;}}56g+j(8SSoBx!IL3xw>@2+L{Ad-%Sq^e$`6G+P{6# z=%UIqZB3r?baJ+vfx6HTY+hOqJib<&-Kp7dqSS5 zHJcw6`7U^7Vg}{;ks05|fvO59WUju^mo>H9;*UJPL6wiCy@I;N=f2bKA{Xztg({s& z?s$B@)YJ6ifw1B|#wCs81DkrBr|h-Ml5}-iX``#_CL1q0TA!nn1m7vx_x$AAsP?Z5 zPkC6!j25f}ufF#FM$KOrwrwgtp_HWU!TW~&1 z^sNwYJzCRY^<0&+FHRfU*5Kc&NoZSfXnAS(_3ruKc5d@3b210rF;dS*&6c)@V|}Do z_9j-{ve~XC>+W{=P0jZfx+B*wc;=^!N-}w<$EQy^zA*HkQiq~yRejla zRz_1a&4;CGVMpce%bA9j9TzKe6o=+dAJbm{(~Cay2Kn5S^Th|8uE(w_^)MU= zdlqK7Y(k)~r8N6V!;hxRn|`>R+14AxCWN~~{~Vp%W3v5b)->a1?R$QASZ~YGdzeatUR{xW~jPmu%XaEB+?srH3No*))IT^F8YwTC8JGGW**hHJ literal 0 HcmV?d00001 diff --git a/seaplants/depends.txt b/seaplants/depends.txt new file mode 100644 index 0000000..c8aa9b2 --- /dev/null +++ b/seaplants/depends.txt @@ -0,0 +1,2 @@ +default +noairblocks \ No newline at end of file diff --git a/seaplants/init.lua b/seaplants/init.lua new file mode 100644 index 0000000..b9bc837 --- /dev/null +++ b/seaplants/init.lua @@ -0,0 +1,539 @@ +-- NODES + +minetest.register_node("seaplants:kelpgreen", { + description = "Green Kelp", + drawtype = "plantlike", + tiles = {"seaplants_kelpgreen.png"}, + inventory_image = "seaplants_kelpgreen.png", + wield_image = "seaplants_kelpgreen.png", + paramtype = "light", + walkable = false, + climbable = true, + drowning = 1, + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.3, 0.3} + }, + post_effect_color = {a=64, r=100, g=100, b=200}, + groups = {snappy=3, seaplants=1, sea=1}, + sounds = default.node_sound_leaves_defaults(), + on_use = minetest.item_eat(1) +}) + +minetest.register_node("seaplants:kelpgreenmiddle", { + description = "Green Kelp middle", + drawtype = "plantlike", + tiles = {"seaplants_kelpgreenmiddle.png"}, + inventory_image = "seaplants_kelpgreenmiddle.png", + wield_image = "seaplants_kelpgreenmiddle.png", + paramtype = "light", + walkable = false, + climbable = true, + drowning = 1, + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + }, + post_effect_color = {a=64, r=100, g=100, b=200}, + groups = {snappy=3, seaplants=1, sea=1}, + drop = "seaplants:kelpgreen", + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("seaplants:kelpbrown", { + description = "Brown Kelp ", + drawtype = "plantlike", + tiles = {"seaplants_kelpbrown.png"}, + inventory_image = "seaplants_kelpbrown.png", + wield_image = "seaplants_kelpbrown.png", + paramtype = "light", + walkable = false, + climbable = true, + drowning = 1, + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.3, 0.3} + }, + post_effect_color = {a=64, r=100, g=100, b=200}, + groups = {snappy=3, seaplants=1, sea=1}, + sounds = default.node_sound_leaves_defaults(), + on_use = minetest.item_eat(1) +}) + +minetest.register_node("seaplants:kelpbrownmiddle", { + description = "Brown Kelp middle", + drawtype = "plantlike", + tiles = {"seaplants_kelpbrownmiddle.png"}, + inventory_image = "seaplants_kelpbrownmiddle.png", + wield_image = "seaplants_kelpbrownmiddle.png", + paramtype = "light", + walkable = false, + climbable = true, + drowning = 1, + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + }, + post_effect_color = {a=64, r=100, g=100, b=200}, + groups = {snappy=3, seaplants=1, sea=1}, + drop = "seaplants:kelpbrown", + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("seaplants:seagrassgreen", { + description = "Green Seagrass", + drawtype = "plantlike", + tiles = {"seaplants_seagrassgreen.png"}, + inventory_image = "seaplants_seagrassgreen.png", + wield_image = "seaplants_seagrassgreen.png", + paramtype = "light", + walkable = false, + climbable = true, + drowning = 1, + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.3, 0.3} + }, + post_effect_color = {a=64, r=100, g=100, b=200}, + groups = {snappy=3, seaplants=1, sea=1}, + sounds = default.node_sound_leaves_defaults(), + on_use = minetest.item_eat(1) +}) + +minetest.register_node("seaplants:seagrassred", { + description = "Red Seagrass", + drawtype = "plantlike", + tiles = {"seaplants_seagrassred.png"}, + inventory_image = "seaplants_seagrassred.png", + wield_image = "seaplants_seagrassred.png", + paramtype = "light", + walkable = false, + climbable = true, + drowning = 1, + is_ground_content = true, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.3, 0.3} + }, + post_effect_color = {a=64, r=100, g=100, b=200}, + groups = {snappy=3, seaplants=1, sea=1}, + sounds = default.node_sound_leaves_defaults(), + on_use = minetest.item_eat(1) +}) + +minetest.register_node("seaplants:seaplantssandkelpgreen", { + description = "Sea plants sand kelp green", + tiles = {"default_sand.png"}, + is_ground_content = true, + groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, + drop = 'default:sand', + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("seaplants:seaplantsdirtkelpgreen", { + description = "Sea plants dirt kelp green", + tiles = {"default_dirt.png"}, + is_ground_content = true, + groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("seaplants:seaplantssandkelpbrown", { + description = "Sea plants sand kelp brown", + tiles = {"default_sand.png"}, + is_ground_content = true, + groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, + drop = 'default:sand', + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("seaplants:seaplantsdirtkelpbrown", { + description = "Sea plants dirt kelp brown", + tiles = {"default_dirt.png"}, + is_ground_content = true, + groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("seaplants:seaplantssandseagrassgreen", { + description = "Sea plants sand seagrass green", + tiles = {"default_sand.png"}, + is_ground_content = true, + groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, + drop = 'default:sand', + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("seaplants:seaplantsdirtseagrassgreen", { + description = "Sea plants dirt seagrass green", + tiles = {"default_dirt.png"}, + is_ground_content = true, + groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("seaplants:seaplantssandseagrassred", { + description = "Sea plants sand seagrass red", + tiles = {"default_sand.png"}, + is_ground_content = true, + groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, + drop = 'default:sand', + sounds = default.node_sound_sand_defaults(), +}) + +minetest.register_node("seaplants:seaplantsdirtseagrassred", { + description = "Sea plants dirt seagrass red", + tiles = {"default_dirt.png"}, + is_ground_content = true, + groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, + drop = 'default:dirt', + sounds = default.node_sound_dirt_defaults(), +}) + + +-- CRAFT ITEMS + + +minetest.register_craftitem("seaplants:seasaladmix", { + description = "Sea salad mix", + inventory_image = "seaplants_seasaladmix.png", + on_use = minetest.item_eat(6) +}) + + +-- CRAFTING + +minetest.register_craft({ + type = "shapeless", + output = "seaplants:seasaladmix", + recipe = {"seaplants:kelpgreen", "seaplants:kelpbrown", "seaplants:seagrassgreen", "seaplants:seagrassred"} +}) + + +-- SEAPLANTS SAND AND DIRT GENERATION + + +minetest.register_ore({ + ore_type = "scatter", + ore = "seaplants:seaplantssandkelpgreen", + wherein = "default:sand", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -14, + height_min = -31000, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seaplants:seaplantsdirtkelpgreen", + wherein = "default:dirt", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -14, + height_min = -31000, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seaplants:seaplantssandkelpbrown", + wherein = "default:sand", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -14, + height_min = -31000, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seaplants:seaplantsdirtkelpbrown", + wherein = "default:dirt", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -14, + height_min = -31000, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seaplants:seaplantssandseagrassgreen", + wherein = "default:sand", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -14, + height_min = -31000, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seaplants:seaplantsdirtseagrassgreen", + wherein = "default:dirt", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -14, + height_min = -31000, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seaplants:seaplantssandseagrassred", + wherein = "default:sand", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -14, + height_min = -31000, +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "seaplants:seaplantsdirtseagrassred", + wherein = "default:dirt", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -14, + height_min = -31000, +}) + +local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, height_min, height_max) + if maxp.y < height_min or minp.y > height_max then + return + end + local y_min = math.max(minp.y, height_min) + local y_max = math.min(maxp.y, height_max) + if chunk_size >= y_max - y_min + 1 then + return + end + local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1) + local pr = PseudoRandom(seed) + local num_chunks = math.floor(chunks_per_volume * volume) + local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk) + for i=1,num_chunks do + local y0 = pr:next(y_min, y_max-chunk_size+1) + if y0 >= height_min and y0 <= height_max then + local x0 = pr:next(minp.x, maxp.x-chunk_size+1) + local z0 = pr:next(minp.z, maxp.z-chunk_size+1) + local p0 = {x=x0, y=y0, z=z0} + for x1=0,chunk_size-1 do + for y1=0,chunk_size-1 do + for z1=0,chunk_size-1 do + if pr:next(1,inverse_chance) == 1 then + local x2 = x0+x1 + local y2 = y0+y1 + local z2 = z0+z1 + local p2 = {x=x2, y=y2, z=z2} + if minetest.get_node(p2).name == wherein then + minetest.set_node(p2, {name=name}) + end + end + end + end + end + end + end +end + + +-- ABM'S + + +minetest.register_abm({ +nodenames = {"seaplants:seaplantsdirtkelpgreen"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seaplants:kelpgreen"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seaplants:seaplantssandkelpgreen"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seaplants:kelpgreen"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seaplants:kelpgreen"}, +interval = 6, +chance = 3, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + local yyp = {x = pos.x, y = pos.y + 2, z = pos.z} + local yyyp = {x = pos.x, y = pos.y + 3, z = pos.z} + if minetest.get_node(pos).name == "seaplants:kelpgreen" and + (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + if (minetest.get_node(yyp).name == "default:water_source" or + minetest.get_node(yyp).name == "noairblocks:water_sourcex") then + if (minetest.get_node(yyyp).name == "default:water_source" or + minetest.get_node(yyyp).name == "noairblocks:water_sourcex") then + minetest.add_node(pos, {name = "seaplants:kelpgreenmiddle"}) + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seaplants:kelpgreen"}) + else + return + end + end + end +end +}) + +minetest.register_abm({ +nodenames = {"seaplants:seaplantsdirtkelpbrown"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seaplants:kelpbrown"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seaplants:seaplantssandkelpbrown"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seaplants:kelpbrown"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seaplants:kelpbrown"}, +interval = 6, +chance = 3, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + local yyp = {x = pos.x, y = pos.y + 2, z = pos.z} + local yyyp = {x = pos.x, y = pos.y + 3, z = pos.z} + if minetest.get_node(pos).name == "seaplants:kelpbrown" and + (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + if (minetest.get_node(yyp).name == "default:water_source" or + minetest.get_node(yyp).name == "noairblocks:water_sourcex") then + if (minetest.get_node(yyyp).name == "default:water_source" or + minetest.get_node(yyyp).name == "noairblocks:water_sourcex") then + minetest.add_node(pos, {name = "seaplants:kelpbrownmiddle"}) + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seaplants:kelpbrown"}) + else + return + end + end + end +end +}) + +minetest.register_abm({ +nodenames = {"seaplants:seaplantsdirtseagrassgreen"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seaplants:seagrassgreen"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seaplants:seaplantssandseagrassgreen"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seaplants:seagrassgreen"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seaplants:seaplantsdirtseagrassred"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seaplants:seagrassred"}) else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seaplants:seaplantssandseagrassred"}, +interval = 12, +chance = 12, +action = function(pos, node, active_object_count, active_object_count_wider) + local yp = {x = pos.x, y = pos.y + 1, z = pos.z} + if (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "seaplants:seagrassred"}) else + return + end +end +}) + + +-- ALIASES + + +minetest.register_alias("seaplants:stemsgreen","default:sand") +minetest.register_alias("seaplants:stemsbrown","default:dirt") +minetest.register_alias("seaplants:leafyblue","default:sand") +minetest.register_alias("seaplants:leafygreen","default:dirt") + +minetest.register_alias("seaplants:chewstickgreen","seaplants:kelpgreen") +minetest.register_alias("seaplants:chewstickbrown","seaplants:kelpbrown") +minetest.register_alias("seaplants:leavysnackgreen","seaplants:seagrassgreen") +minetest.register_alias("seaplants:leavysnackblue","seaplants:seagrassred") +minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix") \ No newline at end of file diff --git a/seaplants/readme.txt b/seaplants/readme.txt new file mode 100644 index 0000000..26b74e5 --- /dev/null +++ b/seaplants/readme.txt @@ -0,0 +1,24 @@ +Sounds: +sounds = default.node_sound_leaves_defaults(), + +Copyright (C) 2010-2012 celeron55, Perttu Ahola + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +http://creativecommons.org/licenses/by-sa/3.0/ + + +.png's: +default_sand.png +VanessaE (WTFPL) + +default_dirt.png +Cisoun's WTFPL texture pack + + +Code: +minetest/games/minetest_game/mods/default/mapgen.lua --> ore generation + +Copyright (C) 2011-2012 celeron55, Perttu Ahola +GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. \ No newline at end of file diff --git a/seaplants/textures/seaplants_kelpbrown.png b/seaplants/textures/seaplants_kelpbrown.png new file mode 100644 index 0000000000000000000000000000000000000000..6425f0f3335a522db207a478f3e2fa3ec4f8d7a9 GIT binary patch literal 1104 zcmZvaT}YKd5QfKNSt&+E(GQUkTclClL|7NqF(oI;#4IvJ)P(3_teXfT%q*#_P(}?( zBPqcyI)wy-5ExdJ5F&|*H3NAQ1qP zF*`HQ)*0b3HNobTPrei&9&)$kXW7;P5}gf0SEvAoMpxQ zQUwuU1|mQN_rF65Dj*C@KnUpUrkJ!?ycbbsA!0;w&NC~KAhN|oiYOK!s?8?VtEjLr zF(IKtCtg^YgpkpZW6z|7f{q<|LbVePJ-SG~>I52!j0Y0)Kc@Nf7i(I=WaG!0=e?-1 zh$SMConTcGL1v3d)$X?dRc&@YM!grWtU|)bWO~^vsi3gcL0(bC>O-$qcQ`v5X3mV~ znSuY1*4)2TlVacqKE^qScFwlrO9?mGvna73u|oo<6TAi!I?iq&(FqyI;)xZ>dcfc) zy4>&^VK1bNVx2=Et26pFAVl}aM1nF1fgSfC3M@cu&sIFJnglRV;#K*|JrsnLE#iYHE_IOD-MwRhOLFUr@g5OvmuCb2qQHQufl5 zp$n@r0-I~U=gr?UzhQXo?dHdaI^TV)8g99}qOSILsPp2+!6kV;!O_))Im>_6Ev%^y z^i7!?NNJe%wR!vb;td6=qT20SQL7F(nVm5H!Wqcxqc)EqPvnF&bD z_b`nHdo5bA5)wux!b$hdCgBfLJ;u!(&L7L{?MKx3m@HG59~D)H!<^5N7wskOajb1SVXA zC}06%Gq$3Em7xFzXnOTVE${{KnZVSw8`pe&GUwT%pln-meBF&TJ+(DGYnxr4Z@ZN? zaJJkw+~4UqlvnF`^jvg9*5T*B&xtvEsN+a!-SQ^i0o(AIruN+D%KA1rQqf)+Q|Nhd zb=+##!I3j@FURcg9UUH+`YqAjz3&0nij^tu@^(k8R9+oO_JyA(i%N#BMD5AH(emS+ zF9IHN`X3EEommmwx*@sYaOc(63;vEB3{MQ*dVY6A?NbepxW|4;ZL<3T9>36$fBGF~ zth;LH;rf?sga0(WF}e_rfB4q+(TrsiztT5JgUzmxi$l)6)z$u6I_3NyJFD{A-1&N} zJH9gHl-;K(De=nK1>d%7$&pXIQrhBL6XXnBwiJSHwT`SaztpDSVOL%B_e@ zI+@WP@zKp)xz6JLYe_B51qprdZHD^kZJ6Yg&8zNLwi4*+>hh6Rzw)W5bN%lgI2gI- z$*?1Sup;D?bL65=M2D0#7KMkO*sKyZ@x&7z$ zn#t^X_lCaO?yiq*uPw0GJow3h-)&VT9?#fgX^)3?ys&EJu|cW7nGoU*+TMG4JP8V; z6TVB&4T)LYTW)(ZFQtIu*f7ujOCMZz1^+Of^nPB+ kr@F!sYY+Qt%l=C~nG;{#*?arFZ0{uC`pnd}bz95+136oFzyJUM literal 0 HcmV?d00001 diff --git a/seaplants/textures/seaplants_kelpgreen.png b/seaplants/textures/seaplants_kelpgreen.png new file mode 100644 index 0000000000000000000000000000000000000000..58b6687450606328e6bdd962c3ce516d54de67ce GIT binary patch literal 1229 zcmZvaeN5I>6vq$H!yF_Km?ew^cWbFj=W^j%FG@h2p-4s(mL=5!+d4ffU1l#tQi+wZ z9ip|$YPA*X59ad>P9gS$qbHlPQnH7wV=JO^%94O6TejPIaC5-ZZ@c%N``bPD^F7~l zcUM;2IyWsh4FKliZ6zCQ&5DmXsWva1@b?0wK;_!1Qrr5e;indFJ0Jg4RYaJXh!D{^ zrvL)L00e*l&ax7Ise%YF0}&vC`@cg9Dj*C@KnUpUri8RaycbbsA!0;w&NC~KAhN|o ziYOK!s?8?VtEjLrF(IKtCtg^YgpkpZW6z|7f{q<|LbVePJ-VrU)mbzYnGPi83rzFp zJl3?t$;MAK&wEj25lciOJHe_Xg3K0^s@-n^s@m*)f_g7rS%rj=$@H>UQbA#>gS?`O z)rVfK?s)c0m^m|@X9iwCT651+O^Si1@CnYrOy_Jny_9&9J&O_x5<4VtI?HP?q0{UJ z5}lQSES^}AtOpE^W|kX&BkYBgQLJ+aWOdGb4G1&)Vwr49ISWN;L zXzKfVN%BPiNzGWYrfSuZ@A>BPO}A%7pV|6D zT}F!cc@1|T|7`5n&B-a(Zh7j8k-orJc+y z?ZF}_ADzGLY*T%7;`#Q8lO6BmzcP6L-g8y^#*RjUW5cbX58izDiJ-jP^h;ZKW!^Q~ zJGyH8`X^g!Hnn`aZ&&st57o7=9O#i?Ph|=0eC&n4i(2LtbZA#6FpG*V??s z_W6ZnZ%+ow2FvKfpTDSnzwgD&)xVW)bp5?sm!uXf-;q(58H4`qw@f~8C-jfMdb({e z=juf@3p!f^SB+#W{yn+;%k>`@hsR3)*i}EgKbC)4droueqVjG3KKxx%FcNJY|NN)A b(TmRpP91!@ASrP4@pyBvw4$V=xOV4%#C=MB literal 0 HcmV?d00001 diff --git a/seaplants/textures/seaplants_kelpgreenmiddle.png b/seaplants/textures/seaplants_kelpgreenmiddle.png new file mode 100644 index 0000000000000000000000000000000000000000..795c8f309b2dc5a5f2d7f87b8ae342d53b435131 GIT binary patch literal 1356 zcmZuve@xX?6hFM+!2lB^4QPzbeP0DFuyE|5O9NqbHwI`VO-Oi{gVcjLa0IUeg%vDG zI$;VkAB?6e7%RnFL&Hdm6s3Qtlq2YSOB={v~1{mlA|99K4ghae+0Gex^sB9ahj7>bAyr4XcT zL>5A7LkQNVrm9%7BuPjpP#D6HN)i)F6eJ8ZND(p$DGV}DpvJDgb8#bUd{6O|lFTHfP85hbf|yZCL8NVD*8gimFzeG$9_*D=Oe|57Ak=(G zF|rhrbRDQzu+;Sl#ky{H_FOQn%xpX@-~&kA-214SiUyv6_fQVzDyQAqrMR1{NHUTX zNQOW#c%IgviO!N6Q1ZMCK~f>HK-~iZ1Lv0Oo)JGt z!xcydl7OVgRw^LY6hH&btRJII-T)?Fk(`)m?ZXdO7lznEzpuD@AZKvvi37{)YBy}_ z32-%kb*X5uWl7PJk{uzvk9m)p51kD4ef3^eV&TrU%Od>uct@0MiFhP7Z{?GjpErby zO&7j?`1S7C;O*sy?ZcDKva9xml^IDkC03<|2fp!|v)yU??&p790hQ*On$)T|S7>na z{^`w~&JW(X(!MdIa(&z8-|t1r-Orjwv))dyRxG{!_fzSyVHfQqx1Ok}$I_GI@ktY5 zcuK|$WR7ob?|Q3vtj`fsWXBcel!3#8?A2UzzU%Vv;`&ub^H<+A+TTB&Zfa=FxY8B! z=$1{ES6Y7^_;?>AT7s6|{pih!{fg`TS_?Mr?eur__Lo-gtnQtvYkMx#dSb^0h>1yi z@5@6$+oRT+tkbqriH_pQvb-;H?^v=Ew*B)bH}qWo?3Ye+tUYi#%vKmxkU#2(ywMhL zzWaHf#1%fR7y3El>rgupX6s-ei*wuc2+I2mL7AxyBh+#WmZ%6 zz@0^9rs$T(y(Z#@Cc{P?O@p@<`&`>q4Azo0ef=e-+t0Lk9dSi9tdE1PBY&;2Hy*ow zurcnB9O#Zc8~syS&&%;%2d9=7gqu4SUJ5qlPFxpf(ubo5<8u2r_~xfw7jtf$JH76u z&I^{~!R+X8#xFBBI`;-Q6&dtNrHMkShi%yd34{MyTqye)nvMl(giIq`W=< E0SvZ*^Z)<= literal 0 HcmV?d00001 diff --git a/seaplants/textures/seaplants_seagrassgreen.png b/seaplants/textures/seaplants_seagrassgreen.png new file mode 100644 index 0000000000000000000000000000000000000000..87c8f0d611386f6978bc6a111d85070a6ff4f71b GIT binary patch literal 1044 zcmZuvO-L0$5T5E4A{s_fA%+G^2O;wv0zD`iPjW&YYJwP&TB4*)h=+c_B8r4Es7Cw2 zpbRPlQ3`1gqg2!|Ja{Py1|otE9>l1F5!E*D3G$w=h25Q9X7>A;y;>eVn3|lP3;?NE z8mhECEi#if*_!#oHvnva^0KNDJNoGK(aqb*M~1432s0BAB0A?3KmZtk01&`gRl=1j zhyXJX0V25nB`K(YFfaijptF|}$`awdh%yTiBa(BTS&0OZEhbV#u>etRHL6}kg@uU; z2^~7|!pbCsjE)?8CM6Vf?8p=-L0(qzw~#Dc^Q37oF+8jNU+-9VyiDv-q!E0Xnq!BM>2 z$RA-Zq>N&nLm<-`{~HkE`(q?Q8HB*nJ%|De5ZkvE53EK33@AG0veySJn8Q$URo?6( z&u*E_N(t4~cGX_LwtKp0-=m%HyV^f*4L)dWp9zkhEq*mH4gOa}{@>KS1>dinf%?Au z!KSH-#`(U*$v7?Yj+<>|@N6(QSkyYdy!3VZx#2_aGVYCM9Sda4 zWWPzuKK1f+PFvZ;$nm^|y788cf!x5Z7b)SIk+I9e{b?U^KF+6f-wj?YT`E{N*4)!M S)KF6$(TFAC(9nVUOaA~%Qs@H! literal 0 HcmV?d00001 diff --git a/seaplants/textures/seaplants_seagrassred.png b/seaplants/textures/seaplants_seagrassred.png new file mode 100644 index 0000000000000000000000000000000000000000..1facb278d087c0c03c7c3dc210dfa79f5c4c1b68 GIT binary patch literal 1046 zcmZuwQAiX(5FI^>Fh!+845JG+BoQ%)2#WAb(FwUEFQFh%kc40eDu~pQJPD5akf|sN z$p}9r&7v4TDiI0k5h6P06hHtNfB+D{SyaZA zDu@6x5CI~%|2ZkBfG{utA)vFDGQu+9y@)ak5hIdwo>_?mkx*`HuJh38K4Hz7y zr<>>z_Cm@iRyhQ+Jkz@YA-z6E5|lv*%-w@1umG{Ot$1KH3SdCV@uoaG$Ba1Eh9bLO z4qS zj0~1lPHxIRH`*anH^+~xIvg1&YVVIegiGaB{5Lz=+&cTY>|@{S;gW5E>Bq&b(jNIW z@?r-ZJJcCyStwXL^&IE6wgiV`@vMUP<1_0!`O(v{z^l25ov}dm?yL>Z#tJVs-`#(r z>r}%xjCcK>=?-syaN*tT!u311`tMDA9eI2DXwSOKjf=6t^M5{U37zzl*9s1dRv!OS SkyCFU-M(vGxb}WcYwtg<<>6p1SrxP_YaPOJN1PNIhmD$)U+&E|>A}TR7B-4~m z4q0Nu>P?o*4CBbA$gHdt;cILy*D25%xrUenw^n4g^Kf&(>u&enbH1H(f4}oP_q#jt z^B$TSpAruMQ*pVk!1ih385e8oUBm8afEdVMS?D*{jZQbZIrCh2sH%uCGZ7)8=XnYs z01Q9?2;f;(#3xk{0cIcqMDYGENI?aJfe8o!Jv%8PEfU^|D6{ygokk~^4PbX*%Ms$qa zK%x^eki`)zlJ$VWqw(d2?+7~~Wfbci0$H8oZv(>k{uoJ61|hI;2cp0N#CC1P0jp5} z0~#Hn+0i!vM16q1oWg}&-Sr)1x93c+?M(jl$wgAS_U8IPFeh(EK~K;2cb;t?S`rgK z>CW!$v1u`rcP1=O`>Y|Oeopb36|Do8;{FI7yb@cQ`taV=4R5@B@u!VvpE!5uzLH~8 zmRzma-yOZ{+=9&B%-6Q9S#?L}$YVv&+<9`w`MB4!GxuGto%iX%=XY;9db$6|`3nQZ zgSlC;waqPC8}}@O3vXw`zb8ggYL*?J*;3Fr?=-~a{MPf`1B0_$F7>zdx2!lZ`IE=z z&e}Aiwh3M+ORnzt>U7QL3AY4yrWB{A__Jb;O-d?BU+TMB7pP9jdocIgp|U+ggO%?e z{_*cOzfSs6`?C3LDAcxgj<3CU+vegxUENDnw`HWJ5C8MlJ@w^fciYc3{phWJ{$=5* z(gphytKQu*ytyxWL&ffzgex&GPFcTe?)~uUU$3lN{!LeFVM9P3J^cN?u3%Q^-jQq7 zQuI-e`9DX&%0sK8zId*wa`A!rU9G{3RcZMfk85R9`42hMvf7h-qe^E*HFiIP4S|Zj zKL`Ae?Cn_h@u@{8*AxwuwHILd + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +http://creativecommons.org/licenses/by-sa/3.0/ + + +Code: +minetest/games/minetest_game/mods/default/nodes.lua --> stone + +Copyright (C) 2011-2012 celeron55, Perttu Ahola +GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. \ No newline at end of file diff --git a/seastone/textures/seastone_seastone.png b/seastone/textures/seastone_seastone.png new file mode 100644 index 0000000000000000000000000000000000000000..de58a5c4feb4de930844a29f20378c5aa621d382 GIT binary patch literal 1417 zcmZuve@xV67=J*vNI`E!b+c7tegC*?Fs+1l|V0W*I1L`XWCF^L^Q zlbk)BD-2yxzy=MM$Q!e({-CZIcxV)7dtum$U3uY^G`YIVxA$;!!1Zq5_kG^)p6C7i zc%C=%teX>;uU-xSiR_tdn>uxoFFsc7$KEP`9AFvbZQGfnu5$j9^M_P78CgOI&N&ew zB4bR`Gy%W?2mk>XfTpUVehC4b0}&tsW1#(Ck^sSh6A%J2V48XY}^U`(i8QI&!VPMnaCA=8+~B_~11krC5SBS|Qbai)=m5}8mL8k0<$ zuNPto8smH+AQIiiRQ}w8Ra_#-3P0LBDY+2DxhiCcDuaYT&KZ%4Q3&}=OC-Ti^?*Rb#d0GvLXx8(##QGSpwhW` z8W=3@k0J?zfFr1M30weiKvHANC6G`QKmpCK(MMwA0AjOQcGgbAXc6UZoy|;YdNHl7 z_3!fU4m%qz=Nb%y$1L~#lM(*r+QhHc^^Iq<4A#oZ?#J5Nw)Gupak)aZCf|f_7rg9= z$()*VzsoTrBjZysq!~*`~4jTeVIeI#rR<7xZOCtr~i}j8})(qUccSgIj|{y za&q#~dyk~&9$Mwl?JxRLEthMp8yaj^LpNW0YWrCF=xm2UXUWplo$@{G&{=HX{El(pHo2kLQ0Y(K~eYQ!A1`a(*_sCgJI_k;^@S&<~aCPFnv>U6uTmsabbse4odE z?q)FfzO%Hoxx_GhJsfsn!PH#6t3Y8!Ny5(7@NFH3tvgfB1ty$YV-zT(lQdHR-CWt1T^k z{*}!`uWU$cY)IW?T<3O_3>KfhGx-ZA*)}wO+;g?gyw5Wi`h46T|5N*{x%&IU;$nAA zc*RS@Vte-evjyz((WrpLOYOo#jkQ!D+7^PIO(eZ#BM|TI8LX3wgcX-rnAn z;rL`F6Z7*KIZ9e$Ao;IgFc=Pp*AE`*otl^^EG%@sVCuVehwDa{oVdqa92qQ@W6kcf H>}vcEaW1V5 literal 0 HcmV?d00001 diff --git a/seastone/textures/seastone_seastone_aqua.png b/seastone/textures/seastone_seastone_aqua.png new file mode 100644 index 0000000000000000000000000000000000000000..6bf59926797865ff85c3ee2d42e301010abd671a GIT binary patch literal 1430 zcmZuv4N%lY6n_HtafX}&IT6+X{*#L@rKT$zQ;?5%K}x`dphBr6*lf}`glHt`AOjAh z8>W>gBXeR+U>UQQLup0=#t>dud@O3p=XJ`5sC37`wudtgaP7?QzPIz<{(kTGUO~*N zSDjT)ssO+lBg10lt+wq)9OSwGK$;f75n`g_!=)=Gx0t+y^n`73&KYBrQbGtKDvH7Z z7ytzz00^MSEW0Ppfia*I2mwS;{x66FXTT^>0t5jS`IB9mJ-lFyQ_2XTh(u8YrJN9k zNTp2(M`Y4K@##kI(FWaz!71KRj!(6b>g$1t`T{o#_P%njx!xtSa;bXu+31=t z=kj*7qvg_i|NOsu%X5~Te5^;KtE(~{O22LHIBH4Ho%rR-(_S~KZ+00hciK#IQtmCN zKgc?hU;fBC<`S59YpwdBA5s^nx?-aex5d?Jt%VnBFXRlDdG+QFPVCtE(u>z3j1J+K zBmUHaQ-J>3@vdLnijTPGjbBn795S`IX5aqQRkin6N3?pw?`ML;&7XvBS=U#+`r##R zi+Tb!ZuB@-I-Zzubl_CYNmt*JFIt_=d;R9&g(u>IXlz4va7*O+P%p#P8@1)HWAv%0 zV79EqQZzrw8cG_QnyZ%YiwFJuXL}aD+rBSz)VNjun;ufPTbj$G|L87>)fIH@*Qg5? z73z-n8*UD6N;2Vi7DL{NeGF7jnu>;Dtt|{5*MF2kgNE5)CsSq9wP4SOXSrf)dCR z;p~YIDA&-GHD<}&-Fz)kq%c7F>E{u*2C>W-%R*|hX58+>%>l2w-FwfuJLi7i`Oc{^ zr0KmpS9$_~7fse>sN2V}JzUgT->^Rhz!eNBnOl`B=eL}{r1GR=2_ZP=h{zbDloCP& z00%$-20#Ib%5r)V0yqamU<@b)@_#`B1P6|Q3>XDU)K5-n&hV0Rfyfy{N*N&%Q830S zMP)N4DCNqaRH#!?m4XY792qjoD4~Q)jsh8H6e(c@B{IP%rvwR;j0zP&sH9{*Ux+1W zl=Fpv4Dk`B(&r(p;^IJ7_|D=<$%R19RU&0fMW7IjbBd^JCWQK58B_>$66wTVaw$-7 z#*rdZd{GJ}IOVA7U{X-QRee+nRktI1F_=p_C<>r}=GVYlm&X8H!l*7jbIpL;wXf@j55m=-UkmtX z&}(^B{EqOUn!Yc)D{I29RJsQbw77fcKUJ>LM7K3$9JHm|9!yq^Jv%+^`?7y-V%FoU zv3k;?4f8AvJaToW?Lg3$YeCVU8&>=kso(E<&wTh;>v(B*WNK~a`Pjm{)|BmICadK_ zZ|$m9>ug+3RLdS~wQt9fKTOMuHR)ZqdOFg{rNi6o!v`jw%+Ha{ zV^J3;cZ@dvbo$>dy@4Xhqs!e^*RpD~?p$bU&FYisClV_nj2lP7&x9T`cbe`Pvm#Cf zW;Cu}=U$%tP223UjGnU8Mq^%o{#kwgsS#hTm;Gb=`M3V$?RInV(fh%_{hf2!8kSv4kBG2>}=KkYar?03VU$(DiZ^Lbi+iAUsYBBBf{B*2i z=CZXYdA77Ca_^nW?sscRbkkt4!SYg3=_Or8=B_V(Idt>Hi^HzTBc{>jsROt6RrsVA zZZ=vX%KY3$<0hsy_WBkV#6&#(!JEy^A-gvvWL2B8?OIK4-+Nz`v_G@*oUg6%lZm;Y t>u1-Lju`Fj*?up)(R(|rDt^~JyY%i4@Qb|<{h^M@pBDi;`IQ-ZAn%ZV~TKrJ9`UOTh|Un}T=L`0LF&c)3Ex3isdzVGb&&hPjAzON#6 zPm;5fw-X`68It4E)UB~>2OD+P*5!r~VoOqAPft*;T;6i|lFE~oC4}IdBO+rA04Sw` z5KagZ!UzFEsLHZ>5`u6}5D8-hfYAR75=3yqksu=s2vGHtRhl)tGaumoo0|d$_N@Rio2a1$Q20}$pkU*F7g;;|I zoUa6Ah)*$mTDFL5Cs^&gHRa6x4GQ5>?WVLe2U0I5y z$r8C>$blgRMyOb$HBm%Y$W0g*Ycc@2WGH~C9w4D?b-9)qLCKjw;Hq;#n5uL2GyqxM zA4QS~B%BcyE(sR|Ibo>AmP>*{Q6LIvd5s3!*b!pm5AnOw14r%qpx{O-IW{RT>PEdL zstS_bn%Wy*G;|*9-xN+<^Ju|kk6J_F2Fky*ZPwerHe#kJ#-X^Ge`bsHMf&VJC0T}& zsH>g}jy65|JKFz9z1_xoJiMD45^2g`PS@_)J#rdt**Em3 zrlU6`QQ!yrH=fT{w|Z%Y+FtlAa&G&iTR`O@-=%WzCF4!){QDP5 z>|G8um7hBi-Rd}3epeIS_ePKZ#U1+IxOd)d4tG4~Kf5ubB|FL2A(G+`uI-0~8IP8? zUmEzMb745-Jr{%hCsz_qbPXD-r!_w2hZ6zrKKI?{AK-=P+jWbdhbKNWey}U}>(J78 z56|`aAAa;JyYi;Pbm+$$Vsc`(X79ZjnBAsrZF7Bl%Eg?Q);Q(c()_&~P60n-uC}Jf ztGF!76lP9(9BlILy{FrCT(|YdeYp!G-aYtmN63LL?ezGV`}zk9B@vm|BVs$o*XfI5 zgJx_lUE8V6YpVBLmjRz%-)p<+M%Q?dZGCa&k)=~d;|ps#8d&)GAivf#UbO?}En$wc z6^{oZV$0gH+)g`wkU7{8(O0{zKeVU77@6;$Q~lQSugo9&s`}r;r0(NiO!_u#G0a3f pH{;O>f#XrSn$3-Os}lQy@5glCT3qM~ov5>n4kYY}Kd;~a*?*25g%kh) literal 0 HcmV?d00001 diff --git a/seastone/textures/seastone_seastone_magenta.png b/seastone/textures/seastone_seastone_magenta.png new file mode 100644 index 0000000000000000000000000000000000000000..ecdde021971f3b4b63c03dea8e5a407f1e370db8 GIT binary patch literal 1507 zcmZuv4^Y%a6kZQBf-n?Kfxv*DaG-*XiKc`goU#VTp+^)kBp@p4YKDR#5)h>bj`-AI zVnT{BQQ^XxTi`@N!I2cjKUrOCaw8++03tF00kZAkj04in?CyIz@9p=!@4YOQa;2rY ztvN!-5(fsX7Ppmgo5{qPduXE8!V4pA5D@{45lS(DunA-0e_>$8#3}J{>^bEO z7$p=i5WyEXBaC7Sq7K3tW>nONITLjov&Vu7Wk%x(0bf9h<~~OiR0Qw{{5a*%SmlH} zx)fuRIZ#G`VgeE-NMbK(jRetAaw9_7OBom_C%`ZfJpd$;vE>?P1UMxOFcqD{h=@AJ zP6I|``y)sq28a?Q!a1T00YwDF*iw#w2?|I6jjSejnJGfDLLA_ymN!kjz_!{cW+KDC zNt2iE?oB@Dh2tVs&hFZHg{S-W^m_Y>$fs`xR?9qVEkn{XO+6=^JGm-57h5k?-uJKW zetf-f{pAHIvxW{2t#fL<=J3zy4!LdF(big5XN%Z@_|+Tw1|NKJYLoZWo6`QmV^iiu z-1(qArR6p2uQp}4-EXW9x=S7m+O-(^^=p!jtX_M=#&(x9Fre675&Ls=s-fDuDG^ zCb55AroB>=I#}FfVex6KdwF@tE15khXZNo^I2iV0z)icdwkea8R=RudxOmJm^{km2 zK4;}`rlC*r7ri(8kZWtU?n;T1nRSy*_pg=1<(lEUxrTy=cP?oauO3M8*>^28Z$@~W z*2FSjKmVz2mFoD8dk4-ZPn=|E{-Z|Cf)^K@@%yuJ+qZjz8XBE4SES3kF8CTwq%84x z!$O|y;x;sWxNX4S2hXeRShvr)qDt2uR_9urSar0lNHgaus0xCXe`F3PwU2T={IYaa zsT&fSXB{(r7=k|jyUuSyj6+gM@GVuOM^8+!&%2*rIdS;eXBzd+j@j~rpEhSjT)h}Z ze_5EfYqs2$--sJr_RZIE UJIWirbTE!ARwx5B%hzW72fsVir2qf` literal 0 HcmV?d00001 diff --git a/seastone/textures/seastone_seastone_redviolet.png b/seastone/textures/seastone_seastone_redviolet.png new file mode 100644 index 0000000000000000000000000000000000000000..5cdc8389b58151914ca9bff10ecad0d111815744 GIT binary patch literal 1318 zcmZvaeN5F=7{?D6Er!u$aLonS5ROBba||{Tf+lq@_+TRjcgPjzl#tZ2fwiQ0b2oYwYh*?B`$RX!Vb5|M_+KX0tIu|zw+8{p!YpQP_U_6MB2*MT=X98@o*Q~@(PpOupHhmMi3kw^ zKuW2EU?E5d6as{hCM)QdQi53!2}A)P-fdB4R`WKq)nm zLSz6kF`@!s696bP8>w2cVq!u|4%U>bk!V~v&o+3aU(kwb`x7#Wu(8&CB{zn=cPE zI`4h_@3wnG1O2CdOLU!`JXC5ekR@TQ740Fv^oP<6d{O*R?nQ^B0mLAL{OWZTiOMQul{PLw%zsj_li& zP*e5p*$c1k_w>l(_X|5LJ4V)d*Z$e`l;`)`(Mj)|tT}%!;)9;C1GTNKw&~Fm-Kyz^ zzp5(at;5&SUW#ptUwP+9OuHvJGN!$KOMKnmotLlb+Vpdk$@N$Ab5})1x71y$sTlWf z>}WlCr%)brxvX(<>!Qjh?OR;=d4G)leEP6==F-E%qgm;(Zx8kMzV~`TB^>?Mnr*Y~ zxq7T9=WfIK;e<%<8t(?j(us*Dew|J19`{?Hw&ZrNc+AsV=Gj{I$o0XGnbOaJuUXH$MT!J>(lbO^6J0LsY zxa)hqa9c_2SleeK%T8xRH-7IwcD>=J#!ng?Ik&RYUfCbM-1B&wy?XLy`QDEPdz{`c zKFykH*aU4Y`@XRZZO=Zi^9SK{X7<(jc8*k6PMt~gKKf#6X5UwqoHyb-G6!!}r|OW2 W_`f!Et^LOp=sGwG?Z={ct_N90&`J2#~Ir+G6Sw(i7IjIcJO^BBhiNq9_Un zU;qd}0SJI1vt~VU4vYaJPzr>A@_#`bI0J@&6et0r$e(7V&4w3@aYRNb5<(S4AaY6> zAt-H1IU!6Mgm8IEs)94lkRe4%C{c*Q1VfILQG!IF3JRp05=InMsGx+)2!#luOyzU_ z5*lG_Iv_=SfhqNQ4lB7>ktP0Y@q}QUBV#g=P%0ykbIKS&ls4sD{x1!}xjYpyi@jii zBWIK$K`Qy8;FL4MP}V^OC!ERph~TnrYxYbqsmyddDc}o8+1%%-l8OYLf}f=v%v4Ug z(@U{7Ss>#S8KI~U3JQNoYmh{z$qkh8mof-4L6H+Gdw`(OndMq%1O=lU36q^8KxLgX zr-8uC{z#I*5f}v-E`V`B1{CGkG6BdX1&}~f%d*187QhC{7XJt@i(P$9Hs1;m))LUN zpt<{EsYj>2_RAy5PZu5dL-k2-V|14#Fz<3uPNz7n_G4?_Q<;y)<(|6n4P2Nndse&?HIwEb(tuJ~VDcC0vN3vAFOwjlhl^J~7Z)J_f#H&vWz>`-?Z zqK|1n{c+wtbHN99oHd^%>to6u?D5B-vmwKwBY@edJc_f!GRNiHjw{A6ff ziwEtyjl(Anj{JG+;bX(*)MlR*BX4Rgt$h)sW`0AScSzq(qsEeQyLqDaY)jnz9K*Oy z`&Ipu`{HiS3EQr1pfX&+Iyv{QLF>w-R%~ZoS{~mYOBkON_lWZZVO*n`rSXi9cy>Nxyg;eSkZqd77mZSk(eFXZ!&qsj^_YJWlqxRaA zl$1oLwv0_0W#gs`%WwE*H=OHgxYmEAW4PKdM;B6Eo#nJ!U$j#21K*#?9P7C;e{qxg zS!!Wm+UET+<;MP=?rv>%o9g1;LZ_hPs;X5L!Sjyf-16+*vp>r4R{FD_RpvnKdVJ{S uYL~32yj9-r*-bs87n5$gEi4azw_MDPasKqYLp15OjwuNU*<#YgeDNPcJkihq literal 0 HcmV?d00001 diff --git a/seastonebrick/depends.txt b/seastonebrick/depends.txt new file mode 100644 index 0000000..8a60af6 --- /dev/null +++ b/seastonebrick/depends.txt @@ -0,0 +1,4 @@ +default +stairs +seastone +colormachine? \ No newline at end of file diff --git a/seastonebrick/init.lua b/seastonebrick/init.lua new file mode 100644 index 0000000..e026413 --- /dev/null +++ b/seastonebrick/init.lua @@ -0,0 +1,131 @@ +-- NODES + + +minetest.register_node("seastonebrick:seastonebrick", { + description = "Seastone brick", + tiles = {"seastonebrick_seastonebrick.png"}, + is_ground_content = true, + groups = {cracky=2, stone=1}, + sounds = default.node_sound_stone_defaults(), +}) + + +minetest.register_node("seastonebrick:seastonebrick_cyan", { + description = "Seastone brick cyan", + tiles = {"seastonebrick_seastonebrick_cyan.png"}, + is_ground_content = true, + groups = {cracky=2, stone=1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("seastonebrick:seastonebrick_magenta", { + description = "Seastone brick magenta", + tiles = {"seastonebrick_seastonebrick_magenta.png"}, + is_ground_content = true, + groups = {cracky=2, stone=1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("seastonebrick:seastonebrick_lime", { + description = "Seastone brick lime", + tiles = {"seastonebrick_seastonebrick_lime.png"}, + is_ground_content = true, + groups = {cracky=2, stone=1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("seastonebrick:seastonebrick_aqua", { + description = "Seastone brick aqua", + tiles = {"seastonebrick_seastonebrick_aqua.png"}, + is_ground_content = true, + groups = {cracky=2, stone=1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("seastonebrick:seastonebrick_skyblue", { + description = "Seastone brick skyblue", + tiles = {"seastonebrick_seastonebrick_skyblue.png"}, + is_ground_content = true, + groups = {cracky=2, stone=1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("seastonebrick:seastonebrick_redviolet", { + description = "Seastone brick redviolet", + tiles = {"seastonebrick_seastonebrick_redviolet.png"}, + is_ground_content = true, + groups = {cracky=2, stone=1}, + sounds = default.node_sound_stone_defaults(), +}) + + +-- STAIRS + + +stairs.register_stair_and_slab("seastonebrick", "seastonebrick:seastonebrick", + {cracky=3, stone=1}, + {"seastonebrick_seastonebrick.png"}, + "Seastonebrick stair", + "Seastonebrick slab", + default.node_sound_stone_defaults()) + +stairs.register_stair_and_slab("seastonebrick_cyan", "seastonebrick:seastonebrick_cyan", + {cracky=3, stone=1}, + {"seastonebrick_seastonebrick_cyan.png"}, + "Seastonebrick stair cyan", + "Seastonebrick slab cyan", + default.node_sound_stone_defaults()) + +stairs.register_stair_and_slab("seastonebrick_magenta", "seastonebrick:seastonebrick_magenta", + {cracky=3, stone=1}, + {"seastonebrick_seastonebrick_magenta.png"}, + "Seastonebrick stair magenta", + "Seastonebrick slab magenta", + default.node_sound_stone_defaults()) + +stairs.register_stair_and_slab("seastonebrick_lime", "seastonebrick:seastonebrick_lime", + {cracky=3, stone=1}, + {"seastonebrick_seastonebrick_lime.png"}, + "Seastonebrick stair lime", + "Seastonebrick slab lime", + default.node_sound_stone_defaults()) + +stairs.register_stair_and_slab("seastonebrick_aqua", "seastonebrick:seastonebrick_aqua", + {cracky=3, stone=1}, + {"seastonebrick_seastonebrick_aqua.png"}, + "Seastonebrick stair aqua", + "Seastonebrick slab aqua", + default.node_sound_stone_defaults()) + +stairs.register_stair_and_slab("seastonebrick_skyblue", "seastonebrick:seastonebrick_skyblue", + {cracky=3, stone=1}, + {"seastonebrick_seastonebrick_skyblue.png"}, + "Seastonebrick stair skyblue ", + "Seastonebrick slab skyblue", + default.node_sound_stone_defaults()) + +stairs.register_stair_and_slab("seastonebrick_redviolet", "seastonebrick:seastonebrick_redviolet", + {cracky=3, stone=1}, + {"seastonebrick_seastonebrick_redviolet.png"}, + "Seastonebrick stair redviolet", + "Seastonebrick slab redviolet", + default.node_sound_stone_defaults()) + + +-- CRAFTING + + +local register_blockbrick_craft = function(output,recipe) + minetest.register_craft({ + output = output, + recipe = recipe, + }) +end + +register_blockbrick_craft("seastonebrick:seastonebrick", {{'seastone:seastone', 'seastone:seastone'}, {'seastone:seastone', 'seastone:seastone'}}) +register_blockbrick_craft("seastonebrick:seastonebrick_cyan", {{'seastone:seastone_cyan', 'seastone:seastone_cyan'}, {'seastone:seastone_cyan', 'seastone:seastone_cyan'}}) +register_blockbrick_craft("seastonebrick:seastonebrick_magenta", {{'seastone:seastone_magenta', 'seastone:seastone_magenta'}, {'seastone:seastone_magenta', 'seastone:seastone_magenta'}}) +register_blockbrick_craft("seastonebrick:seastonebrick_lime", {{'seastone:seastone_lime', 'seastone:seastone_lime'}, {'seastone:seastone_lime', 'seastone:seastone_lime'}}) +register_blockbrick_craft("seastonebrick:seastonebrick_aqua", {{'seastone:seastone_aqua', 'seastone:seastone_aqua'}, {'seastone:seastone_aqua', 'seastone:seastone_aqua'}}) +register_blockbrick_craft("seastonebrick:seastonebrick_skyblue", {{'seastone:seastone_skyblue', 'seastone:seastone_skyblue'}, {'seastone:seastone_skyblue', 'seastone:seastone_skyblue'}}) +register_blockbrick_craft("seastonebrick:seastonebrick_redviolet", {{'seastone:seastone_redviolet', 'seastone:seastone_redviolet'}, {'seastone:seastone_redviolet', 'seastone:seastone_redviolet'}}) \ No newline at end of file diff --git a/seastonebrick/readme.txt b/seastonebrick/readme.txt new file mode 100644 index 0000000..7d4ba77 --- /dev/null +++ b/seastonebrick/readme.txt @@ -0,0 +1,22 @@ +Sounds: +sounds = default.node_sound_stone_defaults() + +Copyright (C) 2010-2012 celeron55, Perttu Ahola + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +http://creativecommons.org/licenses/by-sa/3.0/ + + +Seastonebrick texture is partly based on: +.png's: +default_sandstonebrick.png +VanessaE (WTFPL) + + +Code: +minetest/games/minetest_game/mods/default/nodes.lua --> stonebrick + +Copyright (C) 2011-2012 celeron55, Perttu Ahola +GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. \ No newline at end of file diff --git a/seastonebrick/textures/seastonebrick_seastonebrick.png b/seastonebrick/textures/seastonebrick_seastonebrick.png new file mode 100644 index 0000000000000000000000000000000000000000..6481ef5ae35e01c0bf298117aa0a69fb82637b1d GIT binary patch literal 1431 zcmZuvUrd`-6h9)G%Aff?fRcp=ntUou9%$TPon43xgk5lqk@W#wfyky{cgP4Z(m0$F zvMJV$ov~tAG#{6K4RuGh}1f7&~xw&3ligY#sNSgJCIkZZY{D6G3xBNSd$I#Je0h9Bwx95W6O<8Do;k15Q1|~ zM2N^3({)_{Z~y{800y9|tf)^y0Ovpih`<=={}&`caNq=lfDD+fUW!VKhL@ZRB92Im zp{`3JfyfynWg`m4xH1?M>Qq#v;DQq;BxJ~RrgOL;k*oMY9-wcRE&oGrfPhl082(rSD7Eekp1aYns8KR0HA&_%Mq-+#Iy{`-=ggSK@ z#a?nLNO0uD2o+zF0tIKBR2?V<6I|8Dq)>H7vbTaMWj5m}0iQvt<~~JLR21+Ae3Wvq zRXOEuE+x`rNn9XthNLqDU2M}D6wys`19Gt~gAtcVf}!dGfsR|tjm!v1j)E9honwHi z&aKnHU~7LANe~1aL4`};0*C{W8e1-bgrWcnXk+mWXsr0By^w!@ zmIaSdea`_)(bsXt2ganvwDoiH?yDUgn!T-LclWqwcD`Wz#))e`XOE2CFo%B}85s$O zn~kx7)2Y6RrM}K`hp|n&8w>_lSNGk#-kWamzc-UylySi~pOsKJ&}7fKa?pKz`uF}? zPlIYDe%#b#OUk#;xJ*Z9_89MlLYEpQGK*5qPMPPzCa=xbSKA$Mmbu~6G=s%ISvauw zeDl~h)1xSyJebrOKk9}vzwAwK?@cqLwN05D&zzADA9nWFYOy&vIgF}Y0cTzJ z2dM>CgVg|F%rlfZOo7{>@$`0s(G$9!`I52B{Tj1oEO?sjAG%Cli^Y=V&8j|8_DWmF zbh%^y!CQAu)^z_F4$p*J40lF{{vKUCH8!zi^8T~DY|D7Tc+8cY|CzSaci3R;`)>Mu z*SG2I^RuDxiKVrPb8~ZZ*3bKE+q7~=UuWmP^YinM9yy19yXP!6T${EUhBM#tRuv9t zt){bDt5%qC=r2$FWQV4vNsB$4^d!EezW%U#!Qu~D4&C~-NtHe1C>$vLDCI>5+GnQB zkv956nSDvtMte9M_L;j%clE8TwP>+#6y@gTcK+h?6|`v;?&CdyC!bW>E`RS<|95*+ zFBDAuVDgqbTn}30%1ZY6>Z7*g>fqzYx65y)ynWdm=<4daDibG9_U=pFky4!iDZcvd z*ByfmJE}bab9HcWv98R0sd8|SQBRn>e=5GRqGJ8cE2XQ;%L{Ak@~hCx`#q OBm7u?ao&)%s`WpN0Ieqg literal 0 HcmV?d00001 diff --git a/seastonebrick/textures/seastonebrick_seastonebrick_aqua.png b/seastonebrick/textures/seastonebrick_seastonebrick_aqua.png new file mode 100644 index 0000000000000000000000000000000000000000..ef4d011bc19ac24142dcf5d0aa9bc28c5041b9e4 GIT binary patch literal 1454 zcmZuv4N%lY6yE@e5BYF{fQApDe_f!#spF+WCm;x$a1k8L=#Wx~g!G&N$H<{kJcutr zaf3K9ii|8UOA1y&$hkovNFlmWbQT1`bVj5^q4*fv_Hf1luASN4_jcaf-|zk2D~M8s z*;u_`g%GmA;UUrDwl{1G6LFRtdryIoDT<0vhYFX^Z9aE#;c>%aj8RGnApn3emL!QG zL=hqg0YVrdNn{y4F@`8bgdhNfF_Qi-h#^K1C5Qk5jIbnrGDS;Dh!O7I0aSCD5HcDAbUl3-!Eh8ZE80wb7;&S34kgiKO!NRaxKo+Y}@!k8`2 zXecK3U~zJ|N>2Rxb{ z&y4Gn{Vb03ellKlMOUMm9{Or>pup?;30*^~WqiAxIvRa) zvfPV~yPbAS4Lq^hy?<&&Y5b<&ha#eX{n_NR6`Fimv)ob}8@p7$=T33DLfaV~8s?8` z#ycDSILq|Ucc9>h+x8c=BwX&+mE@P0Yoxrk+OGqGw8PVV)|v9sk*mduu=|_38;5*U z2VI|&+h7mZ&4Ec>d(AI4XwoL_UXt9-Ra~=NCl9)3zVCEo(Xq4~dppl`+nf)hlE)s_ z`}Rg$IIE2H?rr^GBCGxI^&L)X`RG)@pZ62)eSS*g={hi*;c@3tUFk~2KJCiU^{HDc zCMM!!<>6sly6VeI_dZGu_8Yud_@$LnyNV^2o>~3V^vuXecHWy6pPEiN=mTEf*wI#- z*Td0Ea&vT_);<7W< zEmQvvhRWU7?d}U`kN#)(q+eLRZdZegUG~l6dj|TOdSVLo_N}tazdzdg&MLRD=03A* z2buF4kJrs+{kOgCmzv!E#bCq|DK{eXP@v~+%U9L!HdZZ<++365xctXATy`9AN$-pt z+>n?gYvpks?HkKu9uz1dj&9E=tV^#O)Y$kphSZMTeJnYJ`a1ZQ>{82>Ef*e8v&yE( zyp*@r_BWpk&bS%yVwQK_x+^1h*MA&bu8FGk%d0lM6(0YMw|cmuB=v~>to1W>@WYz8 R%3loAheK5%-v=jX{sUh=u#x}( literal 0 HcmV?d00001 diff --git a/seastonebrick/textures/seastonebrick_seastonebrick_cyan.png b/seastonebrick/textures/seastonebrick_seastonebrick_cyan.png new file mode 100644 index 0000000000000000000000000000000000000000..eb96eb388adb2b41afdbc49fffd8a7b01d18f444 GIT binary patch literal 1387 zcmZuveM}Wp6h8vVmn85Ik@ZK;3n4SaA{1m2@*Z$gkOxSF;pl+`lcR+}=KNTa5c&pq zaHPI;F%2aZaJkED<-!5uL11WGbGJpP4Vg`4*wj9}-G`e4UU$3qo^yB3{r%4GoSO8s zWFN0!F97i2DaH(a`#QFVi$3cQ7DofPLi*Y)lXlhQR+E>~o^mWHr4WLM5Rr4v7?S`3 zfB+DH12CQC^duz+0YrcZoCEv6APG`{ARq+fz?uHZDa{#P2_cCDB5{t4DI$p|I45l* zO3sBgIG6g=RFxD`kRT-F$Qfrs36g{YIdO)J6rn^eI3tD%xzrJiE6yhKrJRArg_sJ6 zM9(m_K2Kpa7YDM&cNR}6Atec+6FH)eASqD@PNZ#=Qva_FE~P%1a$>K9k|YHR;)I$n zDTz{WLAnl9l1riM<4Wqf9of^tv@%oiw1Cebb#tGhYAPCd65dHUn68|5r^Vfyo(KgC;sfZa^VtWN;D+NpjRZAYeGXT*r)%5-5oa-8l}Z>zqCf9H#e2lLSd1 z5OlZ#A%O%S>9G|GNNNh8fhO0La2GcKmr!m@$O^lXN_kta=0noD_@I4_yI*&o6KjZ` zUtq1tG(2?ucKlaw!@qSqn)VbPF&9u}TN z)8U=g$JU~TFiYT%_ZphlhI(}V2K_zQaww$ns4L1Eco#3 zqdjHaMF)IKm*<3jRJ&>9&#{NaK}NsMtdRlFR9jR??NIrRkYmxkXS0K1OZsjv5BtgI zuU&sM?#~^0u=38l)-@NpaH1gP_|RBc;PAwVZ^ytRy7bccWABpMC5ybW7MQ>2-T8Ol z7F%IzTk^#(N6!x@x0wUNp9HiNMp@>?Z}0Q(Pq=nJE_~&ud+k0a{L1r^%-37q-}%GW zr=o11ENrehnSQRGy`9&1LY;)2^4k zC*xu=w(q)pZrvHXWw32qqhH6WJ*|Gvk@aSK=B8uqqvwB4%*fgpH)`p+|9SB&|Hgr& z7v0=ln`e~_R`kaeeWKjsz!cE*>e1WUGiJLA48id}J{liqpj-P2k}+N(5|$*dg>Zq1MFfW+|4rw!e@B2&@Ht?>c>mbd;LWMdq4_~gLA z`GJO`H($4Rt@|Tyx6!LUCZ1>Q%ztab(SyvnUGFD`cUIpw_eAXbVches`}d1C9?SDi z+&*^v$i*73#6_uxHdN`yy?2+__}A^ae0%B8)62rv#7AvgcWL>-*o8HZ47;1FFQ*TN z-#DdDN&OU(*Ej{6FC6zxfAftyefirXRvL^SyF?$k{`~0gm6`RD2emrefI)a!Sp zF+0Wosn60f&R#WBnVsR*s(+lSLrSxpy(5RW9S-X%e%CH%t$*Xn-hHM}&)TuHV7+@! zahjpF|HK)c(+%I0EpExlI(IbL$ge5J*C^vTGri%m%@Li$|q6%H*J{B>ea)#`TuuN*&jNuDOuP0sFSJugI}^k`zl9t#?;vMDt))- zpKhlzv+W%V0z!PsY|n&`-N^~t*)`>Hwxl_R$1X2jI$GV{^KwGWUoV~CyT{KmNe~uo JXbIVp{~sZslz9LE literal 0 HcmV?d00001 diff --git a/seastonebrick/textures/seastonebrick_seastonebrick_magenta.png b/seastonebrick/textures/seastonebrick_seastonebrick_magenta.png new file mode 100644 index 0000000000000000000000000000000000000000..8566101270ce04493f5192cb645d0068a3c3def9 GIT binary patch literal 1507 zcmZux3s99s6ke{_6x1_nq&Y{r9a2 zSz&AKVoeCKr7LxzanGtQ79AW)zRRhVGN5g1UU3MeQLI8a6vR6qdb(nFzwD#P)d zk3pl1jRXY57no9?=dhBC8Cl|w7f%SrIWi^#DS-4q&VezCC~e?e-Y*Txxm*=7j=f-l zBWJ*nB1pa{IB-T8$~-`D%9+fM3NG_DM~?=R%8bO50=|Hh#eI${sYu{q_;JdS(aOo= z$W+Wl7RWdtqkswpqVO?V6G?Q0+yodO6G4#)Ku$r{0Eq&l(>3=93I-f0la-?cWS*nD zfs)bnkt7L6!hlG3K^P~<2%v0RCJ1s#fk>d?(crF{NQkP4>H@e#eNDE_FB=LPze{*(e;HTSqbAv; zHf0nnj=fkpcg6MD2K~1cHz${^HEFZY_qeIy7yjhSSx)x7Od*9I?4tuFgw%+iD6|2KuesXZhDo-QnFm=SG`v z(n7sygWZuJtxZbt$Ic1MrxzXfK2ZG1(YH1nb}&|^?fH9#YfNrt*Y$%>H`nMhEHXTI z9h|#l=jGOXt(z_;z4Yop;v$csoVx>Fo;=uLpMJq4zovb`XCAGd@?(qE*1jUfbgp>j zs;=+5(;hpxSP7l~7TtZH@|hT<&GsqH>yCBZn}rdj&h1^R=3AxDZSwH?DD_U1PgH)+ zOAfl7E&4CQmYrQT*jIP|#2(*ki~9oY>WgGMea+hb)$<1LFh0EXA|L`Bzf|Ng# zBAK(Z@pR{f%=D^HU!68ZwZngPxzk0bO{ML>-5Ly;*X->TzU`DvZswf_5l0i@dVFDj z=PB3_U^%i zt~YvIujpGeO8%K&)HQwcqMk%<{o_La*YywMj6a<)i;&yuI#D SR@>J3=9Z=U5M7BjI`cmk)5fI$ literal 0 HcmV?d00001 diff --git a/seastonebrick/textures/seastonebrick_seastonebrick_redviolet.png b/seastonebrick/textures/seastonebrick_seastonebrick_redviolet.png new file mode 100644 index 0000000000000000000000000000000000000000..80d45a094996421f8a676800fe893266831ac689 GIT binary patch literal 1339 zcmZuve@xX?6hETV2Z#{@ffO~oHDX$*=4ocsBl&pDPe zCo3#uRtNxuVYVaB+~NLh3o>V|x8xCk$>4m-m0?^xy7lO#ji>!fDJ7+3W+FmFA%p^u z01Q9?2p~*Wz>`uSB`^aKAcFY6AO%W-WMBe9Kw*9gNDGA5QYvOi#E2w>W>!QJk&R8H z5T!8?l{pPnt)!AHnV67JppaU!Vv>Z6f&^p%)mZTV^=^O%?I>%1~!ub9elAstQfeF_j z6|e+iGqzF#D?-?(fh?~{ppa=SJf3?(={+Hu6f((GnwCH z4yR{th}?Co!ui|nkyBc;yo}-}rCi z-@YR)sb^>GaYj93E!k{y`z|D(=xi#x@btEriuW4|K2A#V3=J*lu!g-YTNhX->-YN# z@5%A?+uL`QZRe@StTUkxdiS1+|FW14d7SxK&0V)m?`hij%Rk+ikmYmCNi4lO`Lla- zYeR;Ev);AMZ|E3Ynh@36qCQza&vWhT_EiI^g_%=bu9^8b-@d=@s;8pidRjq3Sh4j- zS#{?Ri(2k#YyNq7?$QIxCQX|W5ocF%=sx{kZ)5g%{&`w7wqdnmrPnaeUKm|0rNaj-zc+(cAw4?YMD7 literal 0 HcmV?d00001 diff --git a/seastonebrick/textures/seastonebrick_seastonebrick_skyblue.png b/seastonebrick/textures/seastonebrick_seastonebrick_skyblue.png new file mode 100644 index 0000000000000000000000000000000000000000..653592ba575831238ea68ac3a73db552bd063d41 GIT binary patch literal 1509 zcmZuv3s99s6h43lqf`Df+0uBC_$o71qD)02_p(BR8YcYghB*S2J<-|fkqe` z3P=&3VM=|T!b&a%WQjjoJRun8$e2tdl*$O?oH9lbrA;}P|4V~#E>A^_VlSBB$Qflw zkV?KNIOU8mlyy+S31_lCBDk#EkUbnsDl-&M3iu3CHuov2q#}U_;YTS4!n&ugg0Wi)de%@+_Ca)`v?_CQ7h-k|5aAvg! zuDK12A22#(o?f5oo0`5%SE=d!?rM9FdyoCAt(_I-)~g`EDnH1<2#=8&t8}-gq;1}s zSo)WdYya%zfxfWsEvIje-?1)JQ|RJidiZd)Pas5ubxoO{_4vZVxbWyLR@z_6OZGq1 zyH&U?HHFLib2%Y_jz8Fn#}2%Gzq}-|q&Wxm9jvRCB4y zJ6}DccDDVC+Hb$<4>J30rT66V|K4A-R;6Fqd}QpdnZek0(RYKYEfO2w=9YGg?Tb1O zT`{w;d^1Zk&TGNZ?e`L*&o95Rt-#u6R_#0GpXBb(>+sr_@yN!)v?!%^_qqj{o$+to zbv&`;K*P$iDE-+3rW3n29AR-K=Zn5F!tr~1tfEs(VpL7K#Cr)A#T7zmX)`*RPn= zYB$lb;1$j;IVH9)KIZU&sw#QswgmTvSg*W3mg}>{cBwX@!em+Blh~g+uWOF;$#<3r z>!_SXJ-=$5vQ_>GNlE%YR!pDsQLKk;Kt height_max then + return + end + local y_min = math.max(minp.y, height_min) + local y_max = math.min(maxp.y, height_max) + if chunk_size >= y_max - y_min + 1 then + return + end + local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1) + local pr = PseudoRandom(seed) + local num_chunks = math.floor(chunks_per_volume * volume) + local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk) + for i=1,num_chunks do + local y0 = pr:next(y_min, y_max-chunk_size+1) + if y0 >= height_min and y0 <= height_max then + local x0 = pr:next(minp.x, maxp.x-chunk_size+1) + local z0 = pr:next(minp.z, maxp.z-chunk_size+1) + local p0 = {x=x0, y=y0, z=z0} + for x1=0,chunk_size-1 do + for y1=0,chunk_size-1 do + for z1=0,chunk_size-1 do + if pr:next(1,inverse_chance) == 1 then + local x2 = x0+x1 + local y2 = y0+y1 + local z2 = z0+z1 + local p2 = {x=x2, y=y2, z=z2} + if minetest.get_node(p2).name == wherein then + minetest.set_node(p2, {name=name}) + end + end + end + end + end + end + end +end + + +-- ABM'S + + +minetest.register_abm({ +nodenames = {"seawrecks:woodship"}, +interval = 1, +chance = 1, +action = function(pos, node, active_object_count, active_object_count_wider) +local yp = {x = pos.x, y = pos.y + 3, z = pos.z} + if minetest.get_node(pos).name == "seawrecks:woodship" and + (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + minetest.add_node(pos, {name = "default:sand"}) + + pos.y = pos.y + 1 + pos.x = pos.x - 6 + + for a = 1, 11 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:tree"}) + end + + pos.z = pos.z + 1 + pos.x = pos.x - 10 + + for a = 1, 9 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:tree"}) + end + + pos.z = pos.z - 2 + pos.x = pos.x - 9 + + for a = 1, 9 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:tree"}) + end + + + pos.y = pos.y + 1 + pos.x = pos.x - 8 + pos.z = pos.z - 1 + + for a = 1, 7 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:tree"}) + end + + pos.z = pos.z + 4 + pos.x = pos.x - 7 + + for a = 1, 7 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:tree"}) + end + + pos.z = pos.z - 1 + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:wood"}) + + pos.z = pos.z - 1 + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:wood"}) + + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:tree"}) + + pos.z = pos.z - 1 + pos.x = pos.x - 2 + minetest.add_node(pos, {name = "default:tree"}) + + pos.z = pos.z + 2 + pos.x = pos.x - 8 + minetest.add_node(pos, {name = "default:tree"}) + + pos.z = pos.z - 1 + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:tree"}) + + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:tree"}) + + pos.z = pos.z - 1 + pos.x = pos.x + 2 + minetest.add_node(pos, {name = "default:tree"}) + + + pos.y = pos.y + 1 + pos.z = pos.z - 1 + + for a = 1, 7 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:wood"}) + end + + pos.z = pos.z + 4 + pos.x = pos.x - 7 + + for a = 1, 7 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:wood"}) + end + + pos.z = pos.z - 1 + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:wood"}) + + pos.z = pos.z - 1 + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:wood"}) + + pos.z = pos.z - 1 + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:wood"}) + + pos.z = pos.z + 2 + pos.x = pos.x - 8 + minetest.add_node(pos, {name = "default:wood"}) + + pos.z = pos.z - 1 + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:wood"}) + + for a = 1, 3 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:wood"}) + end + + pos.z = pos.z - 1 + pos.x = pos.x + 4 + minetest.add_node(pos, {name = "default:wood"}) + + pos.z = pos.z + 1 + pos.x = pos.x + 3 + minetest.add_node(pos, {name = "default:wood"}) + + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "default:wood"}) + + pos.y = pos.y - 2 + minetest.add_node(pos, {name = "default:wood"}) + + pos.y = pos.y + 3 + pos.z = pos.z - 4 + + for a = 1, 7 do + pos.z = pos.z + 1 + minetest.add_node(pos, {name = "default:wood"}) + end + + pos.z = pos.z - 3 + + for a = 1, 2 do + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "default:wood"}) + end + + pos.y = pos.y + 1 + pos.z = pos.z - 3 + + for a = 1, 5 do + pos.z = pos.z + 1 + minetest.add_node(pos, {name = "default:wood"}) + end + + pos.y = pos.y + 1 + pos.z = pos.z - 2 + minetest.add_node(pos, {name = "default:wood"}) + + pos.y = pos.y - 7 + pos.z = pos.z + 1 + pos.x = pos.x - 2 + minetest.add_node(pos, {name = "seawrecks:woodshipchest"}) + + else + return + end +end +}) + +minetest.register_abm({ +nodenames = {"seawrecks:uboot"}, +interval = 1, +chance = 1, +action = function(pos, node, active_object_count, active_object_count_wider) +local yp = {x = pos.x, y = pos.y + 8, z = pos.z} + if minetest.get_node(pos).name == "seawrecks:uboot" and + (minetest.get_node(yp).name == "default:water_source" or + minetest.get_node(yp).name == "noairblocks:water_sourcex") then + minetest.add_node(pos, {name = "default:dirt"}) + + pos.y = pos.y + 1 + pos.x = pos.x - 15 + + for a = 1, 31 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z + 1 + pos.x = pos.x + 1 + + for a = 1, 31 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z + 1 + pos.x = pos.x +1 + + for a = 1, 27 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z - 3 + pos.x = pos.x + 1 + + for a = 1, 27 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z - 1 + pos.x = pos.x + 2 + + for a = 1, 21 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z + 5 + pos.x = pos.x + 1 + + for a = 1, 21 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.y = pos.y + 1 + pos.z = pos.z + 1 + pos.x = pos.x - 1 + + for a = 1, 21 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z - 7 + pos.x = pos.x + 1 + + for a = 1, 21 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z + 1 + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x + 24 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.z = pos.z + 5 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x - 22 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.z = pos.z - 1 + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x + 29 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.z = pos.z - 3 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x - 28 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.z = pos.z + 1 + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x + 32 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.z = pos.z + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x - 32 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.y = pos.y + 1 + minetest.add_node(pos, {name = "default:steelblock"}) + + pos.x = pos.x + 32 + minetest.add_node(pos, {name = "default:steelblock"}) + + pos.z = pos.z - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + + pos.x = pos.x - 32 + minetest.add_node(pos, {name = "default:steelblock"}) + + pos.z = pos.z - 1 + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:steelblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:steelblock"}) + + pos.x = pos.x + 28 + minetest.add_node(pos, {name = "default:steelblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:steelblock"}) + + pos.z = pos.z + 3 + minetest.add_node(pos, {name = "default:steelblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + + pos.x = pos.x - 28 + minetest.add_node(pos, {name = "default:steelblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + + pos.z = pos.z + 1 + pos.x = pos.x + 2 + minetest.add_node(pos, {name = "default:steelblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:obsidian_glass"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:steelblock"}) + + pos.x = pos.x + 22 + minetest.add_node(pos, {name = "default:steelblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:obsidian_glass"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:steelblock"}) + + pos.z = pos.z + 1 + pos.x = pos.x - 2 + for a = 1, 3 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:obsidian_glass"}) + + for a = 1, 3 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:obsidian_glass"}) + + for a = 1, 3 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:obsidian_glass"}) + + for a = 1, 9 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.z = pos.z - 6 + pos.x = pos.x - 3 + minetest.add_node(pos, {name = "default:steelblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:obsidian_glass"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:steelblock"}) + + pos.x = pos.x + 22 + minetest.add_node(pos, {name = "default:steelblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:obsidian_glass"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:steelblock"}) + + pos.z = pos.z - 1 + pos.x = pos.x - 2 + + for a = 1, 3 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:obsidian_glass"}) + + for a = 1, 3 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:obsidian_glass"}) + + for a = 1, 3 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:obsidian_glass"}) + + for a = 1, 9 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.y = pos.y + 1 + pos.z = pos.z + 7 + pos.x = pos.x - 1 + for a = 1, 21 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z - 7 + pos.x = pos.x + 1 + + for a = 1, 21 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z + 1 + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x + 24 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.z = pos.z + 5 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x - 22 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.z = pos.z - 1 + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x + 29 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.z = pos.z - 3 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x - 28 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.z = pos.z + 1 + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x + 32 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.z = pos.z + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x - 32 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.y = pos.y + 1 + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x + 28 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.z = pos.z - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x - 28 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.z = pos.z - 1 + pos.x = pos.x + 2 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x + 22 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.z = pos.z + 3 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.x = pos.x - 22 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + + pos.z = pos.z + 1 + pos.x = pos.x + 2 + for a = 1, 21 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z - 5 + pos.x = pos.x + 1 + for a = 1, 21 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.y = pos.y + 1 + pos.z = pos.z + 2 + pos.x = pos.x - 4 + for a = 1, 3 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.x = pos.x + 21 + for a = 1, 3 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z + 1 + pos.x = pos.x + 1 + for a = 1, 3 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.x = pos.x - 21 + for a = 1, 3 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z + 2 + pos.x = pos.x + 3 + for a = 1, 4 do + pos.z = pos.z - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z - 1 + pos.x = pos.x + 1 + for a = 1, 4 do + pos.z = pos.z + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.x = pos.x + 6 + for a = 1, 13 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z - 3 + pos.x = pos.x + 1 + for a = 1, 13 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:copperblock"}) + end + + pos.z = pos.z + 1 + pos.x = pos.x - 1 + for a = 1, 13 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:bronzeblock"}) + end + + pos.z = pos.z + 1 + pos.x = pos.x + 1 + for a = 1, 13 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:bronzeblock"}) + end + + pos.z = pos.z - 3 + for a = 1, 6 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.z = pos.z + 5 + pos.x = pos.x - 1 + for a = 1, 6 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.y = pos.y + 1 + for a = 1, 4 do + pos.z = pos.z - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.x = pos.x - 5 + pos.z = pos.z - 1 + for a = 1, 4 do + pos.z = pos.z + 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + for a = 1, 4 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.x = pos.x + 1 + pos.z = pos.z - 3 + for a = 1, 4 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.y = pos.y + 1 + pos.x = pos.x - 1 + pos.z = pos.z - 1 + for a = 1, 4 do + pos.z = pos.z + 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.x = pos.x + 5 + pos.z = pos.z + 1 + for a = 1, 4 do + pos.z = pos.z - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + for a = 1, 4 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.x = pos.x - 1 + pos.z = pos.z + 3 + for a = 1, 4 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.y = pos.y + 1 + pos.x = pos.x - 1 + pos.z = pos.z - 1 + for a = 1, 2 do + pos.x = pos.x - 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.x = pos.x - 1 + pos.z = pos.z - 1 + for a = 1, 2 do + pos.x = pos.x + 1 + minetest.add_node(pos, {name = "default:steelblock"}) + end + + pos.y = pos.y - 7 + pos.x = pos.x +16 + pos.z = pos.z +3 + minetest.add_node(pos, {name = "seawrecks:ubootchest"}) + + else + return + end +end +}) \ No newline at end of file diff --git a/seawrecks/readme.txt b/seawrecks/readme.txt new file mode 100644 index 0000000..30fb390 --- /dev/null +++ b/seawrecks/readme.txt @@ -0,0 +1,42 @@ +Sounds: +sounds = default.node_sound_sand_defaults(), +sounds = default.node_sound_stone_defaults(), +sounds = default.node_sound_wood_defaults(), +sounds = default.node_sound_glass_defaults(), + +Copyright (C) 2010-2012 celeron55, Perttu Ahola + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +http://creativecommons.org/licenses/by-sa/3.0/ + + +.png's: +default_sand.png +VanessaE (WTFPL) + +default_dirt.png +default_tree.png +default_chest_front.png +default_chest_side.png +default_chest_top.png +Cisoun's WTFPL texture pack + +default_wood.png +Originating from G4JC's Almost MC Texture Pack + +default_steel_block.png +default_copper_block.png +default_bronze_block.png +Zeg9 (CC BY-SA 3.0) + +default_obsidian_glass.png +PilzAdam (WTFPL) + + +Code: +minetest/games/minetest_game/mods/default/mapgen.lua --> ore generation + +Copyright (C) 2011-2012 celeron55, Perttu Ahola +GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. \ No newline at end of file diff --git a/stairsshine/README.txt b/stairsshine/README.txt new file mode 100644 index 0000000..19d4c45 --- /dev/null +++ b/stairsshine/README.txt @@ -0,0 +1,33 @@ +This mod (stairsshine) is the stairs mod with 'light_source = 14' for stairs and slabs +and without the 'stairs.register_stair_and_slab' code for some default nodes. + +So credits to Kahrl and celeron55. + +README.txt of the stairs-mod: + +Minetest 0.4 mod: stairs +========================= + +License of source code: +----------------------- +Copyright (C) 2011-2012 Kahrl +Copyright (C) 2011-2012 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +http://www.gnu.org/licenses/lgpl-2.1.html + +License of media (textures and sounds) +-------------------------------------- +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +http://creativecommons.org/licenses/by-sa/3.0/ + +Authors of media files +----------------------- +Everything not listed in here: +Copyright (C) 2010-2012 celeron55, Perttu Ahola + + diff --git a/stairsshine/depends.txt b/stairsshine/depends.txt new file mode 100644 index 0000000..331d858 --- /dev/null +++ b/stairsshine/depends.txt @@ -0,0 +1 @@ +default \ No newline at end of file diff --git a/stairsshine/init.lua b/stairsshine/init.lua new file mode 100644 index 0000000..2be8bbf --- /dev/null +++ b/stairsshine/init.lua @@ -0,0 +1,219 @@ +-- A slightly modified stairs mod to make stairs able to shine a light +-- Includes also original text and README.txt +-- Credits to Kahrl and celeron55 + +-- Minetest 0.4 mod: stairs +-- See README.txt for licensing and other information. + +stairsshine = {} + +-- Node will be called stairsshine:stair_ +function stairsshine.register_stair(subname, recipeitem, groups, images, description, sounds) + minetest.register_node(":stairsshine:stair_" .. subname, { + description = description, + drawtype = "nodebox", + tiles = images, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + light_source = 14, -- (modification) + groups = groups, + sounds = sounds, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.5, 0.5}, + }, + }, + on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + + local p0 = pointed_thing.under + local p1 = pointed_thing.above + local param2 = 0 + + local placer_pos = placer:getpos() + if placer_pos then + local dir = { + x = p1.x - placer_pos.x, + y = p1.y - placer_pos.y, + z = p1.z - placer_pos.z + } + param2 = minetest.dir_to_facedir(dir) + end + + if p0.y-1 == p1.y then + param2 = param2 + 20 + if param2 == 21 then + param2 = 23 + elseif param2 == 23 then + param2 = 21 + end + end + + return minetest.item_place(itemstack, placer, pointed_thing, param2) + end, + }) + + -- for replace ABM + minetest.register_node(":stairsshine:stair_" .. subname.."upside_down", { + replace_name = "stairsshine:stair_" .. subname, + groups = {slabs_replace=1}, + }) + + minetest.register_craft({ + output = 'stairsshine:stair_' .. subname .. ' 4', + recipe = { + {recipeitem, "", ""}, + {recipeitem, recipeitem, ""}, + {recipeitem, recipeitem, recipeitem}, + }, + }) + + -- Flipped recipe for the silly minecrafters + minetest.register_craft({ + output = 'stairsshine:stair_' .. subname .. ' 4', + recipe = { + {"", "", recipeitem}, + {"", recipeitem, recipeitem}, + {recipeitem, recipeitem, recipeitem}, + }, + }) +end + +-- Node will be called stairsshine:slab_ +function stairsshine.register_slab(subname, recipeitem, groups, images, description, sounds) + minetest.register_node(":stairsshine:slab_" .. subname, { + description = description, + drawtype = "nodebox", + tiles = images, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = true, + light_source = 14, -- (modification) + groups = groups, + sounds = sounds, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + + -- If it's being placed on an another similar one, replace it with + -- a full block + local slabpos = nil + local slabnode = nil + local p0 = pointed_thing.under + local p1 = pointed_thing.above + local n0 = minetest.get_node(p0) + local n1 = minetest.get_node(p1) + local param2 = 0 + + local n0_is_upside_down = (n0.name == "stairsshine:slab_" .. subname and + n0.param2 >= 20) + + if n0.name == "stairsshine:slab_" .. subname and not n0_is_upside_down and p0.y+1 == p1.y then + slabpos = p0 + slabnode = n0 + elseif n1.name == "stairsshine:slab_" .. subname then + slabpos = p1 + slabnode = n1 + end + if slabpos then + -- Remove the slab at slabpos + minetest.remove_node(slabpos) + -- Make a fake stack of a single item and try to place it + local fakestack = ItemStack(recipeitem) + fakestack:set_count(itemstack:get_count()) + + pointed_thing.above = slabpos + local success + fakestack, success = minetest.item_place(fakestack, placer, pointed_thing) + -- If the item was taken from the fake stack, decrement original + if success then + itemstack:set_count(fakestack:get_count()) + -- Else put old node back + else + minetest.set_node(slabpos, slabnode) + end + return itemstack + end + + -- Upside down slabs + if p0.y-1 == p1.y then + -- Turn into full block if pointing at a existing slab + if n0_is_upside_down then + -- Remove the slab at the position of the slab + minetest.remove_node(p0) + -- Make a fake stack of a single item and try to place it + local fakestack = ItemStack(recipeitem) + fakestack:set_count(itemstack:get_count()) + + pointed_thing.above = p0 + local success + fakestack, success = minetest.item_place(fakestack, placer, pointed_thing) + -- If the item was taken from the fake stack, decrement original + if success then + itemstack:set_count(fakestack:get_count()) + -- Else put old node back + else + minetest.set_node(p0, n0) + end + return itemstack + end + + -- Place upside down slab + param2 = 20 + end + + -- If pointing at the side of a upside down slab + if n0_is_upside_down and p0.y+1 ~= p1.y then + param2 = 20 + end + + return minetest.item_place(itemstack, placer, pointed_thing, param2) + end, + }) + + -- for replace ABM + minetest.register_node(":stairsshine:slab_" .. subname.."upside_down", { + replace_name = "stairsshine:slab_"..subname, + groups = {slabs_replace=1}, + }) + + minetest.register_craft({ + output = 'stairsshine:slab_' .. subname .. ' 6', + recipe = { + {recipeitem, recipeitem, recipeitem}, + }, + }) +end + +-- Replace old "upside_down" nodes with new param2 versions +minetest.register_abm({ + nodenames = {"group:slabs_replace"}, + interval = 1, + chance = 1, + action = function(pos, node) + node.name = minetest.registered_nodes[node.name].replace_name + node.param2 = node.param2 + 20 + if node.param2 == 21 then + node.param2 = 23 + elseif node.param2 == 23 then + node.param2 = 21 + end + minetest.set_node(pos, node) + end, +}) + +-- Nodes will be called stairsshine:{stair,slab}_ +function stairsshine.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab, sounds) + stairsshine.register_stair(subname, recipeitem, groups, images, desc_stair, sounds) + stairsshine.register_slab(subname, recipeitem, groups, images, desc_slab, sounds) +end \ No newline at end of file diff --git a/whiteshell/depends.txt b/whiteshell/depends.txt new file mode 100644 index 0000000..ff483ca --- /dev/null +++ b/whiteshell/depends.txt @@ -0,0 +1,2 @@ +default +clams \ No newline at end of file diff --git a/whiteshell/init.lua b/whiteshell/init.lua new file mode 100644 index 0000000..ffc10ac --- /dev/null +++ b/whiteshell/init.lua @@ -0,0 +1,82 @@ +-- NODES + + +minetest.register_node("whiteshell:whiteshell", { + description = "White shell", + drawtype = "normal", +-- tiles = {"default_desert_sand.png^clams_crushedwhite.png"}, + tiles = {"default_desert_sand.png"}, + is_ground_content = true, + groups = {sand=1, crumbly=3, falling_node=1, sand=1, not_in_creative_inventory=1}, + drop = { + max_items = 2, + items = { + { + items = {'clams:crushedwhite'}, + }, + { + items = {'default:desert_sand'}, + } + } + }, + sounds = default.node_sound_sand_defaults(), +}) + +-- WHITESHELL GENERATION + + +minetest.register_ore({ + ore_type = "scatter", + ore = "whiteshell:whiteshell", + wherein = "default:desert_sand", + clust_scarcity = 10*10*10, + clust_num_ores = 18, + clust_size = 6, + height_max = 31000, + height_min = -31000, +}) + + +local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, height_min, height_max) + if maxp.y < height_min or minp.y > height_max then + return + end + local y_min = math.max(minp.y, height_min) + local y_max = math.min(maxp.y, height_max) + if chunk_size >= y_max - y_min + 1 then + return + end + local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1) + local pr = PseudoRandom(seed) + local num_chunks = math.floor(chunks_per_volume * volume) + local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk) + for i=1,num_chunks do + local y0 = pr:next(y_min, y_max-chunk_size+1) + if y0 >= height_min and y0 <= height_max then + local x0 = pr:next(minp.x, maxp.x-chunk_size+1) + local z0 = pr:next(minp.z, maxp.z-chunk_size+1) + local p0 = {x=x0, y=y0, z=z0} + for x1=0,chunk_size-1 do + for y1=0,chunk_size-1 do + for z1=0,chunk_size-1 do + if pr:next(1,inverse_chance) == 1 then + local x2 = x0+x1 + local y2 = y0+y1 + local z2 = z0+z1 + local p2 = {x=x2, y=y2, z=z2} + if minetest.get_node(p2).name == wherein then + minetest.set_node(p2, {name=name}) + end + end + end + end + end + end + end +end + + +-- ALIASES + + +minetest.register_alias("clams:whiteshell","whiteshell:whiteshell") diff --git a/whiteshell/readme.txt b/whiteshell/readme.txt new file mode 100644 index 0000000..ec91671 --- /dev/null +++ b/whiteshell/readme.txt @@ -0,0 +1,16 @@ +Sounds: +sounds = default.node_sound_sand_defaults() + +Mito551 (sounds) (CC BY-SA): + +.png's: +default_desert_sand.png +VanessaE (WTFPL) + +Code: +minetest/games/minetest_game/mods/default/mapgen.lua --> ore generation + +Copyright (C) 2011-2012 celeron55, Perttu Ahola +GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. \ No newline at end of file