diff --git a/mods/hud/API.txt b/mods/hud/API.txt deleted file mode 100644 index caeaf90a..00000000 --- a/mods/hud/API.txt +++ /dev/null @@ -1,33 +0,0 @@ -function hud.register(name, def) - -- name: statbar name (health, air, hunger, armor already used by default) - -- def: (see below) - -hud.change_item(player, name, def) - -- player: player object - -- name: statbar name (health, air, hunger, armor already used by default) - -- def: table containing new values - -- currently supported: number, text and offset - -hud.remove_item(player, name) - -HUD item definition -{ - hud_elem_type = "statbar", -- currently only supported type (same as in lua-api.txt) - position = {x=, y=}, -- position of statbar (same as in lua-api.txt) - size = {x=24, y=24}, -- statbar texture size (default 24x24), needed to be scaled correctly - text = "hud_heart_fg.png", -- texture name (same as in lua-api.txt) - number = 20, -- number/2 = number of full textures(e.g. hearts) - max = 20, -- used to prevent "overflow" of statbars - alignment = {x=-1,y=-1}, -- alignment on screen (same as in lua-api.txt) - offset = HUD_HEALTH_OFFSET, - background = "hud_heart_bg.png", -- statbar background texture name - autohide_bg = false, -- hide statbar background textures when number = 0 - events = { -- called on events "damage" and "breath_changed" of players - { - type = "damage", - func = function(player) - -- do something here - end - } - }, -} diff --git a/mods/hud/LICENSE.txt b/mods/hud/LICENSE.txt deleted file mode 100644 index 4362b491..00000000 --- a/mods/hud/LICENSE.txt +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -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 this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser 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 Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "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 -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY 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 -LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey 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 library 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. - - This library 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 library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/mods/hud/README.txt b/mods/hud/README.txt old mode 100644 new mode 100755 index 0b08a3d9..4a9474d1 --- a/mods/hud/README.txt +++ b/mods/hud/README.txt @@ -1,47 +1,74 @@ Minetest mod "Better HUD" ========================= -Version: 2.0 +Version: 1.4 -(c) Copyright BlockMen (2013-2015) - - -About this mod: -~~~~~~~~~~~~~~~ -This mod improves the HUD of Minetest and adds (hidden by default) statbars for Hunger and Armor. -Also it provides an API to add new statbars easily, see API.txt for more informations. - -Changes in builtin HUD items: -- Adds background for Health bar -- Uses better textures for Hotbar -- Uses texture for crosshair -- Positions of builtin statbars can be changed via "hud.conf" file - -This mod gets provided as Modpack aswell, which includes the hunger mod (https://github.com/BlockMen/hunger) -More information concerning the hunger mechanics can be get there. - -This mod supports the 3d_armor mod by stu (https://github.com/stujones11/minetest-3d_armor) +License of source code: WTFPL +----------------------------- +(c) Copyright BlockMen (2013-2014) -License: -~~~~~~~~ -(c) Copyright BlockMen (2013-2015) +Using the mod: +-------------- +This mod changes the HUD of Minetest. +It improves the apperance of the health and breath bar and adds a more fancy hotbar. Furthermore it adds a +custom crosshair, an armor bar (only for 3darmor mod) and a hunger bar. It includes also a mechanic for hunger. + +You can create a "hud.conf" file to customize the positions of health, hunger, armor and breath bar. Take a look at "hud.conf.example" to get more infos. -Code: -Licensed under the GNU LGPL version 2.1 or higher. -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; - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -See LICENSE.txt and http://www.gnu.org/licenses/lgpl-2.1.txt +!!IMPORTANT !!: +Keep in mind if running a server with this mod, that the custom position should be displayed correct on every screen size!! -Textures: +=Hunger= +======== +This mod adds a hunger mechanic to the game. Player actions like digging, placing and walking causes exhausion, +that lowers players saturation. Also every 800 seconds you lose 1 saturation point without doing anything. +If you are hungry (empty hunger bar) you will get damage and die in case you don't eat something. + + +Notice: +------- +You can disable this by setting "HUD_HUNGER_ENABLE = false" in "hud.conf", or "hud_hunger_enable = false" in minetest.conf. +In case of conflict hud.conf configuration is dominant. + + +Currently supported food: +------------------------- +- Apples (default) +- Animalmaterials (mobf modpack) +- Bread (default) +- Bushes +- bushes_classic +- Creatures +- Dwarves (beer and such) +- Docfarming +- Fishing +- Farming plus +- Farming (default and Tenplus1's fork) +- Food +- fruit +- Glooptest +- JKMod +- kpgmobs +- Mobfcooking +- Mooretrees +- Mtfoods +- mushroom +- mush45 +- Seaplants (sea) +- Simple mobs + +Example: 1 apple fills up the hunger bar by 1 bread, 1 bread (from farming) 2 breads in bar. + +Although it show 20 hunger points (10 breads) in hunger bar, +you can fill it up to 30 points.(5 breads not shown then) + + + +License of textures: +-------------------- hud_heart_fg.png - celeron55 (CC BY-SA 3.0), modified by BlockMen hud_heart_bg.png - celeron55 (CC BY-SA 3.0), modified by BlockMen hud_hunger_fg.png - PilzAdam (WTFPL), modified by BlockMen @@ -51,16 +78,11 @@ hud_air_fg.png - kaeza (WTFPL), modified by BlockMen hud_armor_fg.png - Stu (CC BY-SA 3.0), modified by BlockMen hud_armor_bg.png - Stu (CC BY-SA 3.0), modified by BlockMen +everything else is WTFPL: +(c) Copyright BlockMen (2013-2014) -Github: -~~~~~~~ -https://github.com/BlockMen/hud - -Forum: -~~~~~~ -https://forum.minetest.net/viewtopic.php?id=6342 - - -Changelog: -~~~~~~~~~~ -see changelog.txt +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. diff --git a/mods/hud/api.lua b/mods/hud/api.lua deleted file mode 100644 index cdd96324..00000000 --- a/mods/hud/api.lua +++ /dev/null @@ -1,206 +0,0 @@ --- global values -hud.registered_items = {} -hud.damage_events = {} -hud.breath_events = {} - --- keep id handling internal -local hud_id = {} -- hud item ids -local sb_bg = {} -- statbar background ids - --- localize often used table -local items = hud.registered_items - -local function throw_error(msg) - minetest.chat_send_all(msg) -end - - --- --- API --- - -function hud.register(name, def) - if not name or not def then - throw_error("not enough parameters given") - return false - end - - --TODO: allow other elements - if def.hud_elem_type ~= "statbar" then - throw_error("The given HUD element is no statbar") - return false - end - if items[name] ~= nil then - throw_error("A statbar with that name already exists") - return false - end - - -- actually register - -- add background first since draworder is based on id :\ - if def.hud_elem_type == "statbar" and def.background ~= nil then - sb_bg[name] = table.copy(def) - sb_bg[name].text = def.background - if not def.autohide_bg and def.max then - sb_bg[name].number = def.max - end - end - -- add item itself - items[name] = def - - -- register events - if def.events then - for _,v in pairs(def.events) do - if v and v.type and v.func then - if v.type == "damage" then - table.insert(hud.damage_events, v) - end - - if v.type == "breath" then - table.insert(hud.breath_events, v) - end - end - end - end - - -- no error so far, return sucess - return true -end - -function hud.change_item(player, name, def) - if not player or not name or not def then - throw_error("Not enough parameters given to change HUD item") - return false - end - local i_name = player:get_player_name().."_"..name - local elem = hud_id[i_name] - if not elem then - throw_error("Given HUD element " .. dump(name) .. " does not exist".." hääää") - return false - end - - -- Only update if values supported and value actually changed - -- update supported values (currently number and text only) - if def.number and elem.number then - if def.number ~= elem.number then - if elem.max and def.number > elem.max and not def.max then - def.number = elem.max - end - if def.max then - elem.max = def.max - end - player:hud_change(elem.id, "number", def.number) - elem.number = def.number - -- hide background when set - local bg = hud_id[i_name.."_bg"] - if elem.autohide_bg then - if def.number < 1 then - player:hud_change(bg.id, "number", 0) - else - local num = bg.number - if bg.max then - num = bg.max - end - player:hud_change(bg.id, "number", num) - end - else - if bg and bg.max and bg.max < 1 and def.max and def.max > bg.max then - player:hud_change(bg.id, "number", def.max) - bg.max = def.max - end - end - end - end - if def.text and elem.text then - if def.text ~= elem.text then - player:hud_change(elem.id, "text", def.text) - elem.text = def.text - end - end - - if def.offset and elem.offset then - if def.item_name and def.offset == "item" then - local i_name2 = player:get_player_name().."_"..def.item_name - local elem2 = hud_id[i_name2] - if elem2 then - local p2 = elem2.offset - local p1 = elem.offset - player:hud_change(elem2.id, "offset", p1) - player:hud_change(elem.id, "offset", p2) - elem2.offset = p1 - elem.offset = p2 - if elem.background then - local elem3 = hud_id[i_name.."_bg"] - if elem3 and elem3.offset then - player:hud_change(elem3.id, "offset", p2) - elem3.offset = p2 - local elem4 = hud_id[i_name2.."_bg"] - if elem4 and elem4.offset then - player:hud_change(elem4.id, "offset", p1) - elem4.offset = p1 - end - end - end - end - else - player:hud_change(elem.id, "offset", def.offset) - elem.offset = def.offset - end - end - - return true -end - -function hud.remove_item(player, name) - if not player or not name then - throw_error("Not enough parameters given") - return false - end - local i_name = player:get_player_name().."_"..name - if hud_id[i_name] == nil then - throw_error("Given HUD element " .. dump(name) .. " does not exist") - return false - end - player:hud_remove(hud_id[i_name].id) - hud_id[i_name] = nil - - return true -end - - --- --- Add registered HUD items to joining players --- - --- Following code is placed here to keep HUD ids internal -local function add_hud_item(player, name, def) - if not player or not name or not def then - throw_error("not enough parameters given") - return false - end - local i_name = player:get_player_name().."_"..name - hud_id[i_name] = def - hud_id[i_name].id = player:hud_add(def) -end - -minetest.register_on_joinplayer(function(player) - - -- first: hide the default statbars - player:hud_set_flags({healthbar = false, breathbar = false}) - - -- now add the backgrounds (e.g. for statbars) - for _,item in pairs(sb_bg) do - add_hud_item(player, _.."_bg", item) - end - -- and finally the actual HUD items - for _,item in pairs(items) do - add_hud_item(player, _, item) - end - - -- fancy hotbar (only when no crafting mod present) - if minetest.get_modpath("crafting") == nil then - minetest.after(0.5, function() - player:hud_set_hotbar_image("hud_hotbar.png") - player:hud_set_hotbar_selected_image("hud_hotbar_selected.png") - end) - end -end) diff --git a/mods/hud/armor.lua b/mods/hud/armor.lua new file mode 100755 index 00000000..7f0d0cff --- /dev/null +++ b/mods/hud/armor.lua @@ -0,0 +1,34 @@ +minetest.after(0, function() + if not armor.def then + minetest.after(2,minetest.chat_send_all,"#Better HUD: Please update your version of 3darmor") + HUD_SHOW_ARMOR = false + end +end) + +function hud.get_armor(player) + if not player or not armor.def then + return + end + local name = player:get_player_name() + local def = armor.def[name] or nil + if def and def.state and def.count then + hud.set_armor(name, def.state, def.count) + end +end + +function hud.set_armor(player_name, ges_state, items) + local max_items = 4 + if items == 5 then + max_items = items + end + local max = max_items * 65535 + local lvl = max - ges_state + lvl = lvl/max + if ges_state == 0 and items == 0 then + lvl = 0 + end + + hud.armor[player_name] = lvl* (items * (20 / max_items)) + + +end \ No newline at end of file diff --git a/mods/hud/builtin.lua b/mods/hud/builtin.lua deleted file mode 100644 index b82ba41e..00000000 --- a/mods/hud/builtin.lua +++ /dev/null @@ -1,101 +0,0 @@ -HUD_SB_SIZE = {x = 24, y = 24} - -HUD_HEALTH_POS = {x = 0.5,y = 1} -HUD_HEALTH_OFFSET = {x = -262, y = -87} -HUD_AIR_POS = {x = 0.5, y = 1} -HUD_AIR_OFFSET = {x = 15, y = -87} -HUD_HUNGER_POS = {x = 0.5, y = 1} -HUD_HUNGER_OFFSET = {x = 15, y = -110} -HUD_ARMOR_POS = {x = 0.5, y = 1} -HUD_ARMOR_OFFSET = {x = -262, y = -110} - --- read hud.conf settings -hud.read_conf() - -local damage_enabled = minetest.setting_getbool("enable_damage") - -hud.show_hunger = minetest.get_modpath("hunger") ~= nil -hud.show_armor = minetest.get_modpath("3d_armor") ~= nil - --- check if some settings are invalid -local enable_hunger = minetest.setting_getbool("hud_hunger_enable") -if (enable_hunger == true or HUD_ENABLE_HUNGER == true) and not hud.show_hunger then - hud.notify_hunger(5) -end - -if damage_enabled then - hud.register("health", { - hud_elem_type = "statbar", - position = HUD_HEALTH_POS, - size = HUD_SB_SIZE, - text = "hud_heart_fg.png", - number = 20, - alignment = {x=-1,y=-1}, - offset = HUD_HEALTH_OFFSET, - background = "hud_heart_bg.png", - events = { - { - type = "damage", - func = function(player) - hud.change_item(player, "health", {number = player:get_hp()}) - end - } - }, - }) - - hud.register("air", { - hud_elem_type = "statbar", - position = HUD_AIR_POS, - size = HUD_SB_SIZE, - text = "hud_air_fg.png", - number = 0, - alignment = {x=-1,y=-1}, - offset = HUD_AIR_OFFSET, - background = nil, - events = { - { - type = "breath", - func = function(player) - local air = player:get_breath() - if air > 10 then - air = 0 - end - hud.change_item(player, "air", {number = air * 2}) - end - } - }, - }) - - hud.register("armor", { - hud_elem_type = "statbar", - position = HUD_ARMOR_POS, - size = HUD_SB_SIZE, - text = "hud_armor_fg.png", - number = 0, - alignment = {x=-1,y=-1}, - offset = HUD_ARMOR_OFFSET, - background = "hud_armor_bg.png", - autohide_bg = true, - max = 20, - }) - - local start_value = 0 - if show_hunger then - start_value = 20 - end - - hud.register("hunger", { - hud_elem_type = "statbar", - position = HUD_HUNGER_POS, - size = HUD_SB_SIZE, - text = "hud_hunger_fg.png", - number = start_value, - alignment = {x=-1,y=-1}, - offset = HUD_HUNGER_OFFSET, - background = "hud_hunger_bg.png", - --autohide_bg = true, - max = 0, - }) -else - hud.show_armor = false -end diff --git a/mods/hud/changelog.txt b/mods/hud/changelog.txt old mode 100644 new mode 100755 index a2392b3d..4eac6c52 --- a/mods/hud/changelog.txt +++ b/mods/hud/changelog.txt @@ -1,48 +1,50 @@ -2.0 +0.2 Beta +-------- +- added support of custom config files +- you can eat max. 50% more than before (although it isnt shown in hunger bar) +- you get healed with 8 breads and more (in hunger bar) now +- a bread (from farming) == 2 breads in hunger bar + +0.2.1 Beta +---------- +- tweaked override of food +- added support for food of dwares, moretrees and simple mobs + +0.2.2 Beta +---------- +- added support for food of animalmaterials (mobf modpack),fishing + +0.2.3 Beta +---------- +- added support for food of glooptest and bushes (commit by CheeseKeg) + +0.3 Beta +---------- +- added fancy borders of hud inventory bar (only for screenheight <= 800) + +0.4 Beta +---------- +- enabled drowning + +0.5 Beta +---------- +- removed the fancy borders of hud inventory bar and moved to new native support +- moved crosshair to native support too + +1.0 --- -- Complete rewrite -- Moved hunger into seperate mod -- Added API -- Switched License to LGPL 2.1 +- hunger is reset after death +- health and hunger bar is shown correct on all screen resolutions now +- switched to changed native hotbar image support +- fixed revival of player when drown +- hunger bar is not shown anymore if hunger is disabled +- hunger can be disabled by minetest.conf ("hud_hunger_enable = false") -===== ===== ===== ------ 0-1.x ----- -===== ===== ===== - -1.4.1 ------ -- ### - -1.4 +1.1 --- -- New hunger mechanics/added experimental player-action based hunger -- Better crosshair texture, switched to "new" default hand -- Added support for farming redo mod, kpgmobs and jkmod - -1.3.3 ------ -- Prevent crash with armor mod and missing player -- Add support for ethereal mod (by TenPlus1) - -1.3.2 ------ -- Fix dependecies (by Chris Beelby) -- Add support for creatures mod -- Add optional healing for food (by TenPlus1) - -1.3.1 ------ -- Add compatibility for statbar scaling -- Fix typo in depends.txt -- Lower maintimer tick - -1.3 ---- -- New way hunger is saved (all old files in world dirctory can get deleted [e.g. hud_BlockMen_hunger]) -- Fixed healing (not while drowning, fix after death) -- Add support for mods: seaplants[sea] and mobfcooking (by Xanthin) -- Tweaked hand image -- Player can die caus of starving now +- added support for stu's 3darmor mod +- restructured and cleaned up code +- added support for poisen food (damages player, but does not kill) 1.2 --- @@ -54,50 +56,33 @@ - Add support for mods: fruit and mush45 - New images for hotbar, smaller armor icons -1.1 +1.3 --- -- added support for stu's 3darmor mod -- restructured and cleaned up code -- added support for poisen food (damages player, but does not kill) +- New way hunger is saved (all old files in world dirctory can get deleted [e.g. hud_BlockMen_hunger]) +- Fixed healing (not while drowning, fix after death) +- Add support for mods: seaplants[sea] and mobfcooking (by Xanthin) +- Tweaked hand image +- Player can die caus of starving now -1.0 +1.3.1 +----- +- Add compatibility for statbar scaling +- Fix typo in depends.txt +- Lower maintimer tick + +1.3.2 +----- +- Fix dependecies (by Chris Beelby) +- Add support for creatures mod +- Add optional healing for food (by TenPlus1) + +1.3.3 +----- +- Prevent crash with armor mod and missing player +- Add support for ethereal mod (by TenPlus1) + +1.4 --- -- hunger is reset after death -- health and hunger bar is shown correct on all screen resolutions now -- switched to changed native hotbar image support -- fixed revival of player when drown -- hunger bar is not shown anymore if hunger is disabled -- hunger can be disabled by minetest.conf ("hud_hunger_enable = false") - -0.5 Beta ----------- -- removed the fancy borders of hud inventory bar and moved to new native support -- moved crosshair to native support too - -0.4 Beta ----------- -- enabled drowning - -0.3 Beta ----------- -- added fancy borders of hud inventory bar (only for screenheight <= 800) - -0.2.3 Beta ----------- -- added support for food of glooptest and bushes (commit by CheeseKeg) - -0.2.2 Beta ----------- -- added support for food of animalmaterials (mobf modpack),fishing - -0.2.1 Beta ----------- -- tweaked override of food -- added support for food of dwares, moretrees and simple mobs - -0.2 Beta --------- -- added support of custom config files -- you can eat max. 50% more than before (although it isnt shown in hunger bar) -- you get healed with 8 breads and more (in hunger bar) now -- a bread (from farming) == 2 breads in hunger bar +- New hunger mechanics/added experimental player-action based hunger +- Better crosshair texture, switched to "new" default hand +- Added support for farming redo mod, kpgmobs and jkmod diff --git a/mods/hud/depends.txt b/mods/hud/depends.txt old mode 100644 new mode 100755 index 7be6dbb7..9da4c966 --- a/mods/hud/depends.txt +++ b/mods/hud/depends.txt @@ -1 +1,26 @@ -3d_armor? \ No newline at end of file +default +animalmaterials? +bucket? +bushes? +bushes_classic? +creatures? +docfarming? +dwarves? +ethereal? +farming? +farming_plus? +ferns? +fishing? +fruit? +glooptest? +jkanimals? +jkfarming? +jkwine? +kpgmobs? +mobfcooking? +mobs? +moretrees? +mtfoods? +mush45? +mushroom? +seaplants? diff --git a/mods/hud/functions.lua b/mods/hud/functions.lua deleted file mode 100644 index a7063d91..00000000 --- a/mods/hud/functions.lua +++ /dev/null @@ -1,46 +0,0 @@ -function hud.read_conf() - local mod_path = minetest.get_modpath("hud") - local set = io.open(mod_path .. "/hud.conf", "r") - if set then - dofile(mod_path .. "/hud.conf") - set:close() - end -end - -function hud.notify_hunger(delay, use) - local txt_part = "enable" - if use then - txt_part = "use" - end - minetest.after(delay, function() - minetest.chat_send_all("#Better HUD: You can't " .. txt_part .. " hunger without the \"hunger\" mod") - minetest.chat_send_all(" Enable it or download it from \"https://github.com/BlockMen/hunger\"") - end) -end - -function hud.player_event(player, event) - --needed for first update called by on_join - minetest.after(0, function() - if event == "health_changed" then - for _,v in pairs(hud.damage_events) do - if v.func then - v.func(player) - end - end - end - - if event == "breath_changed" then - for _,v in pairs(hud.breath_events) do - if v.func then - v.func(player) - end - end - end - - if event == "hud_changed" then--called when flags changed - - end - end) -end - -core.register_playerevent(hud.player_event) diff --git a/mods/hud/hud.conf b/mods/hud/hud.conf index 5841b046..722aee85 100755 --- a/mods/hud/hud.conf +++ b/mods/hud/hud.conf @@ -1,7 +1,9 @@ --##Better HUD example config file## ------------------------------------ + HUD_ENABLE_HUNGER = true HUD_HUNGER_TICK = 300 + HUD_ARMOR_POS = {x=0.5,y=1} HUD_ARMOR_OFFSET= {x=-320, y=-154} HUD_HEALTH_POS = {x=0.5,y=1} diff --git a/mods/hud/hud.conf.example b/mods/hud/hud.conf.example old mode 100644 new mode 100755 index f96041de..ffa4cd76 --- a/mods/hud/hud.conf.example +++ b/mods/hud/hud.conf.example @@ -1,35 +1,33 @@ --##Better HUD example config file## ------------------------------------ --- This example moves the statbars in the down left and down right corners. By Echoes91 - --- NOTICE -- --- if damage is disabled no statbar is shown at all --- Make sure that the statbars are shown correct on other screen resolutions aswell +-- This example moves the health bar in the top left corner and the hunger bar in the top right corner -HUD_SB_SIZE = {x = 24, y = 24} -- statbar icon size in pixel before (!) scaling +-- +-- general settings +-- +HUD_ENABLE_HUNGER = true --enables/disables hunger +HUD_HUNGER_TICK = 300 --sets time for loosing 1/2 bread (of 10) (in seconds) + + +--!NOTICE!-- +-- >>if damage is disabled neither health bar nor hunger bar or breath bar is shown -- -- health bar -- -HUD_HEALTH_POS = {x = 0, y = 1} -- min 0, max 1 -HUD_HEALTH_OFFSET = {x = 10, y = -30} -- offset in pixel +HUD_HEALTH_POS = {x=0,y=0} --min 0, max 1 +HUD_HEALTH_OFFSET = {x=5,y=30} --offset in pixel -- -- hunger bar -- -HUD_HUNGER_POS = {x = 1, y = 1} -- min 0, max 1 -HUD_HUNGER_OFFSET = {x = -250, y = -30} -- offset in pixel +HUD_HUNGER_POS = {x=1,y=0} --min 0, max 1 +HUD_HUNGER_OFFSET = {x=-175,y=30} --offset in pixel -- -- breath bar -- -HUD_AIR_POS = {x = 1, y = 1} -- min 0, max 1 -HUD_AIR_OFFSET = {x = -250, y = -60} -- offset in pixel - --- --- armor bar --- -HUD_ARMOR_POS = {x = 0, y = 1} -- min 0, max 1 -HUD_ARMOR_OFFSET = {x = 10, y = -60} -- offset in pixel +HUD_AIR_POS = {x=0.5,y=1} --min 0, max 1 +HUD_AIR_OFFSET = {x=15,y=-75} --offset in pixel diff --git a/mods/hud/hud.conf.old b/mods/hud/hud.conf.old new file mode 100755 index 00000000..e919ae47 --- /dev/null +++ b/mods/hud/hud.conf.old @@ -0,0 +1,33 @@ +--##Better HUD example config file## +------------------------------------ +-- This example moves the health bar in the top left corner and the hunger bar in the top right corner + + +-- +-- general settings +-- +HUD_ENABLE_HUNGER = true --enables/disables hunger +HUD_HUNGER_TICK = 300 --sets time for loosing 1/2 bread (of 10) (in seconds) + + +--!NOTICE!-- +-- >>if damage is disabled neither health bar nor hunger bar or breath bar is shown + +-- +-- health bar +-- +HUD_HEALTH_POS = {x=0.5,y=0.9} --min 0, max 1 +HUD_HEALTH_OFFSET = {x=-262, y=-50} --offset in pixel + +-- +-- hunger bar +-- +HUD_HUNGER_POS = {x=0.5,y=0.9} --min 0, max 1 +HUD_HUNGER_OFFSET = {x=25, y=-50} --offset in pixel + +-- +-- breath bar +-- +HUD_AIR_POS = {x=0.5,y=0.9} --min 0, max 1 +HUD_AIR_OFFSET = {x=25,y=-10} --offset in pixel + diff --git a/mods/hud/hunger.lua b/mods/hud/hunger.lua new file mode 100755 index 00000000..cc17fbc1 --- /dev/null +++ b/mods/hud/hunger.lua @@ -0,0 +1,384 @@ +-- Keep these for backwards compatibility +function hud.save_hunger(player) + hud.set_hunger(player) +end +function hud.load_hunger(player) + hud.get_hunger(player) +end + +-- Poison player +local function poisenp(tick, time, time_left, player) + time_left = time_left + tick + if time_left < time then + minetest.after(tick, poisenp, tick, time, time_left, player) + else + --reset hud image + end + if player:get_hp()-1 > 0 then + player:set_hp(player:get_hp()-1) + end + +end + +function hud.item_eat(hunger_change, replace_with_item, poisen, heal) + return function(itemstack, user, pointed_thing) + if itemstack:take_item() ~= nil and user ~= nil then + local name = user:get_player_name() + local h = tonumber(hud.hunger[name]) + local hp = user:get_hp() + + -- Saturation + if h < 30 and hunger_change then + h = h + hunger_change + if h > 30 then h = 30 end + hud.hunger[name] = h + hud.set_hunger(user) + end + -- Healing + if hp < 20 and heal then + hp = hp + heal + if hp > 20 then hp = 20 end + user:set_hp(hp) + end + -- Poison + if poisen then + --set hud-img + poisenp(1.0, poisen, 0, user) + end + + --sound:eat + itemstack:add_item(replace_with_item) + end + return itemstack + end +end + +local function overwrite(name, hunger_change, replace_with_item, poisen, heal) + local tab = minetest.registered_items[name] + if tab == nil then return end + tab.on_use = hud.item_eat(hunger_change, replace_with_item, poisen, heal) + minetest.registered_items[name] = tab +end + +overwrite("default:apple", 2) +if minetest.get_modpath("farming") ~= nil then + overwrite("farming:bread", 4) +end + +if minetest.get_modpath("moretrees") ~= nil then + overwrite("moretrees:coconut_milk", 1) + overwrite("moretrees:raw_coconut", 2) + overwrite("moretrees:acorn_muffin", 3) + overwrite("moretrees:spruce_nuts", 1) + overwrite("moretrees:pine_nuts", 1) + overwrite("moretrees:fir_nuts", 1) +end + +if minetest.get_modpath("dwarves") ~= nil then + overwrite("dwarves:beer", 2) + overwrite("dwarves:apple_cider", 1) + overwrite("dwarves:midus", 2) + overwrite("dwarves:tequila", 2) + overwrite("dwarves:tequila_with_lime", 2) + overwrite("dwarves:sake", 2) +end + +if minetest.get_modpath("animalmaterials") ~= nil then + overwrite("animalmaterials:milk", 2) + overwrite("animalmaterials:meat_raw", 3) + overwrite("animalmaterials:meat_pork", 3) + overwrite("animalmaterials:meat_beef", 3) + overwrite("animalmaterials:meat_chicken", 3) + overwrite("animalmaterials:meat_lamb", 3) + overwrite("animalmaterials:meat_venison", 3) + overwrite("animalmaterials:meat_undead", 3, "", 3) + overwrite("animalmaterials:meat_toxic", 3, "", 5) + overwrite("animalmaterials:meat_ostrich", 3) + overwrite("animalmaterials:fish_bluewhite", 2) + overwrite("animalmaterials:fish_clownfish", 2) +end + +if minetest.get_modpath("glooptest") ~= nil then + overwrite("glooptest:kalite_lump", 1) +end + +if minetest.get_modpath("bushes") ~= nil then + overwrite("bushes:sugar", 1) + overwrite("bushes:strawberry", 2) + overwrite("bushes:berry_pie_raw", 3) + overwrite("bushes:berry_pie_cooked", 4) + overwrite("bushes:basket_pies", 15) +end + +if minetest.get_modpath("bushes_classic") then + -- bushes_classic mod, as found in the plantlife modpack + local berries = { + "strawberry", + "blackberry", + "blueberry", + "raspberry", + "gooseberry", + "mixed_berry"} + for _, berry in ipairs(berries) do + if berry ~= "mixed_berry" then + overwrite("bushes:"..berry, 1) + end + overwrite("bushes:"..berry.."_pie_raw", 2) + overwrite("bushes:"..berry.."_pie_cooked", 5) + overwrite("bushes:basket_"..berry, 15) + end +end + +if minetest.get_modpath("mushroom") ~= nil then + overwrite("mushroom:brown", 1) + overwrite("mushroom:red", 1, "", 3) + -- mushroom potions: red = strong poison, brown = light restorative + if minetest.get_modpath("vessels") then + overwrite("mushroom:brown_essence", 1, "vessels:glass_bottle", nil, 4) + overwrite("mushroom:poison", 1, "vessels:glass_bottle", 10) + end +end + +if minetest.get_modpath("docfarming") ~= nil then + overwrite("docfarming:carrot", 3) + overwrite("docfarming:cucumber", 2) + overwrite("docfarming:corn", 3) + overwrite("docfarming:potato", 4) + overwrite("docfarming:bakedpotato", 5) + overwrite("docfarming:raspberry", 3) +end + +if minetest.get_modpath("farming_plus") ~= nil then + overwrite("farming_plus:carrot_item", 3) + overwrite("farming_plus:banana", 2) + overwrite("farming_plus:orange_item", 2) + overwrite("farming:pumpkin_bread", 4) + overwrite("farming_plus:strawberry_item", 2) + overwrite("farming_plus:tomato_item", 2) + overwrite("farming_plus:potato_item", 4) + overwrite("farming_plus:rhubarb_item", 2) +end + +if minetest.get_modpath("mtfoods") ~= nil then + overwrite("mtfoods:dandelion_milk", 1) + overwrite("mtfoods:sugar", 1) + overwrite("mtfoods:short_bread", 4) + overwrite("mtfoods:cream", 1) + overwrite("mtfoods:chocolate", 2) + overwrite("mtfoods:cupcake", 2) + overwrite("mtfoods:strawberry_shortcake", 2) + overwrite("mtfoods:cake", 3) + overwrite("mtfoods:chocolate_cake", 3) + overwrite("mtfoods:carrot_cake", 3) + overwrite("mtfoods:pie_crust", 3) + overwrite("mtfoods:apple_pie", 3) + overwrite("mtfoods:rhubarb_pie", 2) + overwrite("mtfoods:banana_pie", 3) + overwrite("mtfoods:pumpkin_pie", 3) + overwrite("mtfoods:cookies", 2) + overwrite("mtfoods:mlt_burger", 5) + overwrite("mtfoods:potato_slices", 2) + overwrite("mtfoods:potato_chips", 3) + --mtfoods:medicine + overwrite("mtfoods:casserole", 3) + overwrite("mtfoods:glass_flute", 2) + overwrite("mtfoods:orange_juice", 2) + overwrite("mtfoods:apple_juice", 2) + overwrite("mtfoods:apple_cider", 2) + overwrite("mtfoods:cider_rack", 2) +end + +if minetest.get_modpath("fruit") ~= nil then + overwrite("fruit:apple", 2) + overwrite("fruit:pear", 2) + overwrite("fruit:bananna", 3) + overwrite("fruit:orange", 2) +end + +if minetest.get_modpath("mush45") ~= nil then + overwrite("mush45:meal", 4) +end + +if minetest.get_modpath("seaplants") ~= nil then + overwrite("seaplants:kelpgreen", 1) + overwrite("seaplants:kelpbrown", 1) + overwrite("seaplants:seagrassgreen", 1) + overwrite("seaplants:seagrassred", 1) + overwrite("seaplants:seasaladmix", 6) + overwrite("seaplants:kelpgreensalad", 1) + overwrite("seaplants:kelpbrownsalad", 1) + overwrite("seaplants:seagrassgreensalad", 1) + overwrite("seaplants:seagrassgreensalad", 1) +end + +if minetest.get_modpath("mobfcooking") ~= nil then + overwrite("mobfcooking:cooked_pork", 6) + overwrite("mobfcooking:cooked_ostrich", 6) + overwrite("mobfcooking:cooked_beef", 6) + overwrite("mobfcooking:cooked_chicken", 6) + overwrite("mobfcooking:cooked_lamb", 6) + overwrite("mobfcooking:cooked_venison", 6) + overwrite("mobfcooking:cooked_fish", 6) +end + +if minetest.get_modpath("creatures") ~= nil then + overwrite("creatures:meat", 6) + overwrite("creatures:flesh", 3) + overwrite("creatures:rotten_flesh", 3, "", 3) +end + +if minetest.get_modpath("ethereal") then + overwrite("ethereal:strawberry", 1) + overwrite("ethereal:banana", 4) + overwrite("ethereal:pine_nuts", 1) + overwrite("ethereal:bamboo_sprout", 0, "", 3) + overwrite("ethereal:fern_tubers", 1) + overwrite("ethereal:banana_bread", 7) + overwrite("ethereal:mushroom_plant", 2) + overwrite("ethereal:coconut_slice", 2) + overwrite("ethereal:golden_apple", 4, "", nil, 10) + overwrite("ethereal:wild_onion_plant", 2) + overwrite("ethereal:mushroom_soup", 4, "ethereal:bowl") + overwrite("ethereal:mushroom_soup_cooked", 6, "ethereal:bowl") + overwrite("ethereal:hearty_stew", 6, "ethereal:bowl", 3) + overwrite("ethereal:hearty_stew_cooked", 10, "ethereal:bowl") + if minetest.get_modpath("bucket") then + overwrite("ethereal:bucket_cactus", 2, "bucket:bucket_empty") + end + overwrite("ethereal:fish_raw", 2) + overwrite("ethereal:fish_cooked", 4) + overwrite("ethereal:seaweed", 1) + overwrite("ethereal:yellowleaves", 1, "", nil, 1) + overwrite("ethereal:sashimi", 4) +end + +--- mes modifs /début --- + +if minetest.get_modpath("farming") and farming.mod == "redo" then + overwrite("farming:bread", 5) + overwrite("farming:potato", 1) + overwrite("farming:baked_potato", 5) + overwrite("farming:cucumber", 3) + overwrite("farming:tomato", 3) + overwrite("farming:carrot", 3) + overwrite("farming:carrot_gold", 6, "", nil, 10) + overwrite("farming:corn", 3) + overwrite("farming:corn_cob", 5) + overwrite("farming:melon_slice", 2) + overwrite("farming:pumpkin_slice", 1) + overwrite("farming:pumpkin_bread", 7) + overwrite("farming:coffee_cup", 2, "farming:drinking_cup") + overwrite("farming:coffee_cup_hot", 3, "farming:drinking_cup", nil, 2) + overwrite("farming:cookie", 2) + overwrite("farming:chocolate_dark", 3) + overwrite("farming:donut", 4) + overwrite("farming:donut_chocolate", 5) + overwrite("farming:donut_apple", 5) + overwrite("farming:raspberries", 1) + overwrite("farming:blueberries", 1) + overwrite("farming:muffin_blueberry", 4) + if minetest.get_modpath("vessels") then + overwrite("farming:smoothie_raspberry", 2, "vessels:drinking_glass") + end + overwrite("farming:rhubarb", 1) + overwrite("farming:rhubarb_pie", 5) +end + +if minetest.get_modpath("maptools") then + overwrite("maptools:superapple", 10, "", nil, 20) -- valeur perso pour "Super Apple" => 10 coeurs, 5 pains +end + +if minetest.get_modpath("mobs") ~= nil then + overwrite("mobs:cheese", 4) + overwrite("mobs:meat_raw", 3) + overwrite("mobs:meat", 5) + overwrite("mobs:rat_cooked", 5) + overwrite("mobs:honey", 6) + overwrite("mobs:pork_raw", 4) + overwrite("mobs:pork_cooked", 7) + overwrite("mobs:chicken_raw", 2) + overwrite("mobs:chicken_cooked", 4) + overwrite("mobs:egg", 1) + overwrite("mobs:chicken_egg_fried", 2) + if minetest.get_modpath("bucket") then + overwrite("mobs:bucket_milk", 3, "bucket:bucket_empty") + end +end + +if minetest.get_modpath("fishing") ~= nil then + overwrite("fishing:fish_raw", 2) + overwrite("fishing:fish_cooked", 4) + overwrite("fishing:sushi", 6) + overwrite("fishing:shark", 2) + overwrite("fishing:shark_cooked", 6) + overwrite("fishing:pike", 2) + overwrite("fishing:pike_cooked", 6) +end +--- mes modifs /fin --- + +if minetest.get_modpath("kpgmobs") ~= nil then + overwrite("kpgmobs:uley", 3) + overwrite("kpgmobs:meat", 6) + overwrite("kpgmobs:rat_cooked", 5) + overwrite("kpgmobs:med_cooked", 4) + if minetest.get_modpath("bucket") then + overwrite("kpgmobs:bucket_milk", 4, "bucket:bucket_empty") + end +end + +if minetest.get_modpath("jkfarming") ~= nil then + overwrite("jkfarming:carrot", 3) + overwrite("jkfarming:corn", 3) + overwrite("jkfarming:melon_part", 2) + overwrite("jkfarming:cake", 3) +end + +if minetest.get_modpath("jkanimals") ~= nil then + overwrite("jkanimals:meat", 6) +end + +if minetest.get_modpath("jkwine") ~= nil then + overwrite("jkwine:grapes", 2) + overwrite("jkwine:winebottle", 1) +end + +-- Ferns mod of plantlife_modpack +if minetest.get_modpath("ferns") ~= nil then + overwrite("ferns:fiddlehead", 1, "", 1) + overwrite("ferns:fiddlehead_roasted", 3) + overwrite("ferns:ferntuber_roasted", 3) + overwrite("ferns:horsetail_01", 1) +end + +-- player-action based hunger changes +function hud.handle_node_actions(pos, oldnode, player, ext) + if not player or not player:is_player() then + return + end + local name = player:get_player_name() + local exhaus = hud.exhaustion[name] + if exhaus == nil then return end + local new = HUD_HUNGER_EXHAUST_PLACE + -- placenode event + if not ext then + new = HUD_HUNGER_EXHAUST_DIG + end + -- assume its send by main timer when movement detected + if not pos and not oldnode then + new = HUD_HUNGER_EXHAUST_MOVE + end + if exhaus == nil then return end + exhaus = (exhaus or 0) + new + if exhaus > HUD_HUNGER_EXHAUST_LVL then + exhaus = 0 + local h = tonumber(hud.hunger[name]) + h = h - 1 + if h < 0 then h = 0 end + hud.hunger[name] = h + hud.set_hunger(player) + end + hud.exhaustion[name] = exhaus +end + +minetest.register_on_placenode(hud.handle_node_actions) +minetest.register_on_dignode(hud.handle_node_actions) diff --git a/mods/hud/init.lua b/mods/hud/init.lua old mode 100644 new mode 100755 index c011f674..8204aa89 --- a/mods/hud/init.lua +++ b/mods/hud/init.lua @@ -1,8 +1,339 @@ hud = {} -local modpath = minetest.get_modpath("hud") -dofile(modpath .. "/api.lua") -dofile(modpath .. "/functions.lua") -dofile(modpath .. "/builtin.lua") -dofile(modpath .. "/legacy.lua") +-- HUD statbar values +hud.health = {} +hud.hunger = {} +hud.air = {} +hud.armor = {} +hud.hunger_out = {} +hud.armor_out = {} +-- HUD item ids +local health_hud = {} +local hunger_hud = {} +local air_hud = {} +local armor_hud = {} +local armor_hud_bg = {} + +-- default settings + +HUD_SCALEABLE = false +HUD_SIZE = "" + + -- statbar positions +HUD_HEALTH_POS = {x=0.5,y=0.9} +HUD_HEALTH_OFFSET = {x=-175, y=-2} +HUD_HUNGER_POS = {x=0.5,y=0.9} +HUD_HUNGER_OFFSET = {x=15, y=-2} +HUD_AIR_POS = {x=0.5,y=0.9} +HUD_AIR_OFFSET = {x=15,y=-2} +HUD_ARMOR_POS = {x=0.5,y=0.9} +HUD_ARMOR_OFFSET = {x=-175, y=-15} + +-- dirty way to check for new statbars +if dump(minetest.hud_replace_builtin) ~= "nil" then + HUD_SCALEABLE = true + HUD_SIZE = {x=24, y=24} + HUD_HEALTH_POS = {x=0.5,y=1} + HUD_HEALTH_OFFSET = {x=-262, y=-87} + HUD_HUNGER_POS = {x=0.5,y=1} + HUD_HUNGER_OFFSET = {x=15, y=-87} + HUD_AIR_POS = {x=0.5,y=1} + HUD_AIR_OFFSET = {x=15,y=-110} + HUD_ARMOR_POS = {x=0.5,y=1} + HUD_ARMOR_OFFSET = {x=-262, y=-110} +end + +HUD_TICK = 0.1 + +--Some hunger settings +hud.exhaustion = {} -- Exhaustion is experimental! + +HUD_HUNGER_TICK = 800 -- time in seconds after that 1 hunger point is taken +HUD_HUNGER_EXHAUST_DIG = 3 -- exhaustion increased this value after digged node +HUD_HUNGER_EXHAUST_PLACE = 1 -- exhaustion increased this value after placed +HUD_HUNGER_EXHAUST_MOVE = 0.3 -- exhaustion increased this value if player movement detected +HUD_HUNGER_EXHAUST_LVL = 60 -- at what exhaustion player saturation gets lowerd + + + +HUD_ENABLE_HUNGER = minetest.setting_getbool("hud_hunger_enable") +if HUD_ENABLE_HUNGER == nil then + HUD_ENABLE_HUNGER = minetest.setting_getbool("enable_damage") +end + +HUD_SHOW_ARMOR = false +if minetest.get_modpath("3d_armor") ~= nil then + HUD_SHOW_ARMOR = true +end + +--load custom settings +local set = io.open(minetest.get_modpath("hud").."/hud.conf", "r") +if set then + dofile(minetest.get_modpath("hud").."/hud.conf") + set:close() +else + if not HUD_ENABLE_HUNGER then + HUD_AIR_OFFSET = HUD_HUNGER_OFFSET + end +end + +local function hide_builtin(player) + player:hud_set_flags({crosshair = true, hotbar = true, healthbar = false, wielditem = true, breathbar = false}) +end + + +local function custom_hud(player) + local name = player:get_player_name() + +-- fancy hotbar (only when no crafting mod present) + if minetest.get_modpath("crafting") == nil then + player:hud_set_hotbar_image("hud_hotbar.png") + player:hud_set_hotbar_selected_image("hud_hotbar_selected.png") + end + + if minetest.setting_getbool("enable_damage") then + --hunger + if HUD_ENABLE_HUNGER then + player:hud_add({ + hud_elem_type = "statbar", + position = HUD_HUNGER_POS, + size = HUD_SIZE, + text = "hud_hunger_bg.png", + number = 20, + alignment = {x=-1,y=-1}, + offset = HUD_HUNGER_OFFSET, + }) + local h = hud.hunger[name] + if h == nil or h > 20 then h = 20 end + hunger_hud[name] = player:hud_add({ + hud_elem_type = "statbar", + position = HUD_HUNGER_POS, + size = HUD_SIZE, + text = "hud_hunger_fg.png", + number = h, + alignment = {x=-1,y=-1}, + offset = HUD_HUNGER_OFFSET, + }) + end + --health + player:hud_add({ + hud_elem_type = "statbar", + position = HUD_HEALTH_POS, + size = HUD_SIZE, + text = "hud_heart_bg.png", + number = 20, + alignment = {x=-1,y=-1}, + offset = HUD_HEALTH_OFFSET, + }) + health_hud[name] = player:hud_add({ + hud_elem_type = "statbar", + position = HUD_HEALTH_POS, + size = HUD_SIZE, + text = "hud_heart_fg.png", + number = player:get_hp(), + alignment = {x=-1,y=-1}, + offset = HUD_HEALTH_OFFSET, + }) + + --air + air_hud[name] = player:hud_add({ + hud_elem_type = "statbar", + position = HUD_AIR_POS, + size = HUD_SIZE, + text = "hud_air_fg.png", + number = 0, + alignment = {x=-1,y=-1}, + offset = HUD_AIR_OFFSET, + }) + + --armor + if HUD_SHOW_ARMOR then + armor_hud_bg[name] = player:hud_add({ + hud_elem_type = "statbar", + position = HUD_ARMOR_POS, + size = HUD_SIZE, + text = "hud_armor_bg.png", + number = 0, + alignment = {x=-1,y=-1}, + offset = HUD_ARMOR_OFFSET, + }) + armor_hud[name] = player:hud_add({ + hud_elem_type = "statbar", + position = HUD_ARMOR_POS, + size = HUD_SIZE, + text = "hud_armor_fg.png", + number = 0, + alignment = {x=-1,y=-1}, + offset = HUD_ARMOR_OFFSET, + }) + end + end +end + +--needs to be defined for older version of 3darmor +function hud.set_armor() +end + + +if HUD_ENABLE_HUNGER then dofile(minetest.get_modpath("hud").."/hunger.lua") end +if HUD_SHOW_ARMOR then dofile(minetest.get_modpath("hud").."/armor.lua") end + +-- update hud elemtens if value has changed +local function update_hud(player) + local name = player:get_player_name() + --air + local air = tonumber(hud.air[name]) + if player:get_breath() ~= air then + air = player:get_breath() + hud.air[name] = air + if air > 10 then air = 0 end + player:hud_change(air_hud[name], "number", air*2) + end + --health + local hp = tonumber(hud.health[name]) + if player:get_hp() ~= hp then + hp = player:get_hp() + hud.health[name] = hp + player:hud_change(health_hud[name], "number", hp) + end + --armor + local arm_out = tonumber(hud.armor_out[name]) + if not arm_out then arm_out = 0 end + local arm = tonumber(hud.armor[name]) + if not arm then arm = 0 end + if arm_out ~= arm then + hud.armor_out[name] = arm + player:hud_change(armor_hud[name], "number", arm) + -- hide armor bar completely when there is none + if (not armor.def[name].count or armor.def[name].count == 0) and arm == 0 then + player:hud_change(armor_hud_bg[name], "number", 0) + else + player:hud_change(armor_hud_bg[name], "number", 20) + end + end + --hunger + local h_out = tonumber(hud.hunger_out[name]) + local h = tonumber(hud.hunger[name]) + if h_out ~= h then + hud.hunger_out[name] = h + -- bar should not have more than 10 icons + if h>20 then h=20 end + player:hud_change(hunger_hud[name], "number", h) + end +end + +hud.get_hunger = function(player) + local inv = player:get_inventory() + if not inv then return nil end + local hgp = inv:get_stack("hunger", 1):get_count() + if hgp == 0 then + hgp = 21 + inv:set_stack("hunger", 1, ItemStack({name=":", count=hgp})) + else + hgp = hgp + end + return hgp-1 +end + +hud.set_hunger = function(player) + local inv = player:get_inventory() + local name = player:get_player_name() + local value = hud.hunger[name] + if not inv or not value then return nil end + if value > 30 then value = 30 end + if value < 0 then value = 0 end + + inv:set_stack("hunger", 1, ItemStack({name=":", count=value+1})) + + return true +end + +minetest.register_on_joinplayer(function(player) + local name = player:get_player_name() + local inv = player:get_inventory() + inv:set_size("hunger",1) + hud.health[name] = player:get_hp() + if HUD_ENABLE_HUNGER then + hud.hunger[name] = hud.get_hunger(player) + hud.hunger_out[name] = hud.hunger[name] + hud.exhaustion[name] = 0 + end + hud.armor[name] = 0 + hud.armor_out[name] = 0 + local air = player:get_breath() + hud.air[name] = air + minetest.after(0.5, function() + hide_builtin(player) + custom_hud(player) + if HUD_ENABLE_HUNGER then hud.set_hunger(player) end + end) +end) + +minetest.register_on_respawnplayer(function(player) + -- reset player breath since the engine doesnt + player:set_breath(11) + -- reset hunger (and save) + local name = player:get_player_name() + hud.hunger[name] = 20 + if HUD_ENABLE_HUNGER then + minetest.after(0.5, hud.set_hunger, player) + hud.exhaustion[name] = 0 + end +end) + +local main_timer = 0 +local timer = 0 +local timer2 = 0 +minetest.after(2.5, function() + minetest.register_globalstep(function(dtime) + main_timer = main_timer + dtime + timer = timer + dtime + timer2 = timer2 + dtime + if main_timer > HUD_TICK or timer > 4 or timer2 > HUD_HUNGER_TICK then + if main_timer > HUD_TICK then main_timer = 0 end + for _,player in ipairs(minetest.get_connected_players()) do + local name = player:get_player_name() + + -- only proceed if damage is enabled + if minetest.setting_getbool("enable_damage") then + local h = tonumber(hud.hunger[name]) + local hp = player:get_hp() + if HUD_ENABLE_HUNGER and timer > 4 then + -- heal player by 1 hp if not dead and saturation is > 15 (of 30) + if h > 15 and hp > 0 and hud.air[name] > 0 then + player:set_hp(hp+1) + -- or damage player by 1 hp if saturation is < 2 (of 30) + elseif h <= 1 and minetest.setting_getbool("enable_damage") then + if hp-1 >= 0 then player:set_hp(hp-1) end + end + end + -- lower saturation by 1 point after xx seconds + if HUD_ENABLE_HUNGER and timer2 > HUD_HUNGER_TICK then + if h > 0 then + h = h-1 + hud.hunger[name] = h + hud.set_hunger(player) + end + end + -- update current armor level + if HUD_SHOW_ARMOR then hud.get_armor(player) end + + -- update all hud elements + update_hud(player) + + if HUD_ENABLE_HUNGER then + local controls = player:get_player_control() + -- Determine if the player is walking + if controls.up or controls.down or controls.left or controls.right then + hud.handle_node_actions(nil, nil, player) + end + end + end + end + + end + if timer > 4 then timer = 0 end + if timer2 > HUD_HUNGER_TICK then timer2 = 0 end + end) +end) diff --git a/mods/hud/legacy.lua b/mods/hud/legacy.lua deleted file mode 100644 index 596ada3a..00000000 --- a/mods/hud/legacy.lua +++ /dev/null @@ -1,61 +0,0 @@ --- Armor -function hud.set_armor() -end - -if hud.show_armor then - local shields = minetest.get_modpath("shields") ~= nil - local armor_org_func = armor.update_armor - - local function get_armor_lvl(def) - -- items/protection based display - local lvl = def.level or 0 - local max = 63 -- full diamond armor - if shields then - max = 84.14 -- full diamond armor + diamond shield - end - -- TODO: is there a sane way to read out max values? - local ret = lvl/max - if ret > 1 then - ret = 1 - end - - return tonumber(20 * ret) - end - - function armor.update_armor(self, player) - armor_org_func(self, player) - local name = player:get_player_name() - local def = self.def - local armor_lvl = 0 - if def[name] and def[name].level then - armor_lvl = get_armor_lvl(def[name]) - end - hud.change_item(player, "armor", {number = armor_lvl}) - end -end - --- Hunger related functions -if not hud.show_hunger then - function hud.set_hunger() - hud.notify_hunger(1, true) - end - - function hud.get_hunger() - hud.notify_hunger(1, true) - end - - function hud.item_eat(hp_change, replace_with_item) - return function(itemstack, user, pointed_thing) - hud.notify_hunger(1, true) - local func = minetest.item_eat(hp_change, replace_with_item) - return func(itemstack, user, pointed_thing) - end - end - - function hud.save_hunger() - hud.notify_hunger(1, true) - end - function hud.load_hunger(player) - hud.notify_hunger(1, true) - end -end diff --git a/mods/hud/textures/crosshair.png b/mods/hud/textures/crosshair.png deleted file mode 100644 index a832298b..00000000 Binary files a/mods/hud/textures/crosshair.png and /dev/null differ diff --git a/mods/hud/textures/hud_air_fg.png b/mods/hud/textures/hud_air_fg.png deleted file mode 100644 index b62c9b02..00000000 Binary files a/mods/hud/textures/hud_air_fg.png and /dev/null differ diff --git a/mods/hud/textures/hud_armor_bg.png b/mods/hud/textures/hud_armor_bg.png deleted file mode 100644 index 32401003..00000000 Binary files a/mods/hud/textures/hud_armor_bg.png and /dev/null differ diff --git a/mods/hud/textures/hud_armor_fg.png b/mods/hud/textures/hud_armor_fg.png deleted file mode 100644 index 374f1a9a..00000000 Binary files a/mods/hud/textures/hud_armor_fg.png and /dev/null differ diff --git a/mods/hud/textures/hud_heart_bg.png b/mods/hud/textures/hud_heart_bg.png deleted file mode 100644 index e2be2768..00000000 Binary files a/mods/hud/textures/hud_heart_bg.png and /dev/null differ diff --git a/mods/hud/textures/hud_heart_fg.png b/mods/hud/textures/hud_heart_fg.png deleted file mode 100644 index dc213d84..00000000 Binary files a/mods/hud/textures/hud_heart_fg.png and /dev/null differ diff --git a/mods/hud/textures/hud_hotbar.png b/mods/hud/textures/hud_hotbar.png deleted file mode 100644 index 8c3df7c6..00000000 Binary files a/mods/hud/textures/hud_hotbar.png and /dev/null differ diff --git a/mods/hud/textures/hud_hotbar_selected.png b/mods/hud/textures/hud_hotbar_selected.png deleted file mode 100644 index 5334d6b1..00000000 Binary files a/mods/hud/textures/hud_hotbar_selected.png and /dev/null differ diff --git a/mods/hud/textures/hud_hunger_bg.png b/mods/hud/textures/hud_hunger_bg.png deleted file mode 100644 index 07e21e7b..00000000 Binary files a/mods/hud/textures/hud_hunger_bg.png and /dev/null differ diff --git a/mods/hud/textures/hud_hunger_fg.png b/mods/hud/textures/hud_hunger_fg.png deleted file mode 100644 index a5cc2a12..00000000 Binary files a/mods/hud/textures/hud_hunger_fg.png and /dev/null differ diff --git a/mods/hud/textures/wieldhand.png b/mods/hud/textures/wieldhand.png deleted file mode 100644 index 2307ba4e..00000000 Binary files a/mods/hud/textures/wieldhand.png and /dev/null differ diff --git a/mods/hunger/API.txt b/mods/hunger/API.txt deleted file mode 100644 index 9b350ff4..00000000 --- a/mods/hunger/API.txt +++ /dev/null @@ -1,9 +0,0 @@ --- Register food with given values to change eating actions - -hunger.register_food(name, saturation, replace_with_item, poisen, heal, sound) - -- name: item name, e.g. "default:apple" - -- saturation: amount of added saturation - -- replace_with_item: item name that get returned after eating (can be nil) - -- poisen: duration in seconds (1hp damage per second, player can't die) (can be nil) - -- heal: added HP when eating this food (can be nil) - -- sound: costum eating sound (replaces default eating sound) (can be nil) diff --git a/mods/hunger/LICENSE.txt b/mods/hunger/LICENSE.txt deleted file mode 100644 index 4362b491..00000000 --- a/mods/hunger/LICENSE.txt +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -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 this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser 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 Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "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 -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY 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 -LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey 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 library 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. - - This library 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 library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/mods/hunger/README.txt b/mods/hunger/README.txt deleted file mode 100644 index c658f6ea..00000000 --- a/mods/hunger/README.txt +++ /dev/null @@ -1,91 +0,0 @@ -Minetest mod "Hunger" -===================== -Version: 1.0 - -(c) Copyright BlockMen (2015) - - -About this mod: -~~~~~~~~~~~~~~~ -This mod adds hunger mechanics to Minetest, which are based on player actions and on time. -Also it changes the eating in Minetest, e.g. an Apple does not restore Health, but it rises your saturation. -Example: 1 apple fills up the hunger bar by 1 "bread" (statbar symbol). -Although the statbar show 20 hunger points (10 breads) on the HUD you can fill it up to 30 points. - -By default it supports a lot of food already (see full list below) and food that for registered via the API. -For more information how to register more food see API.txt - -Information: -This mod depends on the "Better HUD" mod (https://github.com/BlockMen/hud) to provide information about your current saturation. - - -License: -~~~~~~~~ -(c) Copyright BlockMen (2015) - - -Code: -Licensed under the GNU LGPL version 2.1 or higher. -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; - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -See LICENSE.txt and http://www.gnu.org/licenses/lgpl-2.1.txt - - -Textures: -hunger_statbar_poisen.png - BlockMen (CC-BY 3.0) - -Sounds: -hunger_eat.ogg - BlockMen (CC-BY 3.0) - - -Github: -~~~~~~~ -https://github.com/BlockMen/hunger - -Forum: -~~~~~~ -- - -Changelog: -~~~~~~~~~~ -see changelog.txt - - -Dependencies: -~~~~~~~~~~~~~ -- Default -- Farming -- Better HUD (https://github.com/BlockMen/hud) - - -Supported food/mods: -~~~~~~~~~~~~~~~~~~~~ -- Apples (default) -- Animalmaterials (mobf modpack) -- Bread (default) -- Bushes -- bushes_classic -- Creatures -- Dwarves (beer and such) -- Docfarming -- Fishing -- Farming plus -- Farming (default and Tenplus1's fork) -- Food -- fruit -- Glooptest -- JKMod -- kpgmobs -- Mobfcooking -- Mooretrees -- Mtfoods -- mushroom -- mush45 -- Seaplants (sea) -- Simple mobs diff --git a/mods/hunger/changelog.txt b/mods/hunger/changelog.txt deleted file mode 100644 index ba79ce2d..00000000 --- a/mods/hunger/changelog.txt +++ /dev/null @@ -1,6 +0,0 @@ -1.0 ---- -- Partly rewritten (based on Better HUD hunger mechanics) -- Added API to register food -- Added eating sounds -- Hungerbar image changes when poisend diff --git a/mods/hunger/depends.txt b/mods/hunger/depends.txt deleted file mode 100644 index a73cec42..00000000 --- a/mods/hunger/depends.txt +++ /dev/null @@ -1,29 +0,0 @@ -default -hud -animalmaterials? -bucket? -bushes? -bushes_classic? -cooking? -creatures? -docfarming? -dwarves? -ethereal? -farming? -farming_plus? -ferns? -fishing? -fruit? -glooptest? -jkanimals? -jkfarming? -jkwine? -kpgmobs? -mobfcooking? -mobs? -moretrees? -mtfoods? -mush45? -mushroom? -pizza? -seaplants? diff --git a/mods/hunger/food.lua b/mods/hunger/food.lua deleted file mode 100644 index 5a2b7426..00000000 --- a/mods/hunger/food.lua +++ /dev/null @@ -1,331 +0,0 @@ -local register_food = hunger.register_food - -register_food("default:apple", 2) - -if minetest.get_modpath("farming") ~= nil then - register_food("farming:bread", 4) - register_food("farming:rhubarb_pie", 6) -end - -if minetest.get_modpath("maptools") then - register_food("maptools:superapple", 10, "", nil, 20) -- valeur perso pour "Super Apple" => 10 coeurs, 5 pains -end - -if minetest.get_modpath("mobs") ~= nil then - if mobs.mod ~= nil and mobs.mod == "redo" then - register_food("mobs:cheese", 4) - register_food("mobs:meat", 5) - register_food("mobs:meat_raw", 3) - register_food("mobs:rat_cooked", 5) - register_food("mobs:honey", 6) - register_food("mobs:pork_raw", 4) - register_food("mobs:pork_cooked", 7) - register_food("mobs:chicken_cooked", 4) - register_food("mobs:chicken_raw", 2) - register_food("mobs:chicken_egg_fried", 2) - register_food("mobs:chicken_raw", 2) - register_food("mobs:egg", 1) - if minetest.get_modpath("bucket") then - register_food("mobs:bucket_milk", 3, "bucket:bucket_empty") - end - else - register_food("mobs:meat", 6) - register_food("mobs:meat_raw", 3) - register_food("mobs:rat_cooked", 5) - end -end - -if minetest.get_modpath("moretrees") ~= nil then - register_food("moretrees:coconut_milk", 1) - register_food("moretrees:raw_coconut", 2) - register_food("moretrees:acorn_muffin", 3) - register_food("moretrees:spruce_nuts", 1) - register_food("moretrees:pine_nuts", 1) - register_food("moretrees:fir_nuts", 1) -end - -if minetest.get_modpath("dwarves") ~= nil then - register_food("dwarves:beer", 2) - register_food("dwarves:apple_cider", 1) - register_food("dwarves:midus", 2) - register_food("dwarves:tequila", 2) - register_food("dwarves:tequila_with_lime", 2) - register_food("dwarves:sake", 2) -end - -if minetest.get_modpath("animalmaterials") ~= nil then - register_food("animalmaterials:milk", 2) - register_food("animalmaterials:meat_raw", 3) - register_food("animalmaterials:meat_pork", 3) - register_food("animalmaterials:meat_beef", 3) - register_food("animalmaterials:meat_chicken", 3) - register_food("animalmaterials:meat_lamb", 3) - register_food("animalmaterials:meat_venison", 3) - register_food("animalmaterials:meat_undead", 3, "", 3) - register_food("animalmaterials:meat_toxic", 3, "", 5) - register_food("animalmaterials:meat_ostrich", 3) - register_food("animalmaterials:fish_bluewhite", 2) - register_food("animalmaterials:fish_clownfish", 2) -end - -if minetest.get_modpath("fishing") ~= nil then - register_food("fishing:fish_raw", 2) - register_food("fishing:fish_cooked", 5) - register_food("fishing:sushi", 6) - register_food("fishing:shark", 4) - register_food("fishing:shark_cooked", 8) - register_food("fishing:pike", 4) - register_food("fishing:pike_cooked", 8) -end - -if minetest.get_modpath("glooptest") ~= nil then - register_food("glooptest:kalite_lump", 1) -end - -if minetest.get_modpath("bushes") ~= nil then - register_food("bushes:sugar", 1) - register_food("bushes:strawberry", 2) - register_food("bushes:berry_pie_raw", 3) - register_food("bushes:berry_pie_cooked", 4) - register_food("bushes:basket_pies", 15) -end - -if minetest.get_modpath("bushes_classic") then - -- bushes_classic mod, as found in the plantlife modpack - local berries = { - "strawberry", - "blackberry", - "blueberry", - "raspberry", - "gooseberry", - "mixed_berry"} - for _, berry in ipairs(berries) do - if berry ~= "mixed_berry" then - register_food("bushes:"..berry, 1) - end - register_food("bushes:"..berry.."_pie_raw", 2) - register_food("bushes:"..berry.."_pie_cooked", 5) - register_food("bushes:basket_"..berry, 15) - end -end - -if minetest.get_modpath("mushroom") ~= nil then - register_food("mushroom:brown", 1) - register_food("mushroom:red", 1, "", 3) - -- mushroom potions: red = strong poison, brown = light restorative - if minetest.get_modpath("vessels") then - register_food("mushroom:brown_essence", 1, "vessels:glass_bottle", nil, 4) - register_food("mushroom:poison", 1, "vessels:glass_bottle", 10) - end -end - -if minetest.get_modpath("docfarming") ~= nil then - register_food("docfarming:carrot", 3) - register_food("docfarming:cucumber", 2) - register_food("docfarming:corn", 3) - register_food("docfarming:potato", 4) - register_food("docfarming:bakedpotato", 5) - register_food("docfarming:raspberry", 3) -end - -if minetest.get_modpath("farming_plus") ~= nil then - register_food("farming_plus:carrot_item", 3) - register_food("farming_plus:banana", 2) - register_food("farming_plus:orange_item", 2) - register_food("farming:pumpkin_bread", 4) - register_food("farming_plus:strawberry_item", 2) - register_food("farming_plus:tomato_item", 2) - register_food("farming_plus:potato_item", 4) - register_food("farming_plus:rhubarb_item", 2) -end - -if minetest.get_modpath("mtfoods") ~= nil then - register_food("mtfoods:dandelion_milk", 1) - register_food("mtfoods:sugar", 1) - register_food("mtfoods:short_bread", 4) - register_food("mtfoods:cream", 1) - register_food("mtfoods:chocolate", 2) - register_food("mtfoods:cupcake", 2) - register_food("mtfoods:strawberry_shortcake", 2) - register_food("mtfoods:cake", 3) - register_food("mtfoods:chocolate_cake", 3) - register_food("mtfoods:carrot_cake", 3) - register_food("mtfoods:pie_crust", 3) - register_food("mtfoods:apple_pie", 3) - register_food("mtfoods:rhubarb_pie", 2) - register_food("mtfoods:banana_pie", 3) - register_food("mtfoods:pumpkin_pie", 3) - register_food("mtfoods:cookies", 2) - register_food("mtfoods:mlt_burger", 5) - register_food("mtfoods:potato_slices", 2) - register_food("mtfoods:potato_chips", 3) - --mtfoods:medicine - register_food("mtfoods:casserole", 3) - register_food("mtfoods:glass_flute", 2) - register_food("mtfoods:orange_juice", 2) - register_food("mtfoods:apple_juice", 2) - register_food("mtfoods:apple_cider", 2) - register_food("mtfoods:cider_rack", 2) -end - -if minetest.get_modpath("fruit") ~= nil then - register_food("fruit:apple", 2) - register_food("fruit:pear", 2) - register_food("fruit:bananna", 3) - register_food("fruit:orange", 2) -end - -if minetest.get_modpath("mush45") ~= nil then - register_food("mush45:meal", 4) -end - -if minetest.get_modpath("seaplants") ~= nil then - register_food("seaplants:kelpgreen", 1) - register_food("seaplants:kelpbrown", 1) - register_food("seaplants:seagrassgreen", 1) - register_food("seaplants:seagrassred", 1) - register_food("seaplants:seasaladmix", 6) - register_food("seaplants:kelpgreensalad", 1) - register_food("seaplants:kelpbrownsalad", 1) - register_food("seaplants:seagrassgreensalad", 1) - register_food("seaplants:seagrassgreensalad", 1) -end - -if minetest.get_modpath("mobfcooking") ~= nil then - register_food("mobfcooking:cooked_pork", 6) - register_food("mobfcooking:cooked_ostrich", 6) - register_food("mobfcooking:cooked_beef", 6) - register_food("mobfcooking:cooked_chicken", 6) - register_food("mobfcooking:cooked_lamb", 6) - register_food("mobfcooking:cooked_venison", 6) - register_food("mobfcooking:cooked_fish", 6) -end - -if minetest.get_modpath("creatures") ~= nil then - register_food("creatures:meat", 6) - register_food("creatures:flesh", 3) - register_food("creatures:rotten_flesh", 3, "", 3) -end - -if minetest.get_modpath("ethereal") then - register_food("ethereal:strawberry", 1) - register_food("ethereal:banana", 4) - register_food("ethereal:pine_nuts", 1) - register_food("ethereal:bamboo_sprout", 0, "", 3) - register_food("ethereal:fern_tubers", 1) - register_food("ethereal:banana_bread", 7) - register_food("ethereal:mushroom_plant", 2) - register_food("ethereal:coconut_slice", 2) - register_food("ethereal:golden_apple", 4, "", nil, 10) - register_food("ethereal:wild_onion_plant", 2) - register_food("ethereal:mushroom_soup", 4, "ethereal:bowl") - register_food("ethereal:mushroom_soup_cooked", 6, "ethereal:bowl") - register_food("ethereal:hearty_stew", 6, "ethereal:bowl", 3) - register_food("ethereal:hearty_stew_cooked", 10, "ethereal:bowl") - if minetest.get_modpath("bucket") then - register_food("ethereal:bucket_cactus", 2, "bucket:bucket_empty") - end - register_food("ethereal:fish_raw", 2) - register_food("ethereal:fish_cooked", 4) - register_food("ethereal:seaweed", 1) - register_food("ethereal:yellowleaves", 1, "", nil, 1) - register_food("ethereal:sashimi", 4) -end - ---- mes modifs /début --- - -if minetest.get_modpath("farming") and farming.mod == "redo" then - register_food("farming:bread", 5) - register_food("farming:potato", 1) - register_food("farming:baked_potato", 5) - register_food("farming:cucumber", 3) - register_food("farming:tomato", 3) - register_food("farming:carrot", 3) - register_food("farming:carrot_gold", 6, "", nil, 10) - register_food("farming:corn", 3) - register_food("farming:corn_cob", 5) - register_food("farming:melon_slice", 2) - register_food("farming:pumpkin_slice", 1) - register_food("farming:pumpkin_bread", 7) - register_food("farming:coffee_cup", 2, "farming:drinking_cup") - register_food("farming:coffee_cup_hot", 3, "farming:drinking_cup", nil, 2) - register_food("farming:cookie", 2) - register_food("farming:chocolate_dark", 3) - register_food("farming:donut", 4) - register_food("farming:donut_chocolate", 5) - register_food("farming:donut_apple", 5) - register_food("farming:raspberries", 1) - register_food("farming:blueberries", 1) - register_food("farming:muffin_blueberry", 4) - if minetest.get_modpath("vessels") then - register_food("farming:smoothie_raspberry", 2, "vessels:drinking_glass") - end - register_food("farming:rhubarb", 1) - register_food("farming:rhubarb_pie", 5) -end - -if minetest.get_modpath("fishing") ~= nil then - register_food("fishing:fish_raw", 2) - register_food("fishing:fish_cooked", 4) - register_food("fishing:sushi", 6) - register_food("fishing:shark", 2) - register_food("fishing:shark_cooked", 6) - register_food("fishing:pike", 2) - register_food("fishing:pike_cooked", 6) -end ---- mes modifs /fin --- - -if minetest.get_modpath("kpgmobs") ~= nil then - register_food("kpgmobs:uley", 3) - register_food("kpgmobs:meat", 6) - register_food("kpgmobs:rat_cooked", 5) - register_food("kpgmobs:med_cooked", 4) - if minetest.get_modpath("bucket") then - register_food("kpgmobs:bucket_milk", 4, "bucket:bucket_empty") - end -end - -if minetest.get_modpath("jkfarming") ~= nil then - register_food("jkfarming:carrot", 3) - register_food("jkfarming:corn", 3) - register_food("jkfarming:melon_part", 2) - register_food("jkfarming:cake", 3) -end - -if minetest.get_modpath("jkanimals") ~= nil then - register_food("jkanimals:meat", 6) -end - -if minetest.get_modpath("jkwine") ~= nil then - register_food("jkwine:grapes", 2) - register_food("jkwine:winebottle", 1) -end - -if minetest.get_modpath("cooking") ~= nil then - register_food("cooking:meat_beef_cooked", 4) - register_food("cooking:fish_bluewhite_cooked", 3) - register_food("cooking:fish_clownfish_cooked", 1) - register_food("cooking:meat_chicken_cooked", 2) - register_food("cooking:meat_cooked", 2) - register_food("cooking:meat_pork_cooked", 3) - register_food("cooking:meat_toxic_cooked", -3) - register_food("cooking:meat_venison_cooked", 3) - register_food("cooking:meat_undead_cooked", 1) -end - --- ferns mod of plantlife_modpack -if minetest.get_modpath("ferns") ~= nil then - register_food("ferns:fiddlehead", 1, "", 1) - register_food("ferns:fiddlehead_roasted", 3) - register_food("ferns:ferntuber_roasted", 3) - register_food("ferns:horsetail_01", 1) -end - -if minetest.get_modpath("pizza") ~= nil then - register_food("pizza:pizza", 30, "", nil, 30) - register_food("pizza:pizzaslice", 5, "", nil, 5) -end - -if minetest.get_modpath("nether") ~= nil then - register_food("nether:apple", 9, "", 5) -end diff --git a/mods/hunger/functions.lua b/mods/hunger/functions.lua deleted file mode 100644 index d3c8af31..00000000 --- a/mods/hunger/functions.lua +++ /dev/null @@ -1,236 +0,0 @@ --- read/write -function hunger.read(player) - local inv = player:get_inventory() - if not inv then - return nil - end - local hgp = inv:get_stack("hunger", 1):get_count() - if hgp == 0 then - hgp = 21 - inv:set_stack("hunger", 1, ItemStack({name = ":", count = hgp})) - else - hgp = hgp - end - if tonumber(hgp) > HUNGER_MAX + 1 then - hgp = HUNGER_MAX + 1 - end - return hgp - 1 -end - -function hunger.save(player) - local inv = player:get_inventory() - local name = player:get_player_name() - local value = hunger[name].lvl - if not inv or not value then - return nil - end - if value > HUNGER_MAX then - value = HUNGER_MAX - end - if value < 0 then - value = 0 - end - inv:set_stack("hunger", 1, ItemStack({name = ":", count = value + 1})) - return true -end - -function hunger.update_hunger(player, new_lvl) - local name = player:get_player_name() or nil - if not name then - return false - end - if minetest.setting_getbool("enable_damage") == false then - hunger[name] = 20 - return - end - local lvl = hunger[name].lvl - if new_lvl then - lvl = new_lvl - end - if lvl > HUNGER_MAX then - lvl = HUNGER_MAX - end - hunger[name].lvl = lvl - if lvl > 20 then - lvl = 20 - end - hud.change_item(player, "hunger", {number = lvl}) - hunger.save(player) -end -local update_hunger = hunger.update_hunger - --- player-action based hunger changes -function hunger.handle_node_actions(pos, oldnode, player, ext) - if not player or not player:is_player() then - return - end - local name = player:get_player_name() - local exhaus = hunger[name].exhaus - if not exhaus then - hunger[name].exhaus = 0 - --return - end - - local new = HUNGER_EXHAUST_PLACE - - -- placenode event - if not ext then - new = HUNGER_EXHAUST_DIG - end - - -- assume its send by action_timer(globalstep) - if not pos and not oldnode then - new = HUNGER_EXHAUST_MOVE - end - - exhaus = exhaus + new - - if exhaus > HUNGER_EXHAUST_LVL then - exhaus = 0 - local h = tonumber(hunger[name].lvl) - if h > 0 then - update_hunger(player, h - 1) - end - end - - hunger[name].exhaus = exhaus -end - --- Time based hunger functions -if minetest.setting_getbool("enable_damage") then - local hunger_timer = 0 - local health_timer = 0 - local action_timer = 0 - minetest.register_globalstep(function(dtime) - hunger_timer = hunger_timer + dtime - health_timer = health_timer + dtime - action_timer = action_timer + dtime - - if action_timer > HUNGER_MOVE_TICK then - for _,player in ipairs(minetest.get_connected_players()) do - local controls = player:get_player_control() - -- Determine if the player is walking - if controls.up or controls.down or controls.left or controls.right then - hunger.handle_node_actions(nil, nil, player) - end - end - action_timer = 0 - end - - -- lower saturation by 1 point after second(s) - if hunger_timer > HUNGER_TICK then - for _,player in ipairs(minetest.get_connected_players()) do - local name = player:get_player_name() - local tab = hunger[name] - if tab then - local hunger = tab.lvl - if hunger > 0 then - update_hunger(player, hunger - 1) - end - end - end - hunger_timer = 0 - end - - -- heal or damage player, depending on saturation - if health_timer > HUNGER_HEALTH_TICK then - for _,player in ipairs(minetest.get_connected_players()) do - local name = player:get_player_name() - local tab = hunger[name] - if tab then - local air = player:get_breath() or 0 - local hp = player:get_hp() - - -- heal player by 1 hp if not dead and saturation is > 15 (of 30) - if tonumber(tab.lvl) > HUNGER_HEAL_LVL and air > 0 then - player:set_hp(hp + HUNGER_HEAL) - end - - -- or damage player by 1 hp if saturation is < 2 (of 30) - if tonumber(tab.lvl) < HUNGER_STARVE_LVL then - player:set_hp(hp - HUNGER_STARVE) - end - end - end - - health_timer = 0 - end - end) -end - - --- food functions -local food = hunger.food - -function hunger.register_food(name, hunger_change, replace_with_item, poisen, heal, sound) - food[name] = {} - food[name].saturation = hunger_change -- hunger points added - food[name].replace = replace_with_item -- what item is given back after eating - food[name].poisen = poisen -- time its poisening - food[name].healing = heal -- amount of HP - food[name].sound = sound -- special sound that is played when eating -end - --- Poison player -local function poisenp(tick, time, time_left, player) - time_left = time_left + tick - if time_left < time then - minetest.after(tick, poisenp, tick, time, time_left, player) - else - hud.change_item(player, "hunger", {text = "hud_hunger_fg.png"}) - end - local hp = player:get_hp() -1 or 0 - if hp > 0 then - player:set_hp(hp) - end -end - -function hunger.eat(hp_change, replace_with_item, itemstack, user, pointed_thing) - local item = itemstack:get_name() - local def = food[item] - if not def then - def = {} - def.saturation = hp_change * 1.3 - def.replace = replace_with_item - end - local func = hunger.item_eat(def.saturation, def.replace, def.poisen, def.healing, def.sound) - return func(itemstack, user, pointed_thing) -end - -function hunger.item_eat(hunger_change, replace_with_item, poisen, heal, sound) - return function(itemstack, user, pointed_thing) - if itemstack:take_item() ~= nil and user ~= nil then - local name = user:get_player_name() - local sat = tonumber(hunger[name].lvl) - local hp = user:get_hp() - -- Saturation - if sat < HUNGER_MAX and hunger_change then - sat = sat + hunger_change - hunger.update_hunger(user, sat) - end - -- Healing - if hp < 20 and heal then - hp = hp + heal - if hp > 20 then - hp = 20 - end - user:set_hp(hp) - end - -- Poison - if poisen then - hud.change_item(user, "hunger", {text = "hunger_statbar_poisen.png"}) - poisenp(1.0, poisen, 0, user) - end - - -- eating sound - if not sound then - sound = "hunger_eat" - end - minetest.sound_play(sound, {to_player = name, gain = 0.7}) - - itemstack:add_item(replace_with_item) - end - - return itemstack - end -end diff --git a/mods/hunger/init.lua b/mods/hunger/init.lua deleted file mode 100644 index f60f7cb3..00000000 --- a/mods/hunger/init.lua +++ /dev/null @@ -1,54 +0,0 @@ -hunger = {} -hunger.food = {} - -HUNGER_TICK = 800 -- time in seconds after that 1 hunger point is taken -HUNGER_HEALTH_TICK = 4 -- time in seconds after player gets healed/damaged -HUNGER_MOVE_TICK = 0.5 -- time in seconds after the movement is checked - -HUNGER_EXHAUST_DIG = 3 -- exhaustion increased this value after digged node -HUNGER_EXHAUST_PLACE = 1 -- exhaustion increased this value after placed -HUNGER_EXHAUST_MOVE = 0.3 -- exhaustion increased this value if player movement detected -HUNGER_EXHAUST_LVL = 60 -- at what exhaustion player saturation gets lowered - -HUNGER_HEAL = 1 -- number of HP player gets healed after HUNGER_HEALTH_TICK -HUNGER_HEAL_LVL = 15 -- lower level of saturation needed to get healed -HUNGER_STARVE = 1 -- number of HP player gets damaged by hunger after HUNGER_HEALTH_TICK -HUNGER_STARVE_LVL = 3 -- level of staturation that causes starving - -HUNGER_MAX = 30 -- maximum level of saturation - - -local modpath = minetest.get_modpath("hunger") -dofile(modpath .. "/functions.lua") -dofile(modpath .. "/food.lua") -dofile(modpath .. "/legacy.lua") - - --- Callbacks -if minetest.setting_getbool("enable_damage") then - minetest.register_on_joinplayer(function(player) - local inv = player:get_inventory() - inv:set_size("hunger", 1) - - local name = player:get_player_name() - hunger[name] = {} - hunger[name].lvl = hunger.read(player) - hunger[name].exhaus = 0 - local lvl = hunger[name].lvl - if lvl > 20 then - lvl = 20 - end - minetest.after(0.8, function() - hud.change_item(player, "hunger", {offset = "item", item_name = "air"}) - hud.change_item(player, "hunger", {number = lvl, max = 20}) - end) - end) - - -- for exhaustion - minetest.register_on_placenode(hunger.handle_node_actions) - minetest.register_on_dignode(hunger.handle_node_actions) - minetest.register_on_item_eat(hunger.eat) - minetest.register_on_respawnplayer(function(player) - hunger.update_hunger(player, 20) - end) -end diff --git a/mods/hunger/legacy.lua b/mods/hunger/legacy.lua deleted file mode 100644 index 7ad1fc98..00000000 --- a/mods/hunger/legacy.lua +++ /dev/null @@ -1,5 +0,0 @@ -hud.item_eat = hunger.item_eat -hud.set_hunger = hunger.save -hud.get_hunger = hunger.load -hud.save_hunger = hunger.save -hud.load_hunger = hunger.load \ No newline at end of file diff --git a/mods/hunger/sounds/hunger_eat.ogg b/mods/hunger/sounds/hunger_eat.ogg deleted file mode 100644 index ad2ccc8d..00000000 Binary files a/mods/hunger/sounds/hunger_eat.ogg and /dev/null differ diff --git a/mods/hunger/textures/hunger_statbar_poisen.png b/mods/hunger/textures/hunger_statbar_poisen.png deleted file mode 100644 index 0f80ad26..00000000 Binary files a/mods/hunger/textures/hunger_statbar_poisen.png and /dev/null differ