From 4461be75c97051f91c323e9504df6b5030a17d15 Mon Sep 17 00:00:00 2001 From: Hamlet Date: Mon, 13 Jul 2020 16:59:56 +0200 Subject: [PATCH] v0.1.0 --- LICENCE.txt | 191 +++++++++++++ README.md | 32 +++ changelog.md | 15 ++ core/functions.lua | 104 +++++++ core/mob.lua | 114 ++++++++ core/nodes.lua | 131 +++++++++ core/procedures.lua | 73 +++++ core/projectile.lua | 60 +++++ core/spawning.lua | 71 +++++ init.lua | 119 ++++++++ locale/mobs_mime.it.tr | 5 + locale/template.txt | 5 + mod.conf | 3 + screenshot.png | Bin 0 -> 43367 bytes settingtypes.txt | 54 ++++ textures/CC_BY-SA_4.0.txt | 433 ++++++++++++++++++++++++++++++ textures/mobs_mime_projectile.png | Bin 0 -> 242 bytes 17 files changed, 1410 insertions(+) create mode 100644 LICENCE.txt create mode 100644 README.md create mode 100644 changelog.md create mode 100644 core/functions.lua create mode 100644 core/mob.lua create mode 100644 core/nodes.lua create mode 100644 core/procedures.lua create mode 100644 core/projectile.lua create mode 100644 core/spawning.lua create mode 100644 init.lua create mode 100644 locale/mobs_mime.it.tr create mode 100644 locale/template.txt create mode 100644 mod.conf create mode 100644 screenshot.png create mode 100644 settingtypes.txt create mode 100644 textures/CC_BY-SA_4.0.txt create mode 100644 textures/mobs_mime_projectile.png diff --git a/LICENCE.txt b/LICENCE.txt new file mode 100644 index 0000000..173e5e2 --- /dev/null +++ b/LICENCE.txt @@ -0,0 +1,191 @@ +EUROPEAN UNION PUBLIC LICENCE v. 1.2 +EUPL © the European Union 2007, 2016 + +This European Union Public Licence (the ‘EUPL’) applies to the Work (as defined below) which is provided under the +terms of this Licence. Any use of the Work, other than as authorised under this Licence is prohibited (to the extent such +use is covered by a right of the copyright holder of the Work). +The Work is provided under the terms of this Licence when the Licensor (as defined below) has placed the following +notice immediately following the copyright notice for the Work: + Licensed under the EUPL +or has expressed by any other means his willingness to license under the EUPL. + +1.Definitions +In this Licence, the following terms have the following meaning: +— ‘The Licence’:this Licence. +— ‘The Original Work’:the work or software distributed or communicated by the Licensor under this Licence, available +as Source Code and also as Executable Code as the case may be. +— ‘Derivative Works’:the works or software that could be created by the Licensee, based upon the Original Work or +modifications thereof. This Licence does not define the extent of modification or dependence on the Original Work +required in order to classify a work as a Derivative Work; this extent is determined by copyright law applicable in +the country mentioned in Article 15. +— ‘The Work’:the Original Work or its Derivative Works. +— ‘The Source Code’:the human-readable form of the Work which is the most convenient for people to study and +modify. +— ‘The Executable Code’:any code which has generally been compiled and which is meant to be interpreted by +a computer as a program. +— ‘The Licensor’:the natural or legal person that distributes or communicates the Work under the Licence. +— ‘Contributor(s)’:any natural or legal person who modifies the Work under the Licence, or otherwise contributes to +the creation of a Derivative Work. +— ‘The Licensee’ or ‘You’:any natural or legal person who makes any usage of the Work under the terms of the +Licence. +— ‘Distribution’ or ‘Communication’:any act of selling, giving, lending, renting, distributing, communicating, +transmitting, or otherwise making available, online or offline, copies of the Work or providing access to its essential +functionalities at the disposal of any other natural or legal person. + +2.Scope of the rights granted by the Licence +The Licensor hereby grants You a worldwide, royalty-free, non-exclusive, sublicensable licence to do the following, for +the duration of copyright vested in the Original Work: +— use the Work in any circumstance and for all usage, +— reproduce the Work, +— modify the Work, and make Derivative Works based upon the Work, +— communicate to the public, including the right to make available or display the Work or copies thereof to the public +and perform publicly, as the case may be, the Work, +— distribute the Work or copies thereof, +— lend and rent the Work or copies thereof, +— sublicense rights in the Work or copies thereof. +Those rights can be exercised on any media, supports and formats, whether now known or later invented, as far as the +applicable law permits so. +In the countries where moral rights apply, the Licensor waives his right to exercise his moral right to the extent allowed +by law in order to make effective the licence of the economic rights here above listed. +The Licensor grants to the Licensee royalty-free, non-exclusive usage rights to any patents held by the Licensor, to the +extent necessary to make use of the rights granted on the Work under this Licence. + +3.Communication of the Source Code +The Licensor may provide the Work either in its Source Code form, or as Executable Code. If the Work is provided as +Executable Code, the Licensor provides in addition a machine-readable copy of the Source Code of the Work along with +each copy of the Work that the Licensor distributes or indicates, in a notice following the copyright notice attached to +the Work, a repository where the Source Code is easily and freely accessible for as long as the Licensor continues to +distribute or communicate the Work. + +4.Limitations on copyright +Nothing in this Licence is intended to deprive the Licensee of the benefits from any exception or limitation to the +exclusive rights of the rights owners in the Work, of the exhaustion of those rights or of other applicable limitations +thereto. + +5.Obligations of the Licensee +The grant of the rights mentioned above is subject to some restrictions and obligations imposed on the Licensee. Those +obligations are the following: + +Attribution right: The Licensee shall keep intact all copyright, patent or trademarks notices and all notices that refer to +the Licence and to the disclaimer of warranties. The Licensee must include a copy of such notices and a copy of the +Licence with every copy of the Work he/she distributes or communicates. The Licensee must cause any Derivative Work +to carry prominent notices stating that the Work has been modified and the date of modification. + +Copyleft clause: If the Licensee distributes or communicates copies of the Original Works or Derivative Works, this +Distribution or Communication will be done under the terms of this Licence or of a later version of this Licence unless +the Original Work is expressly distributed only under this version of the Licence — for example by communicating +‘EUPL v. 1.2 only’. The Licensee (becoming Licensor) cannot offer or impose any additional terms or conditions on the +Work or Derivative Work that alter or restrict the terms of the Licence. + +Compatibility clause: If the Licensee Distributes or Communicates Derivative Works or copies thereof based upon both +the Work and another work licensed under a Compatible Licence, this Distribution or Communication can be done +under the terms of this Compatible Licence. For the sake of this clause, ‘Compatible Licence’ refers to the licences listed +in the appendix attached to this Licence. Should the Licensee's obligations under the Compatible Licence conflict with +his/her obligations under this Licence, the obligations of the Compatible Licence shall prevail. + +Provision of Source Code: When distributing or communicating copies of the Work, the Licensee will provide +a machine-readable copy of the Source Code or indicate a repository where this Source will be easily and freely available +for as long as the Licensee continues to distribute or communicate the Work. +Legal Protection: This Licence does not grant permission to use the trade names, trademarks, service marks, or names +of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and +reproducing the content of the copyright notice. + +6.Chain of Authorship +The original Licensor warrants that the copyright in the Original Work granted hereunder is owned by him/her or +licensed to him/her and that he/she has the power and authority to grant the Licence. +Each Contributor warrants that the copyright in the modifications he/she brings to the Work are owned by him/her or +licensed to him/her and that he/she has the power and authority to grant the Licence. +Each time You accept the Licence, the original Licensor and subsequent Contributors grant You a licence to their contributions +to the Work, under the terms of this Licence. + +7.Disclaimer of Warranty +The Work is a work in progress, which is continuously improved by numerous Contributors. It is not a finished work +and may therefore contain defects or ‘bugs’ inherent to this type of development. +For the above reason, the Work is provided under the Licence on an ‘as is’ basis and without warranties of any kind +concerning the Work, including without limitation merchantability, fitness for a particular purpose, absence of defects or +errors, accuracy, non-infringement of intellectual property rights other than copyright as stated in Article 6 of this +Licence. +This disclaimer of warranty is an essential part of the Licence and a condition for the grant of any rights to the Work. + +8.Disclaimer of Liability +Except in the cases of wilful misconduct or damages directly caused to natural persons, the Licensor will in no event be +liable for any direct or indirect, material or moral, damages of any kind, arising out of the Licence or of the use of the +Work, including without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, loss +of data or any commercial damage, even if the Licensor has been advised of the possibility of such damage. However, +the Licensor will be liable under statutory product liability laws as far such laws apply to the Work. + +9.Additional agreements +While distributing the Work, You may choose to conclude an additional agreement, defining obligations or services +consistent with this Licence. However, if accepting obligations, You may act only on your own behalf and on your sole +responsibility, not on behalf of the original Licensor or any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against such Contributor by +the fact You have accepted any warranty or additional liability. + +10.Acceptance of the Licence +The provisions of this Licence can be accepted by clicking on an icon ‘I agree’ placed under the bottom of a window +displaying the text of this Licence or by affirming consent in any other similar way, in accordance with the rules of +applicable law. Clicking on that icon indicates your clear and irrevocable acceptance of this Licence and all of its terms +and conditions. +Similarly, you irrevocably accept this Licence and all of its terms and conditions by exercising any rights granted to You +by Article 2 of this Licence, such as the use of the Work, the creation by You of a Derivative Work or the Distribution +or Communication by You of the Work or copies thereof. + +11.Information to the public +In case of any Distribution or Communication of the Work by means of electronic communication by You (for example, +by offering to download the Work from a remote location) the distribution channel or media (for example, a website) +must at least provide to the public the information requested by the applicable law regarding the Licensor, the Licence +and the way it may be accessible, concluded, stored and reproduced by the Licensee. + +12.Termination of the Licence +The Licence and the rights granted hereunder will terminate automatically upon any breach by the Licensee of the terms +of the Licence. +Such a termination will not terminate the licences of any person who has received the Work from the Licensee under +the Licence, provided such persons remain in full compliance with the Licence. + +13.Miscellaneous +Without prejudice of Article 9 above, the Licence represents the complete agreement between the Parties as to the +Work. +If any provision of the Licence is invalid or unenforceable under applicable law, this will not affect the validity or +enforceability of the Licence as a whole. Such provision will be construed or reformed so as necessary to make it valid +and enforceable. +The European Commission may publish other linguistic versions or new versions of this Licence or updated versions of +the Appendix, so far this is required and reasonable, without reducing the scope of the rights granted by the Licence. +New versions of the Licence will be published with a unique version number. +All linguistic versions of this Licence, approved by the European Commission, have identical value. Parties can take +advantage of the linguistic version of their choice. + +14.Jurisdiction +Without prejudice to specific agreement between parties, +— any litigation resulting from the interpretation of this License, arising between the European Union institutions, +bodies, offices or agencies, as a Licensor, and any Licensee, will be subject to the jurisdiction of the Court of Justice +of the European Union, as laid down in article 272 of the Treaty on the Functioning of the European Union, +— any litigation arising between other parties and resulting from the interpretation of this License, will be subject to +the exclusive jurisdiction of the competent court where the Licensor resides or conducts its primary business. + +15.Applicable Law +Without prejudice to specific agreement between parties, +— this Licence shall be governed by the law of the European Union Member State where the Licensor has his seat, +resides or has his registered office, +— this licence shall be governed by Belgian law if the Licensor has no seat, residence or registered office inside +a European Union Member State. + + + Appendix + +‘Compatible Licences’ according to Article 5 EUPL are: +— GNU General Public License (GPL) v. 2, v. 3 +— GNU Affero General Public License (AGPL) v. 3 +— Open Software License (OSL) v. 2.1, v. 3.0 +— Eclipse Public License (EPL) v. 1.0 +— CeCILL v. 2.0, v. 2.1 +— Mozilla Public Licence (MPL) v. 2 +— GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3 +— Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) for works other than software +— European Union Public Licence (EUPL) v. 1.1, v. 1.2 +— Québec Free and Open-Source Licence — Reciprocity (LiLiQ-R) or Strong Reciprocity (LiLiQ-R+) + +The European Commission may update this Appendix to later versions of the above licences without producing +a new version of the EUPL, as long as they provide the rights granted in Article 2 of this Licence and protect the +covered Source Code from exclusive appropriation. +All other changes or additions to this Appendix require the production of a new EUPL version. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..22b826a --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +### MOBS MIME +![Mime's screenshot](screenshot.png) +**_Adds a monster mimicking its surrounding nodes._** + +**Version:** 0.1.0 +**Source code's license:** [EUPL v1.2][1] or later. + +**Dependencies:** default (found in [Minetest Game][3]), mobs ([Mobs Redo][4]) + +__Advanced options:__ +Settings -> All Settings -> Mods -> mobs_mime + + +### Installation + +Unzip the archive, rename the folder to mobs_mime and place it in +../minetest/mods/ + +If you only want this to be used in a single world, place it in +../minetest/worlds/WORLD_NAME/worldmods/ + +GNU+Linux - If you use a system-wide installation place it in +~/.minetest/mods/ + +For further information or help see: +https://wiki.minetest.net/Help:Installing_Mods + + +[1]: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32017D0863 +[2]: https://creativecommons.org/licenses/by-sa/4.0/ +[3]: https://github.com/minetest/minetest_game +[4]: https://forum.minetest.net/viewtopic.php?t=9917 diff --git a/changelog.md b/changelog.md new file mode 100644 index 0000000..339ef76 --- /dev/null +++ b/changelog.md @@ -0,0 +1,15 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/). + + +## [Unreleased] + + + +## [0.1.0] - 2020-07-12 +### Added + + - Initial release. diff --git a/core/functions.lua b/core/functions.lua new file mode 100644 index 0000000..42e99c1 --- /dev/null +++ b/core/functions.lua @@ -0,0 +1,104 @@ +--[[ + Mobs Mime - Adds a monster mimicking its surrounding nodes. + Copyright © 2020 Hamlet and contributors. + + Licensed under the EUPL, Version 1.2 or – as soon they will be + approved by the European Commission – subsequent versions of the + EUPL (the "Licence"); + You may not use this work except in compliance with the Licence. + You may obtain a copy of the Licence at: + + https:--joinup.ec.europa.eu/software/page/eupl + https:--eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32017D0863 + + Unless required by applicable law or agreed to in writing, + software distributed under the Licence is distributed on an + "AS IS" basis, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. + See the Licence for the specific language governing permissions + and limitations under the Licence. + +--]] + + +-- +-- Global function +-- + + +-- Used to detect the node upon wich the mob has been spawned +mobs_mime.fn_DetectNodeUnder = function(a_t_mobile, a_f_offset) + local v_position = a_t_mobile:get_pos() + local s_nodeName = '' + + if (v_position ~= nil) then + v_position.y = (v_position.y - a_f_offset) + s_nodeName = minetest.get_node(v_position).name + end + + return s_nodeName +end + + +-- Used to fetch the texture of the aforementioned node +mobs_mime.fn_DetectTexture = function(a_s_nodename) + local t_nodeTile = {} + local t_mobTextures = {} + + if (a_s_nodename ~= nil) then + t_nodeTile = minetest.registered_nodes[a_s_nodename] + + if (t_nodeTile ~= nil) then + local s_nodeTileTop = '' + local s_nodeTileBottom = '' + local s_nodeTileSides = '' + + s_nodeTileTop = t_nodeTile["tiles"][1] + --print("Top: " .. s_nodeTileTop) + + table.insert(t_mobTextures, s_nodeTileTop) + + + if (t_nodeTile["tiles"][2] ~= nil) then + s_nodeTileBottom = t_nodeTile["tiles"][2] + --print("Bottom: " .. s_nodeTileBottom) + + table.insert(t_mobTextures, s_nodeTileBottom) + + else + table.insert(t_mobTextures, s_nodeTileTop) + table.insert(t_mobTextures, s_nodeTileTop) + table.insert(t_mobTextures, s_nodeTileTop) + table.insert(t_mobTextures, s_nodeTileTop) + table.insert(t_mobTextures, s_nodeTileTop) + + end + + if (t_nodeTile["tiles"][3] ~= nil) then + if (t_nodeTile["tiles"][3].name ~= nil) then + s_nodeTileSides = t_nodeTile["tiles"][3].name + --print("Sides: " .. s_nodeTileSides) + + table.insert(t_mobTextures, s_nodeTileSides) + table.insert(t_mobTextures, s_nodeTileSides) + table.insert(t_mobTextures, s_nodeTileSides) + table.insert(t_mobTextures, s_nodeTileSides) + else + s_nodeTileSides = t_nodeTile["tiles"][3] + + --print("Sides: " .. s_nodeTileSides) + + table.insert(t_mobTextures, s_nodeTileSides) + table.insert(t_mobTextures, s_nodeTileSides) + table.insert(t_mobTextures, s_nodeTileSides) + table.insert(t_mobTextures, s_nodeTileSides) + end + end + end + end + + --print(dump(t_mobTextures)) + + return t_mobTextures +end diff --git a/core/mob.lua b/core/mob.lua new file mode 100644 index 0000000..b9e9932 --- /dev/null +++ b/core/mob.lua @@ -0,0 +1,114 @@ +--[[ + Mobs Mime - Adds a monster mimicking its surrounding nodes. + Copyright © 2020 Hamlet and contributors. + + Licensed under the EUPL, Version 1.2 or – as soon they will be + approved by the European Commission – subsequent versions of the + EUPL (the "Licence"); + You may not use this work except in compliance with the Licence. + You may obtain a copy of the Licence at: + + https:--joinup.ec.europa.eu/software/page/eupl + https:--eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32017D0863 + + Unless required by applicable law or agreed to in writing, + software distributed under the Licence is distributed on an + "AS IS" basis, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. + See the Licence for the specific language governing permissions + and limitations under the Licence. + +--]] + + +-- +-- Mob's character sheet +-- + +mobs:register_mob('mobs_mime:mime', { + --nametag = mobs_mime.l10n('Mime'), + type = 'monster', + hp_min = (minetest.PLAYER_MAX_HP_DEFAULT - 5), + hp_max = minetest.PLAYER_MAX_HP_DEFAULT, -- Same as player + armor = 100, -- Same as player + walk_velocity = 1, -- Nodes per second + run_velocity = 5, -- Nodes per second + stand_chance = mobs_mime.stopChance, + walk_chance = mobs_mime.moveChance, + jump = true, -- Required in orded to turn when there's an obstacle + jump_height = 0.01, -- Barely noticeable + stepheight = 1.1, -- It can walk onto 1 node + pushable = false, -- It can't be moved by pushing + view_range = 14, -- Active node + damage = 4, -- 1/5 of 20HP, that is 20 hearts + knock_back = true, -- It can be knocked back by hits + fear_height = 3, -- It won't fall if the height is too steep + water_damage = 0, -- Doesn't take damage from water + lava_damage = 20, -- It dies if it wals into lava + light_damage = 0, -- Doesn't take damage from light + light_damage_min = (minetest.LIGHT_MAX / 2), + light_damage_max = minetest.LIGHT_MAX, -- Sunlight + suffocation = 0, -- Doesn't drown + floats = 0, -- Doesn't swim + reach = 4, -- Same as player + docile_by_day = false, -- Attacks regardless of daytime or nighttime + attack_chance = 75, -- 75% chance it will attack + attack_monsters = false, + attack_animals = true, + attack_npcs = true, + attack_players = true, + group_attack = false, -- If a mime gets attacked, other mimes won't help + attack_type = 'dogshoot', -- If in view range, shoot glue, then melee + arrow = 'mobs_mime:glue_arrow', -- Glue shot + dogshoot_switch = 1, -- Switch to dogfight after shooting + dogshoot_count_max = 3, -- 3secs for shooting + dogshoot_count2_max = 2, -- 2secs for melee attacking + pathfinding = 1, + shoot_interval = 1.5, + shoot_offset = 1.5, + makes_footstep_sound = true, -- It may give away the mob's presence + drops = { -- Just for example + {name = 'default:gold', chance = 4, min = 1, max = 2}, + {name = 'default:iron', chance = 3, min = 1, max = 3}, + }, + visual = 'cube', + visual_size = {x = 1, y = 1, z = 1}, + collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + textures = { -- Just for example + { + 'default_chest_top.png', -- +Y + 'default_chest_top.png', -- -Y + 'default_chest_side.png', -- +X + 'default_chest_side.png', -- -X + 'default_chest_front.png', -- +Z + 'default_chest_side.png' -- -Z + } + }, + + on_die = function(self, pos) + end, + + on_rightclick = function(name, entity_definition) + end, + + on_spawn = function(self) + + --local s_position = self.object:get_pos() + --s_position = minetest.pos_to_string(s_position, 2) + --print("Mime spawned at: " .. s_position) + + math.randomseed(os.time()) + local i_dice = math.random(mobs_mime.chestChance); + + if (i_dice ~= 1) then + minetest.after(5.0, mobs_mime.pr_SetTexture, self.object) + end + end, + + do_custom = function(self) + -- Used to keep the mob aligned + mobs_mime.pr_SetYaw(self, 0.0) + end +}) diff --git a/core/nodes.lua b/core/nodes.lua new file mode 100644 index 0000000..5c5f03d --- /dev/null +++ b/core/nodes.lua @@ -0,0 +1,131 @@ +--[[ + Mobs Mime - Adds a monster mimicking its surrounding nodes. + Copyright © 2020 Hamlet and contributors. + + Licensed under the EUPL, Version 1.2 or – as soon they will be + approved by the European Commission – subsequent versions of the + EUPL (the "Licence"); + You may not use this work except in compliance with the Licence. + You may obtain a copy of the Licence at: + + https:--joinup.ec.europa.eu/software/page/eupl + https:--eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32017D0863 + + Unless required by applicable law or agreed to in writing, + software distributed under the Licence is distributed on an + "AS IS" basis, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. + See the Licence for the specific language governing permissions + and limitations under the Licence. + +--]] + + +-- +-- Mime's sticky node +-- + +-- Source +minetest.register_node('mobs_mime:glue', { + description = mobs_mime.l10n('Mime glue'), + groups = {liquid = 1, falling_node = 1}, + drawtype = 'liquid', + tiles = { + { + name = 'default_water_source_animated.png', + backface_culling = false, + animation = { + type = 'vertical_frames', + aspect_w = 16, + aspect_h = 16, + length = 3.0, + }, + }, + { + name = 'default_water_source_animated.png', + backface_culling = true, + animation = { + type = 'vertical_frames', + aspect_w = 16, + aspect_h = 16, + length = 3.0, + }, + }, + }, + alpha = 191, + color = '#ff0000', + post_effect_color = {a=191, r=60, g=40, b=80}, + paramtype = 'light', + is_ground_content = false, + walkable = false, + pointable = false, + buildable_to = true, + liquidtype = 'source', + liquid_alternative_flowing = 'mobs_mime:glue_flowing', + drowning = 1, + liquid_viscosity = 7, + liquid_renewable = false, + + on_construct = function(pos) + minetest.get_node_timer(pos):start(mobs_mime.glueNodeTimeout) + end, + + on_timer = function(pos, elapsed) + minetest.set_node(pos, {name = 'air'}) + return true + end +}) + +-- Flowing glue +minetest.register_node('mobs_mime:glue_flowing', { + description = mobs_mime.l10n('Mime glue flowing'), + groups = {liquid = 1, falling_node = 1}, + drawtype = 'flowingliquid', + tiles = {'default_water_source_animated.png'}, + special_tiles = { + { + name = 'default_water_source_animated.png', + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 3.0, + }, + }, + { + name = 'default_water_source_animated.png', + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 3.0, + }, + }, + }, + alpha = 191, + color = '#ff0000', + post_effect_color = {a=191, r=60, g=40, b=80}, + paramtype = 'light', + paramtype2 = 'flowingliquid', + is_ground_content = false, + walkable = false, + pointable = false, + buildable_to = true, + liquidtype = 'flowing', + liquid_alternative_flowing = 'mobs_mime:glue_flowing', + liquid_alternative_source = 'mobs_mime:glue', + liquid_range = 4, + drowning = 1, + liquid_viscosity = 7, + liquid_renewable = false, + + on_construct = function(pos) + minetest.get_node_timer(pos):start(mobs_mime.glueNodeTimeout) + end, + + on_timer = function(pos, elapsed) + minetest.set_node(pos, {name = 'air'}) + return true + end +}) diff --git a/core/procedures.lua b/core/procedures.lua new file mode 100644 index 0000000..5270c04 --- /dev/null +++ b/core/procedures.lua @@ -0,0 +1,73 @@ +--[[ + Mobs Mime - Adds a monster mimicking its surrounding nodes. + Copyright © 2020 Hamlet and contributors. + + Licensed under the EUPL, Version 1.2 or – as soon they will be + approved by the European Commission – subsequent versions of the + EUPL (the "Licence"); + You may not use this work except in compliance with the Licence. + You may obtain a copy of the Licence at: + + https:--joinup.ec.europa.eu/software/page/eupl + https:--eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32017D0863 + + Unless required by applicable law or agreed to in writing, + software distributed under the Licence is distributed on an + "AS IS" basis, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. + See the Licence for the specific language governing permissions + and limitations under the Licence. + +--]] + + +-- +-- Global procedure +-- + +-- Used to keep the mob's rotation aligned when passive +mobs_mime.pr_SetYaw = function(a_t_mobile, a_f_yaw) + if (a_t_mobile.state ~= 'attack') then + a_t_mobile.object:set_yaw(a_f_yaw); + end +end + +-- Used to apply a texture to the mob +mobs_mime.pr_SetTexture = function(self) + local s_nodeName = mobs_mime.fn_DetectNodeUnder(self, 1.0) + --print("pr nodename: " .. s_nodeName) + + local t_nodeTexture = mobs_mime.fn_DetectTexture(s_nodeName) + + self:set_properties({ + textures = t_nodeTexture, + base_texture = t_nodeTexture + }) +end + + +-- Check for free space and place a new node +mobs_mime.pr_PlaceNode = function(pos) + local s_oldNodeName = minetest.get_node(pos).name + + if (s_oldNodeName == 'air') then + minetest.set_node(pos, {name = 'mobs_mime:glue'}) + end +end + + +-- Used to place glue around the target +mobs_mime.pr_GlueRing = function(a_v_position, a_i_offset) + local v_coordinates = {y = a_v_position.y, x = 0.0, z = 0.0} + + for i_value = -a_i_offset, a_i_offset do + v_coordinates.x = (a_v_position.x + i_value) + + for i_value = -a_i_offset, a_i_offset do + v_coordinates.z = (a_v_position.z + i_value) + + mobs_mime.pr_PlaceNode(v_coordinates) + end + end +end diff --git a/core/projectile.lua b/core/projectile.lua new file mode 100644 index 0000000..cb630d3 --- /dev/null +++ b/core/projectile.lua @@ -0,0 +1,60 @@ +--[[ + Mobs Mime - Adds a monster mimicking its surrounding nodes. + Copyright © 2020 Hamlet and contributors. + + Licensed under the EUPL, Version 1.2 or – as soon they will be + approved by the European Commission – subsequent versions of the + EUPL (the "Licence"); + You may not use this work except in compliance with the Licence. + You may obtain a copy of the Licence at: + + https:--joinup.ec.europa.eu/software/page/eupl + https:--eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32017D0863 + + Unless required by applicable law or agreed to in writing, + software distributed under the Licence is distributed on an + "AS IS" basis, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. + See the Licence for the specific language governing permissions + and limitations under the Licence. + +--]] + + +-- +-- Mob's projectile +-- + +mobs:register_arrow('mobs_mime:glue_arrow', { + visual = 'sprite', + visual_size = {x = 0.5, y = 0.5}, + textures = {'mobs_mime_projectile.png'}, + velocity = 18, -- Nodes per second + tail = 1, + tail_texture = 'mobs_mime_projectile.png', + tail_size = 1.25, + expire = 0.125, + + hit_player = function(self, player) + local v_position = player:get_pos() + + mobs_mime.pr_GlueRing(v_position, 1) -- 1 node around + end, + + hit_mob = function(self, player) + local v_position = player:get_pos() + + mobs_mime.pr_GlueRing(v_position, 1) -- 1 node around + end, + + hit_object = function(self, player) + local v_position = player:get_pos() + + mobs_mime.pr_GlueRing(v_position, 1) -- 1 node around + end, + + hit_node = function(self, pos, node) + mobs_mime.pr_GlueRing(pos, 1) -- 1 node around + end, +}) diff --git a/core/spawning.lua b/core/spawning.lua new file mode 100644 index 0000000..886cc7c --- /dev/null +++ b/core/spawning.lua @@ -0,0 +1,71 @@ +--[[ + Mobs Mime - Adds a monster mimicking its surrounding nodes. + Copyright © 2020 Hamlet and contributors. + + Licensed under the EUPL, Version 1.2 or – as soon they will be + approved by the European Commission – subsequent versions of the + EUPL (the "Licence"); + You may not use this work except in compliance with the Licence. + You may obtain a copy of the Licence at: + + https:--joinup.ec.europa.eu/software/page/eupl + https:--eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32017D0863 + + Unless required by applicable law or agreed to in writing, + software distributed under the Licence is distributed on an + "AS IS" basis, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. + See the Licence for the specific language governing permissions + and limitations under the Licence. + +--]] + + +-- +-- Mob's spawner +-- + +mobs:spawn({ + name = 'mobs_mime:mime', + nodes = { + 'group:crumbly', + 'group:cracky', + 'group:stone', + 'group:tree', + 'group:wood', + 'group:leaves' + }, + interval = mobs_mime.spawnInterval, -- Seconds + chance = mobs_mime.spawnChance, -- Chance: 1 = always, 2 = 50%, etc. + min_light = 0, + max_light = 5, -- Dim light and below + min_height = mobs_mime.minHeight, -- World's bottom + max_height = mobs_mime.maxHeight, -- World's top + active_object_count = mobs_mime.AOC, -- 1 mob per active map area + day_toggle = false, -- Spawn regardless of nighttime or nighttime + + on_spawn = function(self, pos) -- Custom function + --local s_position = minetest.pos_to_string(pos, 2) + --print("Mime spawned at: " .. s_position) + + math.randomseed(os.time()) + local i_dice = math.random(mobs_mime.chestChance); + + if (i_dice ~= 1) then + minetest.after(5.0, mobs_mime.pr_SetTexture, self.object) + end + end +}) + + +-- Spawn Egg + +mobs:register_egg('mobs_mime:mime', mobs_mime.l10n('Mime'), 'default_dirt.png') + + +-- +-- Alias +-- + +mobs:alias_mob('mobs:mime', 'mobs_mime:mime') diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..b785cff --- /dev/null +++ b/init.lua @@ -0,0 +1,119 @@ +--[[ + Mobs Mime - Adds a monster mimicking its surrounding nodes. + Copyright © 2020 Hamlet and contributors. + + Licensed under the EUPL, Version 1.2 or – as soon they will be + approved by the European Commission – subsequent versions of the + EUPL (the "Licence"); + You may not use this work except in compliance with the Licence. + You may obtain a copy of the Licence at: + + https:--joinup.ec.europa.eu/software/page/eupl + https:--eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32017D0863 + + Unless required by applicable law or agreed to in writing, + software distributed under the Licence is distributed on an + "AS IS" basis, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. + See the Licence for the specific language governing permissions + and limitations under the Licence. + +--]] + + +-- +-- Global mod's namespace +-- + +mobs_mime = {} + + +-- +-- Constants +-- + +-- Used for localization +mobs_mime.l10n = minetest.get_translator('mobs_mime') + +-- Spawner frequency, stated in seconds. +mobs_mime.spawnInterval = + tonumber(minetest.settings:get('mobs_mime_spawn_interval')) or 60 + +-- Spawning chance; 1 = always, 2 = 50%, etc. +mobs_mime.spawnChance = + tonumber(minetest.settings:get('mobs_mime_spawn_chance')) or 7500 + +-- Number of mimes per active mapchunk. +mobs_mime.AOC = tonumber(minetest.settings:get('mobs_mime_aoc')) or 1 + +-- Min spawn height, stated in nodes. +mobs_mime.minHeight = + tonumber(minetest.settings:get('mobs_mime_min_height')) or -30912 + +-- Max spawn height, stated in nodes. +mobs_mime.maxHeight = + tonumber(minetest.settings:get('mobs_mime_max_height')) or 31000 + +-- Chance that the mob will move if standing; 0 to 100 +mobs_mime.moveChance = + tonumber(minetest.settings:get('mobs_mime_move_chance')) or 5 + +-- Chance that the mob will stop if moving; 0 to 100 +mobs_mime.stopChance = + tonumber(minetest.settings:get('mobs_mime_stop_chance')) or 95 + +-- Chance that the mob will seem a chest +mobs_mime.chestChance = + tonumber(minetest.settings:get('mobs_mime_chest_chance')) or 20 + +-- Time after which the mime's glue will fade away +mobs_mime.glueNodeTimeout = + tonumber(minetest.settings:get('mobs_mime_glue_timeout')) or 7 + + +-- +-- Procedures +-- + +-- Minetest logger +local pr_LogMessage = function() + + -- Constant + local s_LOG_LEVEL = minetest.settings:get('debug_log_level') + + -- Body + if (s_LOG_LEVEL == nil) + or (s_LOG_LEVEL == 'action') + or (s_LOG_LEVEL == 'info') + or (s_LOG_LEVEL == 'verbose') + then + minetest.log('action', '[Mod] Mobs mime [v0.1.0] loaded.') + end +end + + +-- Subfiles loader +local pr_LoadSubFiles = function() + + -- Constant + local s_MOD_PATH = minetest.get_modpath('mobs_mime') + + -- Body + dofile(s_MOD_PATH .. '/core/functions.lua') + dofile(s_MOD_PATH .. '/core/procedures.lua') + --dofile(s_MOD_PATH .. '/core/craft_item.lua') + dofile(s_MOD_PATH .. '/core/nodes.lua') + dofile(s_MOD_PATH .. '/core/projectile.lua') + dofile(s_MOD_PATH .. '/core/mob.lua') + dofile(s_MOD_PATH .. '/core/spawning.lua') + +end + + +-- +-- Main body +-- + +pr_LoadSubFiles() +pr_LogMessage() diff --git a/locale/mobs_mime.it.tr b/locale/mobs_mime.it.tr new file mode 100644 index 0000000..51607b5 --- /dev/null +++ b/locale/mobs_mime.it.tr @@ -0,0 +1,5 @@ +# textdomain:mobs_mime + +Mime=Mimo +Mime glue=Colla del mimo +Mime flowing glue=Colla corrente del mimo diff --git a/locale/template.txt b/locale/template.txt new file mode 100644 index 0000000..e5f90b7 --- /dev/null +++ b/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain:mobs_mime + +Mime= +Mime glue= +Mime flowing glue= diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000..e6af136 --- /dev/null +++ b/mod.conf @@ -0,0 +1,3 @@ +name = mobs_mime +description = Adds a monster mimicking its surrounding nodes. +depends = default, mobs diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..e7d32deb62f8dee91d3b9578e128f8d514d0e952 GIT binary patch literal 43367 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 T#Fs_R00000NkvXXu0mjfz-9e- literal 0 HcmV?d00001 diff --git a/settingtypes.txt b/settingtypes.txt new file mode 100644 index 0000000..f7eb11b --- /dev/null +++ b/settingtypes.txt @@ -0,0 +1,54 @@ +# ENG: Spawner frequency, stated in seconds. +# Default: 60 +# +# ITA: Frequenza del generatore, espressa in secondi. +# Predefinito: 60 +mobs_mime_spawn_interval (Spawn interval) int 60 + +# ENG: Spawning chance; 1 = always, 2 = 50%, etc. +# Default: 7500 +# +# ITA: Probabilità di generazione; 1 = sempre, 2 = 50%, ecc. +# Predefinito: 7500 +mobs_mime_spawn_chance (Spawn chance) int 7500 + +# ENG: Number of mimes per active mapchunk. +# Default: 1 +# +# ITA: Numero di mimi per pezzo di mappa attivo. +# Predefinito: 1 +mobs_mime_aoc (Active Object Count) int 1 + +# ENG: Min spawn height, stated in nodes. +# Default: -30912 +# +# ITA: Altitudine minima di generazione, espressa in nodi. +# Predefinito: -30912 +mobs_mime_min_height (Min height) int -30912 + +# ENG: Max spawn height, stated in nodes. +# Default: 31000 +# +# ITA: Altitudine massima di generazione, espressa in nodi. +# Predefinito: 31000 +mobs_mime_max_height (Max height) int 31000 + +# ENG: Chance that the mob will move if standing; 0 to 100 +# +# ITA: probabilità che il mob si muova se fermo; 0 a 100 +mobs_mime_move_chance (Move chance) int 5 + +# ENG: Chance that the mob will stop if moving; 0 to 100 +# +# ITA: probabilità che il mob si fermi se in movimento; 0 a 100 +mobs_mime_stop_chance (Stop chance) int 95 + +# ENG: Chance that the mob will seem a chest; 1 in N +# +# ITA: probabilità che il mob sembri un baule; 1 su N +mobs_mime_chest_chance (Chest chance) int 20 + +# ENG: Time after which the mime's glue will fade away +# +# ITA: tempo dopo cui svanirà la colla del mimo +mobs_mime_glue_timeout (Glue timeout) int 7 diff --git a/textures/CC_BY-SA_4.0.txt b/textures/CC_BY-SA_4.0.txt new file mode 100644 index 0000000..1cd9e08 --- /dev/null +++ b/textures/CC_BY-SA_4.0.txt @@ -0,0 +1,433 @@ +Copyright © 2020 Hamlet + +mobs_mime_projectile.png + + +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public +License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-ShareAlike 4.0 International Public License ("Public +License"). To the extent this Public License may be interpreted as a +contract, You are granted the Licensed Rights in consideration of Your +acceptance of these terms and conditions, and the Licensor grants You +such rights in consideration of benefits the Licensor receives from +making the Licensed Material available under these terms and +conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + + including for purposes of Section 3(b); and + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. + diff --git a/textures/mobs_mime_projectile.png b/textures/mobs_mime_projectile.png new file mode 100644 index 0000000000000000000000000000000000000000..93c7662298957f941929f4b5a210aac35bf53273 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;VE0AVjU<5)2Mn(_;rhv>! zhG<-9{)RkRpeBKmAU}{XV8CcGea80dKmMsn)+Yf4;yhg(LnOje`%eosDDW_EUof@Z z;otvk+m{V*3e#t)StvfaRh4f#n^AowkLM&ePj`i7(emX@n==+!RGvvnStX{GE84rS yYhU-<6z;qC