diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..00059617 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,6 @@ +syntax: + script: + - git submodule init + - git submodule sync + - git submodule update + - luac5.1 -s -p mods/*/*.lua diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..52180557 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,178 @@ +[submodule "mods/illuna"] + path = mods/illuna + url = https://git.tchncs.de/Illuna-Minetest/illuna.git +[submodule "mods/wine"] + path = mods/wine + url = https://github.com/tenplus1/wine +[submodule "mods/death_messages"] + path = mods/death_messages + url = https://git.tchncs.de/Illuna-Minetest/death_messages.git +[submodule "mods/worldedit"] + path = mods/worldedit + url = https://github.com/Uberi/Minetest-WorldEdit +[submodule "mods/3d_armor"] + path = mods/3d_armor + url = https://github.com/stujones11/minetest-3d_armor +[submodule "mods/plantlife_modpack"] + path = mods/plantlife_modpack + url = https://git.tchncs.de/Illuna-Minetest/plantlife_modpack.git +[submodule "mods/darkage"] + path = mods/darkage + url = https://git.tchncs.de/Illuna-Minetest/darkage.git +[submodule "mods/hudbars"] + path = mods/hudbars + url = https://git.tchncs.de/Illuna-Minetest/hudbars.git +[submodule "mods/xdecor"] + path = mods/xdecor + url = https://git.tchncs.de/Illuna-Minetest/xdecor.git +[submodule "mods/caverealms"] + path = mods/caverealms + url = https://git.tchncs.de/Illuna-Minetest/caverealms.git +[submodule "mods/wardrobe"] + path = mods/wardrobe + url = https://git.tchncs.de/Illuna-Minetest/wardrobe.git +[submodule "mods/ctravelnet"] + path = mods/ctravelnet + url = https://git.tchncs.de/Illuna-Minetest/ctravelnet.git +[submodule "mods/cottages"] + path = mods/cottages + url = https://git.tchncs.de/Illuna-Minetest/cottages.git/ +[submodule "mods/horses"] + path = mods/horses + url = https://git.tchncs.de/Illuna-Minetest/horses.git +[submodule "mods/bows"] + path = mods/bows + url = https://git.tchncs.de/Illuna-Minetest/bows + branch = illuna +[submodule "mods/pkarcs"] + path = mods/pkarcs + url = https://git.tchncs.de/Illuna-Minetest/pkarcs +[submodule "mods/technic_chests"] + path = mods/technic_chests + url = https://git.tchncs.de/Illuna-Minetest/technic_chests +[submodule "mods/columnia"] + path = mods/columnia + url = https://git.tchncs.de/Illuna-Minetest/columnia +[submodule "mods/hemp"] + path = mods/hemp + url = https://github.com/pithydon/hemp.git +[submodule "mods/bags"] + path = mods/bags + url = https://git.tchncs.de/Illuna-Minetest/bags +[submodule "mods/homedecor_modpack"] + path = mods/homedecor_modpack + url = https://git.tchncs.de/Illuna-Minetest/homedecor_modpack +[submodule "mods/magical_potion"] + path = mods/magical_potion + url = https://git.tchncs.de/Illuna-Minetest/magical_potion +[submodule "mods/playereffects"] + path = mods/playereffects + url = git://repo.or.cz/minetest_playereffects.git +[submodule "mods/mtfoods"] + path = mods/mtfoods + url = https://github.com/Philipbenr/mtfoods +[submodule "mods/mtcandy"] + path = mods/mtcandy + url = https://git.tchncs.de/Illuna-Minetest/mtcandy +[submodule "mods/dragons"] + path = mods/dragons + url = https://git.tchncs.de/Illuna-Minetest/dragons +[submodule "mods/teleport_potion"] + path = mods/teleport_potion + url = https://git.tchncs.de/Illuna-Minetest/teleport_potion +[submodule "mods/halloween_mobs"] + path = mods/halloween_mobs + url = https://git.tchncs.de/Illuna-Minetest/halloween_mobs +[submodule "mods/mobs_monster"] + path = mods/mobs_monster + url = https://git.tchncs.de/Illuna-Minetest/mobs_monster +[submodule "mods/ranks"] + path = mods/ranks + url = https://git.tchncs.de/Illuna-Minetest/ranks +[submodule "mods/another_charcoal"] + path = mods/another_charcoal + url = https://github.com/cx384/another_charcoal +[submodule "mods/golems"] + path = mods/golems + url = https://git.tchncs.de/Illuna-Minetest/golems +[submodule "mods/shadow"] + path = mods/shadow + url = https://git.tchncs.de/Illuna-Minetest/shadow +[submodule "mods/craftguide"] + path = mods/craftguide + url = https://github.com/minetest-mods/craftguide +[submodule "mods/moreblocks"] + path = mods/moreblocks + url = https://github.com/minetest-mods/moreblocks +[submodule "mods/scaffolding"] + path = mods/scaffolding + url = https://bitbucket.org/Infinatum/scaffolding +[submodule "mods/playerskins"] + path = mods/playerskins + url = https://git.tchncs.de/Illuna-Minetest/playerskins +[submodule "mods/mycastle"] + path = mods/mycastle + url = https://git.tchncs.de/Illuna-Minetest/mycastle +[submodule "mods/mesecons"] + path = mods/mesecons + url = https://git.tchncs.de/Illuna-Minetest/mesecons +[submodule "mods/pipeworks"] + path = mods/pipeworks + url = https://github.com/minetest-mods/pipeworks/ +[submodule "mods/arrow_signs"] + path = mods/arrow_signs + url = https://bitbucket.org/adrido/arrow_signs +[submodule "mods/biome_lib"] + path = mods/biome_lib + url = https://github.com/VanessaE/biome_lib +[submodule "mods/bitchange"] + path = mods/bitchange + url = https://git.tchncs.de/Illuna-Minetest/bitchange +[submodule "mods/bridges"] + path = mods/bridges + url = https://github.com/Sokomine/bridges +[submodule "mods/cannons"] + path = mods/cannons + url = https://git.tchncs.de/Illuna-Minetest/cannons +[submodule "mods/character_creator"] + path = mods/character_creator + url = https://github.com/Rui914/character_creator +[submodule "mods/christmas_craft"] + path = mods/christmas_craft + url = https://bitbucket.org/kingarthursteam/christmas_craft +[submodule "mods/xconnected"] + path = mods/xconnected + url = https://github.com/Sokomine/xconnected +[submodule "mods/medieval_craft"] + path = mods/medieval_craft + url = https://bitbucket.org/kingarthursteam/medieval_craft +[submodule "mods/mini_sun"] + path = mods/mini_sun + url = https://github.com/bdjnk/mini_sun +[submodule "mods/moreores"] + path = mods/moreores + url = https://git.tchncs.de/Illuna-Minetest/moreores +[submodule "mods/moretrees"] + path = mods/moretrees + url = https://github.com/minetest-mods/moretrees +[submodule "mods/boats"] + path = mods/boats + url = https://git.tchncs.de/Illuna-Minetest/boats +[submodule "mods/farming"] + path = mods/farming + url = https://git.tchncs.de/Illuna-Minetest/farming +[submodule "mods/inspector"] + path = mods/inspector + url = https://github.com/minetest-mods/inspector +[submodule "mods/sneak_glitch"] + path = mods/sneak_glitch + url = https://github.com/SmallJoker/sneak_glitch +[submodule "mods/mobs_animal"] + path = mods/mobs_animal + url = https://git.tchncs.de/Illuna-Minetest/mobs_animal +[submodule "mods/mobs_redo"] + path = mods/mobs_redo + url = https://git.tchncs.de/Illuna-Minetest/mobs_redo +[submodule "mods/irc"] + path = mods/irc + url = https://git.tchncs.de/Illuna-Minetest/irc diff --git a/README.txt b/README.txt deleted file mode 100644 index 97ad70ab..00000000 --- a/README.txt +++ /dev/null @@ -1,28 +0,0 @@ -Minetest Game [minetest_game] -============================= -The main subgame for the Minetest engine -======================================== - -To use this subgame with the Minetest engine, insert this repository as - /games/minetest_game - -The Minetest engine can be found in: - https://github.com/minetest/minetest/ - -Compatibility --------------- -The Minetest Game github master HEAD is generally compatible with the github -master HEAD of the Minetest engine. - -Additionally, when the Minetest engine is tagged to be a certain version (eg. -0.4.10), Minetest Game is tagged with the version too. - -When stable releases are made, Minetest Game is packaged and made available in - http://minetest.net/download -and in case the repository has grown too much, it may be reset. In that sense, -this is not a "real" git repository. (Package maintainers please note!) - -Licensing ---------- - -See LICENSE.txt diff --git a/game.conf b/game.conf index 4dea9498..317180e6 100644 --- a/game.conf +++ b/game.conf @@ -1 +1 @@ -name = Minetest Game +name = Illuna diff --git a/mods/3d_armor b/mods/3d_armor new file mode 160000 index 00000000..6661ec0b --- /dev/null +++ b/mods/3d_armor @@ -0,0 +1 @@ +Subproject commit 6661ec0b4060d62b358f93336ca1cabba8e8cf2e diff --git a/mods/another_charcoal b/mods/another_charcoal new file mode 160000 index 00000000..b0101ba3 --- /dev/null +++ b/mods/another_charcoal @@ -0,0 +1 @@ +Subproject commit b0101ba333c71c9c1eec850918159173e78b66f9 diff --git a/mods/arrow_signs b/mods/arrow_signs new file mode 160000 index 00000000..f180f724 --- /dev/null +++ b/mods/arrow_signs @@ -0,0 +1 @@ +Subproject commit f180f7246dec209c50004812a6d776d83aab6aad diff --git a/mods/bags b/mods/bags new file mode 160000 index 00000000..78067127 --- /dev/null +++ b/mods/bags @@ -0,0 +1 @@ +Subproject commit 78067127510351651e0bf578d1556466da0bcb16 diff --git a/mods/biome_lib b/mods/biome_lib new file mode 160000 index 00000000..9cdcdcfe --- /dev/null +++ b/mods/biome_lib @@ -0,0 +1 @@ +Subproject commit 9cdcdcfe6b9538c4f6daaa79c5e65f786f9577fa diff --git a/mods/bitchange b/mods/bitchange new file mode 160000 index 00000000..750d0f85 --- /dev/null +++ b/mods/bitchange @@ -0,0 +1 @@ +Subproject commit 750d0f85fc7621552fb956abe61ace335411d0c4 diff --git a/mods/boats b/mods/boats new file mode 160000 index 00000000..a7534e93 --- /dev/null +++ b/mods/boats @@ -0,0 +1 @@ +Subproject commit a7534e938834c1a0322e49df796f613ca1f55880 diff --git a/mods/boats/README.txt b/mods/boats/README.txt deleted file mode 100644 index 59631d9d..00000000 --- a/mods/boats/README.txt +++ /dev/null @@ -1,15 +0,0 @@ -Minetest Game mod: boats -======================== -See license.txt for license information. - -Authors of source code ----------------------- -Originally by PilzAdam (MIT) -Various Minetest developers and contributors (MIT) - -Authors of media (textures and model) -------------------------------------- -Textures: Zeg9 (CC BY-SA 3.0) -Model: thetoon and Zeg9 (CC BY-SA 3.0), - modified by PavelS(SokolovPavel) (CC BY-SA 3.0), - modified by sofar (CC BY-SA 3.0) diff --git a/mods/boats/init.lua b/mods/boats/init.lua deleted file mode 100644 index 6e1565d4..00000000 --- a/mods/boats/init.lua +++ /dev/null @@ -1,269 +0,0 @@ --- --- Helper functions --- - -local function is_water(pos) - local nn = minetest.get_node(pos).name - return minetest.get_item_group(nn, "water") ~= 0 -end - - -local function get_sign(i) - if i == 0 then - return 0 - else - return i / math.abs(i) - end -end - - -local function get_velocity(v, yaw, y) - local x = -math.sin(yaw) * v - local z = math.cos(yaw) * v - return {x = x, y = y, z = z} -end - - -local function get_v(v) - return math.sqrt(v.x ^ 2 + v.z ^ 2) -end - --- --- Boat entity --- - -local boat = { - physical = true, - -- Warning: Do not change the position of the collisionbox top surface, - -- lowering it causes the boat to fall through the world if underwater - collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5}, - visual = "mesh", - mesh = "boats_boat.obj", - textures = {"default_wood.png"}, - - driver = nil, - v = 0, - last_v = 0, - removed = false -} - - -function boat.on_rightclick(self, clicker) - if not clicker or not clicker:is_player() then - return - end - local name = clicker:get_player_name() - if self.driver and clicker == self.driver then - self.driver = nil - clicker:set_detach() - default.player_attached[name] = false - default.player_set_animation(clicker, "stand" , 30) - local pos = clicker:getpos() - pos = {x = pos.x, y = pos.y + 0.2, z = pos.z} - minetest.after(0.1, function() - clicker:setpos(pos) - end) - elseif not self.driver then - local attach = clicker:get_attach() - if attach and attach:get_luaentity() then - local luaentity = attach:get_luaentity() - if luaentity.driver then - luaentity.driver = nil - end - clicker:set_detach() - end - self.driver = clicker - clicker:set_attach(self.object, "", - {x = 0, y = 11, z = -3}, {x = 0, y = 0, z = 0}) - default.player_attached[name] = true - minetest.after(0.2, function() - default.player_set_animation(clicker, "sit" , 30) - end) - clicker:set_look_horizontal(self.object:getyaw()) - end -end - - -function boat.on_activate(self, staticdata, dtime_s) - self.object:set_armor_groups({immortal = 1}) - if staticdata then - self.v = tonumber(staticdata) - end - self.last_v = self.v -end - - -function boat.get_staticdata(self) - return tostring(self.v) -end - - -function boat.on_punch(self, puncher) - if not puncher or not puncher:is_player() or self.removed then - return - end - if self.driver and puncher == self.driver then - self.driver = nil - puncher:set_detach() - default.player_attached[puncher:get_player_name()] = false - end - if not self.driver then - self.removed = true - local inv = puncher:get_inventory() - if not minetest.setting_getbool("creative_mode") - or not inv:contains_item("main", "boats:boat") then - local leftover = inv:add_item("main", "boats:boat") - -- if no room in inventory add a replacement boat to the world - if not leftover:is_empty() then - minetest.add_item(self.object:getpos(), leftover) - end - end - -- delay remove to ensure player is detached - minetest.after(0.1, function() - self.object:remove() - end) - end -end - - -function boat.on_step(self, dtime) - self.v = get_v(self.object:getvelocity()) * get_sign(self.v) - if self.driver then - local ctrl = self.driver:get_player_control() - local yaw = self.object:getyaw() - if ctrl.up then - self.v = self.v + 0.1 - elseif ctrl.down then - self.v = self.v - 0.1 - end - if ctrl.left then - if self.v < 0 then - self.object:setyaw(yaw - (1 + dtime) * 0.03) - else - self.object:setyaw(yaw + (1 + dtime) * 0.03) - end - elseif ctrl.right then - if self.v < 0 then - self.object:setyaw(yaw + (1 + dtime) * 0.03) - else - self.object:setyaw(yaw - (1 + dtime) * 0.03) - end - end - end - local velo = self.object:getvelocity() - if self.v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then - self.object:setpos(self.object:getpos()) - return - end - local s = get_sign(self.v) - self.v = self.v - 0.02 * s - if s ~= get_sign(self.v) then - self.object:setvelocity({x = 0, y = 0, z = 0}) - self.v = 0 - return - end - if math.abs(self.v) > 5 then - self.v = 5 * get_sign(self.v) - end - - local p = self.object:getpos() - p.y = p.y - 0.5 - local new_velo - local new_acce = {x = 0, y = 0, z = 0} - if not is_water(p) then - local nodedef = minetest.registered_nodes[minetest.get_node(p).name] - if (not nodedef) or nodedef.walkable then - self.v = 0 - new_acce = {x = 0, y = 1, z = 0} - else - new_acce = {x = 0, y = -9.8, z = 0} - end - new_velo = get_velocity(self.v, self.object:getyaw(), - self.object:getvelocity().y) - self.object:setpos(self.object:getpos()) - else - p.y = p.y + 1 - if is_water(p) then - local y = self.object:getvelocity().y - if y >= 5 then - y = 5 - elseif y < 0 then - new_acce = {x = 0, y = 20, z = 0} - else - new_acce = {x = 0, y = 5, z = 0} - end - new_velo = get_velocity(self.v, self.object:getyaw(), y) - self.object:setpos(self.object:getpos()) - else - new_acce = {x = 0, y = 0, z = 0} - if math.abs(self.object:getvelocity().y) < 1 then - local pos = self.object:getpos() - pos.y = math.floor(pos.y) + 0.5 - self.object:setpos(pos) - new_velo = get_velocity(self.v, self.object:getyaw(), 0) - else - new_velo = get_velocity(self.v, self.object:getyaw(), - self.object:getvelocity().y) - self.object:setpos(self.object:getpos()) - end - end - end - self.object:setvelocity(new_velo) - self.object:setacceleration(new_acce) -end - - -minetest.register_entity("boats:boat", boat) - - -minetest.register_craftitem("boats:boat", { - description = "Boat", - inventory_image = "boats_inventory.png", - wield_image = "boats_wield.png", - wield_scale = {x = 2, y = 2, z = 1}, - liquids_pointable = true, - groups = {flammable = 2}, - - on_place = function(itemstack, placer, pointed_thing) - local under = pointed_thing.under - local node = minetest.get_node(under) - local udef = minetest.registered_nodes[node.name] - if udef and udef.on_rightclick and - not (placer and placer:get_player_control().sneak) then - return udef.on_rightclick(under, node, placer, itemstack, - pointed_thing) or itemstack - end - - if pointed_thing.type ~= "node" then - return itemstack - end - if not is_water(pointed_thing.under) then - return itemstack - end - pointed_thing.under.y = pointed_thing.under.y + 0.5 - boat = minetest.add_entity(pointed_thing.under, "boats:boat") - if boat then - boat:setyaw(placer:get_look_horizontal()) - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - end - return itemstack - end, -}) - - -minetest.register_craft({ - output = "boats:boat", - recipe = { - {"", "", "" }, - {"group:wood", "", "group:wood"}, - {"group:wood", "group:wood", "group:wood"}, - }, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "boats:boat", - burntime = 20, -}) diff --git a/mods/boats/license.txt b/mods/boats/license.txt deleted file mode 100644 index d4afe75f..00000000 --- a/mods/boats/license.txt +++ /dev/null @@ -1,63 +0,0 @@ -License of source code ----------------------- - -The MIT License (MIT) -Copyright (C) 2012-2016 PilzAdam -Copyright (C) 2012-2016 Various Minetest developers and contributors - -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 and model) --------------------------------------- - -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -Copyright (C) 2012-2016 Zeg9 -Copyright (C) 2012-2016 thetoon -Copyright (C) 2012-2016 PavelS(SokolovPavel) -Copyright (C) 2016 sofar (sofar@foo-projects.org) - -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/boats/models/boats_boat.obj b/mods/boats/models/boats_boat.obj deleted file mode 100644 index 0f21e47f..00000000 --- a/mods/boats/models/boats_boat.obj +++ /dev/null @@ -1,358 +0,0 @@ -# Blender v2.76 (sub 11) OBJ File: 'boat.blend' -# www.blender.org -mtllib boat.mtl -o boats_boat -v -6.786140 -3.033999 -9.415440 -v -6.786140 -1.967150 -9.415440 -v -6.786140 -1.967150 8.793510 -v -6.786140 -3.033999 8.793510 -v 5.732520 -1.967150 -9.415440 -v 5.732520 -3.033999 -9.415440 -v 5.732520 -3.033999 8.793510 -v 5.732520 -1.967150 8.793510 -v -2.233900 -3.033999 -9.415440 -v -2.233900 -1.967150 -9.415440 -v -2.233900 -1.967150 8.793510 -v -2.233900 -3.033999 8.793510 -v 2.318340 -3.033999 -9.415440 -v 2.318340 -1.967150 -9.415440 -v 2.318340 -1.967150 8.793510 -v 2.318340 -3.033999 8.793510 -v -3.371960 -3.033999 8.793510 -v -3.371960 -1.967150 8.793510 -v -3.371960 -1.967150 -9.415440 -v -3.371960 -3.033999 -9.415440 -v 2.318340 0.276645 8.793510 -v 1.180280 -1.967150 8.793510 -v 5.732520 0.276645 8.793510 -v 5.732520 1.039180 8.793510 -v 6.870580 0.276645 8.793510 -v 6.870580 -1.967150 8.793510 -v 2.318340 1.039180 8.793510 -v 1.180280 0.276645 8.793510 -v 1.180280 1.039180 8.793510 -v 1.180280 -3.033999 8.793510 -v -2.233900 0.276645 8.793510 -v -3.371960 0.276645 8.793510 -v -2.233900 1.039180 8.793510 -v -3.371960 1.039180 8.793510 -v -6.786140 0.276645 8.793510 -v -7.786200 0.276645 8.793510 -v -7.786200 -1.967150 8.793510 -v -6.786140 1.039180 8.793510 -v 1.180280 -1.967150 -9.415440 -v 1.180280 -3.033999 -9.415440 -v 2.318340 0.276645 -9.415440 -v 1.180280 0.276645 -9.415440 -v 2.318340 1.039180 -9.415440 -v 5.732520 0.276645 -9.415440 -v 6.870580 -1.967150 -9.415440 -v 5.732520 1.039180 -9.415440 -v 6.870580 0.276645 -9.415440 -v 0.042220 1.039180 -9.415440 -v 1.180280 1.039180 -9.415440 -v 0.042220 -1.967150 -9.415440 -v -1.095840 -1.967150 -9.415440 -v -2.233900 0.276645 -9.415440 -v -3.371960 0.276645 -9.415440 -v -2.233900 1.039180 -9.415440 -v -1.095840 1.039180 -9.415440 -v -3.371960 1.039180 -9.415440 -v -6.786140 0.276645 -9.415440 -v -6.786140 1.039180 -9.415440 -v -7.786200 -1.967150 -9.415440 -v -7.786200 0.276645 -9.415440 -v -1.095840 0.156645 -12.044100 -v -1.095840 -4.601110 -9.415440 -v -1.095840 1.039181 -10.802900 -v -1.095840 2.868579 -10.802900 -v -1.095840 2.868580 -7.883420 -v -1.095840 3.746069 -12.034100 -v -1.095840 3.746070 -7.883420 -v -1.095840 0.156645 -14.294900 -v -1.095840 -4.601110 -14.284900 -v 0.042220 -4.601110 -14.284900 -v 0.042220 -4.601110 -9.415440 -v 0.042220 1.039181 -10.802900 -v 0.042220 0.156645 -12.044100 -v 0.042220 2.868579 -10.802900 -v 0.042220 0.156645 -14.294900 -v 0.042220 3.746069 -12.034100 -v 0.042220 3.746070 -7.883420 -v 0.042220 2.868580 -7.883420 -v -1.096322 -3.033999 -9.415440 -v 0.044046 -3.035397 -9.415440 -vt 1.000000 0.187500 -vt -1.000000 0.312500 -vt 1.000000 0.312500 -vt 0.687500 1.000000 -vt 0.500000 0.875000 -vt 0.500000 0.625000 -vt -1.000000 0.062500 -vt 1.000000 0.062500 -vt 1.000000 -0.000000 -vt -1.000000 0.125000 -vt 1.000000 0.125000 -vt 0.437500 0.125000 -vt 0.312500 0.500000 -vt 0.312500 0.125000 -vt 1.000000 0.625000 -vt -1.000000 0.500000 -vt 1.000000 0.500000 -vt 0.187500 0.687500 -vt -0.187500 0.687500 -vt -0.187500 0.312500 -vt 1.000000 0.812500 -vt -1.000000 0.937500 -vt -1.000000 0.812500 -vt 0.812500 0.687500 -vt 1.187500 0.687500 -vt 0.812500 0.312500 -vt 1.000000 0.562500 -vt 0.312500 0.437500 -vt 1.000000 0.437500 -vt 1.000000 0.750000 -vt -1.000000 0.875000 -vt -1.000000 0.750000 -vt -1.000000 1.000000 -vt 1.000000 1.000000 -vt 0.437500 0.625000 -vt 0.562500 0.437500 -vt 0.562500 0.625000 -vt -1.000000 0.437500 -vt -1.000000 0.000000 -vt 0.500000 0.062500 -vt 0.375000 0.750000 -vt 0.500000 0.750000 -vt -1.000000 0.250000 -vt -1.000000 0.687500 -vt 1.000000 0.687500 -vt 0.625000 0.375000 -vt 1.000000 0.375000 -vt 1.000000 0.250000 -vt 1.000000 0.937500 -vt 0.437500 0.812500 -vt 0.312500 0.312500 -vt 0.312500 0.812500 -vt 0.437500 0.312500 -vt 0.437500 0.437500 -vt 0.687500 0.812500 -vt 0.000000 0.687500 -vt 0.000000 0.812500 -vt -1.000000 0.562500 -vt 0.875000 0.812500 -vt 0.875000 0.687500 -vt 0.250000 0.312500 -vt 0.562500 0.187500 -vt 0.250000 0.187500 -vt -1.000000 0.187500 -vt 0.312500 0.625000 -vt 0.312500 0.187500 -vt 0.312500 -0.187500 -vt 1.000000 -0.187500 -vt 0.687500 0.500000 -vt -0.000000 1.000000 -vt 0.000000 0.875000 -vt 0.437500 0.500000 -vt -1.000000 0.625000 -vt 0.812500 0.187500 -vt 1.187500 0.187500 -vt 1.187500 0.312500 -vt 1.312500 0.312500 -vt 1.312500 0.687500 -vt 0.687500 0.187500 -vt 0.687500 0.312500 -vt 1.187500 0.812500 -vt 0.812500 0.812500 -vt 0.187500 0.312500 -vt 0.312500 0.687500 -vt 0.687500 0.687500 -vt -0.187500 0.187500 -vt 0.187500 0.187500 -vt -0.312500 0.687500 -vt -0.312500 0.312500 -vt 0.187500 0.812500 -vt -0.187500 0.812500 -vt 0.437500 0.687500 -vt 0.437500 0.187500 -vt 0.562500 0.812500 -vt 0.562500 0.687500 -vt 0.312500 0.562500 -vt 1.000000 0.875000 -vt 0.375000 0.062500 -vt -1.000000 0.375000 -vt 0.625000 0.500000 -vt 0.875000 0.562500 -vt 0.937500 0.812500 -vt 0.937500 0.687500 -vt 0.875000 0.937500 -vt 0.562500 0.312500 -vn -1.000000 0.000000 0.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 0.000000 -1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 0.000000 -vn 0.000000 -0.002100 -1.000000 -vn 0.001200 -1.000000 0.000000 -vn 0.000000 0.002800 -1.000000 -vn -0.001200 -1.000000 0.000200 -g boats_boat_boats_boat_None -usemtl None -s off -f 41/1/1 27/2/1 43/3/1 -f 76/4/2 74/5/2 72/6/2 -f 8/7/2 6/1/2 5/8/2 -f 15/9/1 13/10/1 16/11/1 -f 51/12/3 71/13/3 50/14/3 -f 56/15/2 32/16/2 53/17/2 -f 15/18/3 8/19/3 23/20/3 -f 22/21/2 40/22/2 39/23/2 -f 19/24/4 2/25/4 53/26/4 -f 70/27/5 62/28/5 69/29/5 -f 11/30/5 19/31/5 10/32/5 -f 4/15/5 20/33/5 17/34/5 -f 72/35/3 64/36/3 63/37/3 -f 13/8/5 7/38/5 16/7/5 -f 23/39/6 47/11/6 44/9/6 -f 68/40/7 70/41/7 69/42/7 -f 80/43/8 40/10/8 30/11/8 -f 3/15/1 1/32/1 4/30/1 -f 20/44/2 18/27/2 17/45/2 -f 74/17/5 65/46/5 64/47/5 -f 31/43/1 54/47/1 52/48/1 -f 22/47/5 14/43/5 15/48/5 -f 46/1/2 23/7/2 44/8/2 -f 57/21/1 38/22/1 58/49/1 -f 61/50/9 76/51/9 73/52/9 -f 37/45/5 2/23/5 3/21/5 -f 78/28/3 67/53/3 65/54/3 -f 64/5/1 66/4/1 63/6/1 -f 76/55/6 67/56/6 77/57/6 -f 47/17/2 26/10/2 45/11/2 -f 5/16/5 26/47/5 8/17/5 -f 33/58/6 48/59/6 55/60/6 -f 29/38/2 42/3/2 49/29/2 -f 32/44/6 52/21/6 53/45/6 -f 58/15/6 34/33/6 56/34/6 -f 27/7/6 46/29/6 43/8/6 -f 73/61/6 68/62/6 61/63/6 -f 21/58/6 42/29/6 28/38/6 -f 11/29/1 9/58/1 12/27/1 -f 59/45/1 36/2/1 60/3/1 -f 60/9/6 35/10/6 57/11/6 -f 41/1/1 21/64/1 27/2/1 -f 72/6/2 48/65/2 50/66/2 -f 50/66/2 71/67/2 70/68/2 -f 70/68/2 75/17/2 73/69/2 -f 76/4/2 77/70/2 74/5/2 -f 77/70/2 78/71/2 74/5/2 -f 50/66/2 70/68/2 73/69/2 -f 73/69/2 76/4/2 72/6/2 -f 72/6/2 50/66/2 73/69/2 -f 8/7/2 7/64/2 6/1/2 -f 15/9/1 14/39/1 13/10/1 -f 51/12/3 62/72/3 71/13/3 -f 56/15/2 34/73/2 32/16/2 -f 32/26/3 34/74/3 38/75/3 -f 35/76/3 36/77/3 37/78/3 -f 32/26/3 38/75/3 35/76/3 -f 29/66/3 33/79/3 31/80/3 -f 32/26/3 35/76/3 3/25/3 -f 28/51/3 29/66/3 31/80/3 -f 31/80/3 32/26/3 18/24/3 -f 3/25/3 4/81/3 17/82/3 -f 35/76/3 37/78/3 3/25/3 -f 21/83/3 28/51/3 22/84/3 -f 3/25/3 17/82/3 18/24/3 -f 11/85/3 12/55/3 30/52/3 -f 32/26/3 3/25/3 18/24/3 -f 11/85/3 30/52/3 22/84/3 -f 31/80/3 18/24/3 11/85/3 -f 24/86/3 27/87/3 21/83/3 -f 28/51/3 31/80/3 11/85/3 -f 11/85/3 22/84/3 28/51/3 -f 24/86/3 21/83/3 23/20/3 -f 26/88/3 25/89/3 23/20/3 -f 23/20/3 21/83/3 15/18/3 -f 15/18/3 16/90/3 7/91/3 -f 21/83/3 22/84/3 15/18/3 -f 8/19/3 26/88/3 23/20/3 -f 15/18/3 7/91/3 8/19/3 -f 22/21/2 30/49/2 40/22/2 -f 47/89/4 45/88/4 5/19/4 -f 5/19/4 6/91/4 13/90/4 -f 5/19/4 13/90/4 14/18/4 -f 44/20/4 47/89/4 5/19/4 -f 43/87/4 46/86/4 44/20/4 -f 41/83/4 43/87/4 44/20/4 -f 44/20/4 5/19/4 14/18/4 -f 39/84/4 40/52/4 80/50/4 -f 44/20/4 14/18/4 41/83/4 -f 42/51/4 41/83/4 39/84/4 -f 39/84/4 80/50/4 50/92/4 -f 41/83/4 14/18/4 39/84/4 -f 48/93/4 49/66/4 42/51/4 -f 50/92/4 48/93/4 42/51/4 -f 80/50/4 79/94/4 50/92/4 -f 50/92/4 42/51/4 39/84/4 -f 54/79/4 55/62/4 52/80/4 -f 50/92/4 79/94/4 51/95/4 -f 52/80/4 55/62/4 51/95/4 -f 51/95/4 79/94/4 10/85/4 -f 79/94/4 9/55/4 10/85/4 -f 53/26/4 52/80/4 10/85/4 -f 58/75/4 56/74/4 53/26/4 -f 59/78/4 60/77/4 57/76/4 -f 57/76/4 58/75/4 53/26/4 -f 52/80/4 51/95/4 10/85/4 -f 19/24/4 20/82/4 1/81/4 -f 53/26/4 10/85/4 19/24/4 -f 59/78/4 57/76/4 2/25/4 -f 19/24/4 1/81/4 2/25/4 -f 2/25/4 57/76/4 53/26/4 -f 70/27/5 71/96/5 62/28/5 -f 11/30/5 18/97/5 19/31/5 -f 4/15/5 1/73/5 20/33/5 -f 72/35/3 74/54/3 64/36/3 -f 13/8/5 6/29/5 7/38/5 -f 23/39/6 25/10/6 47/11/6 -f 68/40/7 75/98/7 70/41/7 -f 30/11/5 12/17/5 79/99/5 -f 79/99/10 80/43/10 30/11/10 -f 12/17/5 9/16/5 79/99/5 -f 3/15/1 2/73/1 1/32/1 -f 20/44/2 19/58/2 18/27/2 -f 74/17/5 78/100/5 65/46/5 -f 31/43/1 33/99/1 54/47/1 -f 22/47/5 39/99/5 14/43/5 -f 46/1/2 24/64/2 23/7/2 -f 57/21/1 35/23/1 38/22/1 -f 61/50/9 66/53/9 76/51/9 -f 37/45/5 59/44/5 2/23/5 -f 78/28/3 77/51/3 67/53/3 -f 62/67/1 51/66/1 69/68/1 -f 51/66/1 55/65/1 63/6/1 -f 68/17/1 69/68/1 61/69/1 -f 61/69/1 69/68/1 51/66/1 -f 61/69/1 51/66/1 63/6/1 -f 65/71/1 67/70/1 64/5/1 -f 61/69/1 63/6/1 66/4/1 -f 64/5/1 67/70/1 66/4/1 -f 76/55/6 66/85/6 67/56/6 -f 47/17/2 25/16/2 26/10/2 -f 5/16/5 45/99/5 26/47/5 -f 55/60/6 54/101/6 33/58/6 -f 33/58/6 29/22/6 48/59/6 -f 48/59/6 72/102/6 63/103/6 -f 29/22/6 49/104/6 48/59/6 -f 48/59/6 63/103/6 55/60/6 -f 29/38/2 28/2/2 42/3/2 -f 32/44/6 31/23/6 52/21/6 -f 58/15/6 38/73/6 34/33/6 -f 27/7/6 24/38/6 46/29/6 -f 73/61/6 75/105/6 68/62/6 -f 21/58/6 41/27/6 42/29/6 -f 11/29/1 10/38/1 9/58/1 -f 59/45/1 37/44/1 36/2/1 -f 60/9/6 36/39/6 35/10/6 diff --git a/mods/boats/textures/boats_inventory.png b/mods/boats/textures/boats_inventory.png deleted file mode 100644 index f9d082e3..00000000 Binary files a/mods/boats/textures/boats_inventory.png and /dev/null differ diff --git a/mods/boats/textures/boats_wield.png b/mods/boats/textures/boats_wield.png deleted file mode 100644 index f998b5bb..00000000 Binary files a/mods/boats/textures/boats_wield.png and /dev/null differ diff --git a/mods/farming/depends.txt b/mods/bonemeal/depends.txt similarity index 61% rename from mods/farming/depends.txt rename to mods/bonemeal/depends.txt index 470ec30b..2717befb 100644 --- a/mods/farming/depends.txt +++ b/mods/bonemeal/depends.txt @@ -1,2 +1,2 @@ default -wool +dye diff --git a/mods/bonemeal/init.lua b/mods/bonemeal/init.lua new file mode 100644 index 00000000..28f9faca --- /dev/null +++ b/mods/bonemeal/init.lua @@ -0,0 +1,225 @@ +-- This mod cutted out from ethereal: https://github.com/tenplus1/ethereal +-- + +minetest.register_craft({ + output = "bonemeal:bonemeal 4", + recipe = { + {'default:bone'}, + {'default:mese_crystal_fragment'}, + } +}) + +minetest.register_craft( { + type = "shapeless", + output = "dye:white 2", + recipe = {"default:bonemeal"}, +}) + +local plants = { + "flowers:dandelion_white", + "flowers:dandelion_yellow", + "flowers:geranium", + "flowers:rose", + "flowers:tulip", + "flowers:viola", +} + + +local crops = { + {"farming:cotton_", 8}, + {"farming:wheat_", 8}, + {"farming:tomato_", 8}, + {"farming:corn_", 8}, + {"farming:melon_", 8}, + {"farming:pumpkin_", 8}, + {"farming:beanpole_", 5}, + {"farming:blueberry_", 4}, + {"farming:raspberry_", 4}, + {"farming:carrot_", 8}, + {"farming:cocoa_", 3}, + {"farming:coffee_", 5}, + {"farming:cucumber_", 4}, + {"farming:potato_", 4}, + {"farming:grapes_", 8}, + {"farming:rhubarb_", 3}, + {"farming:barley_", 7}, +} + +-- check if sapling has enough height room to grow +local function enough_height(pos, height) + + local nod = minetest.line_of_sight( + {x = pos.x, y = pos.y + 1, z = pos.z}, + {x = pos.x, y = pos.y + height, z = pos.z}) + + if not nod then + return false -- obstructed + else + return true -- can grow + end +end + +-- growing routine +local function growth(pointed_thing) + + local pos = pointed_thing.under + local node = minetest.get_node(pos) + + if node.name == "ignore" then + return + end + + minetest.add_particlespawner({ + amount = 4, + time = 0.15, + minpos = pos, + maxpos = pos, + minvel = {x = -1, y = 2, z = -1}, + maxvel = {x = 1, y = 4, z = 1}, + minacc = {x = -1, y = -1, z = -1}, + maxacc = {x = 1, y = 1, z = 1}, + minexptime = 1, + maxexptime = 1, + minsize = 1, + maxsize = 3, + texture = "bonemeal_particle.png", + }) + + -- 50/50 chance of growing a sapling + if minetest.get_item_group(node.name, "sapling") > 0 then + + if math.random(1, 2) == 1 then + return + end + + local under = minetest.get_node({ + x = pos.x, + y = pos.y - 1, + z = pos.z + }) + + local height = minetest.registered_nodes[node.name].grown_height + + -- do we have enough height to grow sapling into tree? + if height and not enough_height(pos, height) then + return + end + + -- check for soil under sapling + if minetest.get_item_group(under.name, "soil") == 0 then + return + end + + -- grow default tree + if node.name == "default:sapling" + and enough_height(pos, 7) then + default.grow_new_apple_tree(pos) + + elseif node.name == "default:junglesapling" + and enough_height(pos, 15) then + default.grow_new_jungle_tree(pos) + + elseif node.name == "default:pine_sapling" + and enough_height(pos, 11) then + + if minetest.find_node_near(pos, 1, + {"default:snow", "default:snowblock", "default:dirt_with_snow"}) then + + default.grow_new_snowy_pine_tree(pos) + else + default.grow_new_pine_tree(pos) + end + + elseif node.name == "default:acacia_sapling" + and under.name == "default:sand" then + default.grow_new_acacia_tree(pos) + + elseif node.name == "default:aspen_sapling" + and enough_height(pos, 11) then + default.grow_new_aspen_tree(pos) + end + + return + end + + local stage = "" + + -- grow registered crops + for n = 1, #crops do + + if string.find(node.name, crops[n][1]) then + + stage = tonumber( node.name:split("_")[2] ) + stage = math.min(stage + math.random(1, 4), crops[n][2]) + + minetest.set_node(pos, {name = crops[n][1] .. stage}) + + return + + end + + end + + -- grow grass and flowers + if minetest.get_item_group(node.name, "soil") > 0 then + + local dirt = minetest.find_nodes_in_area_under_air( + {x = pos.x - 2, y = pos.y - 1, z = pos.z - 2}, + {x = pos.x + 2, y = pos.y + 1, z = pos.z + 2}, + {"group:soil"}) + + for _,n in pairs(dirt) do + + local pos2 = n + + pos2.y = pos2.y + 1 + + if math.random(0, 5) > 3 then + + minetest.swap_node(pos2, + {name = plants[math.random(1, #plants)]}) + else + + if node.name == "default:dirt_with_dry_grass" then + minetest.swap_node(pos2, + {name = "default:dry_grass_" .. math.random(1, 5)}) + else + minetest.swap_node(pos2, + {name = "default:grass_" .. math.random(1, 5)}) + end + + end + end + end +end + +-- bonemeal item +minetest.register_craftitem("bonemeal:bonemeal", { + description = "Bone Meal", + inventory_image = "bonemeal.png", + + on_use = function(itemstack, user, pointed_thing) + + if pointed_thing.type == "node" then + + -- Check if node protected + if minetest.is_protected(pointed_thing.under, user:get_player_name()) then + return + end + + if not minetest.setting_getbool("creative_mode") then + + local item = user:get_wielded_item() + + item:take_item() + user:set_wielded_item(item) + end + + growth(pointed_thing) + + itemstack:take_item() + + return itemstack + end + end, +}) diff --git a/mods/bonemeal/textures/bonemeal.png b/mods/bonemeal/textures/bonemeal.png new file mode 100644 index 00000000..f1412630 Binary files /dev/null and b/mods/bonemeal/textures/bonemeal.png differ diff --git a/mods/bonemeal/textures/bonemeal_particle.png b/mods/bonemeal/textures/bonemeal_particle.png new file mode 100644 index 00000000..71ef90f8 Binary files /dev/null and b/mods/bonemeal/textures/bonemeal_particle.png differ diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 9542cab0..5f2da4a9 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -210,6 +210,8 @@ minetest.register_on_dieplayer(function(player) local param2 = minetest.dir_to_facedir(player:get_look_dir()) minetest.set_node(pos, {name = "bones:bones", param2 = param2}) + minetest.chat_send_player(player_name, core.colorize("#F6A10A", "# Illuna: Your stuff is waiting for you at "..minetest.pos_to_string(pos).. ". Hurry. ;-)")) + minetest.log("action", player_name.." left their bones at "..minetest.pos_to_string(pos)) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() @@ -233,7 +235,7 @@ minetest.register_on_dieplayer(function(player) meta:set_string("owner", player_name) if share_bones_time ~= 0 then - meta:set_string("infotext", player_name .. "'s fresh bones") + meta:set_string("infotext", core.colorize("#F35400", player_name .. "'s fresh bones")) if share_bones_time_early == 0 or not minetest.is_protected(pos, player_name) then meta:set_int("time", 0) @@ -243,6 +245,6 @@ minetest.register_on_dieplayer(function(player) minetest.get_node_timer(pos):start(10) else - meta:set_string("infotext", player_name.."'s bones") + meta:set_string("infotext", core.colorize("#37CA39", player_name.."'s bones")) end end) diff --git a/mods/bows b/mods/bows new file mode 160000 index 00000000..4b693ac6 --- /dev/null +++ b/mods/bows @@ -0,0 +1 @@ +Subproject commit 4b693ac6ef474c4154678efa058c5897a14c1ca4 diff --git a/mods/bridges b/mods/bridges new file mode 160000 index 00000000..5b5f4755 --- /dev/null +++ b/mods/bridges @@ -0,0 +1 @@ +Subproject commit 5b5f47552cab78cad1c31be84b5db3d384e2bbff diff --git a/mods/cannons b/mods/cannons new file mode 160000 index 00000000..a7e8b8ba --- /dev/null +++ b/mods/cannons @@ -0,0 +1 @@ +Subproject commit a7e8b8ba93d04068daa19c55499c85e6bddba673 diff --git a/mods/caverealms b/mods/caverealms new file mode 160000 index 00000000..be67d107 --- /dev/null +++ b/mods/caverealms @@ -0,0 +1 @@ +Subproject commit be67d10792ce97dfddf29dfc0fb0180a24cfd955 diff --git a/mods/character_creator b/mods/character_creator new file mode 160000 index 00000000..cca1e023 --- /dev/null +++ b/mods/character_creator @@ -0,0 +1 @@ +Subproject commit cca1e023c0e2306f558ee23c44f07c044ba82073 diff --git a/mods/christmas_craft b/mods/christmas_craft new file mode 160000 index 00000000..8d9ee6a2 --- /dev/null +++ b/mods/christmas_craft @@ -0,0 +1 @@ +Subproject commit 8d9ee6a22590ab918292bbbd350b03c6f55abca5 diff --git a/mods/columnia b/mods/columnia new file mode 160000 index 00000000..7a538423 --- /dev/null +++ b/mods/columnia @@ -0,0 +1 @@ +Subproject commit 7a5384239d0e86b126cd873c5585061fb8926add diff --git a/mods/cottages b/mods/cottages new file mode 160000 index 00000000..e40a4ee8 --- /dev/null +++ b/mods/cottages @@ -0,0 +1 @@ +Subproject commit e40a4ee8389e54db44bf0cdba21a298bfeae77c3 diff --git a/mods/craftguide b/mods/craftguide new file mode 160000 index 00000000..9510ed7d --- /dev/null +++ b/mods/craftguide @@ -0,0 +1 @@ +Subproject commit 9510ed7daa6075f7f2b3c694ed2f34677f3216fe diff --git a/mods/ctravelnet b/mods/ctravelnet new file mode 160000 index 00000000..28d47391 --- /dev/null +++ b/mods/ctravelnet @@ -0,0 +1 @@ +Subproject commit 28d4739144ec1f9c654656849eea5f26c9a81b76 diff --git a/mods/darkage b/mods/darkage new file mode 160000 index 00000000..4552ac28 --- /dev/null +++ b/mods/darkage @@ -0,0 +1 @@ +Subproject commit 4552ac282c9162a5ab74731a5e3db3cb22ba3218 diff --git a/mods/death_messages b/mods/death_messages new file mode 160000 index 00000000..b84a287d --- /dev/null +++ b/mods/death_messages @@ -0,0 +1 @@ +Subproject commit b84a287dddf3ee57fa8178cf8504a4180b60f28a diff --git a/mods/default/aliases.lua b/mods/default/aliases.lua index 6db3fc8d..c871a800 100644 --- a/mods/default/aliases.lua +++ b/mods/default/aliases.lua @@ -2,6 +2,7 @@ -- Aliases to support loading worlds using nodes following the old naming convention -- These can also be helpful when using chat commands, for example /giveme + minetest.register_alias("stone", "default:stone") minetest.register_alias("stone_with_coal", "default:stone_with_coal") minetest.register_alias("stone_with_iron", "default:stone_with_iron") @@ -24,6 +25,7 @@ minetest.register_alias("glass", "default:glass") minetest.register_alias("wooden_fence", "default:fence_wood") minetest.register_alias("rail", "carts:rail") minetest.register_alias("ladder", "default:ladder_wood") +minetest.register_alias("default:ladder_wood", "default:ladder") minetest.register_alias("wood", "default:wood") minetest.register_alias("mese", "default:mese") minetest.register_alias("cloud", "default:cloud") diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index f002d709..94e6b50e 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -1,5 +1,10 @@ -- mods/default/craftitems.lua +minetest.register_craftitem("default:bone", { + description = "Bone", + inventory_image = "bone.png", +}) + minetest.register_craftitem("default:stick", { description = "Stick", inventory_image = "default_stick.png", diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 9ba0e782..1566cef0 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -121,11 +121,20 @@ end -- Lavacooling -- +lavagen = { +"default:stone" +} + +-- thanks to ElectronLibre from Minetest IRC +if minetest.get_modpath("darkage") + then table.insert(lavagen, "darkage:basalt") +end + default.cool_lava = function(pos, node) if node.name == "default:lava_source" then minetest.set_node(pos, {name = "default:obsidian"}) - else -- Lava flowing - minetest.set_node(pos, {name = "default:stone"}) + else + minetest.set_node(pos, {name = lavagen[math.random(1,#lavagen)]}) end minetest.sound_play("default_cool_lava", {pos = pos, max_hear_distance = 16, gain = 0.25}) @@ -272,27 +281,16 @@ function default.register_fence(name, def) -- Allow almost everything to be overridden local default_fields = { paramtype = "light", - drawtype = "nodebox", - node_box = { - type = "connected", - fixed = {{-1/8, -1/2, -1/8, 1/8, 1/2, 1/8}}, - -- connect_top = - -- connect_bottom = - connect_front = {{-1/16,3/16,-1/2,1/16,5/16,-1/8}, - {-1/16,-5/16,-1/2,1/16,-3/16,-1/8}}, - connect_left = {{-1/2,3/16,-1/16,-1/8,5/16,1/16}, - {-1/2,-5/16,-1/16,-1/8,-3/16,1/16}}, - connect_back = {{-1/16,3/16,1/8,1/16,5/16,1/2}, - {-1/16,-5/16,1/8,1/16,-3/16,1/2}}, - connect_right = {{1/8,3/16,-1/16,1/2,5/16,1/16}, - {1/8,-5/16,-1/16,1/2,-3/16,1/16}}, - }, - connects_to = {"group:fence", "group:wood", "group:tree"}, + drawtype = "fencelike", inventory_image = fence_texture, wield_image = fence_texture, - tiles = {def.texture}, + tiles = { def.texture }, sunlight_propagates = true, is_ground_content = false, + selection_box = { + type = "fixed", + fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, + }, groups = {}, } for k, v in pairs(default_fields) do @@ -460,14 +458,18 @@ minetest.register_abm({ minetest.register_abm({ label = "Moss growth", - nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble", "walls:cobble"}, + nodenames = {"default:stone", "default:cobble", "default:stonebrick", "stairs:slab_cobble", "stairs:stair_cobble", "stairs:slab_cobble", "walls:cobble"}, neighbors = {"group:water"}, interval = 16, chance = 200, catch_up = false, action = function(pos, node) - if node.name == "default:cobble" then + if node.name == "default:stone" then + minetest.set_node(pos, {name = "default:mossystone"}) + elseif node.name == "default:cobble" then minetest.set_node(pos, {name = "default:mossycobble"}) + elseif node.name == "default:stonebrick" then + minetest.set_node(pos, {name = "default:mossystonebrick"}) elseif node.name == "stairs:slab_cobble" then minetest.set_node(pos, {name = "stairs:slab_mossycobble", param2 = node.param2}) elseif node.name == "stairs:stair_cobble" then diff --git a/mods/default/init.lua b/mods/default/init.lua index 7b5f62f3..4e73c7bc 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -11,7 +11,7 @@ default.LIGHT_MAX = 14 -- GUI related stuff default.gui_bg = "bgcolor[#080808BB;true]" default.gui_bg_img = "background[5,5;1,1;gui_formbg.png;true]" -default.gui_slots = "listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" +default.gui_slots = "listcolors[#79777639;#8EACE542;#141318;#8EACE599;#8EACE521]" function default.get_hotbar_bg(x,y) local out = "" diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 1eb2f305..b7274c81 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -237,6 +237,14 @@ minetest.register_node("default:stone_block", { sounds = default.node_sound_stone_defaults(), }) +minetest.register_node("default:mossystone", { + description = "Mossy Stone", + tiles = {"default_mossystone.png"}, + is_ground_content = false, + groups = {cracky = 3, stone = 1}, + sounds = default.node_sound_stone_defaults(), +}) + minetest.register_node("default:mossycobble", { description = "Mossy Cobblestone", tiles = {"default_mossycobble.png"}, @@ -245,6 +253,13 @@ minetest.register_node("default:mossycobble", { sounds = default.node_sound_stone_defaults(), }) +minetest.register_node("default:mossystonebrick", { + description = "Mossy Stonebrick", + tiles = {"default_mossystone_brick.png"}, + is_ground_content = false, + groups = {cracky = 3, stone = 1}, + sounds = default.node_sound_stone_defaults(), +}) minetest.register_node("default:desert_stone", { description = "Desert Stone", @@ -390,6 +405,14 @@ minetest.register_node("default:dirt", { tiles = {"default_dirt.png"}, groups = {crumbly = 3, soil = 1}, sounds = default.node_sound_dirt_defaults(), + drop = { + max_items = 1, + items = { + {items = {'default:bone', 'default:dirt'},rarity = 30,}, + {items = {'default:dirt'},}, + }, + }, + }) minetest.register_node("default:dirt_with_grass", { @@ -2196,7 +2219,7 @@ end default.register_leafdecay({ trunks = {"default:acacia_tree"}, leaves = {"default:acacia_leaves"}, - radius = 2, + radius = 3, }) default.register_leafdecay({ diff --git a/mods/default/textures/bone.png b/mods/default/textures/bone.png new file mode 100644 index 00000000..d86e7bea Binary files /dev/null and b/mods/default/textures/bone.png differ diff --git a/mods/default/textures/default_fence_overlay.png.1 b/mods/default/textures/default_fence_overlay.png.1 new file mode 100644 index 00000000..718184cc Binary files /dev/null and b/mods/default/textures/default_fence_overlay.png.1 differ diff --git a/mods/default/textures/default_mossystone.png b/mods/default/textures/default_mossystone.png new file mode 100644 index 00000000..97258f09 Binary files /dev/null and b/mods/default/textures/default_mossystone.png differ diff --git a/mods/default/textures/default_mossystone_brick.png b/mods/default/textures/default_mossystone_brick.png new file mode 100644 index 00000000..b8edf233 Binary files /dev/null and b/mods/default/textures/default_mossystone_brick.png differ diff --git a/mods/default/tools.lua b/mods/default/tools.lua index 51854b93..816a6475 100644 --- a/mods/default/tools.lua +++ b/mods/default/tools.lua @@ -99,7 +99,7 @@ minetest.register_tool("default:pick_diamond", { full_punch_interval = 0.9, max_drop_level=3, groupcaps={ - cracky = {times={[1]=2.0, [2]=1.0, [3]=0.50}, uses=30, maxlevel=3}, + cracky = {times = {[1] = 2.25, [2] = 0.70, [3] = 0.55}, uses = 30, maxlevel= 3} }, damage_groups = {fleshy=5}, }, diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 53e27938..62b43edd 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -709,8 +709,8 @@ doors.register_trapdoor("doors:trapdoor_steel", { minetest.register_craft({ output = 'doors:trapdoor 2', recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, + {'group:wood', 'group:wood', ''}, + {'group:wood', 'group:wood', ''}, {'', '', ''}, } }) diff --git a/mods/dragons b/mods/dragons new file mode 160000 index 00000000..6a9a3189 --- /dev/null +++ b/mods/dragons @@ -0,0 +1 @@ +Subproject commit 6a9a3189cd3767e06984cf295e67c6b19ac9a7ab diff --git a/mods/farming b/mods/farming new file mode 160000 index 00000000..4e3ed4f1 --- /dev/null +++ b/mods/farming @@ -0,0 +1 @@ +Subproject commit 4e3ed4f1a01d7c2225ac348c5c6be457e2ac9038 diff --git a/mods/farming/README.txt b/mods/farming/README.txt deleted file mode 100644 index 3ccd8c30..00000000 --- a/mods/farming/README.txt +++ /dev/null @@ -1,37 +0,0 @@ -Minetest Game mod: farming -========================== -See license.txt for license information. - -Authors of source code ----------------------- -Originally by PilzAdam (MIT) -webdesigner97 (MIT) -Various Minetest developers and contributors (MIT) - -Authors of media (textures) ---------------------------- -Created by PilzAdam (CC BY 3.0): - farming_bread.png - farming_soil.png - farming_soil_wet.png - farming_soil_wet_side.png - farming_string.png - -Created by BlockMen (CC BY 3.0): - farming_tool_diamondhoe.png - farming_tool_mesehoe.png - farming_tool_bronzehoe.png - farming_tool_steelhoe.png - farming_tool_stonehoe.png - farming_tool_woodhoe.png - -Created by MasterGollum (CC BY 3.0): - farming_straw.png - -Created by Gambit (CC BY 3.0): - farming_wheat.png - farming_wheat_*.png - farming_cotton_*.png - farming_flour.png - farming_cotton_seed.png - farming_wheat_seed.png diff --git a/mods/farming/api.lua b/mods/farming/api.lua deleted file mode 100644 index 0ba756cc..00000000 --- a/mods/farming/api.lua +++ /dev/null @@ -1,402 +0,0 @@ - --- Wear out hoes, place soil --- TODO Ignore group:flower -farming.registered_plants = {} - -farming.hoe_on_use = function(itemstack, user, pointed_thing, uses) - local pt = pointed_thing - -- check if pointing at a node - if not pt then - return - end - if pt.type ~= "node" then - return - end - - local under = minetest.get_node(pt.under) - local p = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z} - local above = minetest.get_node(p) - - -- return if any of the nodes is not registered - if not minetest.registered_nodes[under.name] then - return - end - if not minetest.registered_nodes[above.name] then - return - end - - -- check if the node above the pointed thing is air - if above.name ~= "air" then - return - end - - -- check if pointing at soil - if minetest.get_item_group(under.name, "soil") ~= 1 then - return - end - - -- check if (wet) soil defined - local regN = minetest.registered_nodes - if regN[under.name].soil == nil or regN[under.name].soil.wet == nil or regN[under.name].soil.dry == nil then - return - end - - if minetest.is_protected(pt.under, user:get_player_name()) then - minetest.record_protection_violation(pt.under, user:get_player_name()) - return - end - if minetest.is_protected(pt.above, user:get_player_name()) then - minetest.record_protection_violation(pt.above, user:get_player_name()) - return - end - - -- turn the node into soil and play sound - minetest.set_node(pt.under, {name = regN[under.name].soil.dry}) - minetest.sound_play("default_dig_crumbly", { - pos = pt.under, - gain = 0.5, - }) - - if not minetest.setting_getbool("creative_mode") then - -- wear tool - local wdef = itemstack:get_definition() - itemstack:add_wear(65535/(uses-1)) - -- tool break sound - if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then - minetest.sound_play(wdef.sound.breaks, {pos = pt.above, gain = 0.5}) - end - end - return itemstack -end - --- Register new hoes -farming.register_hoe = function(name, def) - -- Check for : prefix (register new hoes in your mod's namespace) - if name:sub(1,1) ~= ":" then - name = ":" .. name - end - -- Check def table - if def.description == nil then - def.description = "Hoe" - end - if def.inventory_image == nil then - def.inventory_image = "unknown_item.png" - end - if def.recipe == nil then - def.recipe = { - {"air","air",""}, - {"","group:stick",""}, - {"","group:stick",""} - } - end - if def.max_uses == nil then - def.max_uses = 30 - end - -- Register the tool - minetest.register_tool(name, { - description = def.description, - inventory_image = def.inventory_image, - on_use = function(itemstack, user, pointed_thing) - return farming.hoe_on_use(itemstack, user, pointed_thing, def.max_uses) - end, - groups = def.groups, - sound = {breaks = "default_tool_breaks"}, - }) - -- Register its recipe - if def.material == nil then - minetest.register_craft({ - output = name:sub(2), - recipe = def.recipe - }) - else - minetest.register_craft({ - output = name:sub(2), - recipe = { - {def.material, def.material, ""}, - {"", "group:stick", ""}, - {"", "group:stick", ""} - } - }) - -- Reverse Recipe - minetest.register_craft({ - output = name:sub(2), - recipe = { - {"", def.material, def.material}, - {"", "group:stick", ""}, - {"", "group:stick", ""} - } - }) - end -end - --- how often node timers for plants will tick, +/- some random value -local function tick(pos) - minetest.get_node_timer(pos):start(math.random(166, 286)) -end --- how often a growth failure tick is retried (e.g. too dark) -local function tick_again(pos) - minetest.get_node_timer(pos):start(math.random(40, 80)) -end - --- Seed placement -farming.place_seed = function(itemstack, placer, pointed_thing, plantname) - local pt = pointed_thing - -- check if pointing at a node - if not pt then - return itemstack - end - if pt.type ~= "node" then - return itemstack - end - - local under = minetest.get_node(pt.under) - local above = minetest.get_node(pt.above) - - if minetest.is_protected(pt.under, placer:get_player_name()) then - minetest.record_protection_violation(pt.under, placer:get_player_name()) - return - end - if minetest.is_protected(pt.above, placer:get_player_name()) then - minetest.record_protection_violation(pt.above, placer:get_player_name()) - return - end - - -- return if any of the nodes is not registered - if not minetest.registered_nodes[under.name] then - return itemstack - end - if not minetest.registered_nodes[above.name] then - return itemstack - end - - -- check if pointing at the top of the node - if pt.above.y ~= pt.under.y+1 then - return itemstack - end - - -- check if you can replace the node above the pointed node - if not minetest.registered_nodes[above.name].buildable_to then - return itemstack - end - - -- check if pointing at soil - if minetest.get_item_group(under.name, "soil") < 2 then - return itemstack - end - - -- add the node and remove 1 item from the itemstack - minetest.add_node(pt.above, {name = plantname, param2 = 1}) - tick(pt.above) - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - return itemstack -end - -farming.grow_plant = function(pos, elapsed) - local node = minetest.get_node(pos) - local name = node.name - local def = minetest.registered_nodes[name] - - if not def.next_plant then - -- disable timer for fully grown plant - return - end - - -- grow seed - if minetest.get_item_group(node.name, "seed") and def.fertility then - local soil_node = minetest.get_node_or_nil({x = pos.x, y = pos.y - 1, z = pos.z}) - if not soil_node then - tick_again(pos) - return - end - -- omitted is a check for light, we assume seeds can germinate in the dark. - for _, v in pairs(def.fertility) do - if minetest.get_item_group(soil_node.name, v) ~= 0 then - local placenode = {name = def.next_plant} - if def.place_param2 then - placenode.param2 = def.place_param2 - end - minetest.swap_node(pos, placenode) - if minetest.registered_nodes[def.next_plant].next_plant then - tick(pos) - return - end - end - end - - return - end - - -- check if on wet soil - local below = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) - if minetest.get_item_group(below.name, "soil") < 3 then - tick_again(pos) - return - end - - -- check light - local light = minetest.get_node_light(pos) - if not light or light < def.minlight or light > def.maxlight then - tick_again(pos) - return - end - - -- grow - local placenode = {name = def.next_plant} - if def.place_param2 then - placenode.param2 = def.place_param2 - end - minetest.swap_node(pos, placenode) - - -- new timer needed? - if minetest.registered_nodes[def.next_plant].next_plant then - tick(pos) - end - return -end - --- Register plants -farming.register_plant = function(name, def) - local mname = name:split(":")[1] - local pname = name:split(":")[2] - - -- Check def table - if not def.description then - def.description = "Seed" - end - if not def.inventory_image then - def.inventory_image = "unknown_item.png" - end - if not def.steps then - return nil - end - if not def.minlight then - def.minlight = 1 - end - if not def.maxlight then - def.maxlight = 14 - end - if not def.fertility then - def.fertility = {} - end - - farming.registered_plants[pname] = def - - -- Register seed - local lbm_nodes = {mname .. ":seed_" .. pname} - local g = {seed = 1, snappy = 3, attached_node = 1, flammable = 2} - for k, v in pairs(def.fertility) do - g[v] = 1 - end - minetest.register_node(":" .. mname .. ":seed_" .. pname, { - description = def.description, - tiles = {def.inventory_image}, - inventory_image = def.inventory_image, - wield_image = def.inventory_image, - drawtype = "signlike", - groups = g, - paramtype = "light", - paramtype2 = "wallmounted", - place_param2 = def.place_param2 or nil, -- this isn't actually used for placement - walkable = false, - sunlight_propagates = true, - selection_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, - }, - fertility = def.fertility, - sounds = default.node_sound_dirt_defaults({ - dig = {name = "", gain = 0}, - dug = {name = "default_grass_footstep", gain = 0.2}, - place = {name = "default_place_node", gain = 0.25}, - }), - - on_place = function(itemstack, placer, pointed_thing) - local under = pointed_thing.under - local node = minetest.get_node(under) - local udef = minetest.registered_nodes[node.name] - if udef and udef.on_rightclick and - not (placer and placer:get_player_control().sneak) then - return udef.on_rightclick(under, node, placer, itemstack, - pointed_thing) or itemstack - end - - return farming.place_seed(itemstack, placer, pointed_thing, mname .. ":seed_" .. pname) - end, - next_plant = mname .. ":" .. pname .. "_1", - on_timer = farming.grow_plant, - minlight = def.minlight, - maxlight = def.maxlight, - }) - - -- Register harvest - minetest.register_craftitem(":" .. mname .. ":" .. pname, { - description = pname:gsub("^%l", string.upper), - inventory_image = mname .. "_" .. pname .. ".png", - groups = {flammable = 2}, - }) - - -- Register growing steps - for i = 1, def.steps do - local base_rarity = 1 - if def.steps ~= 1 then - base_rarity = 8 - (i - 1) * 7 / (def.steps - 1) - end - local drop = { - items = { - {items = {mname .. ":" .. pname}, rarity = base_rarity}, - {items = {mname .. ":" .. pname}, rarity = base_rarity * 2}, - {items = {mname .. ":seed_" .. pname}, rarity = base_rarity}, - {items = {mname .. ":seed_" .. pname}, rarity = base_rarity * 2}, - } - } - local nodegroups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1} - nodegroups[pname] = i - - local next_plant = nil - - if i < def.steps then - next_plant = mname .. ":" .. pname .. "_" .. (i + 1) - lbm_nodes[#lbm_nodes + 1] = mname .. ":" .. pname .. "_" .. i - end - - minetest.register_node(":" .. mname .. ":" .. pname .. "_" .. i, { - drawtype = "plantlike", - waving = 1, - tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"}, - paramtype = "light", - paramtype2 = def.paramtype2 or nil, - place_param2 = def.place_param2 or nil, - walkable = false, - buildable_to = true, - drop = drop, - selection_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, - }, - groups = nodegroups, - sounds = default.node_sound_leaves_defaults(), - next_plant = next_plant, - on_timer = farming.grow_plant, - minlight = def.minlight, - maxlight = def.maxlight, - }) - end - - -- replacement LBM for pre-nodetimer plants - minetest.register_lbm({ - name = ":" .. mname .. ":start_nodetimer_" .. pname, - nodenames = lbm_nodes, - action = function(pos, node) - tick_again(pos) - end, - }) - - -- Return - local r = { - seed = mname .. ":seed_" .. pname, - harvest = mname .. ":" .. pname - } - return r -end diff --git a/mods/farming/hoes.lua b/mods/farming/hoes.lua deleted file mode 100644 index 5aae3903..00000000 --- a/mods/farming/hoes.lua +++ /dev/null @@ -1,42 +0,0 @@ -farming.register_hoe(":farming:hoe_wood", { - description = "Wooden Hoe", - inventory_image = "farming_tool_woodhoe.png", - max_uses = 30, - material = "group:wood", - groups = {flammable = 2}, -}) - -farming.register_hoe(":farming:hoe_stone", { - description = "Stone Hoe", - inventory_image = "farming_tool_stonehoe.png", - max_uses = 90, - material = "group:stone" -}) - -farming.register_hoe(":farming:hoe_steel", { - description = "Steel Hoe", - inventory_image = "farming_tool_steelhoe.png", - max_uses = 200, - material = "default:steel_ingot" -}) - -farming.register_hoe(":farming:hoe_bronze", { - description = "Bronze Hoe", - inventory_image = "farming_tool_bronzehoe.png", - max_uses = 220, - material = "default:bronze_ingot" -}) - -farming.register_hoe(":farming:hoe_mese", { - description = "Mese Hoe", - inventory_image = "farming_tool_mesehoe.png", - max_uses = 350, - material = "default:mese_crystal" -}) - -farming.register_hoe(":farming:hoe_diamond", { - description = "Diamond Hoe", - inventory_image = "farming_tool_diamondhoe.png", - max_uses = 500, - material = "default:diamond" -}) diff --git a/mods/farming/init.lua b/mods/farming/init.lua deleted file mode 100644 index 97dc9b4a..00000000 --- a/mods/farming/init.lua +++ /dev/null @@ -1,109 +0,0 @@ --- Global farming namespace -farming = {} -farming.path = minetest.get_modpath("farming") - --- Load files -dofile(farming.path .. "/api.lua") -dofile(farming.path .. "/nodes.lua") -dofile(farming.path .. "/hoes.lua") - --- WHEAT -farming.register_plant("farming:wheat", { - description = "Wheat seed", - paramtype2 = "meshoptions", - inventory_image = "farming_wheat_seed.png", - steps = 8, - minlight = 13, - maxlight = default.LIGHT_MAX, - fertility = {"grassland"}, - groups = {flammable = 4}, - place_param2 = 3, -}) -minetest.register_craftitem("farming:flour", { - description = "Flour", - inventory_image = "farming_flour.png", - groups = {flammable = 1}, -}) - -minetest.register_craftitem("farming:bread", { - description = "Bread", - inventory_image = "farming_bread.png", - on_use = minetest.item_eat(5), - groups = {flammable = 2}, -}) - -minetest.register_craft({ - type = "shapeless", - output = "farming:flour", - recipe = {"farming:wheat", "farming:wheat", "farming:wheat", "farming:wheat"} -}) - -minetest.register_craft({ - type = "cooking", - cooktime = 15, - output = "farming:bread", - recipe = "farming:flour" -}) - --- Cotton -farming.register_plant("farming:cotton", { - description = "Cotton seed", - inventory_image = "farming_cotton_seed.png", - steps = 8, - minlight = 13, - maxlight = default.LIGHT_MAX, - fertility = {"grassland", "desert"}, - groups = {flammable = 4}, -}) - -minetest.register_alias("farming:string", "farming:cotton") - -minetest.register_craft({ - output = "wool:white", - recipe = { - {"farming:cotton", "farming:cotton"}, - {"farming:cotton", "farming:cotton"}, - } -}) - --- Straw -minetest.register_craft({ - output = "farming:straw 3", - recipe = { - {"farming:wheat", "farming:wheat", "farming:wheat"}, - {"farming:wheat", "farming:wheat", "farming:wheat"}, - {"farming:wheat", "farming:wheat", "farming:wheat"}, - } -}) - -minetest.register_craft({ - output = "farming:wheat 3", - recipe = { - {"farming:straw"}, - } -}) - --- Fuels -minetest.register_craft({ - type = "fuel", - recipe = "farming:straw", - burntime = 3, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:wheat", - burntime = 1, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:cotton", - burntime = 1, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:hoe_wood", - burntime = 5, -}) diff --git a/mods/farming/license.txt b/mods/farming/license.txt deleted file mode 100644 index 8cbb63a8..00000000 --- a/mods/farming/license.txt +++ /dev/null @@ -1,61 +0,0 @@ -License of source code ----------------------- - -The MIT License (MIT) -Copyright (C) 2012-2016 PilzAdam -Copyright (C) 2014-2016 webdesigner97 -Copyright (C) 2012-2016 Various Minetest developers and contributors - -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 3.0 Unported (CC BY 3.0) -Copyright (C) 2012-2016 PilzAdam -Copyright (C) 2014-2016 BlockMen -Copyright (C) 2015-2016 MasterGollum -Copyright (C) 2015-2016 Gambit - -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. - -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/3.0/ diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua deleted file mode 100644 index 09ad36f5..00000000 --- a/mods/farming/nodes.lua +++ /dev/null @@ -1,163 +0,0 @@ -minetest.override_item("default:dirt", { - soil = { - base = "default:dirt", - dry = "farming:soil", - wet = "farming:soil_wet" - } -}) - -minetest.override_item("default:dirt_with_grass", { - soil = { - base = "default:dirt_with_grass", - dry = "farming:soil", - wet = "farming:soil_wet" - } -}) - -minetest.override_item("default:dirt_with_dry_grass", { - soil = { - base = "default:dirt_with_dry_grass", - dry = "farming:soil", - wet = "farming:soil_wet" - } -}) - -minetest.register_node("farming:soil", { - description = "Soil", - tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"}, - drop = "default:dirt", - groups = {crumbly=3, not_in_creative_inventory=1, soil=2, grassland = 1, field = 1}, - sounds = default.node_sound_dirt_defaults(), - soil = { - base = "default:dirt", - dry = "farming:soil", - wet = "farming:soil_wet" - } -}) - -minetest.register_node("farming:soil_wet", { - description = "Wet Soil", - tiles = {"default_dirt.png^farming_soil_wet.png", "default_dirt.png^farming_soil_wet_side.png"}, - drop = "default:dirt", - groups = {crumbly=3, not_in_creative_inventory=1, soil=3, wet = 1, grassland = 1, field = 1}, - sounds = default.node_sound_dirt_defaults(), - soil = { - base = "default:dirt", - dry = "farming:soil", - wet = "farming:soil_wet" - } -}) - -minetest.override_item("default:desert_sand", { - groups = {crumbly=3, falling_node=1, sand=1, soil = 1}, - soil = { - base = "default:desert_sand", - dry = "farming:desert_sand_soil", - wet = "farming:desert_sand_soil_wet" - } -}) -minetest.register_node("farming:desert_sand_soil", { - description = "Desert Sand Soil", - drop = "default:desert_sand", - tiles = {"farming_desert_sand_soil.png", "default_desert_sand.png"}, - groups = {crumbly=3, not_in_creative_inventory = 1, falling_node=1, sand=1, soil = 2, desert = 1, field = 1}, - sounds = default.node_sound_sand_defaults(), - soil = { - base = "default:desert_sand", - dry = "farming:desert_sand_soil", - wet = "farming:desert_sand_soil_wet" - } -}) - -minetest.register_node("farming:desert_sand_soil_wet", { - description = "Wet Desert Sand Soil", - drop = "default:desert_sand", - tiles = {"farming_desert_sand_soil_wet.png", "farming_desert_sand_soil_wet_side.png"}, - groups = {crumbly=3, falling_node=1, sand=1, not_in_creative_inventory=1, soil=3, wet = 1, desert = 1, field = 1}, - sounds = default.node_sound_sand_defaults(), - soil = { - base = "default:desert_sand", - dry = "farming:desert_sand_soil", - wet = "farming:desert_sand_soil_wet" - } -}) - -minetest.register_node("farming:straw", { - description = "Straw", - tiles = {"farming_straw.png"}, - is_ground_content = false, - groups = {snappy=3, flammable=4, fall_damage_add_percent=-30}, - sounds = default.node_sound_leaves_defaults(), -}) - -minetest.register_abm({ - label = "Farming soil", - nodenames = {"group:field"}, - interval = 15, - chance = 4, - action = function(pos, node) - local n_def = minetest.registered_nodes[node.name] or nil - local wet = n_def.soil.wet or nil - local base = n_def.soil.base or nil - local dry = n_def.soil.dry or nil - if not n_def or not n_def.soil or not wet or not base or not dry then - return - end - - pos.y = pos.y + 1 - local nn = minetest.get_node_or_nil(pos) - if not nn or not nn.name then - return - end - local nn_def = minetest.registered_nodes[nn.name] or nil - pos.y = pos.y - 1 - - if nn_def and nn_def.walkable and minetest.get_item_group(nn.name, "plant") == 0 then - minetest.set_node(pos, {name = base}) - return - end - -- check if there is water nearby - local wet_lvl = minetest.get_item_group(node.name, "wet") - if minetest.find_node_near(pos, 3, {"group:water"}) then - -- if it is dry soil and not base node, turn it into wet soil - if wet_lvl == 0 then - minetest.set_node(pos, {name = wet}) - end - else - -- only turn back if there are no unloaded blocks (and therefore - -- possible water sources) nearby - if not minetest.find_node_near(pos, 3, {"ignore"}) then - -- turn it back into base if it is already dry - if wet_lvl == 0 then - -- only turn it back if there is no plant/seed on top of it - if minetest.get_item_group(nn.name, "plant") == 0 and minetest.get_item_group(nn.name, "seed") == 0 then - minetest.set_node(pos, {name = base}) - end - - -- if its wet turn it back into dry soil - elseif wet_lvl == 1 then - minetest.set_node(pos, {name = dry}) - end - end - end - end, -}) - - -for i = 1, 5 do - minetest.override_item("default:grass_"..i, {drop = { - max_items = 1, - items = { - {items = {'farming:seed_wheat'},rarity = 5}, - {items = {'default:grass_1'}}, - } - }}) -end - -minetest.override_item("default:junglegrass", {drop = { - max_items = 1, - items = { - {items = {'farming:seed_cotton'},rarity = 8}, - {items = {'default:junglegrass'}}, - } -}}) diff --git a/mods/farming/textures/farming_bread.png b/mods/farming/textures/farming_bread.png deleted file mode 100644 index 0c25678c..00000000 Binary files a/mods/farming/textures/farming_bread.png and /dev/null differ diff --git a/mods/farming/textures/farming_cotton.png b/mods/farming/textures/farming_cotton.png deleted file mode 100644 index e2bbfd7a..00000000 Binary files a/mods/farming/textures/farming_cotton.png and /dev/null differ diff --git a/mods/farming/textures/farming_cotton_1.png b/mods/farming/textures/farming_cotton_1.png deleted file mode 100644 index 5fc21807..00000000 Binary files a/mods/farming/textures/farming_cotton_1.png and /dev/null differ diff --git a/mods/farming/textures/farming_cotton_2.png b/mods/farming/textures/farming_cotton_2.png deleted file mode 100644 index db4f4a3e..00000000 Binary files a/mods/farming/textures/farming_cotton_2.png and /dev/null differ diff --git a/mods/farming/textures/farming_cotton_3.png b/mods/farming/textures/farming_cotton_3.png deleted file mode 100644 index df3d7a77..00000000 Binary files a/mods/farming/textures/farming_cotton_3.png and /dev/null differ diff --git a/mods/farming/textures/farming_cotton_4.png b/mods/farming/textures/farming_cotton_4.png deleted file mode 100644 index f314b07b..00000000 Binary files a/mods/farming/textures/farming_cotton_4.png and /dev/null differ diff --git a/mods/farming/textures/farming_cotton_5.png b/mods/farming/textures/farming_cotton_5.png deleted file mode 100644 index 3e890855..00000000 Binary files a/mods/farming/textures/farming_cotton_5.png and /dev/null differ diff --git a/mods/farming/textures/farming_cotton_6.png b/mods/farming/textures/farming_cotton_6.png deleted file mode 100644 index f4bd4fb3..00000000 Binary files a/mods/farming/textures/farming_cotton_6.png and /dev/null differ diff --git a/mods/farming/textures/farming_cotton_7.png b/mods/farming/textures/farming_cotton_7.png deleted file mode 100644 index 466d40a2..00000000 Binary files a/mods/farming/textures/farming_cotton_7.png and /dev/null differ diff --git a/mods/farming/textures/farming_cotton_8.png b/mods/farming/textures/farming_cotton_8.png deleted file mode 100644 index f835ba5b..00000000 Binary files a/mods/farming/textures/farming_cotton_8.png and /dev/null differ diff --git a/mods/farming/textures/farming_cotton_seed.png b/mods/farming/textures/farming_cotton_seed.png deleted file mode 100644 index f1d5b8ab..00000000 Binary files a/mods/farming/textures/farming_cotton_seed.png and /dev/null differ diff --git a/mods/farming/textures/farming_desert_sand_soil.png b/mods/farming/textures/farming_desert_sand_soil.png deleted file mode 100644 index 3c09ef0c..00000000 Binary files a/mods/farming/textures/farming_desert_sand_soil.png and /dev/null differ diff --git a/mods/farming/textures/farming_desert_sand_soil_wet.png b/mods/farming/textures/farming_desert_sand_soil_wet.png deleted file mode 100644 index facc83e1..00000000 Binary files a/mods/farming/textures/farming_desert_sand_soil_wet.png and /dev/null differ diff --git a/mods/farming/textures/farming_desert_sand_soil_wet_side.png b/mods/farming/textures/farming_desert_sand_soil_wet_side.png deleted file mode 100644 index 41e5a04a..00000000 Binary files a/mods/farming/textures/farming_desert_sand_soil_wet_side.png and /dev/null differ diff --git a/mods/farming/textures/farming_flour.png b/mods/farming/textures/farming_flour.png deleted file mode 100644 index b1a97836..00000000 Binary files a/mods/farming/textures/farming_flour.png and /dev/null differ diff --git a/mods/farming/textures/farming_soil.png b/mods/farming/textures/farming_soil.png deleted file mode 100644 index 5cd3e681..00000000 Binary files a/mods/farming/textures/farming_soil.png and /dev/null differ diff --git a/mods/farming/textures/farming_soil_wet.png b/mods/farming/textures/farming_soil_wet.png deleted file mode 100644 index 0b4487d8..00000000 Binary files a/mods/farming/textures/farming_soil_wet.png and /dev/null differ diff --git a/mods/farming/textures/farming_soil_wet_side.png b/mods/farming/textures/farming_soil_wet_side.png deleted file mode 100644 index f0b1bd45..00000000 Binary files a/mods/farming/textures/farming_soil_wet_side.png and /dev/null differ diff --git a/mods/farming/textures/farming_straw.png b/mods/farming/textures/farming_straw.png deleted file mode 100644 index f9f5fe7c..00000000 Binary files a/mods/farming/textures/farming_straw.png and /dev/null differ diff --git a/mods/farming/textures/farming_tool_bronzehoe.png b/mods/farming/textures/farming_tool_bronzehoe.png deleted file mode 100644 index 2802d11d..00000000 Binary files a/mods/farming/textures/farming_tool_bronzehoe.png and /dev/null differ diff --git a/mods/farming/textures/farming_tool_diamondhoe.png b/mods/farming/textures/farming_tool_diamondhoe.png deleted file mode 100644 index 66f1042a..00000000 Binary files a/mods/farming/textures/farming_tool_diamondhoe.png and /dev/null differ diff --git a/mods/farming/textures/farming_tool_mesehoe.png b/mods/farming/textures/farming_tool_mesehoe.png deleted file mode 100644 index 4534fbaf..00000000 Binary files a/mods/farming/textures/farming_tool_mesehoe.png and /dev/null differ diff --git a/mods/farming/textures/farming_tool_steelhoe.png b/mods/farming/textures/farming_tool_steelhoe.png deleted file mode 100644 index d057af24..00000000 Binary files a/mods/farming/textures/farming_tool_steelhoe.png and /dev/null differ diff --git a/mods/farming/textures/farming_tool_stonehoe.png b/mods/farming/textures/farming_tool_stonehoe.png deleted file mode 100644 index 55d8123f..00000000 Binary files a/mods/farming/textures/farming_tool_stonehoe.png and /dev/null differ diff --git a/mods/farming/textures/farming_tool_woodhoe.png b/mods/farming/textures/farming_tool_woodhoe.png deleted file mode 100644 index a287152c..00000000 Binary files a/mods/farming/textures/farming_tool_woodhoe.png and /dev/null differ diff --git a/mods/farming/textures/farming_wheat.png b/mods/farming/textures/farming_wheat.png deleted file mode 100644 index 1e0ad3b3..00000000 Binary files a/mods/farming/textures/farming_wheat.png and /dev/null differ diff --git a/mods/farming/textures/farming_wheat_1.png b/mods/farming/textures/farming_wheat_1.png deleted file mode 100644 index c16ad94b..00000000 Binary files a/mods/farming/textures/farming_wheat_1.png and /dev/null differ diff --git a/mods/farming/textures/farming_wheat_2.png b/mods/farming/textures/farming_wheat_2.png deleted file mode 100644 index baddb4c5..00000000 Binary files a/mods/farming/textures/farming_wheat_2.png and /dev/null differ diff --git a/mods/farming/textures/farming_wheat_3.png b/mods/farming/textures/farming_wheat_3.png deleted file mode 100644 index 36ebb192..00000000 Binary files a/mods/farming/textures/farming_wheat_3.png and /dev/null differ diff --git a/mods/farming/textures/farming_wheat_4.png b/mods/farming/textures/farming_wheat_4.png deleted file mode 100644 index 735ed777..00000000 Binary files a/mods/farming/textures/farming_wheat_4.png and /dev/null differ diff --git a/mods/farming/textures/farming_wheat_5.png b/mods/farming/textures/farming_wheat_5.png deleted file mode 100644 index f40b5f04..00000000 Binary files a/mods/farming/textures/farming_wheat_5.png and /dev/null differ diff --git a/mods/farming/textures/farming_wheat_6.png b/mods/farming/textures/farming_wheat_6.png deleted file mode 100644 index e9c78e00..00000000 Binary files a/mods/farming/textures/farming_wheat_6.png and /dev/null differ diff --git a/mods/farming/textures/farming_wheat_7.png b/mods/farming/textures/farming_wheat_7.png deleted file mode 100644 index cc26ca96..00000000 Binary files a/mods/farming/textures/farming_wheat_7.png and /dev/null differ diff --git a/mods/farming/textures/farming_wheat_8.png b/mods/farming/textures/farming_wheat_8.png deleted file mode 100644 index d0500934..00000000 Binary files a/mods/farming/textures/farming_wheat_8.png and /dev/null differ diff --git a/mods/farming/textures/farming_wheat_seed.png b/mods/farming/textures/farming_wheat_seed.png deleted file mode 100644 index a9031fba..00000000 Binary files a/mods/farming/textures/farming_wheat_seed.png and /dev/null differ diff --git a/mods/fire/init.lua b/mods/fire/init.lua index a846b289..fb3aca3f 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -31,18 +31,18 @@ minetest.register_node("fire:basic_flame", { damage_per_second = 4, groups = {igniter = 2, dig_immediate = 3, not_in_creative_inventory = 1}, on_timer = function(pos) - local f = minetest.find_node_near(pos, 1, {"group:flammable"}) - if not f then + --local f = minetest.find_node_near(pos, 1, {"group:flammable"}) + --if not f then minetest.remove_node(pos) - return - end + -- return + --end -- Restart timer - return true + return false end, drop = "", on_construct = function(pos) - minetest.get_node_timer(pos):start(math.random(30, 60)) + minetest.get_node_timer(pos):start(math.random(20, 30)) end, }) @@ -288,8 +288,8 @@ minetest.register_abm({ -- Enable the following ABMs according to 'enable fire' setting - -local fire_enabled = minetest.setting_getbool("enable_fire") +--[[ +local fire_enabled = minetest.settings:get_bool("enable_fire") if fire_enabled == nil then -- New setting not specified, check for old setting. -- If old setting is also not specified, 'not nil' is true. @@ -356,4 +356,4 @@ else -- Fire enabled end, }) -end +end]] diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index da82bb7c..f92da9d8 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -47,6 +47,7 @@ local function add_simple_flower(name, desc, box, f_groups) walkable = false, buildable_to = true, stack_max = 99, + light_source = 4, groups = f_groups, sounds = default.node_sound_leaves_defaults(), selection_box = { @@ -290,7 +291,6 @@ minetest.register_node("flowers:waterlily", { minetest.record_protection_violation(pos, player_name) end end - return itemstack end }) diff --git a/mods/give_initial_stuff/depends.txt b/mods/give_initial_stuff/depends.txt index 3a7daa1d..9457c1dc 100644 --- a/mods/give_initial_stuff/depends.txt +++ b/mods/give_initial_stuff/depends.txt @@ -1,2 +1,6 @@ default - +bows +xdecor +3d_armor +shields +magical_potion diff --git a/mods/give_initial_stuff/init.lua b/mods/give_initial_stuff/init.lua index 022b7438..c412f1e3 100644 --- a/mods/give_initial_stuff/init.lua +++ b/mods/give_initial_stuff/init.lua @@ -1,44 +1,21 @@ -local stuff_string = minetest.setting_get("initial_stuff") or - "default:pick_steel,default:axe_steel,default:shovel_steel," .. - "default:torch 99,default:cobble 99" +minetest.register_on_newplayer(function(player) + --print("on_newplayer") + if minetest.setting_getbool("give_initial_stuff") then + minetest.log("action", "Giving initial stuff to player "..player:get_player_name()) + player:get_inventory():add_item('main', 'default:pick_steel') + player:get_inventory():add_item('main', 'default:axe_steel') + player:get_inventory():add_item('main', 'default:torch 99') + player:get_inventory():add_item('main', 'default:chest_locked 1') + player:get_inventory():add_item('main', 'xdecor:crafting_guide 1') + player:get_inventory():add_item('main', 'magical_potion:fly_small 2') + player:get_inventory():add_item('main', 'bows:bow_wood') + player:get_inventory():add_item('main', 'bows:arrow 26') + player:get_inventory():add_item('main', '3d_armor:helmet_steel') + player:get_inventory():add_item('main', '3d_armor:chestplate_steel') + player:get_inventory():add_item('main', '3d_armor:leggings_steel') + player:get_inventory():add_item('main', '3d_armor:boots_steel') + player:get_inventory():add_item('main', 'shields:shield_wood') + -give_initial_stuff = { - items = {} -} - -function give_initial_stuff.give(player) - minetest.log("action", - "Giving initial stuff to player " .. player:get_player_name()) - local inv = player:get_inventory() - for _, stack in ipairs(give_initial_stuff.items) do - inv:add_item("main", stack) - end -end - -function give_initial_stuff.add(stack) - give_initial_stuff.items[#give_initial_stuff.items + 1] = ItemStack(stack) -end - -function give_initial_stuff.clear() - give_initial_stuff.items = {} -end - -function give_initial_stuff.add_from_csv(str) - local items = str:split(",") - for _, itemname in ipairs(items) do - give_initial_stuff.add(itemname) - end -end - -function give_initial_stuff.set_list(list) - give_initial_stuff.items = list -end - -function give_initial_stuff.get_list() - return give_initial_stuff.items -end - -give_initial_stuff.add_from_csv(stuff_string) -if minetest.setting_getbool("give_initial_stuff") then - minetest.register_on_newplayer(give_initial_stuff.give) -end + end +end) diff --git a/mods/golems b/mods/golems new file mode 160000 index 00000000..a9a7d96b --- /dev/null +++ b/mods/golems @@ -0,0 +1 @@ +Subproject commit a9a7d96bf40c8ba25777eed977356d631bb8f53c diff --git a/mods/halloween_mobs b/mods/halloween_mobs new file mode 160000 index 00000000..a78da495 --- /dev/null +++ b/mods/halloween_mobs @@ -0,0 +1 @@ +Subproject commit a78da495d0d2882516e6a56cce7ba2e2b7f5b6f3 diff --git a/mods/hellochat/depends.txt b/mods/hellochat/depends.txt new file mode 100644 index 00000000..e69de29b diff --git a/mods/hellochat/init.lua b/mods/hellochat/init.lua new file mode 100644 index 00000000..49b7899d --- /dev/null +++ b/mods/hellochat/init.lua @@ -0,0 +1,12 @@ +minetest.register_on_joinplayer(function(player) + if not minetest.check_player_privs(player:get_player_name(), {interact=true}) then + local player = player:get_player_name() + local color = "#52DF55" + -- How ugly, multible sending instead multiline. + -- https://github.com/minetest/minetest/pull/4546 + minetest.chat_send_player(player, core.colorize(color, "# Illuna: Hey friend, it looks like you're new here, awesome to meet ya!")) + minetest.chat_send_player(player, core.colorize(color, "# Illuna: You just joined our VIP world, good choice!")) + minetest.chat_send_player(player, core.colorize(color, "# Illuna: In order to play here, you must prove yourself on our public server (illuna.rocks:30002).")) + minetest.chat_send_player(player, core.colorize(color, "# Illuna: Good Luck!")) + end +end) diff --git a/mods/hemp b/mods/hemp new file mode 160000 index 00000000..b6971d6f --- /dev/null +++ b/mods/hemp @@ -0,0 +1 @@ +Subproject commit b6971d6fb00cadc04d36670ca3dfe319fc618f83 diff --git a/mods/homedecor_modpack b/mods/homedecor_modpack new file mode 160000 index 00000000..f41f09c0 --- /dev/null +++ b/mods/homedecor_modpack @@ -0,0 +1 @@ +Subproject commit f41f09c0050ced284f04cf40083ee42d5ee6a333 diff --git a/mods/horses b/mods/horses new file mode 160000 index 00000000..a72192db --- /dev/null +++ b/mods/horses @@ -0,0 +1 @@ +Subproject commit a72192db523658fbff02416f5c927e83c11fd71a diff --git a/mods/hudbars b/mods/hudbars new file mode 160000 index 00000000..8d864a49 --- /dev/null +++ b/mods/hudbars @@ -0,0 +1 @@ +Subproject commit 8d864a49548457ccb3944a62b6a4338f962d4c64 diff --git a/mods/illuna b/mods/illuna new file mode 160000 index 00000000..4c0d9336 --- /dev/null +++ b/mods/illuna @@ -0,0 +1 @@ +Subproject commit 4c0d933695217b67c0bf9236394280145ba41e57 diff --git a/mods/inspector b/mods/inspector new file mode 160000 index 00000000..d2987fa7 --- /dev/null +++ b/mods/inspector @@ -0,0 +1 @@ +Subproject commit d2987fa77c0866795da9362e62b6ff3661f26bf2 diff --git a/mods/irc b/mods/irc new file mode 160000 index 00000000..d4724a80 --- /dev/null +++ b/mods/irc @@ -0,0 +1 @@ +Subproject commit d4724a8090f3bf5d4ebeccb848af9af17a252d5d diff --git a/mods/magical_potion b/mods/magical_potion new file mode 160000 index 00000000..967f2d0d --- /dev/null +++ b/mods/magical_potion @@ -0,0 +1 @@ +Subproject commit 967f2d0d5c635836fa56bdbc0d62fa5d23556959 diff --git a/mods/medieval_craft b/mods/medieval_craft new file mode 160000 index 00000000..d3868c16 --- /dev/null +++ b/mods/medieval_craft @@ -0,0 +1 @@ +Subproject commit d3868c16289c84010890a65191c78d0600d5cd10 diff --git a/mods/mesecons b/mods/mesecons new file mode 160000 index 00000000..965734a9 --- /dev/null +++ b/mods/mesecons @@ -0,0 +1 @@ +Subproject commit 965734a99536f94090681e91268f74a347fbd687 diff --git a/mods/mini_sun b/mods/mini_sun new file mode 160000 index 00000000..1094d820 --- /dev/null +++ b/mods/mini_sun @@ -0,0 +1 @@ +Subproject commit 1094d8205673c09cdcce9d2e102b2330ccd0baaa diff --git a/mods/mobs_animal b/mods/mobs_animal new file mode 160000 index 00000000..80b157eb --- /dev/null +++ b/mods/mobs_animal @@ -0,0 +1 @@ +Subproject commit 80b157eb20d814513a67c1bd65501ebdd71a05ca diff --git a/mods/mobs_monster b/mods/mobs_monster new file mode 160000 index 00000000..a6e291bf --- /dev/null +++ b/mods/mobs_monster @@ -0,0 +1 @@ +Subproject commit a6e291bf4cd26b676f28650269b5160a328686f8 diff --git a/mods/mobs_redo b/mods/mobs_redo new file mode 160000 index 00000000..95a2e8a4 --- /dev/null +++ b/mods/mobs_redo @@ -0,0 +1 @@ +Subproject commit 95a2e8a47e4ab430e793e22deed8eb5635f27b89 diff --git a/mods/moreblocks b/mods/moreblocks new file mode 160000 index 00000000..df8c150c --- /dev/null +++ b/mods/moreblocks @@ -0,0 +1 @@ +Subproject commit df8c150c9a7867dc5b5168ef28d690a033c3f594 diff --git a/mods/moreores b/mods/moreores new file mode 160000 index 00000000..f96a9f02 --- /dev/null +++ b/mods/moreores @@ -0,0 +1 @@ +Subproject commit f96a9f028e7765b6955feff79d0cd710e89b0366 diff --git a/mods/moretrees b/mods/moretrees new file mode 160000 index 00000000..2967c107 --- /dev/null +++ b/mods/moretrees @@ -0,0 +1 @@ +Subproject commit 2967c107d8e90a531ded53357e83ef904c3ea6cd diff --git a/mods/mtcandy b/mods/mtcandy new file mode 160000 index 00000000..22bf1b4f --- /dev/null +++ b/mods/mtcandy @@ -0,0 +1 @@ +Subproject commit 22bf1b4fb3f1e024b9b0de15885177be2d93c0e9 diff --git a/mods/mtfoods b/mods/mtfoods new file mode 160000 index 00000000..78939363 --- /dev/null +++ b/mods/mtfoods @@ -0,0 +1 @@ +Subproject commit 7893936328b402e5be3cb9366bb37428a7a76cd3 diff --git a/mods/mycastle b/mods/mycastle new file mode 160000 index 00000000..4c21ab4a --- /dev/null +++ b/mods/mycastle @@ -0,0 +1 @@ +Subproject commit 4c21ab4a5e168b1e5b170099eb399becb0f8923d diff --git a/mods/nyancat/init.lua b/mods/nyancat/init.lua index 7192beb8..2feaa9e5 100644 --- a/mods/nyancat/init.lua +++ b/mods/nyancat/init.lua @@ -85,5 +85,8 @@ minetest.register_alias("default:nyancat", "nyancat:nyancat") minetest.register_alias("default:nyancat_rainbow", "nyancat:nyancat_rainbow") minetest.register_alias("nyancat", "nyancat:nyancat") minetest.register_alias("nyancat_rainbow", "nyancat:nyancat_rainbow") +minetest.register_alias("default:nyancat_rainbow_doublepanel", "nyancat:nyancat_rainbow_doublepanel") +minetest.register_alias("default:nyancat_rainbow_outerstair", "nyancat:nyancat_rainbow_outerstair") + default.make_nyancat = nyancat.place default.generate_nyancats = nyancat.generate diff --git a/mods/pipeworks b/mods/pipeworks new file mode 160000 index 00000000..73e94e3c --- /dev/null +++ b/mods/pipeworks @@ -0,0 +1 @@ +Subproject commit 73e94e3c070555e3fcd3dd06c606c49480d4823c diff --git a/mods/pkarcs b/mods/pkarcs new file mode 160000 index 00000000..bb5471c5 --- /dev/null +++ b/mods/pkarcs @@ -0,0 +1 @@ +Subproject commit bb5471c5259453860fd8413fda184adf70a80624 diff --git a/mods/plantlife_modpack b/mods/plantlife_modpack new file mode 160000 index 00000000..ad1b08ea --- /dev/null +++ b/mods/plantlife_modpack @@ -0,0 +1 @@ +Subproject commit ad1b08ea0a492bb7361e89d45428c605795ec87d diff --git a/mods/playereffects b/mods/playereffects new file mode 160000 index 00000000..860358bc --- /dev/null +++ b/mods/playereffects @@ -0,0 +1 @@ +Subproject commit 860358bcd1b30cbf5888588fe50d1b02dadbea43 diff --git a/mods/playerskins b/mods/playerskins new file mode 160000 index 00000000..1d8d9a2d --- /dev/null +++ b/mods/playerskins @@ -0,0 +1 @@ +Subproject commit 1d8d9a2db8d85ba0c18aa83f0e3ff40ac7ca9d52 diff --git a/mods/boats/depends.txt b/mods/random_messages/depends.txt similarity index 100% rename from mods/boats/depends.txt rename to mods/random_messages/depends.txt diff --git a/mods/random_messages/init.lua b/mods/random_messages/init.lua new file mode 100644 index 00000000..baf09603 --- /dev/null +++ b/mods/random_messages/init.lua @@ -0,0 +1,148 @@ +--[[ +RandomMessages mod by arsdragonfly. +arsdragonfly@gmail.com +6/19/2013 +--]] +--Time between two subsequent messages. +local MESSAGE_INTERVAL = 0 + +math.randomseed(os.time()) + +random_messages = {} +random_messages.messages = {} --This table contains all messages. + +function table.count( t ) + local i = 0 + for k in pairs( t ) do i = i + 1 end + return i +end + +function table.random( t ) + local rk = math.random( 1, table.count( t ) ) + local i = 1 + for k, v in pairs( t ) do + if ( i == rk ) then return v, k end + i = i + 1 + end +end + +function random_messages.initialize() --Set the interval in minetest.conf. + minetest.setting_set("random_messages_interval",7200) + minetest.setting_save(); + return 1800 +end + +function random_messages.set_interval() --Read the interval from minetest.conf(set it if it doesn'st exist) + MESSAGE_INTERVAL = tonumber(minetest.setting_get("random_messages_interval")) or random_messages.initialize() +end + +function random_messages.check_params(name,func,params) + local stat,msg = func(params) + if not stat then + minetest.chat_send_player(name,msg) + return false + end + return true +end + +function random_messages.read_messages() + local mc = core.colorize + local mcc = "#A3B5CB" + random_messages.messages = { + mc(mcc, "# Illuna-Notes: Soup is one of the most powerful hungerfighters."), + mc(mcc, "# Illuna-Notes: Actual talk with the players on our Mumbleserver at talk.illuna.rocks"), + mc(mcc, "# Illuna-Notes: Enjoy Illuna? Invite your friends today, and tell the people about us."), + mc(mcc, "# Illuna-Notes: Have something to share? Join the community https://meet.illuna.rocks today!"), + mc(mcc, "# Illuna-Notes: Sell and buy stuff on the Illuna marketplace. It is below the spawnhouse."), + mc(mcc, "# Illuna-Notes: Did you know? The Illuna universe contains also worlds at port 30001 and 30002."), + mc(mcc, "# Illuna-Notes: Misplaced shadow or light? Stuck water or lava? Use /mapfix to fix it!"), + mc(mcc, "# Illuna-Notes: You can help keeping our servers fast by dropping a small donation at https://illuna.rocks/donate <3"), + mc(mcc, "# Illuna-Notes: You can help keeping our servers fast by using as few pipes on your machines as possible."), + mc(mcc, "# Illuna-Notes: You can help keeping our servers fast by avoinig loops and using trashcans on your pipeworks system."), + } +end + +function random_messages.display_message(message_number) + local msg = random_messages.messages[message_number] or message_number + if msg then + minetest.chat_send_all(msg) + end +end + +function random_messages.show_message() + random_messages.display_message(table.random(random_messages.messages)) +end + +function random_messages.list_messages() + local str = "" + for k,v in pairs(random_messages.messages) do + str = str .. k .. " | " .. v .. "\n" + end + return str +end + +function random_messages.remove_message(k) + table.remove(random_messages.messages,k) + random_messages.save_messages() +end + +function random_messages.add_message(t) + table.insert(random_messages.messages,table.concat(t," ",2)) + random_messages.save_messages() +end + +function random_messages.save_messages() + local output = io.open(minetest.get_worldpath().."/random_messages","w") + for k,v in pairs(random_messages.messages) do + output:write(v .. "\n") + end + io.close(output) +end + +--When server starts: +random_messages.set_interval() +random_messages.read_messages() + +local TIMER = 0 +minetest.register_globalstep(function(dtime) + TIMER = TIMER + dtime; + if TIMER > MESSAGE_INTERVAL then + random_messages.show_message() + TIMER = 0 + end +end) + +local register_chatcommand_table = { + params = "viewmessages | removemessage | addmessage ", + privs = {server = true}, + description = "View and/or alter the server's random messages", + func = function(name,param) + local t = string.split(param, " ") + if t[1] == "viewmessages" then + minetest.chat_send_player(name,random_messages.list_messages()) + elseif t[1] == "removemessage" then + if not random_messages.check_params( + name, + function (params) + if not tonumber(params[2]) or + random_messages.messages[tonumber(params[2])] == nil then + return false,"ERROR: No such message." + end + return true + end, + t) then return end + random_messages.remove_message(t[2]) + elseif t[1] == "addmessage" then + if not t[2] then + minetest.chat_send_player(name,"ERROR: No message.") + else + random_messages.add_message(t) + end + else + minetest.chat_send_player(name,"ERROR: Invalid command.") + end + end +} + +minetest.register_chatcommand("random_messages", register_chatcommand_table) +minetest.register_chatcommand("rmessages", register_chatcommand_table) diff --git a/mods/random_messages/readme.md b/mods/random_messages/readme.md new file mode 100644 index 00000000..ead798a7 --- /dev/null +++ b/mods/random_messages/readme.md @@ -0,0 +1,17 @@ +RandomMessages mod by arsdragonfly. +Put your messages in (world directory)/random_messages,1 message per line. +Messages can be all kinds of hints, mod usage, etc. +Add/Remove messages on the fly: +/rmessages viewmessages +to see all the messages. +/rmessages addmessage blah blah blah +to add the random message blah blah blah. +/rmessages removemessage 2 +to remove the 2nd random message in /rmessages viewmessages . +In minetest.conf, random_messages_interval decides how often a message is sent. +Released under CC0. +Special thanks to: +Michael Rasmussen (michael@jamhome.us) +Enjoy it! ^_^ +arsdragonfly@gmail.com +6/19/2013 \ No newline at end of file diff --git a/mods/ranks b/mods/ranks new file mode 160000 index 00000000..53ee9002 --- /dev/null +++ b/mods/ranks @@ -0,0 +1 @@ +Subproject commit 53ee9002019640b844ed483149f6cde9a20f3b2c diff --git a/mods/scaffolding b/mods/scaffolding new file mode 160000 index 00000000..9e47250b --- /dev/null +++ b/mods/scaffolding @@ -0,0 +1 @@ +Subproject commit 9e47250b387953043733ace606b25f51c399ef46 diff --git a/mods/screwdriver/init.lua b/mods/screwdriver/init.lua index f2596437..3b24f005 100644 --- a/mods/screwdriver/init.lua +++ b/mods/screwdriver/init.lua @@ -140,7 +140,7 @@ screwdriver.handler = function(itemstack, user, pointed_thing, mode, uses) return itemstack end --- Screwdriver +-- Screwdriver Steel minetest.register_tool("screwdriver:screwdriver", { description = "Screwdriver (left-click rotates face, right-click rotates axis)", inventory_image = "screwdriver.png", @@ -154,6 +154,33 @@ minetest.register_tool("screwdriver:screwdriver", { end, }) +-- Screwdriver Diamond +minetest.register_tool("screwdriver:screwdriver_diamond", { + description = "Screwdriver (left-click rotates face, right-click rotates axis)", + inventory_image = "screwdriver_diamond.png", + on_use = function(itemstack, user, pointed_thing) + screwdriver.handler(itemstack, user, pointed_thing, screwdriver.ROTATE_FACE, 800) + return itemstack + end, + on_place = function(itemstack, user, pointed_thing) + screwdriver.handler(itemstack, user, pointed_thing, screwdriver.ROTATE_AXIS, 800) + return itemstack + end, +}) + +-- Screwdriver Mithril +minetest.register_tool("screwdriver:screwdriver_mithril", { + description = "Screwdriver (left-click rotates face, right-click rotates axis)", + inventory_image = "screwdriver_mithril.png", + on_use = function(itemstack, user, pointed_thing) + screwdriver.handler(itemstack, user, pointed_thing, screwdriver.ROTATE_FACE, 1400) + return itemstack + end, + on_place = function(itemstack, user, pointed_thing) + screwdriver.handler(itemstack, user, pointed_thing, screwdriver.ROTATE_AXIS, 1400) + return itemstack + end, +}) minetest.register_craft({ output = "screwdriver:screwdriver", @@ -163,6 +190,25 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = "screwdriver:screwdriver_diamond", + recipe = { + {"default:diamond"}, + {"group:stick"} + } +}) + +if minetest.get_modpath("moreores") then + minetest.register_craft({ + output = "screwdriver:screwdriver_mithril", + recipe = { + {"moreores:mithril_ingot"}, + {"group:stick"} + } + }) +end + + minetest.register_alias("screwdriver:screwdriver1", "screwdriver:screwdriver") minetest.register_alias("screwdriver:screwdriver2", "screwdriver:screwdriver") minetest.register_alias("screwdriver:screwdriver3", "screwdriver:screwdriver") diff --git a/mods/screwdriver/textures/screwdriver_diamond.png b/mods/screwdriver/textures/screwdriver_diamond.png new file mode 100644 index 00000000..4fe38582 Binary files /dev/null and b/mods/screwdriver/textures/screwdriver_diamond.png differ diff --git a/mods/screwdriver/textures/screwdriver_mithril.png b/mods/screwdriver/textures/screwdriver_mithril.png new file mode 100644 index 00000000..80503711 Binary files /dev/null and b/mods/screwdriver/textures/screwdriver_mithril.png differ diff --git a/mods/shadow b/mods/shadow new file mode 160000 index 00000000..2801de7a --- /dev/null +++ b/mods/shadow @@ -0,0 +1 @@ +Subproject commit 2801de7a72438b2bfbd21c476b4b386fe7b893c7 diff --git a/mods/smartshop/Readme.txt b/mods/smartshop/Readme.txt new file mode 100644 index 00000000..e203519b --- /dev/null +++ b/mods/smartshop/Readme.txt @@ -0,0 +1,14 @@ +Licenses: code LGPL 2.1 media CC BY-SA 3.0 +Version: 1r +Name: smartshop +Created by: UjEdwin + + +Like the title says, this is a smart and easy shop, that will also fit everywhere. + +it is a mix of a vending machine, a shop, item frames and light. + +You can toogle it unlimited or limited if you have give or creative +(unlimited will not take or add stuff to its inventory) + +It also works with pipeworks \ No newline at end of file diff --git a/mods/smartshop/depends.txt b/mods/smartshop/depends.txt new file mode 100644 index 00000000..4ad96d51 --- /dev/null +++ b/mods/smartshop/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/smartshop/depends.txt~960a9de... fix mergeconflicts b/mods/smartshop/depends.txt~960a9de... fix mergeconflicts new file mode 100644 index 00000000..4ad96d51 --- /dev/null +++ b/mods/smartshop/depends.txt~960a9de... fix mergeconflicts @@ -0,0 +1 @@ +default diff --git a/mods/smartshop/depends.txt~HEAD b/mods/smartshop/depends.txt~HEAD new file mode 100644 index 00000000..4ad96d51 --- /dev/null +++ b/mods/smartshop/depends.txt~HEAD @@ -0,0 +1 @@ +default diff --git a/mods/smartshop/init.lua b/mods/smartshop/init.lua new file mode 100644 index 00000000..6e1d85f4 --- /dev/null +++ b/mods/smartshop/init.lua @@ -0,0 +1,267 @@ +smartshop={user={},tmp={},dir={{x=0,y=0,z=-1},{x=-1,y=0,z=0},{x=0,y=0,z=1},{x=1,y=0,z=0}},dpos={ +{{x=0.2,y=0.2,z=0},{x=-0.2,y=0.2,z=0},{x=0.2,y=-0.2,z=0},{x=-0.2,y=-0.2,z=0}}, +{{x=0,y=0.2,z=0.2},{x=0,y=0.2,z=-0.2},{x=0,y=-0.2,z=0.2},{x=0,y=-0.2,z=-0.2}}, +{{x=-0.2,y=0.2,z=0},{x=0.2,y=0.2,z=0},{x=-0.2,y=-0.2,z=0},{x=0.2,y=-0.2,z=0}}, +{{x=0,y=0.2,z=-0.2},{x=0,y=0.2,z=0.2},{x=0,y=-0.2,z=-0.2},{x=0,y=-0.2,z=0.2}}} +} + +minetest.register_craft({ + output = "smartshop:shop", + recipe = { + {"default:chest_locked", "default:chest_locked", "default:chest_locked"}, + {"default:sign_wall_wood", "default:chest_locked", "default:sign_wall_wood"}, + {"default:sign_wall_wood", "default:torch", "default:sign_wall_wood"}, + } +}) + +smartshop.update=function(pos,stat) +--clear + local spos=minetest.pos_to_string(pos) + for _, ob in ipairs(minetest.env:get_objects_inside_radius(pos, 2)) do + if ob and ob:get_luaentity() and ob:get_luaentity().smartshop and ob:get_luaentity().pos==spos then + ob:remove() + end + end + if stat=="clear" then return end +--update + local meta=minetest.get_meta(pos) + local inv = meta:get_inventory() + local node=minetest.get_node(pos) + local dp = smartshop.dir[node.param2+1] + if not dp then return end + pos.x = pos.x + dp.x*0.01 + pos.y = pos.y + dp.y*6.5/16 + pos.z = pos.z + dp.z*0.01 + for i=1,4,1 do + local item=inv:get_stack("give" .. i,1):get_name() + local pos2=smartshop.dpos[node.param2+1][i] + if item~="" then + smartshop.tmp.item=item + smartshop.tmp.pos=spos + local e = minetest.env:add_entity({x=pos.x+pos2.x,y=pos.y+pos2.y,z=pos.z+pos2.z},"smartshop:item") + e:setyaw(math.pi*2 - node.param2 * math.pi/2) + end + end +end + + +minetest.register_entity("smartshop:item",{ + hp_max = 1, + visual="wielditem", + visual_size={x=.20,y=.20}, + collisionbox = {0,0,0,0,0,0}, + physical=false, + textures={"air"}, + smartshop=true, + on_activate = function(self, staticdata) + if smartshop.tmp.item ~= nil then + self.item=smartshop.tmp.item + self.pos=smartshop.tmp.pos + smartshop.tmp={} + else + if staticdata ~= nil and staticdata ~= "" then + local data = staticdata:split(';') + if data and data[1] and data[2] then + self.item = data[1] + self.pos = data[2] + end + end + end + if self.item ~= nil then + self.object:set_properties({textures={self.item}}) + else + self.object:remove() + end + end, + get_staticdata = function(self) + if self.item ~= nil and self.pos ~= nil then + return self.item .. ';' .. self.pos + end + return "" + end, +}) + + +smartshop.showform=function(pos,player,re) + local meta=minetest.get_meta(pos) + local creative=meta:get_int("creative") + local inv = meta:get_inventory() + local gui="" + local spos=pos.x .. "," .. pos.y .. "," .. pos.z + local owner=meta:get_string("owner")==player:get_player_name() + if re then owner=false end + smartshop.user[player:get_player_name()]=pos + if owner then + gui="" + .."size[8,10]" + .."button_exit[6,0;1.5,1;customer;Customer]" + .."label[0,0.2;Item:]" + .."label[0,1.2;Price:]" + .."list[nodemeta:" .. spos .. ";give1;2,0;1,1;]" + .."list[nodemeta:" .. spos .. ";pay1;2,1;1,1;]" + .."list[nodemeta:" .. spos .. ";give2;3,0;1,1;]" + .."list[nodemeta:" .. spos .. ";pay2;3,1;1,1;]" + .."list[nodemeta:" .. spos .. ";give3;4,0;1,1;]" + .."list[nodemeta:" .. spos .. ";pay3;4,1;1,1;]" + .."list[nodemeta:" .. spos .. ";give4;5,0;1,1;]" + .."list[nodemeta:" .. spos .. ";pay4;5,1;1,1;]" + if creative==1 then + gui=gui .."label[0.5,-0.4;Your stock is unlimeted becaouse you have creative or give]" + .."button[6,1;2.2,1;tooglelime;Toogle lime]" + end + gui=gui + .."list[nodemeta:" .. spos .. ";main;0,2;8,4;]" + .."list[current_player;main;0,6.2;8,4;]" + .."listring[nodemeta:" .. spos .. ";main]" + .."listring[current_player;main]" + else + gui="" + .."size[8,6]" + .."list[current_player;main;0,2.2;8,4;]" + .."label[0,0.2;Item:]" + .."label[0,1.2;Price:]" + .."list[nodemeta:" .. spos .. ";give1;2,0;1,1;]" + .."item_image_button[2,1;1,1;".. inv:get_stack("pay1",1):get_name() ..";buy1;\n\n\b\b\b\b\b" .. inv:get_stack("pay1",1):get_count() .."]" + .."list[nodemeta:" .. spos .. ";give2;3,0;1,1;]" + .."item_image_button[3,1;1,1;".. inv:get_stack("pay2",1):get_name() ..";buy2;\n\n\b\b\b\b\b" .. inv:get_stack("pay2",1):get_count() .."]" + .."list[nodemeta:" .. spos .. ";give3;4,0;1,1;]" + .."item_image_button[4,1;1,1;".. inv:get_stack("pay3",1):get_name() ..";buy3;\n\n\b\b\b\b\b" .. inv:get_stack("pay3",1):get_count() .."]" + .."list[nodemeta:" .. spos .. ";give4;5,0;1,1;]" + .."item_image_button[5,1;1,1;".. inv:get_stack("pay4",1):get_name() ..";buy4;\n\n\b\b\b\b\b" .. inv:get_stack("pay4",1):get_count() .."]" + end + minetest.after((0.1), function(gui) + return minetest.show_formspec(player:get_player_name(), "smartshop.showform",gui) + end, gui) +end +minetest.register_on_player_receive_fields(function(player, form, pressed) + if form=="smartshop.showform" then + if pressed.customer then + return smartshop.showform(smartshop.user[player:get_player_name()],player,true) + elseif pressed.tooglelime then + local pos=smartshop.user[player:get_player_name()] + local meta=minetest.get_meta(pos) + local pname=player:get_player_name() + if meta:get_int("type")==0 then + meta:set_int("type",1) + minetest.chat_send_player(pname, "Your stock is limeted") + else + meta:set_int("type",0) + minetest.chat_send_player(pname, "Your stock is unlimeted") + end + elseif not pressed.quit then + local n=1 + for i=1,4,1 do + n=i + if pressed["buy" .. i] then break end + end + local pos=smartshop.user[player:get_player_name()] + local meta=minetest.get_meta(pos) + local type=meta:get_int("type") + local inv = meta:get_inventory() + local pinv=player:get_inventory() + local pname=player:get_player_name() + if pressed["buy" .. n] then + local name=inv:get_stack("give" .. n,1):get_name() + local stack=name .." ".. inv:get_stack("give" .. n,1):get_count() + local pay=inv:get_stack("pay" .. n,1):get_name() .." ".. inv:get_stack("pay" .. n,1):get_count() + if name~="" then + if type==1 and inv:room_for_item("main", pay)==false then minetest.chat_send_player(pname, "Error: The owners stock is full, cant receive, exchange aborted.") return end + if type==1 and inv:contains_item("main", stack)==false then minetest.chat_send_player(pname, "Error: The owners stock is end.") return end + if not pinv:contains_item("main", pay) then minetest.chat_send_player(pname, "Error: You dont have enough in your inventory to buy this, exchange aborted.") return end + if not pinv:room_for_item("main", stack) then minetest.chat_send_player(pname, "Error: Your inventory is full, exchange aborted.") return end + pinv:remove_item("main", pay) + pinv:add_item("main", stack) + if type==1 then + inv:remove_item("main", stack) + inv:add_item("main", pay) + end + end + end + else + if smartshop.user[player:get_player_name()] then + local meta=minetest.get_meta(smartshop.user[player:get_player_name()]) + if meta:get_string("owner")==player:get_player_name() then + smartshop.update(smartshop.user[player:get_player_name()],"update") + end + end + smartshop.user[player:get_player_name()]=nil + end + end +end) + +minetest.register_node("smartshop:shop", { + description = "Smartshop", + tiles = {"default_chest_top.png^[colorize:#ffffff77^default_obsidian_glass.png"}, + groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1,tubedevice = 1, tubedevice_receiver = 1}, + drawtype="nodebox", + node_box = {type="fixed",fixed={-0.5,-0.5,-0.0,0.5,0.5,0.5}}, + paramtype2="facedir", + paramtype = "light", + sunlight_propagates = true, + light_source = 10, + tube = {insert_object = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local added = inv:add_item("main", stack) + return added + end, + can_insert = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return inv:room_for_item("main", stack) + end, + input_inventory = "main", + connect_sides = {left = 1, right = 1, front = 1, back = 1, top = 1, bottom = 1}}, +after_place_node = function(pos, placer) + local meta=minetest.get_meta(pos) + meta:set_string("owner",placer:get_player_name()) + meta:set_string("infotext", "Shop by: " .. placer:get_player_name()) + meta:set_int("type",1) + if minetest.check_player_privs(placer:get_player_name(), {creative=true}) or minetest.check_player_privs(placer:get_player_name(), {give=true}) then + meta:set_int("creative",1) + meta:set_int("type",0) + end + end, +on_construct = function(pos) + local meta=minetest.get_meta(pos) + meta:set_int("state", 0) + meta:get_inventory():set_size("main", 32) + meta:get_inventory():set_size("give1", 1) + meta:get_inventory():set_size("pay1", 1) + meta:get_inventory():set_size("give2", 1) + meta:get_inventory():set_size("pay2", 1) + meta:get_inventory():set_size("give3", 1) + meta:get_inventory():set_size("pay3", 1) + meta:get_inventory():set_size("give4", 1) + meta:get_inventory():set_size("pay4", 1) + end, +on_rightclick = function(pos, node, player, itemstack, pointed_thing) + smartshop.showform(pos,player) + end, +allow_metadata_inventory_put = function(pos, listname, index, stack, player) + if minetest.get_meta(pos):get_string("owner")==player:get_player_name() then + return stack:get_count() + end + return 0 + end, +allow_metadata_inventory_take = function(pos, listname, index, stack, player) + if minetest.get_meta(pos):get_string("owner")==player:get_player_name() then + return stack:get_count() + end + return 0 + end, +allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + if minetest.get_meta(pos):get_string("owner")==player:get_player_name() then + return count + end + return 0 + end, +can_dig = function(pos, player) + local meta=minetest.get_meta(pos) + local inv=meta:get_inventory() + if (meta:get_string("owner")==player:get_player_name() and inv:is_empty("main") and inv:is_empty("pay1") and inv:is_empty("pay2") and inv:is_empty("pay3") and inv:is_empty("pay4") and inv:is_empty("give1") and inv:is_empty("give2") and inv:is_empty("give3") and inv:is_empty("give4")) or meta:get_string("owner")=="" then + smartshop.update(pos,"clear") + return true + end + end, +}) \ No newline at end of file diff --git a/mods/sneak_glitch b/mods/sneak_glitch new file mode 160000 index 00000000..3c230732 --- /dev/null +++ b/mods/sneak_glitch @@ -0,0 +1 @@ +Subproject commit 3c230732c78fc4a8e203356ca5ddf66241506fdf diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 86dadf97..0606916a 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -12,6 +12,9 @@ stairs = {} minetest.register_alias("stairs:stair_pinewood", "stairs:stair_pine_wood") minetest.register_alias("stairs:slab_pinewood", "stairs:slab_pine_wood") +-- https://git.tchncs.de/Illuna-Minetest/illuna/issues/4 + +minetest.register_alias("moretrees:slab_acacia_planks", "stairs:slab_acacia_wood") -- Get setting for replace ABM diff --git a/mods/technic_chests b/mods/technic_chests new file mode 160000 index 00000000..5c6baef9 --- /dev/null +++ b/mods/technic_chests @@ -0,0 +1 @@ +Subproject commit 5c6baef96f7d9cb79ccc6c10b670bf0078d93d55 diff --git a/mods/teleport_potion b/mods/teleport_potion new file mode 160000 index 00000000..8c54c845 --- /dev/null +++ b/mods/teleport_potion @@ -0,0 +1 @@ +Subproject commit 8c54c845a6e4f54f8e2271caa2abfd5dcb1f578c diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 5a405566..46817731 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -1,10 +1,5 @@ tnt = {} - --- Default to enabled when in singleplayer -local enable_tnt = minetest.setting_getbool("enable_tnt") -if enable_tnt == nil then - enable_tnt = minetest.is_singleplayer() -end +core.register_privilege("trusted_player", "special grantings, used for tnt for example") -- loss probabilities array (one in X will be lost) local loss_prob = {} @@ -417,11 +412,14 @@ minetest.register_node("tnt:gunpowder", { on_punch = function(pos, node, puncher) if puncher:get_wielded_item():get_name() == "default:torch" then - minetest.set_node(pos, {name = "tnt:gunpowder_burning"}) - minetest.log("action", puncher:get_player_name() .. + if(minetest.check_player_privs(puncher:get_player_name(), {trusted_player=true})) then + --tnt.burn(pos) + minetest.set_node(pos, {name = "tnt:gunpowder_burning"}) + minetest.log("action", puncher:get_player_name() .. " ignites tnt:gunpowder at " .. minetest.pos_to_string(pos)) - end + end + end end, on_blast = function(pos, intensity) minetest.set_node(pos, {name = "tnt:gunpowder_burning"}) @@ -514,30 +512,29 @@ minetest.register_node("tnt:gunpowder_burning", { minetest.register_craft({ output = "tnt:gunpowder 5", type = "shapeless", + groups = {gunpowder = 1}, recipe = {"default:coal_lump", "default:gravel"} }) -if enable_tnt then - minetest.register_craft({ - output = "tnt:tnt", - recipe = { - {"group:wood", "tnt:gunpowder", "group:wood"}, - {"tnt:gunpowder", "tnt:gunpowder", "tnt:gunpowder"}, - {"group:wood", "tnt:gunpowder", "group:wood"} - } - }) +minetest.register_craft({ + output = "tnt:tnt", + recipe = { + {"group:wood", "tnt:gunpowder", "group:wood"}, + {"tnt:gunpowder", "tnt:gunpowder", "tnt:gunpowder"}, + {"group:wood", "tnt:gunpowder", "group:wood"} + } +}) - minetest.register_abm({ - label = "TNT ignition", - nodenames = {"group:tnt", "tnt:gunpowder"}, - neighbors = {"fire:basic_flame", "default:lava_source", "default:lava_flowing"}, - interval = 4, - chance = 1, - action = function(pos, node) - tnt.burn(pos, node.name) - end, - }) -end +minetest.register_abm({ + label = "TNT ignition", + nodenames = {"group:tnt", "tnt:gunpowder"}, + neighbors = {"fire:basic_flame", "default:lava_source", "default:lava_flowing"}, + interval = 4, + chance = 1, + action = function(pos, node) + tnt.burn(pos, node.name) + end, +}) function tnt.register_tnt(def) local name @@ -554,7 +551,7 @@ function tnt.register_tnt(def) local tnt_burning = def.tiles.burning or def.name .. "_top_burning_animated.png" if not def.damage_radius then def.damage_radius = def.radius * 2 end - if enable_tnt then + --if enable_tnt then minetest.register_node(":" .. name, { description = def.description, tiles = {tnt_top, tnt_bottom, tnt_side}, @@ -588,7 +585,7 @@ function tnt.register_tnt(def) minetest.set_node(pos, {name = name .. "_burning"}) end, }) - end + --end minetest.register_node(":" .. name .. "_burning", { tiles = { @@ -614,7 +611,7 @@ function tnt.register_tnt(def) on_blast = function() end, on_construct = function(pos) minetest.sound_play("tnt_ignite", {pos = pos}) - minetest.get_node_timer(pos):start(4) + minetest.get_node_timer(pos):start(6) minetest.check_for_falling(pos) end, }) diff --git a/mods/wardrobe b/mods/wardrobe new file mode 160000 index 00000000..2d50e4a1 --- /dev/null +++ b/mods/wardrobe @@ -0,0 +1 @@ +Subproject commit 2d50e4a1d0a8b471acbf110846bb6e187ea126b8 diff --git a/mods/wine b/mods/wine new file mode 160000 index 00000000..769f2bb6 --- /dev/null +++ b/mods/wine @@ -0,0 +1 @@ +Subproject commit 769f2bb6e8f32880f5d044ad70f8b8fba8a85ff4 diff --git a/mods/worldedit b/mods/worldedit new file mode 160000 index 00000000..56f77a2f --- /dev/null +++ b/mods/worldedit @@ -0,0 +1 @@ +Subproject commit 56f77a2f278f6ca1731c1f0efe5026ff5c9f4735 diff --git a/mods/xconnected b/mods/xconnected new file mode 160000 index 00000000..1549925d --- /dev/null +++ b/mods/xconnected @@ -0,0 +1 @@ +Subproject commit 1549925d6275af8bf7cdda122547bbb23e1b59fd diff --git a/mods/xdecor b/mods/xdecor new file mode 160000 index 00000000..03ab06ef --- /dev/null +++ b/mods/xdecor @@ -0,0 +1 @@ +Subproject commit 03ab06efae7a71140318e2304411c33f61c91737 diff --git a/readme.md b/readme.md new file mode 100644 index 00000000..c99649f2 --- /dev/null +++ b/readme.md @@ -0,0 +1,8 @@ +#### Minetest Game [minetest_game] + +The main subgame for the Minetest engine + +##### Caution: this repository contains modifications for the [illuna-minetest.tk](//illuna-minetest.tk) Minetestserver. + +Please **don't use** this subgame for your production environment. +* [to the original minetest_game](https://github.com/minetest/minetest_game)