From 67845c5502635e1bdd964726e935a916302878ed Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 3 Aug 2019 21:21:28 +0100 Subject: [PATCH] First commit --- README.txt | 9 + development.txt | 56 ++++ game.conf | 3 + license.txt | 40 +++ menu/header.png | Bin 0 -> 116 bytes menu/icon.png | Bin 0 -> 119 bytes minetest.conf | 0 mods/base/README.txt | 13 + mods/base/depends.txt | 1 + mods/base/init.lua | 26 ++ mods/base/license.txt | 56 ++++ mods/base/textures/bubble.png | Bin 0 -> 116 bytes mods/base/textures/crack_anylength.png | Bin 0 -> 117 bytes mods/base/textures/gui_formbg.png | Bin 0 -> 971 bytes mods/base/textures/gui_furnace_arrow_bg.png | Bin 0 -> 739 bytes mods/base/textures/gui_hb_bg.png | Bin 0 -> 98 bytes mods/base/textures/heart.png | Bin 0 -> 112 bytes mods/creative/README.txt | 17 + mods/creative/init.lua | 85 +++++ mods/creative/inventory.lua | 189 +++++++++++ mods/creative/license.txt | 61 ++++ mods/creative/mod.conf | 4 + .../creative/textures/creative_clear_icon.png | Bin 0 -> 708 bytes mods/creative/textures/creative_next_icon.png | Bin 0 -> 727 bytes mods/creative/textures/creative_prev_icon.png | Bin 0 -> 728 bytes .../textures/creative_search_icon.png | Bin 0 -> 1908 bytes .../creative/textures/creative_trash_icon.png | Bin 0 -> 712 bytes mods/hand/README.txt | 13 + mods/hand/init.lua | 28 ++ mods/hand/license.txt | 56 ++++ mods/hand/textures/wieldhand.png | Bin 0 -> 109 bytes mods/lamp/init.lua | 10 + mods/lamp/textures/lamp_lamp.png | Bin 0 -> 96 bytes mods/mapgen/README.txt | 5 + mods/mapgen/init.lua | 314 ++++++++++++++++++ mods/mapgen/license.txt | 61 ++++ mods/mapgen/textures/mapgen_dirt.png | Bin 0 -> 98 bytes mods/mapgen/textures/mapgen_grass.png | Bin 0 -> 98 bytes mods/mapgen/textures/mapgen_lava.png | Bin 0 -> 99 bytes mods/mapgen/textures/mapgen_river_water.png | Bin 0 -> 99 bytes mods/mapgen/textures/mapgen_sand.png | Bin 0 -> 99 bytes mods/mapgen/textures/mapgen_stone.png | Bin 0 -> 83 bytes mods/mapgen/textures/mapgen_stone_block.png | Bin 0 -> 96 bytes .../textures/mapgen_stone_block_divided.png | Bin 0 -> 97 bytes mods/mapgen/textures/mapgen_water.png | Bin 0 -> 99 bytes mods/player_api/README.txt | 17 + mods/player_api/api.lua | 136 ++++++++ mods/player_api/init.lua | 32 ++ mods/player_api/license.txt | 51 +++ mods/player_api/models/character.b3d | Bin 0 -> 73433 bytes mods/player_api/models/character.blend | Bin 0 -> 698016 bytes mods/player_api/models/character.png | Bin 0 -> 209 bytes mods/player_api/sounds/player_damage.ogg | Bin 0 -> 6176 bytes mods/sfinv/README.txt | 13 + mods/sfinv/api.lua | 189 +++++++++++ mods/sfinv/init.lua | 14 + mods/sfinv/license.txt | 24 ++ mods/sfinv/mod.conf | 2 + 58 files changed, 1525 insertions(+) create mode 100644 README.txt create mode 100644 development.txt create mode 100644 game.conf create mode 100644 license.txt create mode 100644 menu/header.png create mode 100644 menu/icon.png create mode 100644 minetest.conf create mode 100644 mods/base/README.txt create mode 100644 mods/base/depends.txt create mode 100644 mods/base/init.lua create mode 100644 mods/base/license.txt create mode 100644 mods/base/textures/bubble.png create mode 100644 mods/base/textures/crack_anylength.png create mode 100644 mods/base/textures/gui_formbg.png create mode 100644 mods/base/textures/gui_furnace_arrow_bg.png create mode 100644 mods/base/textures/gui_hb_bg.png create mode 100644 mods/base/textures/heart.png create mode 100644 mods/creative/README.txt create mode 100644 mods/creative/init.lua create mode 100644 mods/creative/inventory.lua create mode 100644 mods/creative/license.txt create mode 100644 mods/creative/mod.conf create mode 100644 mods/creative/textures/creative_clear_icon.png create mode 100644 mods/creative/textures/creative_next_icon.png create mode 100644 mods/creative/textures/creative_prev_icon.png create mode 100644 mods/creative/textures/creative_search_icon.png create mode 100644 mods/creative/textures/creative_trash_icon.png create mode 100644 mods/hand/README.txt create mode 100644 mods/hand/init.lua create mode 100644 mods/hand/license.txt create mode 100644 mods/hand/textures/wieldhand.png create mode 100644 mods/lamp/init.lua create mode 100644 mods/lamp/textures/lamp_lamp.png create mode 100644 mods/mapgen/README.txt create mode 100644 mods/mapgen/init.lua create mode 100644 mods/mapgen/license.txt create mode 100644 mods/mapgen/textures/mapgen_dirt.png create mode 100644 mods/mapgen/textures/mapgen_grass.png create mode 100644 mods/mapgen/textures/mapgen_lava.png create mode 100644 mods/mapgen/textures/mapgen_river_water.png create mode 100644 mods/mapgen/textures/mapgen_sand.png create mode 100644 mods/mapgen/textures/mapgen_stone.png create mode 100644 mods/mapgen/textures/mapgen_stone_block.png create mode 100644 mods/mapgen/textures/mapgen_stone_block_divided.png create mode 100644 mods/mapgen/textures/mapgen_water.png create mode 100644 mods/player_api/README.txt create mode 100644 mods/player_api/api.lua create mode 100644 mods/player_api/init.lua create mode 100644 mods/player_api/license.txt create mode 100644 mods/player_api/models/character.b3d create mode 100644 mods/player_api/models/character.blend create mode 100644 mods/player_api/models/character.png create mode 100644 mods/player_api/sounds/player_damage.ogg create mode 100644 mods/sfinv/README.txt create mode 100644 mods/sfinv/api.lua create mode 100644 mods/sfinv/init.lua create mode 100644 mods/sfinv/license.txt create mode 100644 mods/sfinv/mod.conf diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..76041fc --- /dev/null +++ b/README.txt @@ -0,0 +1,9 @@ +minipeli 0.1.0 by paramat. +A game for Minetest Engine 5.0.0 and later. +See README.txt in each mod directory for more author credits. + +Authors of media (textures) +--------------------------- +paramat (CC BY-SA 3.0): + header.png + icon.png diff --git a/development.txt b/development.txt new file mode 100644 index 0000000..56486dd --- /dev/null +++ b/development.txt @@ -0,0 +1,56 @@ +Why Mapgen v6 is not supported +------------------------------ + +In the 'game.conf' file, mapgen v6 is set as a disallowed mapgen. +Mapgen v6 is very different to all the other mapgens, it has hardcoded biomes and does not use the Biome API. Due to this it makes game code more complex and more difficult to maintain, the mapgen also misses many features. +It is highly recommended that games do not support Mapgen v6 for these reasons. + + +Note about 'lamp' mod +--------------------- + +This is not a necessary part of the game, it is only provided in creative mode to illuminate caves and dungeons during testing. + + +How this game was created +------------------------- + +MTG mods used unmodified: +creative (but optional-depend on 'hand' mod instead of default) +sfinv + + +MTG mods used modified: +default (becomes 'base' and 'hand' mods) +player_api + + +default mod changes: +Move hand out to a separate mod 'hand'. +Rename remainder to 'base' mod, now only contains: + +Textures: +bubble +crack_anylength +gui_formbg +gui_furnace_arrow_bg +gui_hb_bg +heart + +Code: +minetest.register_on_joinplayer player:set_formspec_prepend +base.get_hotbar_bg + + +player_api mod changes: +Now only contains: + +Models: +Player model b3d, blend, skin texture +Sounds: +player_damage +Files: +api.lua unchanged +init.lua: From register_on_joinplayer remove: +player:hud_set_hotbar_image("gui_hotbar.png") +player:hud_set_hotbar_selected_image("gui_hotbar_selected.png") diff --git a/game.conf b/game.conf new file mode 100644 index 0000000..9a1d288 --- /dev/null +++ b/game.conf @@ -0,0 +1,3 @@ +name = Minipeli +author = paramat +disallowed_mapgens = v6 diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..6c28cdb --- /dev/null +++ b/license.txt @@ -0,0 +1,40 @@ +See license.txt in each mod directory for more license information. + +License of media (textures, schematics) +--------------------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2019 paramat + +You are free to: + +Share — copy and redistribute the material in any medium or format +Adapt — remix, transform, and build upon the material for any purpose, even + commercially. + +The licensor cannot revoke these freedoms as long as you follow the license +terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, +and indicate if changes were made. You may do so in any reasonable manner, but +not in any way that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must +distribute your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological +measures that legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the +public domain or where your use is permitted by an applicable exception or +limitation. +No warranties are given. The license may not give you all of the permissions +necessary for your intended use. For example, other rights such as publicity, +privacy, or moral rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/menu/header.png b/menu/header.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b01c8df451ea70b6a13fbccf0d0c3bcae8874f GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG*$P6Uy_K8dZQfvV}A+A6g2$rVrJP)K8OM?7@ z862M7NCR?YJY5_^IIbsaXld0fJg{Na>TYJ2Ix9w{+4J=o7)tkWP0)xFDFA8qboFyt I=akR{09DN#0{{R3 literal 0 HcmV?d00001 diff --git a/menu/icon.png b/menu/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..07560816728beeae0c7c7f23fe36f5bb10e81064 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U4`~f~8t|=XMsabP0l+XkKr`sOw literal 0 HcmV?d00001 diff --git a/minetest.conf b/minetest.conf new file mode 100644 index 0000000..e69de29 diff --git a/mods/base/README.txt b/mods/base/README.txt new file mode 100644 index 0000000..1608aab --- /dev/null +++ b/mods/base/README.txt @@ -0,0 +1,13 @@ +Minipeli mod: base +================== +See license.txt for license information. +Derived by paramat from Minetest Game 'default' mod. + +Authors of source code +---------------------- +Originally by celeron55, Perttu Ahola (LGPL 2.1) +Various Minetest developers and contributors (LGPL 2.1) + +Authors of media +---------------- +All textures by paramat (CC BY-SA 3.0). diff --git a/mods/base/depends.txt b/mods/base/depends.txt new file mode 100644 index 0000000..e1c3818 --- /dev/null +++ b/mods/base/depends.txt @@ -0,0 +1 @@ +player_api? diff --git a/mods/base/init.lua b/mods/base/init.lua new file mode 100644 index 0000000..e279624 --- /dev/null +++ b/mods/base/init.lua @@ -0,0 +1,26 @@ +base = {} + + +-- Formspec prepend + +minetest.register_on_joinplayer(function(player) + player:set_formspec_prepend([[ + bgcolor[#080808BB;true] + background[5,5;1,1;gui_formbg.png;true] + background[5,5;1,1;gui_formbg.png;true;10] + listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] ]]) +end) + + +-- Get hotbar background global function + +-- Not currently used by this game, but is often used by node inventory +-- formspecs such as chests, furnace, bones, bookshelves. + +function base.get_hotbar_bg(x, y) + local out = "" + for i = 0, 7 do + out = out .."image[" .. x + i .. "," .. y .. ";1,1;gui_hb_bg.png]" + end + return out +end diff --git a/mods/base/license.txt b/mods/base/license.txt new file mode 100644 index 0000000..f670ee2 --- /dev/null +++ b/mods/base/license.txt @@ -0,0 +1,56 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 +Copyright (C) 2019 celeron55, Perttu Ahola +Copyright (C) 2019 Various Minetest developers and contributors + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU Lesser General Public License as published by the Free +Software Foundation; either version 2.1 of the License, or (at your option) any +later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + +License of media +---------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2019 paramat + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even + commercially. + +The licensor cannot revoke these freedoms as long as you follow the license +terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, +and indicate if changes were made. You may do so in any reasonable manner, but +not in any way that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must +distribute your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological +measures that legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the +public domain or where your use is permitted by an applicable exception or +limitation. +No warranties are given. The license may not give you all of the permissions +necessary for your intended use. For example, other rights such as publicity, +privacy, or moral rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/base/textures/bubble.png b/mods/base/textures/bubble.png new file mode 100644 index 0000000000000000000000000000000000000000..882f47b4965530c195b36d1d6c9fa36b6c77b5cf GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$93?x4=o+|@VJOMr-uBp1|>n^>$_WH~J|NoP3 zZ)gOHGnNGT1v5B2yO9Ruh M)78&qol`;+0Dpuf3jhEB literal 0 HcmV?d00001 diff --git a/mods/base/textures/crack_anylength.png b/mods/base/textures/crack_anylength.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2d6f7509d4cec7650ab1af6201233b15d06d98 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^j6lr6!VDx&nRFBZDTx4|5ZC_<4F8=N{?{@5-^Gyd zpJBy+hI{`R{`_Z9s`KUtsqu7i4B@z*T#&$#;E|w_V2}`yAdry2z#t^Rc#xaPTNtQ@ N!PC{xWt~$(69A-|9<~4g literal 0 HcmV?d00001 diff --git a/mods/base/textures/gui_formbg.png b/mods/base/textures/gui_formbg.png new file mode 100644 index 0000000000000000000000000000000000000000..c543466c4a6200b20c032c75185b430141818213 GIT binary patch literal 971 zcmeAS@N?(olHy`uVBq!ia0y~yVEh2YzgU=oB3zQpn}L*8fKP}kkj4aBT3RM1CQM9B zyu7@kqM{xi9=5i&Kf3So0+n)<1o;IEGB9$e*}84IR^wj8z`*R`>EaktaqG>+gSsq? z3=S7P%cLb_-()2uOV4ONa&Rj1x~zi0hLsMB7&+5rGS20gI6V6H@AZS{{Esd23}+V_ z>fEh9t5_@1-&fw8y7j)?q3yfBu1t-Zn{zBtvaTv~=ZtT+Rcp5I`~R!;{Pq16mA~xQ z*MFKl?e@bInZEM$&Cl{~=|6n^Ir4MCZmX92XXcoj{;733Y`@I+;gmzBt=U}HMb>G? z1n*c@;QMeEnF1d^yq+1n=kbQ~T1x*E5JT7l+M@58do$zn=9N=)@bnn?JlE zt*Tkl7}(!$V({wYL^ii=$6I;#Si4ERn922J#{|Y`*W(<_w!xAOa^Y#7?2;S12x6(KX=xICUC1D{_C?OAt6%?vvZSZ0pUXO@ GgeCy_1gjVT literal 0 HcmV?d00001 diff --git a/mods/base/textures/gui_furnace_arrow_bg.png b/mods/base/textures/gui_furnace_arrow_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..40f7d315b932e301beececaf630bc8ccb073ebd3 GIT binary patch literal 739 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU|Qwr;uunK>+Kz1|6oUvV;|E` zHP$gt4Uo2Hnjw|&FiiOGwY(1N{f(UZ+>g)623hG@@CrXVy*9Hr{oJ2=PiLtr&O62D z=B7(ksRE6}2M(MF>aQ<3_tW9hKKs4intzut{?hz6Z;5jKj3v^Z=9){Rr4;HuE}!&l zlAo%q_o+$yJbvlCTy$eDW4Qq%`D>;>SL_TO&IUtuJnX78R@&Mvm%hcnZCHQxZX!y9%pbDR8h zX1*UVImz-wAW&|}kJ)Vdd}l4VBiq8=22=^+89Sax$Z+iXzrS()?}UtAvHIDK>t6#I ze*d;H$8SG)L2BNgT=so>%?nMfe#&>BoZs`|bqi@{7-dZAx`KbQ= zCo2;_IkP&i-tpsUYJGVAr#D&>tEQ@L=u)qb`}yR*wuIS5mav~s`nO(vy^M3sqm%1( zKeXmBtzPqEEBn3z--M|m`d#p@3B7^pG6X|If~TPg8W (MIT) +Jean-Patrick G. (kilbith) (MIT) + +Author of media (textures) +-------------------------- +paramat (CC BY-SA 3.0): +* creative_prev_icon.png +* creative_next_icon.png +* creative_search_icon.png +* creative_clear_icon.png +* creative_trash_icon.png derived from a texture by kilbith (CC BY-SA 3.0) diff --git a/mods/creative/init.lua b/mods/creative/init.lua new file mode 100644 index 0000000..0f8d4db --- /dev/null +++ b/mods/creative/init.lua @@ -0,0 +1,85 @@ +creative = {} + +local function update_sfinv(name) + minetest.after(0, function() + local player = minetest.get_player_by_name(name) + if player then + if sfinv.get_page(player):sub(1, 9) == "creative:" then + sfinv.set_page(player, sfinv.get_homepage_name(player)) + else + sfinv.set_player_inventory_formspec(player) + end + end + end) +end + +minetest.register_privilege("creative", { + description = "Allow player to use creative inventory", + give_to_singleplayer = false, + give_to_admin = false, + on_grant = update_sfinv, + on_revoke = update_sfinv, +}) + +local creative_mode_cache = minetest.settings:get_bool("creative_mode") + +function creative.is_enabled_for(name) + return creative_mode_cache or + minetest.check_player_privs(name, {creative = true}) +end + +dofile(minetest.get_modpath("creative") .. "/inventory.lua") + +if creative_mode_cache then + -- Dig time is modified according to difference (leveldiff) between tool + -- 'maxlevel' and node 'level'. Digtime is divided by the larger of + -- leveldiff and 1. + -- To speed up digging in creative, hand 'maxlevel' and 'digtime' have been + -- increased such that nodes of differing levels have an insignificant + -- effect on digtime. + local digtime = 42 + local caps = {times = {digtime, digtime, digtime}, uses = 0, maxlevel = 256} + + minetest.register_item(":", { + type = "none", + wield_image = "wieldhand.png", + wield_scale = {x = 1, y = 1, z = 2.5}, + range = 10, + tool_capabilities = { + full_punch_interval = 0.5, + max_drop_level = 3, + groupcaps = { + crumbly = caps, + cracky = caps, + snappy = caps, + choppy = caps, + oddly_breakable_by_hand = caps, + }, + damage_groups = {fleshy = 10}, + } + }) +end + +-- Unlimited node placement +minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack) + if placer and placer:is_player() then + return creative.is_enabled_for(placer:get_player_name()) + end +end) + +-- Don't pick up if the item is already in the inventory +local old_handle_node_drops = minetest.handle_node_drops +function minetest.handle_node_drops(pos, drops, digger) + if not digger or not digger:is_player() or + not creative.is_enabled_for(digger:get_player_name()) then + return old_handle_node_drops(pos, drops, digger) + end + local inv = digger:get_inventory() + if inv then + for _, item in ipairs(drops) do + if not inv:contains_item("main", item, true) then + inv:add_item("main", item) + end + end + end +end diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua new file mode 100644 index 0000000..3b95e73 --- /dev/null +++ b/mods/creative/inventory.lua @@ -0,0 +1,189 @@ +local player_inventory = {} +local inventory_cache = {} + +local function init_creative_cache(items) + inventory_cache[items] = {} + local i_cache = inventory_cache[items] + + for name, def in pairs(items) do + if def.groups.not_in_creative_inventory ~= 1 and + def.description and def.description ~= "" then + i_cache[name] = def + end + end + table.sort(i_cache) + return i_cache +end + +function creative.init_creative_inventory(player) + local player_name = player:get_player_name() + player_inventory[player_name] = { + size = 0, + filter = "", + start_i = 0 + } + + minetest.create_detached_inventory("creative_" .. player_name, { + allow_move = function(inv, from_list, from_index, to_list, to_index, count, player2) + local name = player2 and player2:get_player_name() or "" + if not creative.is_enabled_for(name) or + to_list == "main" then + return 0 + end + return count + end, + allow_put = function(inv, listname, index, stack, player2) + return 0 + end, + allow_take = function(inv, listname, index, stack, player2) + local name = player2 and player2:get_player_name() or "" + if not creative.is_enabled_for(name) then + return 0 + end + return -1 + end, + on_move = function(inv, from_list, from_index, to_list, to_index, count, player2) + end, + on_take = function(inv, listname, index, stack, player2) + if stack and stack:get_count() > 0 then + minetest.log("action", player_name .. " takes " .. stack:get_name().. " from creative inventory") + end + end, + }, player_name) + + return player_inventory[player_name] +end + +function creative.update_creative_inventory(player_name, tab_content) + local creative_list = {} + local inv = player_inventory[player_name] or + creative.init_creative_inventory(minetest.get_player_by_name(player_name)) + local player_inv = minetest.get_inventory({type = "detached", name = "creative_" .. player_name}) + + local items = inventory_cache[tab_content] or init_creative_cache(tab_content) + + for name, def in pairs(items) do + if def.name:find(inv.filter, 1, true) or + def.description:lower():find(inv.filter, 1, true) then + creative_list[#creative_list+1] = name + end + end + + table.sort(creative_list) + player_inv:set_size("main", #creative_list) + player_inv:set_list("main", creative_list) + inv.size = #creative_list +end + +-- Create the trash field +local trash = minetest.create_detached_inventory("creative_trash", { + -- Allow the stack to be placed and remove it in on_put() + -- This allows the creative inventory to restore the stack + allow_put = function(inv, listname, index, stack, player) + return stack:get_count() + end, + on_put = function(inv, listname) + inv:set_list(listname, {}) + end, +}) +trash:set_size("main", 1) + +creative.formspec_add = "" + +function creative.register_tab(name, title, items) + sfinv.register_page("creative:" .. name, { + title = title, + is_in_nav = function(self, player, context) + return creative.is_enabled_for(player:get_player_name()) + end, + get = function(self, player, context) + local player_name = player:get_player_name() + creative.update_creative_inventory(player_name, items) + local inv = player_inventory[player_name] + local start_i = inv.start_i or 0 + local pagenum = math.floor(start_i / (3*8) + 1) + local pagemax = math.ceil(inv.size / (3*8)) + return sfinv.make_formspec(player, context, + "label[6.2,3.35;" .. minetest.colorize("#FFFF00", tostring(pagenum)) .. " / " .. tostring(pagemax) .. "]" .. + [[ + image[4.06,3.4;0.8,0.8;creative_trash_icon.png] + listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] + list[detached:creative_trash;main;4,3.3;1,1;] + listring[] + image_button[5.4,3.25;0.8,0.8;creative_prev_icon.png;creative_prev;] + image_button[7.2,3.25;0.8,0.8;creative_next_icon.png;creative_next;] + image_button[2.1,3.25;0.8,0.8;creative_search_icon.png;creative_search;] + image_button[2.75,3.25;0.8,0.8;creative_clear_icon.png;creative_clear;] + tooltip[creative_search;Search] + tooltip[creative_clear;Reset] + tooltip[creative_prev;Previous page] + tooltip[creative_next;Next page] + listring[current_player;main] + field_close_on_enter[creative_filter;false] + ]] .. + "field[0.3,3.5;2.2,1;creative_filter;;" .. minetest.formspec_escape(inv.filter) .. "]" .. + "listring[detached:creative_" .. player_name .. ";main]" .. + "list[detached:creative_" .. player_name .. ";main;0,0;8,3;" .. tostring(start_i) .. "]" .. + creative.formspec_add, true) + end, + on_enter = function(self, player, context) + local player_name = player:get_player_name() + local inv = player_inventory[player_name] + if inv then + inv.start_i = 0 + end + end, + on_player_receive_fields = function(self, player, context, fields) + local player_name = player:get_player_name() + local inv = player_inventory[player_name] + assert(inv) + + if fields.creative_clear then + inv.start_i = 0 + inv.filter = "" + creative.update_creative_inventory(player_name, items) + sfinv.set_player_inventory_formspec(player, context) + elseif fields.creative_search or + fields.key_enter_field == "creative_filter" then + inv.start_i = 0 + inv.filter = fields.creative_filter:lower() + creative.update_creative_inventory(player_name, items) + sfinv.set_player_inventory_formspec(player, context) + elseif not fields.quit then + local start_i = inv.start_i or 0 + + if fields.creative_prev then + start_i = start_i - 3*8 + if start_i < 0 then + start_i = inv.size - (inv.size % (3*8)) + if inv.size == start_i then + start_i = math.max(0, inv.size - (3*8)) + end + end + elseif fields.creative_next then + start_i = start_i + 3*8 + if start_i >= inv.size then + start_i = 0 + end + end + + inv.start_i = start_i + sfinv.set_player_inventory_formspec(player, context) + end + end + }) +end + +creative.register_tab("all", "All", minetest.registered_items) +creative.register_tab("nodes", "Nodes", minetest.registered_nodes) +creative.register_tab("tools", "Tools", minetest.registered_tools) +creative.register_tab("craftitems", "Items", minetest.registered_craftitems) + +local old_homepage_name = sfinv.get_homepage_name +function sfinv.get_homepage_name(player) + if creative.is_enabled_for(player:get_player_name()) then + return "creative:all" + else + return old_homepage_name(player) + end +end diff --git a/mods/creative/license.txt b/mods/creative/license.txt new file mode 100644 index 0000000..50ff9c7 --- /dev/null +++ b/mods/creative/license.txt @@ -0,0 +1,61 @@ +License of source code +---------------------- + +The MIT License (MIT) +Copyright (C) 2012-2016 Perttu Ahola (celeron55) +Copyright (C) 2015-2016 Jean-Patrick G. (kilbith) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT + + +Licenses of media (textures) +---------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2016 Jean-Patrick G. (kilbith) +Copyright (C) 2018 paramat + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/creative/mod.conf b/mods/creative/mod.conf new file mode 100644 index 0000000..2b98d29 --- /dev/null +++ b/mods/creative/mod.conf @@ -0,0 +1,4 @@ +name = creative +description = Minetest Game mod: creative +depends = sfinv +optional_depends = hand diff --git a/mods/creative/textures/creative_clear_icon.png b/mods/creative/textures/creative_clear_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9244264adcf8a710ff13a2d684f148f997f1522f GIT binary patch literal 708 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrVCwdCaSW-r_4ck|p0J|`+k@?8 z)4T38Ghetp_qK?~6E??3JeK}D7|j>(if@>5FNQ(xtQ%9xq#I|>oJ-rk-tWo9fB*MH zp5A261T+u{c%448b?emavpj!@3x2dSE|*=GYrgL7A+xn2b!l~{&a|J|bNs}_tEEWpk`5!2*`a}1RyVnJUKYCsTDmAJZ691N{Rw#iPDykKZKfD4SDBXYZavSfp zt(M8LUICfU&F8YHzp0s=(DY%oUz2h9J|Q20x{sb8K$MJ(p@+4@qz<4 z!kg0dK3Eysi%9);Rd;NiTfc_o`reublauX^hYkL8bi5ZVT=BywU-{9yDV`H%&hFSD z{eSy3XBU}c*&BW+C(O>xi5IGCE-m?*7^bhf!nSDs-Ve5G964XH7nBIy_{nX@*CKED zC9J9A$E62L@3|g1-|-{rXX!rIBX13O=8G=aFLdP6;d1{6XTq5t?lu(JC&Y2TP@!hB z!wW0ribzTW? zv>WHHXDQnUw9_l$Ihb?k|95ulYSoBmH}=bWKa)PledlLA%OVzTzIe`-^(=?Nn=}vK z|5|oXdfI~7>hssAan;KT<|{qg^yu`QKY#yx%+Ejmf9+EvCB5Qf=OwiwTl#JLZgovQ z!0-C6bfNb@zk-X!W`9H8=%_c!chCE&^5PxeZU@em`wuKW9OwuSX$khe@MP~-NmYTm zX3qx;1G)7Yj~~+PMrdBTn&4iAk_ zCzVg(Na=19?+|cZ@IbL5e8K}(p%j$~LCzBsW`=l_98+=LxOqcU#KxZ4bF1w%xt0{a z`}n5x5A!4yPfR4$8*;e!gynrkwWs^THJ8fwm6_+NZhvfNz`X2$*7H3+nrmg>zn$fk zcU;DTEsp7Yqx;j4fC<766bo4PXc+pOTKe$LWCb^d;0JOacKq4RS~rcuZuyjTGNpGJ zdGs?sCo&vRd%owBN{66>{6Xdinj19ZyXSmv6+FVRpg$o@?6BAl?l~2f9l{R##m}7n zuvdnKCqd%iW=9Tg|0WBd0qnUq*`xfMA{hVF3Oz`Y&}R^LW-c%^fl>ZU%pX(?803|t z4oqwB*k7+NsASMk@89(JA%AxN0fuev7cTA1*!Id^O!B}t4yQjGPcSs;x3LM-7@9OZ z=w8Uk63@e{@FOXM;ULghj(rkR4j+zQ04pijarA>!#Pd1(`(A$LlzLtR)BDcFwBi3|wtWop4gCi;u{`7xI8ZA2L-PYy1jFf#wRRI3-_)Pq&*Imx z{ps&h?Ts7z{(f(M7~k`?l9BmF{*UDcW^d%bulm8@@b{Ao7I4RluIDspxZ8IB{^$7q z%7?}cf4Be5TKAJ}!~JbQq4U|*l{*+&ZhqrE(0ZO>k$w%({XjJjxaR}i|AR;2$Dwqf z`|W`4{~+n`0jQ)&zs5XMrtS@Ycb-gLPVZrJhW300zWWR^`xq^1m zyWUxR_7M!z4@iFKeHXjyz0AM7AYOB&=QfLf7qn^Ky}aAIU0%C^v)*oIvhlX<8Qz#F e2P9I`9q-0Hd(Hm59fiOI%i!ti=d#Wzp$P!RnKjM; literal 0 HcmV?d00001 diff --git a/mods/creative/textures/creative_prev_icon.png b/mods/creative/textures/creative_prev_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b26cd157f95aec853fce734574e5d319686b8399 GIT binary patch literal 728 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 literal 0 HcmV?d00001 diff --git a/mods/creative/textures/creative_trash_icon.png b/mods/creative/textures/creative_trash_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7d7a0a62f36472ffcc08cd07422d1c5e17e45e3b GIT binary patch literal 712 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrVCwgDaSW-r_4e+?-dhe5trxww zq*naqXuWX$%VVcGb_I&R1tv_`WU!j2d1GzgmQ#n_%r@D(8r!SMY)V`@C3wbkp`zrO9YquH$qXGj<1H+Alhfi&G|FJ(}SLs?`@OU z=Ko=Q^1aIOQ@pdR=KhzuvG=pT`FdxDxp@Z+zq8vWPg;3>!84VT2}&@z?=%LBL9Hq~$8|9AiV@%4Xy%;s14dR}%* zon77A&m;qutR!##$3==^`3{2oa1xFUptOVYBf1?jSv-y|x zQ#1GeuC3o5=i4=WKHIvdyz#uX-M?+jJ8Bj`d-DSr7ho$7bd@n~t^F`3MPuolJ6-v_ z)3Z&!%~Jltw_qE;+@zXk@59#=*ZUcKouw=zcJKN8Nip?5uFpu(S=s~FpY@DkZE@4y u*Z=k$xWstn8Ot*UZhL(O28IL6Y8X5J> (LGPL 2.1) +Various Minetest developers and contributors (LGPL 2.1) + +Authors of media +---------------- +All textures by paramat (CC BY-SA 3.0). diff --git a/mods/hand/init.lua b/mods/hand/init.lua new file mode 100644 index 0000000..81e85ee --- /dev/null +++ b/mods/hand/init.lua @@ -0,0 +1,28 @@ +-- The hand tool + +minetest.register_item(":", { + type = "none", + wield_image = "wieldhand.png", + wield_scale = {x = 1, y = 1, z = 2.5}, + tool_capabilities = { + full_punch_interval = 0.9, + max_drop_level = 0, + groupcaps = { + crumbly = { + times = {[2] = 3.00, [3] = 0.70}, + uses = 0, + maxlevel = 1, + }, + snappy = { + times = {[3] = 0.40}, + uses = 0, + maxlevel = 1, + }, + oddly_breakable_by_hand = { + times = {[1] = 3.50, [2] = 2.00, [3] = 0.70}, + uses = 0, + }, + }, + damage_groups = {fleshy = 1}, + } +}) diff --git a/mods/hand/license.txt b/mods/hand/license.txt new file mode 100644 index 0000000..f670ee2 --- /dev/null +++ b/mods/hand/license.txt @@ -0,0 +1,56 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 +Copyright (C) 2019 celeron55, Perttu Ahola +Copyright (C) 2019 Various Minetest developers and contributors + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU Lesser General Public License as published by the Free +Software Foundation; either version 2.1 of the License, or (at your option) any +later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + +License of media +---------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2019 paramat + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even + commercially. + +The licensor cannot revoke these freedoms as long as you follow the license +terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, +and indicate if changes were made. You may do so in any reasonable manner, but +not in any way that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must +distribute your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological +measures that legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the +public domain or where your use is permitted by an applicable exception or +limitation. +No warranties are given. The license may not give you all of the permissions +necessary for your intended use. For example, other rights such as publicity, +privacy, or moral rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/hand/textures/wieldhand.png b/mods/hand/textures/wieldhand.png new file mode 100644 index 0000000000000000000000000000000000000000..1722a65b15882a1934c162660a2c978c679f5740 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^&H$efR|bZ3AX7<6sU?%|A&|vb z666=m;PC858jvI8>Eal|aXmSqfpHz1KvHRg0t5eD#wSYalpTPw44$rjF6*2UngB6b B7q$QZ literal 0 HcmV?d00001 diff --git a/mods/lamp/init.lua b/mods/lamp/init.lua new file mode 100644 index 0000000..c74f88a --- /dev/null +++ b/mods/lamp/init.lua @@ -0,0 +1,10 @@ +-- Lamp + +minetest.register_node("lamp:lamp", { + description = "Lamp", + tiles = {"lamp_lamp.png"}, + paramtype = "light", + light_source = 14, + is_ground_content = false, + groups = {dig_immediate = 2}, +}) diff --git a/mods/lamp/textures/lamp_lamp.png b/mods/lamp/textures/lamp_lamp.png new file mode 100644 index 0000000000000000000000000000000000000000..4ff5bfb534d085e4c7e161fcbe1b313e33fe5c0e GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^&H$ef*JsZdK7C^N|DWN+BmeI} sK_O2U#}JO|$q`$-60FVdQ&MBb@09U~q2><{9 literal 0 HcmV?d00001 diff --git a/mods/mapgen/README.txt b/mods/mapgen/README.txt new file mode 100644 index 0000000..7b3ba37 --- /dev/null +++ b/mods/mapgen/README.txt @@ -0,0 +1,5 @@ +Minipeli mod: mapgen +==================== +See license.txt for license information. +Source code by paramat (MIT). +All textures by paramat (CC BY-SA 3.0). diff --git a/mods/mapgen/init.lua b/mods/mapgen/init.lua new file mode 100644 index 0000000..3651f60 --- /dev/null +++ b/mods/mapgen/init.lua @@ -0,0 +1,314 @@ +-- Nodes + +minetest.register_node("mapgen:stone", { + description = "Stone", + tiles = {"mapgen_stone.png"}, + groups = {cracky = 3}, +}) + +minetest.register_node("mapgen:stone_block", { + description = "Stone Block", + tiles = {"mapgen_stone_block.png"}, + is_ground_content = false, + groups = {dig_immediate = 2}, +}) + +minetest.register_node("mapgen:stone_block_stair", { + description = "Stone Block Stair", + drawtype = "nodebox", + tiles = { + "mapgen_stone_block_divided.png", + "mapgen_stone_block.png", + "mapgen_stone_block_divided.png" + }, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + groups = {dig_immediate = 2}, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.0, 0.5}, + {-0.5, 0.0, 0.0, 0.5, 0.5, 0.5}, + }, + }, +}) + +minetest.register_node("mapgen:grass", { + description = "Grass", + tiles = {"mapgen_grass.png"}, + groups = {crumbly = 3}, +}) + +minetest.register_node("mapgen:dirt", { + description = "Dirt", + tiles = {"mapgen_dirt.png"}, + groups = {crumbly = 3}, +}) + +minetest.register_node("mapgen:sand", { + description = "Sand", + tiles = {"mapgen_sand.png"}, + groups = {crumbly = 3}, +}) + +-- Water + +minetest.register_node("mapgen:water_source", { + description = "Water Source", + drawtype = "liquid", + tiles = { + { + name = "mapgen_water.png", + backface_culling = false, + }, + { + name = "mapgen_water.png", + backface_culling = true, + }, + }, + alpha = 160, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + drop = "", + drowning = 1, + liquidtype = "source", + liquid_alternative_flowing = "mapgen:water_flowing", + liquid_alternative_source = "mapgen:water_source", + liquid_viscosity = 1, + post_effect_color = {a = 103, r = 30, g = 60, b = 90}, +}) + +minetest.register_node("mapgen:water_flowing", { + description = "Flowing Water", + drawtype = "flowingliquid", + tiles = {"mapgen_water.png"}, + special_tiles = { + { + name = "mapgen_water.png", + backface_culling = false, + }, + { + name = "mapgen_water.png", + backface_culling = false, + }, + }, + alpha = 160, + paramtype = "light", + paramtype2 = "flowingliquid", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + drop = "", + drowning = 1, + liquidtype = "flowing", + liquid_alternative_flowing = "mapgen:water_flowing", + liquid_alternative_source = "mapgen:water_source", + liquid_viscosity = 1, + post_effect_color = {a = 103, r = 30, g = 60, b = 90}, + groups = {not_in_creative_inventory = 1}, +}) + +-- River water + +-- This is an alternative water node required by mapgens with sloping rivers. +-- It has 'liquid_renewable = false' and a short 'liquid_range' to avoid +-- overflowing riverbanks. + +minetest.register_node("mapgen:river_water_source", { + description = "River Water Source", + drawtype = "liquid", + tiles = { + { + name = "mapgen_river_water.png", + backface_culling = false, + }, + { + name = "mapgen_river_water.png", + backface_culling = true, + }, + }, + alpha = 160, + paramtype = "light", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + drop = "", + drowning = 1, + liquidtype = "source", + liquid_alternative_flowing = "mapgen:river_water_flowing", + liquid_alternative_source = "mapgen:river_water_source", + liquid_viscosity = 1, + liquid_renewable = false, + liquid_range = 2, + post_effect_color = {a = 103, r = 30, g = 76, b = 90}, +}) + +minetest.register_node("mapgen:river_water_flowing", { + description = "Flowing River Water", + drawtype = "flowingliquid", + tiles = {"mapgen_river_water.png"}, + special_tiles = { + { + name = "mapgen_river_water.png", + backface_culling = false, + }, + { + name = "mapgen_river_water.png", + backface_culling = false, + }, + }, + alpha = 160, + paramtype = "light", + paramtype2 = "flowingliquid", + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + drop = "", + drowning = 1, + liquidtype = "flowing", + liquid_alternative_flowing = "mapgen:river_water_flowing", + liquid_alternative_source = "mapgen:river_water_source", + liquid_viscosity = 1, + liquid_renewable = false, + liquid_range = 2, + post_effect_color = {a = 103, r = 30, g = 76, b = 90}, + groups = {not_in_creative_inventory = 1}, +}) + +-- Lava + +minetest.register_node("mapgen:lava_source", { + description = "Lava Source", + drawtype = "liquid", + tiles = { + { + name = "mapgen_lava.png", + backface_culling = false, + }, + { + name = "mapgen_lava.png", + backface_culling = true, + }, + }, + paramtype = "light", + light_source = 13, + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + drop = "", + drowning = 1, + liquidtype = "source", + liquid_alternative_flowing = "mapgen:lava_flowing", + liquid_alternative_source = "mapgen:lava_source", + liquid_viscosity = 7, + liquid_renewable = false, + damage_per_second = 4 * 2, + post_effect_color = {a = 191, r = 255, g = 64, b = 0}, +}) + +minetest.register_node("mapgen:lava_flowing", { + description = "Flowing Lava", + drawtype = "flowingliquid", + tiles = {"mapgen_lava.png"}, + special_tiles = { + { + name = "mapgen_lava.png", + backface_culling = false, + }, + { + name = "mapgen_lava.png", + backface_culling = false, + }, + }, + paramtype = "light", + paramtype2 = "flowingliquid", + light_source = 13, + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + is_ground_content = false, + drop = "", + drowning = 1, + liquidtype = "flowing", + liquid_alternative_flowing = "mapgen:lava_flowing", + liquid_alternative_source = "mapgen:lava_source", + liquid_viscosity = 7, + liquid_renewable = false, + damage_per_second = 4 * 2, + post_effect_color = {a = 191, r = 255, g = 64, b = 0}, + groups = {not_in_creative_inventory = 1}, +}) + + +-- Aliases for map generators + +-- Only 3 needed because cave liquids and dungeon nodes are defined in biomes + +minetest.register_alias("mapgen_stone", "mapgen:stone") +minetest.register_alias("mapgen_water_source", "mapgen:water_source") +minetest.register_alias("mapgen_river_water_source", "mapgen:river_water_source") + + +-- Biomes + +-- Grassland + +minetest.register_biome({ + name = "grassland", + node_top = "mapgen:grass", + depth_top = 1, + node_filler = "mapgen:dirt", + depth_filler = 1, + node_riverbed = "mapgen:sand", + depth_riverbed = 2, + node_cave_liquid = "mapgen:water_source", + node_dungeon = "mapgen:stone_block", + node_dungeon_stair = "mapgen:stone_block_stair", + y_max = 31000, + y_min = 4, + heat_point = 50, + humidity_point = 50, +}) + +minetest.register_biome({ + name = "grassland_shore", + node_top = "mapgen:sand", + depth_top = 1, + node_filler = "mapgen:sand", + depth_filler = 2, + node_riverbed = "mapgen:sand", + node_cave_liquid = "mapgen:water_source", + node_dungeon = "mapgen:stone_block", + node_dungeon_stair = "mapgen:stone_block_stair", + depth_riverbed = 2, + vertical_blend = 1, + y_max = 3, + y_min = -255, + heat_point = 50, + humidity_point = 50, +}) + +minetest.register_biome({ + name = "grassland_under", + node_cave_liquid = {"mapgen:water_source", "mapgen:lava_source"}, + node_dungeon = "mapgen:stone_block", + node_dungeon_stair = "mapgen:stone_block_stair", + y_max = -256, + y_min = -31000, + heat_point = 50, + humidity_point = 50, +}) diff --git a/mods/mapgen/license.txt b/mods/mapgen/license.txt new file mode 100644 index 0000000..64321bd --- /dev/null +++ b/mods/mapgen/license.txt @@ -0,0 +1,61 @@ +License of source code +---------------------- + +The MIT License (MIT) +Copyright (C) 2019 paramat + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT + + +License of media (textures) +--------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2019 paramat + +You are free to: + +Share — copy and redistribute the material in any medium or format +Adapt — remix, transform, and build upon the material for any purpose, even commercially. + +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/mapgen/textures/mapgen_dirt.png b/mods/mapgen/textures/mapgen_dirt.png new file mode 100644 index 0000000000000000000000000000000000000000..406e5064c90daa8c07410aad458294a4b1c74b0a GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^S7BZ*8DV}kDG>ujskM?# tH-X}Uo-U3d9M_XMQWF{$|6l!pgTYaU{b$7TVi%w!gQu&X%Q~loCIDG~77zdc literal 0 HcmV?d00001 diff --git a/mods/mapgen/textures/mapgen_grass.png b/mods/mapgen/textures/mapgen_grass.png new file mode 100644 index 0000000000000000000000000000000000000000..300edb99c2e7f6c18723c2772c764fb658126d86 GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^o&cW^*OU&s)GoX1e#e5z?y~>b t>ww~do-U3d9M_XMQWF{$hyH)a!C-%b{b#y#qbyL8!PC{xWt~$(69E5S83O&Y4E83}aAiAv>d!)Upe%!@tDnm{r-UW|!P6KU literal 0 HcmV?d00001 diff --git a/mods/mapgen/textures/mapgen_stone_block_divided.png b/mods/mapgen/textures/mapgen_stone_block_divided.png new file mode 100644 index 0000000000000000000000000000000000000000..2a40da69bb4166e5b0f5a4838b9a4fc428610866 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^93afZ3?z3ZhDiV^&H$efSAQSx@Q~oNq{Mlj&bk2w sg*{yyLpZJ{M{Mm%%;Ml+WE7HSh>&CRoiCv=11Qbl>FVdQ&MBb@0Hli*vj6}9 literal 0 HcmV?d00001 diff --git a/mods/mapgen/textures/mapgen_water.png b/mods/mapgen/textures/mapgen_water.png new file mode 100644 index 0000000000000000000000000000000000000000..9a591fb872df0fc61ba9a05d04a73006093b250a GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^93afd3?%;@)Hwm9*aCb)T*Yf{>-9aqUnl4X6p`?B vaSY+Op6rnnkY (LGPL 2.1) +Various Minetest developers and contributors (LGPL 2.1) + +Authors of media +---------------- +stujones11 (CC BY-SA 3.0): + character.* -- Derived from a model by MirceaKitsune (CC BY-SA 3.0) + +paramat (CC BY-SA 3.0): + character.png diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua new file mode 100644 index 0000000..c0f8bcf --- /dev/null +++ b/mods/player_api/api.lua @@ -0,0 +1,136 @@ +player_api = {} + +-- Player animation blending +-- Note: This is currently broken due to a bug in Irrlicht, leave at 0 +local animation_blend = 0 + +player_api.registered_models = { } + +-- Local for speed. +local models = player_api.registered_models + +function player_api.register_model(name, def) + models[name] = def +end + +-- Player stats and animations +local player_model = {} +local player_textures = {} +local player_anim = {} +local player_sneak = {} +player_api.player_attached = {} + +function player_api.get_animation(player) + local name = player:get_player_name() + return { + model = player_model[name], + textures = player_textures[name], + animation = player_anim[name], + } +end + +-- Called when a player's appearance needs to be updated +function player_api.set_model(player, model_name) + local name = player:get_player_name() + local model = models[model_name] + if model then + if player_model[name] == model_name then + return + end + player:set_properties({ + mesh = model_name, + textures = player_textures[name] or model.textures, + visual = "mesh", + visual_size = model.visual_size or {x = 1, y = 1}, + collisionbox = model.collisionbox or {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, + stepheight = model.stepheight or 0.6, + eye_height = model.eye_height or 1.47, + }) + player_api.set_animation(player, "stand") + else + player:set_properties({ + textures = {"player.png", "player_back.png"}, + visual = "upright_sprite", + collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.75, 0.3}, + stepheight = 0.6, + eye_height = 1.625, + }) + end + player_model[name] = model_name +end + +function player_api.set_textures(player, textures) + local name = player:get_player_name() + local model = models[player_model[name]] + local model_textures = model and model.textures or nil + player_textures[name] = textures or model_textures + player:set_properties({textures = textures or model_textures,}) +end + +function player_api.set_animation(player, anim_name, speed) + local name = player:get_player_name() + if player_anim[name] == anim_name then + return + end + local model = player_model[name] and models[player_model[name]] + if not (model and model.animations[anim_name]) then + return + end + local anim = model.animations[anim_name] + player_anim[name] = anim_name + player:set_animation(anim, speed or model.animation_speed, animation_blend) +end + +minetest.register_on_leaveplayer(function(player) + local name = player:get_player_name() + player_model[name] = nil + player_anim[name] = nil + player_textures[name] = nil +end) + +-- Localize for better performance. +local player_set_animation = player_api.set_animation +local player_attached = player_api.player_attached + +-- Check each player and apply animations +minetest.register_globalstep(function(dtime) + for _, player in pairs(minetest.get_connected_players()) do + local name = player:get_player_name() + local model_name = player_model[name] + local model = model_name and models[model_name] + if model and not player_attached[name] then + local controls = player:get_player_control() + local walking = false + local animation_speed_mod = model.animation_speed or 30 + + -- Determine if the player is walking + if controls.up or controls.down or controls.left or controls.right then + walking = true + end + + -- Determine if the player is sneaking, and reduce animation speed if so + if controls.sneak then + animation_speed_mod = animation_speed_mod / 2 + end + + -- Apply animations based on what the player is doing + if player:get_hp() == 0 then + player_set_animation(player, "lay") + elseif walking then + if player_sneak[name] ~= controls.sneak then + player_anim[name] = nil + player_sneak[name] = controls.sneak + end + if controls.LMB then + player_set_animation(player, "walk_mine", animation_speed_mod) + else + player_set_animation(player, "walk", animation_speed_mod) + end + elseif controls.LMB then + player_set_animation(player, "mine") + else + player_set_animation(player, "stand", animation_speed_mod) + end + end + end +end) diff --git a/mods/player_api/init.lua b/mods/player_api/init.lua new file mode 100644 index 0000000..86699a2 --- /dev/null +++ b/mods/player_api/init.lua @@ -0,0 +1,32 @@ +dofile(minetest.get_modpath("player_api") .. "/api.lua") + +-- Default player appearance +player_api.register_model("character.b3d", { + animation_speed = 30, + textures = {"character.png", }, + animations = { + -- Standard animations. + stand = {x = 0, y = 79}, + lay = {x = 162, y = 166}, + walk = {x = 168, y = 187}, + mine = {x = 189, y = 198}, + walk_mine = {x = 200, y = 219}, + sit = {x = 81, y = 160}, + }, + collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, + stepheight = 0.6, + eye_height = 1.47, +}) + +-- Update appearance when the player joins +minetest.register_on_joinplayer(function(player) + player_api.player_attached[player:get_player_name()] = false + player_api.set_model(player, "character.b3d") + player:set_local_animation( + {x = 0, y = 79}, + {x = 168, y = 187}, + {x = 189, y = 198}, + {x = 200, y = 219}, + 30 + ) +end) diff --git a/mods/player_api/license.txt b/mods/player_api/license.txt new file mode 100644 index 0000000..75d8f71 --- /dev/null +++ b/mods/player_api/license.txt @@ -0,0 +1,51 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 +Copyright (C) 2019 celeron55, Perttu Ahola +Copyright (C) 2019 Various Minetest developers and contributors + +This program is free software; you can redistribute it and/or modify it under the terms +of the GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + +Licenses of media (textures, models and sounds) +----------------------------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2019 stujones11 +Copyright (C) 2019 paramat + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/player_api/models/character.b3d b/mods/player_api/models/character.b3d new file mode 100644 index 0000000000000000000000000000000000000000..b3b772a4108a04c96491d1e86599bd3e977abbdc GIT binary patch literal 73433 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 literal 0 HcmV?d00001 diff --git a/mods/player_api/models/character.blend b/mods/player_api/models/character.blend new file mode 100644 index 0000000000000000000000000000000000000000..652579c152ab3ce8c535ca3cfc507cf6537550ed GIT binary patch literal 698016 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 P9ww<$r*cI+z3}&c_MMAk literal 0 HcmV?d00001 diff --git a/mods/player_api/models/character.png b/mods/player_api/models/character.png new file mode 100644 index 0000000000000000000000000000000000000000..b6ff311b0c497175e00b2f384c0bb7885940e472 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQZqbV978hhy}hwfut9;R_2C0c z*3@tFHMtEKWTPS~(ivF`+{9o BOLqVO literal 0 HcmV?d00001 diff --git a/mods/player_api/sounds/player_damage.ogg b/mods/player_api/sounds/player_damage.ogg new file mode 100644 index 0000000000000000000000000000000000000000..788808710c1923c9ae797b7534b66a97dd18dd6d GIT binary patch literal 6176 zcmai23p~@^|37oxSe{{NiW<31#6&fvP{L3dQ%ExRYjW%97ZM|dk+eIG79KAdK%||QJYd<2kUrWFTO=$0E|QfJNY~lo&uXg}*3XU34caT4o*N>& z5=XoO8!syOCC7_MQ|uoNN~#AQ?!{g~GYDgkl(5exa7*JLt2wpsAPuSs91F0{XRv)| zv~Jwg+w#W5UES*D3I`8QH!3WNe%q3QN0SmqlTy4(Gkx1qyxTH;Z)f^_%nZO~{iw4k z;~ynesyZG4%9oN#9uq2c7gjzZRm#${8e~9_#3XoBp)R4Y%9$Gy(HLIV8dl#L-Pdf= z*Nm1<0SGunQp&?w-2YQUyi0=rd$kSgHU_rPmR)$-Ivi)UE#77{-fa|`LSm8s zTn)GWQ(gnZa~jTf)lbUp5R%7thYBvDy*mFb=b1utA{7nC0#WW|e|(JanfZ=YJ3BEN13j%iM@RfL)Wa9;QjOR?_G zcDUAikTqG`j)lF$%re84cF#F}KVVU}lP$VRdI(n>zFQXAj`D-OPeJULH&BwXe}|7P z^jpAfobW_CK82w`!|HH#iWVmvRVgYbb`z=>=P@>s>oT@dGz~ck=~B({0MIc~6#vyo zp*)A;>cS(&y+&vIE&5C(O+%;1dZwupvjI(nC^oTzD9&q{JQ?3ea*E`%h<%oEm=rRB zGZ#_NsraCLI|WT?kYts{^%81eRQ&9?*Lnl0+Bbiy1Al0_tLejf)56qag$>n{x-BW% z`&i=GZ<&6#6URqW#z*t~7i9fAu>Ou50E31ujY%dgm)OP5*ldrQbMRl0vj^K%pw&~L z=hCd_He_<+jpdfNmN(TM+%4Ta=KI~8pE#@$?6J~s*eZCK8a$E|e5WhYQ|FMLOt(7gMB5Thgo&UPd=-wRQk8b2|H3# zdZZ@%$W%7N=x|B+VHU5wGOD+6rsKcXzaz&nP7hWXISz4pKSjfm+4O>FP76YIOz*6XBI_5}R zzI}|%b|i69PribrP;nhcufeQ9lji9rN zx*7?OJvrbGKpL@|cpVofa_%YLC?cXxFuO^HoT4FTf@ukE1wo&y7WkN5HRRk=&BVDJ zIZ>?^c$g0t0Y&&zt{BXpkFdo8KtofM2$@WZh%lK?=_NkZqL4{7Y!49$sZH-CDxAo` z5I9;MB0`rIz2ELBJ7dt!2mt&Q1pL_>Sq3=(j3Jna)f*_XbiwMos5=Z`gGbffMvE

{M^O6q8Yew|)RL5k2~@vr!FN7Vy){yOM>8LONO_2pa2_2=gwz0WaKLYg<3{1E@QBJ< z9?OWwtK+ps^BVcSmD9XRUT7kFi++Z`ndJaJL)<*VrDw_^tVQ9Rq>u* zGVZ(9)Z6@Oro-%9qK-Q?@jlb<@iwSOwEy0dz8^E2qt{&Kf9{10hGt0vyS3Wkva>OZ z;F$33vh@M08JtiS+$oP=#;c!cj#<{(Fk|mdP4O!Z9$)3>y&z_M6~lKluaft?!?^Df z6hyoy+^u!qT+454B_y0^<}0TJc7H?-M2-pfe71i4A+hQ-8r5|aVgn(;hI+4Uh0ZdW zwABcppfiQ_z!(eg2^h+Ae6=T0K_`AQS)j$-N{-NB-ZB>AJsHm3>>@RC7=bxNQLNx> zB}Y~;#gxc1+*`EY@zomSa8u@xPeh&YmQSu~AjV>OW^Kh@PdUn0CtpyA7a!aX9bxZ(&2!8h7Q z%!()T#kVMVkPsMsafG%1)nA&^B20y18ebyZ_)Kvj6h3*^Czr$=qCr-Llw7#NH>#am z5&;P;N>0n<-S{Z054U_8Br;s!7b5;>`+F~V>ZHj6+cZ>gx#S3ugsojRMdTcgiR&jB zqwM=hhIMhS_5=d8-wvtYA|eq80x=1x&(Ux(HWhe95(rQWm@<}2!&brVumGVn&l?3c z!YCHv;kl!r$-!j|;;ONM7+nqy`h|lHgto=StJoWB28!&A2=uLFV?ri|?5xj$DXx+h z%;%y8ncKDChUU(ZU1%Dbn1xU9v@lksyOIs-4nm9a6Co5hf_|R}{<+(>NPec+!bKlK zA%uUu)Mpt0FW`n=NY4>{kgo`AaaB+*DHKENCrxWv!jn;pu3{`?XQplGq9*sC`1FEucxK9geUdYiOj4|1 zZXyWr%t8tj2UV(zLqppMyd(ss&kH<+MwC?&2Et0{vw_SPY>#Zz;fQGsR-+KaEt9NB zG9*OaXb0e)ydr3lUF5LR5Qj3h43a95hKFX%C1zo1M~GAG4M>8Z6y`WwoFw&tA6ZHM zkqZg%RR{^BDJ@CEj%WOnnEca2{Xa_7!8}XV3x2JIxJAghtbCK2^ffT*N0MGT_xe-L z{!jM)pL)KLds9sYMp-_*Cc8DPn+(#>0PMLPF+&h{;{|Mb zi3>eH4nte6N;yJuJQM7sDZq^|i5#p4C32cg%XQy!B9Kh%Y+!nkjSA9-;u>0#`r(}t zj|AozofQXd5m;O|6hxOJfbym*gTx(ja!=GOl+a3D^!TB0S%9H;qYJXPqt(=T2P0u^D3?~$uRcdSR-rRza@A@F*Inn1^q2g`jI=^az#X4x^JIVFg zX3F~;*Hm>Cm*Jg`39edXfGAaYm1eGron?{CyY#cWZ`|96E&k-?{PI)|(w{c1n;L%5 zrvBm$xwVLt?F;qf8>Tl*w>?=Oj*iTKxrUbea&6#-e);$}V1QAx?MbG~C0+1D)n)7X z01G|#L#EY)_51Nx#)am?#_FLvKJ8(rwA^$3PolUDb9AjddrE&FXM;`XRNZyJbbDl=#YM}Mt@6B`$lC;%TGr@zK%AqIVV z+-xUzI-vV%J_yt`j1%D06lQ79&t{qyo)CTib=`iJ=Jc5G@%hwA^^}mMW!LxZ&ozC3 z>g?RH;BHqYC#MNXA)n*xroUM?^iD=mQLirOkBD~91qZk%yAJ%`z-^wbZ9uRXrb`~B zoD|Xt?>%M0+JX^`oi<~)ni?)u2eo%!tDL%@lZ^OuXvAg1KFX`#KCg3JRaI&j@NjV3 z$5=1(z2$UTUbso1POsxpZvW}`hsS~z$|wYzQH z%iq@dvX{ih-XGQXs<+8XHbO3}ag8YJt-AcGM7Mqg?L0fdV1NCq$-9eE%^oNX@39$q zb0yKMFvD)$xdq!h`)Pw_MIF;J!wVjKIzBeoX1rFMZ?%p;a@gp}_S2^o)=&xrD>dzP zkI!zE32-~n|A5@E>1o7xY>I!G!2=XO@NmzzLC0s6X=0~ z-mWDYt|LaWs{=ZgK6^va9w4R`TJ>c&ofs1MG``VeXCW1_tY(kG+vaU%uCGTUGX1NS z(k`vm*$Priu^lyU6x7QykP8$$6h01j1hfIdA=-)wbKY6u(*tg8Zx7;j`;1*zQcyQKozK=NF`{V_u+v#ft zCq-D?fIy`h`=_IlQm^%Sf*JR>g#C|R?Oj~d<+eMsoZ)bl(FP(-9ruxi-$m4hImz#eEAiR-+`Ukxs4mqIdsr+ za~1iKuF0%Q!ZTd_&PU!MwzV7gTXUWf-S(GGI$7_Jk9_cLux)*S6}9Au_V?!Yl3SLm z#-1=Xr>tL~e9Mbl=!~s_aoyV#x>Zq2EW|z{>_e-(#IH{0y_Twgh>$~cFCb(xF5o;Oy1pP-uT)NtUX&L%eKcUlt3 z5g(=6As%*2gPOZ--3&$i9O#h^g&+xIaD0-r9`Q78K%MYaJT+@qbBIlbc>jkOi#4UV%34Nt<(d2ZQ z;lg;V8ukL>OhW1&%a1BwMlIIa-1l<(ec~hTqurtIHG`r}o9~=E1TL8dwsJ%vm-qon zPu|5kuLb>!UTR)&q`+^nI!H(hgkPF(SqYOGao3}C=`%NHE3dP!47m-qUYv)|iPF&q zua&05691*|Yx?WnePc}}u2#oR$(}YwTd`)MG#%`c&z{(}#b7H&#x}33uizW$ZNZ)G zZ;y&6ob6AICH!$MskG8yz3A!8G@`aoV5hdz-w`LL?cRglA(d;P;CrF?FR z0D-ctU!FWP#RD<5>2V0KF3a*ywHv6qrN?C15yHJLVH%5w^3w*Z5a3{{j5WNaZ}@nQ z^?Y9M^G$jMBiEjNR^)Bj@?hD?r<=|n^gC6HGzra`(kc(eA}6mam4iSP5V6KzPa#Zk zyIfXElBd}&@0@@=G5fW&ksoS_uhYMKuuPU8^9qgOOv-|5Cn7A=cFKcGnI_*5v}AYJ z1IC9s=AZtoL!-!tkLi=P0?_zN`dL!v@6EjyUxOlIpLfrW-%}}iRvTUXb(v{erBzz= zqi@`2lXP*cRl0cf(;H=SyV`5*l$lHR{Y$Z+sl{L-;o?^@iyLxfd-K*~GO|~8Y>@}} zEsN5=#L2|$mje$nznp4+vtxYk(yzFub>sJT88mZ$&C5dBW-FKC08$k?Z2!F57iGcX zXwk5fW>UB$Z5U)ag6C>I&zyQ9$^bYZ4@w3feAlo11w3&{Lri?v1}8JWd~{v=Ii!my z@)emF(62ZeiZ<1m!g1Vk5k8Iv$bDmv2-Qk!T$g|$Ug=E literal 0 HcmV?d00001 diff --git a/mods/sfinv/README.txt b/mods/sfinv/README.txt new file mode 100644 index 0000000..a7ac794 --- /dev/null +++ b/mods/sfinv/README.txt @@ -0,0 +1,13 @@ +Minetest Game mod: sfinv +======================== +See license.txt for license information. + +Simple Fast Inventory. +A cleaner, simpler, solution to having an advanced inventory in Minetest. +See game_api.txt for this mod's API. +Available for use outside of MTG here: +https://forum.minetest.net/viewtopic.php?t=19765 + +Authors of source code +---------------------- +rubenwardy (MIT) diff --git a/mods/sfinv/api.lua b/mods/sfinv/api.lua new file mode 100644 index 0000000..509cb90 --- /dev/null +++ b/mods/sfinv/api.lua @@ -0,0 +1,189 @@ +sfinv = { + pages = {}, + pages_unordered = {}, + contexts = {}, + enabled = true +} + +function sfinv.register_page(name, def) + assert(name, "Invalid sfinv page. Requires a name") + assert(def, "Invalid sfinv page. Requires a def[inition] table") + assert(def.get, "Invalid sfinv page. Def requires a get function.") + assert(not sfinv.pages[name], "Attempt to register already registered sfinv page " .. dump(name)) + + sfinv.pages[name] = def + def.name = name + table.insert(sfinv.pages_unordered, def) +end + +function sfinv.override_page(name, def) + assert(name, "Invalid sfinv page override. Requires a name") + assert(def, "Invalid sfinv page override. Requires a def[inition] table") + local page = sfinv.pages[name] + assert(page, "Attempt to override sfinv page " .. dump(name) .. " which does not exist.") + for key, value in pairs(def) do + page[key] = value + end +end + +function sfinv.get_nav_fs(player, context, nav, current_idx) + -- Only show tabs if there is more than one page + if #nav > 1 then + return "tabheader[0,0;sfinv_nav_tabs;" .. table.concat(nav, ",") .. + ";" .. current_idx .. ";true;false]" + else + return "" + end +end + +local theme_inv = [[ + image[0,4.7;1,1;gui_hb_bg.png] + image[1,4.7;1,1;gui_hb_bg.png] + image[2,4.7;1,1;gui_hb_bg.png] + image[3,4.7;1,1;gui_hb_bg.png] + image[4,4.7;1,1;gui_hb_bg.png] + image[5,4.7;1,1;gui_hb_bg.png] + image[6,4.7;1,1;gui_hb_bg.png] + image[7,4.7;1,1;gui_hb_bg.png] + list[current_player;main;0,4.7;8,1;] + list[current_player;main;0,5.85;8,3;8] + ]] + +function sfinv.make_formspec(player, context, content, show_inv, size) + local tmp = { + size or "size[8,8.6]", + sfinv.get_nav_fs(player, context, context.nav_titles, context.nav_idx), + show_inv and theme_inv or "", + content + } + return table.concat(tmp, "") +end + +function sfinv.get_homepage_name(player) + return "sfinv:crafting" +end + +function sfinv.get_formspec(player, context) + -- Generate navigation tabs + local nav = {} + local nav_ids = {} + local current_idx = 1 + for i, pdef in pairs(sfinv.pages_unordered) do + if not pdef.is_in_nav or pdef:is_in_nav(player, context) then + nav[#nav + 1] = pdef.title + nav_ids[#nav_ids + 1] = pdef.name + if pdef.name == context.page then + current_idx = #nav_ids + end + end + end + context.nav = nav_ids + context.nav_titles = nav + context.nav_idx = current_idx + + -- Generate formspec + local page = sfinv.pages[context.page] or sfinv.pages["404"] + if page then + return page:get(player, context) + else + local old_page = context.page + local home_page = sfinv.get_homepage_name(player) + + if old_page == home_page then + minetest.log("error", "[sfinv] Couldn't find " .. dump(old_page) .. + ", which is also the old page") + + return "" + end + + context.page = home_page + assert(sfinv.pages[context.page], "[sfinv] Invalid homepage") + minetest.log("warning", "[sfinv] Couldn't find " .. dump(old_page) .. + " so switching to homepage") + + return sfinv.get_formspec(player, context) + end +end + +function sfinv.get_or_create_context(player) + local name = player:get_player_name() + local context = sfinv.contexts[name] + if not context then + context = { + page = sfinv.get_homepage_name(player) + } + sfinv.contexts[name] = context + end + return context +end + +function sfinv.set_context(player, context) + sfinv.contexts[player:get_player_name()] = context +end + +function sfinv.set_player_inventory_formspec(player, context) + local fs = sfinv.get_formspec(player, + context or sfinv.get_or_create_context(player)) + player:set_inventory_formspec(fs) +end + +function sfinv.set_page(player, pagename) + local context = sfinv.get_or_create_context(player) + local oldpage = sfinv.pages[context.page] + if oldpage and oldpage.on_leave then + oldpage:on_leave(player, context) + end + context.page = pagename + local page = sfinv.pages[pagename] + if page.on_enter then + page:on_enter(player, context) + end + sfinv.set_player_inventory_formspec(player, context) +end + +function sfinv.get_page(player) + local context = sfinv.contexts[player:get_player_name()] + return context and context.page or sfinv.get_homepage_name(player) +end + +minetest.register_on_joinplayer(function(player) + if sfinv.enabled then + sfinv.set_player_inventory_formspec(player) + end +end) + +minetest.register_on_leaveplayer(function(player) + sfinv.contexts[player:get_player_name()] = nil +end) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= "" or not sfinv.enabled then + return false + end + + -- Get Context + local name = player:get_player_name() + local context = sfinv.contexts[name] + if not context then + sfinv.set_player_inventory_formspec(player) + return false + end + + -- Was a tab selected? + if fields.sfinv_nav_tabs and context.nav then + local tid = tonumber(fields.sfinv_nav_tabs) + if tid and tid > 0 then + local id = context.nav[tid] + local page = sfinv.pages[id] + if id and page then + sfinv.set_page(player, id) + end + end + else + -- Pass event to page + local page = sfinv.pages[context.page] + if page and page.on_player_receive_fields then + return page:on_player_receive_fields(player, context, fields) + end + end +end) diff --git a/mods/sfinv/init.lua b/mods/sfinv/init.lua new file mode 100644 index 0000000..2d7172b --- /dev/null +++ b/mods/sfinv/init.lua @@ -0,0 +1,14 @@ +dofile(minetest.get_modpath("sfinv") .. "/api.lua") + +sfinv.register_page("sfinv:crafting", { + title = "Crafting", + get = function(self, player, context) + return sfinv.make_formspec(player, context, [[ + list[current_player;craft;1.75,0.5;3,3;] + list[current_player;craftpreview;5.75,1.5;1,1;] + image[4.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270] + listring[current_player;main] + listring[current_player;craft] + ]], true) + end +}) diff --git a/mods/sfinv/license.txt b/mods/sfinv/license.txt new file mode 100644 index 0000000..e27dc85 --- /dev/null +++ b/mods/sfinv/license.txt @@ -0,0 +1,24 @@ +License of source code +---------------------- + +The MIT License (MIT) +Copyright (C) 2016-2018 rubenwardy + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/sfinv/mod.conf b/mods/sfinv/mod.conf new file mode 100644 index 0000000..2934435 --- /dev/null +++ b/mods/sfinv/mod.conf @@ -0,0 +1,2 @@ +name = sfinv +description = Minetest Game mod: sfinv