From 88d591ae01cf9eec45ecb9a6544896b698c2d435 Mon Sep 17 00:00:00 2001 From: Milan Ihl Date: Wed, 2 Dec 2015 10:34:06 +0100 Subject: [PATCH 001/383] disable only singleplayer-check --- mods/tnt/init.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 8ce018b4..532e698c 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -1,11 +1,11 @@ -- Default to enabled in singleplayer and disabled in multiplayer -local singleplayer = minetest.is_singleplayer() -local setting = minetest.setting_getbool("enable_tnt") -if (not singleplayer and setting ~= true) or - (singleplayer and setting == false) then - return -end +--local singleplayer = minetest.is_singleplayer() +--local setting = minetest.setting_getbool("enable_tnt") +--if (not singleplayer and setting ~= true) or +-- (singleplayer and setting == false) then +-- return +--end -- loss probabilities array (one in X will be lost) local loss_prob = {} From 4330e88e1da3d2ab05cd78bbfd4ca457a883ce6c Mon Sep 17 00:00:00 2001 From: Milan Ihl Date: Wed, 2 Dec 2015 10:43:05 +0100 Subject: [PATCH 002/383] tnt works only with grantet priv - removed mesecons temporally --- mods/tnt/init.lua | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 532e698c..e769c412 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -1,11 +1,14 @@ +-- TNT will need privilege! +core.register_privilege("trusted_player", "special grantings, used for tnt for example") +---We want to use it on server, so this is commented -- Default to enabled in singleplayer and disabled in multiplayer ---local singleplayer = minetest.is_singleplayer() ---local setting = minetest.setting_getbool("enable_tnt") ---if (not singleplayer and setting ~= true) or --- (singleplayer and setting == false) then --- return ---end +-- local singleplayer = minetest.is_singleplayer() +-- local setting = minetest.setting_getbool("enable_tnt") +-- if (not singleplayer and setting ~= true) or +-- (singleplayer and setting == false) then +-- return +-- end -- loss probabilities array (one in X will be lost) local loss_prob = {} @@ -216,19 +219,21 @@ minetest.register_node("tnt:tnt", { description = "TNT", tiles = {"tnt_top.png", "tnt_bottom.png", "tnt_side.png"}, is_ground_content = false, - groups = {dig_immediate=2, mesecon=2}, + groups = {dig_immediate=2}, sounds = default.node_sound_wood_defaults(), on_punch = function(pos, node, puncher) if puncher:get_wielded_item():get_name() == "default:torch" then - minetest.sound_play("tnt_ignite", {pos=pos}) - minetest.set_node(pos, {name="tnt:tnt_burning"}) - minetest.get_node_timer(pos):start(4) + if(minetest.check_player_privs(puncher:get_player_name(), {trusted_player=true})) then + minetest.sound_play("tnt_ignite", {pos=pos}) + minetest.set_node(pos, {name="tnt:tnt_burning"}) + minetest.get_node_timer(pos):start(4) + end end end, on_blast = function(pos, intensity) burn(pos) end, - mesecons = {effector = {action_on = boom}}, + --mesecons = {effector = {action_on = boom}}, }) minetest.register_node("tnt:tnt_burning", { @@ -283,9 +288,11 @@ minetest.register_node("tnt:gunpowder", { sounds = default.node_sound_leaves_defaults(), on_punch = function(pos, node, puncher) - if puncher:get_wielded_item():get_name() == "default:torch" then - burn(pos) + if puncher:get_wielded_item():get_name() == "default:torch" then + if(minetest.check_player_privs(puncher:get_player_name(), {trusted_player=true})) then + burn(pos) end + end end, on_blast = function(pos, intensity) burn(pos) From 5112ff6bbc44af89ebcad1e554668692b3ed4a05 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 26 Dec 2015 21:41:52 +0100 Subject: [PATCH 003/383] add note for bones position --- mods/bones/init.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mods/bones/init.lua b/mods/bones/init.lua index f35d5192..8e3e59e8 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -181,7 +181,10 @@ minetest.register_on_dieplayer(function(player) end minetest.set_node(pos, {name="bones:bones", param2=param2}) - + + minetest.chat_send_player(player_name, "Your stuff is waiting for you at "..minetest.pos_to_string(pos).. ". Go and grab it! ;-)") + 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() inv:set_size("main", 8*4) From 085cd9f0880367fd8d250f33308e669e4a9ffba1 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 26 Dec 2015 21:50:56 +0100 Subject: [PATCH 004/383] our initial stuff --- mods/give_initial_stuff/init.lua | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/mods/give_initial_stuff/init.lua b/mods/give_initial_stuff/init.lua index c65ddeae..6d273fc2 100644 --- a/mods/give_initial_stuff/init.lua +++ b/mods/give_initial_stuff/init.lua @@ -1,12 +1,21 @@ 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:torch 99') - player:get_inventory():add_item('main', 'default:axe_steel') - player:get_inventory():add_item('main', 'default:shovel_steel') - player:get_inventory():add_item('main', 'default:cobble 99') - end -end) + --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', 'craft_guide:sign_wall 1') + player:get_inventory():add_item('main', '') + player:get_inventory():add_item('main', '') + player:get_inventory():add_item('main', '') + 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') + + end +end) From 4710370260879b3a79e41dcdb838a089ac8038d6 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 13 Jan 2016 13:40:57 +0100 Subject: [PATCH 005/383] replace default boats with tenplus1 boats mod --- mods/boats | 1 + mods/boats/README.txt | 16 - mods/boats/depends.txt | 1 - mods/boats/init.lua | 247 -- mods/boats/models/boat.obj | 3111 ------------------------ mods/boats/textures/boat_inventory.png | Bin 851 -> 0 bytes mods/boats/textures/boat_wield.png | Bin 546 -> 0 bytes 7 files changed, 1 insertion(+), 3375 deletions(-) create mode 160000 mods/boats delete mode 100644 mods/boats/README.txt delete mode 100644 mods/boats/depends.txt delete mode 100644 mods/boats/init.lua delete mode 100644 mods/boats/models/boat.obj delete mode 100644 mods/boats/textures/boat_inventory.png delete mode 100644 mods/boats/textures/boat_wield.png diff --git a/mods/boats b/mods/boats new file mode 160000 index 00000000..ffaf921c --- /dev/null +++ b/mods/boats @@ -0,0 +1 @@ +Subproject commit ffaf921ce4a5644c62eced2754bffe1a41950e73 diff --git a/mods/boats/README.txt b/mods/boats/README.txt deleted file mode 100644 index 1de71678..00000000 --- a/mods/boats/README.txt +++ /dev/null @@ -1,16 +0,0 @@ -Minetest Game mod: boats -======================== -by PilzAdam - -License of source code: ------------------------ -WTFPL - -License of media (textures and sounds): ---------------------------------------- -WTFPL - -Authors of media files: ------------------------ -textures: Zeg9 -model: thetoon and Zeg9, modified by PavelS(SokolovPavel) diff --git a/mods/boats/depends.txt b/mods/boats/depends.txt deleted file mode 100644 index 4ad96d51..00000000 --- a/mods/boats/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/boats/init.lua b/mods/boats/init.lua deleted file mode 100644 index a7e62e43..00000000 --- a/mods/boats/init.lua +++ /dev/null @@ -1,247 +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, - collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5}, - visual = "mesh", - mesh = "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) - self.object:setyaw(clicker:get_look_yaw() - math.pi / 2) - 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 - -- delay remove to ensure player is detached - minetest.after(0.1, function() - self.object:remove() - end) - if not minetest.setting_getbool("creative_mode") then - local inv = puncher:get_inventory() - if inv:room_for_item("main", "boats:boat") then - inv:add_item("main", "boats:boat") - else - minetest.add_item(self.object:getpos(), "boats:boat") - end - 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) > 4.5 then - self.v = 4.5 * get_sign(self.v) - end - - local p = self.object:getpos() - p.y = p.y - 0.5 - local new_velo = {x = 0, y = 0, z = 0} - 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 >= 4.5 then - y = 4.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 = "boat_inventory.png", - wield_image = "boat_wield.png", - wield_scale = {x = 2, y = 2, z = 1}, - liquids_pointable = true, - - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" then - return - end - if not is_water(pointed_thing.under) then - return - end - pointed_thing.under.y = pointed_thing.under.y + 0.5 - minetest.add_entity(pointed_thing.under, "boats:boat") - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - return itemstack - end, -}) - - -minetest.register_craft({ - output = "boats:boat", - recipe = { - {"", "", "" }, - {"group:wood", "", "group:wood"}, - {"group:wood", "group:wood", "group:wood"}, - }, -}) diff --git a/mods/boats/models/boat.obj b/mods/boats/models/boat.obj deleted file mode 100644 index 8c3424fa..00000000 --- a/mods/boats/models/boat.obj +++ /dev/null @@ -1,3111 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: '' -# www.blender.org -v -6.786140 -1.967150 -4.863200 -v -6.786140 -3.034000 -6.001260 -v -6.786140 -3.034000 -4.863200 -v -6.786140 -1.967150 -3.725140 -v -6.786140 -3.034000 -3.725140 -v -6.786140 -1.967150 -6.001260 -v -6.786140 -3.034000 -7.139320 -v -6.786140 -1.967150 -7.139320 -v -6.786140 -3.034000 -8.277380 -v -6.786140 -1.967150 -8.277380 -v -6.786140 -3.034000 -9.415440 -v -6.786140 -1.967150 -9.415440 -v -6.786140 -1.967150 -2.587080 -v -6.786140 -3.034000 -2.587080 -v -6.786140 -1.967150 -1.449020 -v -6.786140 -3.034000 -1.449020 -v -6.786140 -1.967150 -0.310965 -v -6.786140 -3.034000 -0.310965 -v -6.786140 -1.967150 0.827094 -v -6.786140 -3.034000 0.827094 -v -6.786140 -1.967150 1.965150 -v -6.786140 -3.034000 1.965150 -v -6.786140 -1.967150 3.103210 -v -6.786140 -3.034000 3.103210 -v -6.786140 -1.967150 4.241270 -v -6.786140 -3.034000 4.241270 -v -6.786140 -1.967150 5.379330 -v -6.786140 -3.034000 5.379330 -v -6.786140 -1.967150 6.517390 -v -6.786140 -3.034000 6.517390 -v -6.786140 -1.967150 7.655450 -v -6.786140 -3.034000 7.655450 -v -6.786140 -1.967150 8.793510 -v -6.786140 -3.033999 8.793510 -v 5.732520 -1.967150 -8.277380 -v 5.732520 -3.034000 -7.139320 -v 5.732520 -3.034000 -8.277380 -v 5.732520 -1.967150 -9.415440 -v 5.732520 -3.034000 -9.415440 -v 5.732520 -1.967150 -7.139320 -v 5.732520 -3.034000 -6.001260 -v 5.732520 -1.967150 -6.001260 -v 5.732520 -3.034000 -4.863200 -v 5.732520 -1.967150 -4.863200 -v 5.732520 -3.034000 -3.725140 -v 5.732520 -1.967150 -3.725140 -v 5.732520 -3.034000 -2.587080 -v 5.732520 -1.967150 -2.587080 -v 5.732520 -3.034000 -1.449020 -v 5.732520 -1.967150 -1.449020 -v 5.732520 -3.034000 -0.310965 -v 5.732520 -1.967150 -0.310965 -v 5.732520 -3.034000 0.827094 -v 5.732520 -1.967150 0.827094 -v 5.732520 -3.034000 1.965150 -v 5.732520 -1.967150 1.965150 -v 5.732520 -3.034000 3.103210 -v 5.732520 -1.967150 3.103210 -v 5.732520 -3.034000 4.241270 -v 5.732520 -1.967150 4.241270 -v 5.732520 -3.034000 5.379330 -v 5.732520 -1.967150 5.379330 -v 5.732520 -3.034000 6.517390 -v 5.732520 -1.967150 6.517390 -v 5.732520 -3.034000 7.655450 -v 5.732520 -1.967150 7.655450 -v 5.732520 -3.033999 8.793510 -v 5.732520 -1.967150 8.793510 -v -2.233900 -1.967150 -6.001260 -v -2.233900 -3.034000 -7.139320 -v -2.233900 -3.034000 -6.001260 -v -2.233900 -1.967150 -4.863200 -v -2.233900 -3.034000 -4.863200 -v -2.233900 -1.967150 -7.139320 -v -2.233900 -3.034000 -8.277380 -v -2.233900 -1.967150 -8.277380 -v -2.233900 -3.034000 -9.415440 -v -2.233900 -1.967150 -9.415440 -v -2.233900 -1.967150 -3.725140 -v -2.233900 -3.034000 -3.725140 -v -2.233900 -1.967150 -2.587080 -v -2.233900 -3.034000 -2.587080 -v -2.233900 -1.967150 -1.449020 -v -2.233900 -3.034000 -1.449020 -v -2.233900 -1.967150 -0.310965 -v -2.233900 -3.034000 -0.310965 -v -2.233900 -1.967150 0.827094 -v -2.233900 -3.034000 0.827094 -v -2.233900 -1.967150 1.965150 -v -2.233900 -3.034000 1.965150 -v -2.233900 -1.967150 3.103210 -v -2.233900 -3.034000 3.103210 -v -2.233900 -1.967150 4.241270 -v -2.233900 -3.034000 4.241270 -v -2.233900 -1.967150 5.379330 -v -2.233900 -3.034000 5.379330 -v -2.233900 -1.967150 6.517390 -v -2.233900 -3.034000 6.517390 -v -2.233900 -1.967150 7.655450 -v -2.233900 -3.034000 7.655450 -v -2.233900 -1.967150 8.793510 -v -2.233900 -3.033999 8.793510 -v 2.318340 -1.967150 -3.725140 -v 2.318340 -3.034000 -4.863200 -v 2.318340 -3.034000 -3.725140 -v 2.318340 -1.967150 -2.587080 -v 2.318340 -3.034000 -2.587080 -v 2.318340 -1.967150 -4.863200 -v 2.318340 -3.034000 -6.001260 -v 2.318340 -1.967150 -6.001260 -v 2.318340 -3.034000 -7.139320 -v 2.318340 -1.967150 -7.139320 -v 2.318340 -3.034000 -8.277380 -v 2.318340 -1.967150 -8.277380 -v 2.318340 -3.034000 -9.415440 -v 2.318340 -1.967150 -9.415440 -v 2.318340 -1.967150 -1.449020 -v 2.318340 -3.034000 -1.449020 -v 2.318340 -1.967150 -0.310965 -v 2.318340 -3.034000 -0.310965 -v 2.318340 -1.967150 0.827094 -v 2.318340 -3.034000 0.827094 -v 2.318340 -1.967150 1.965150 -v 2.318340 -3.034000 1.965150 -v 2.318340 -1.967150 3.103210 -v 2.318340 -3.034000 3.103210 -v 2.318340 -1.967150 4.241270 -v 2.318340 -3.034000 4.241270 -v 2.318340 -1.967150 5.379330 -v 2.318340 -3.034000 5.379330 -v 2.318340 -1.967150 6.517390 -v 2.318340 -3.034000 6.517390 -v 2.318340 -1.967150 7.655450 -v 2.318340 -3.034000 7.655450 -v 2.318340 -1.967150 8.793510 -v 2.318340 -3.033999 8.793510 -v -3.371960 -1.967150 6.517390 -v -3.371960 -3.034000 7.655450 -v -3.371960 -3.034000 6.517390 -v -3.371960 -1.967150 5.379330 -v -3.371960 -3.034000 5.379330 -v -3.371960 -1.967150 7.655450 -v -3.371960 -3.033999 8.793510 -v -3.371960 -1.967150 8.793510 -v -3.371960 -1.967150 4.241270 -v -3.371960 -3.034000 4.241270 -v -3.371960 -1.967150 3.103210 -v -3.371960 -3.034000 3.103210 -v -3.371960 -1.967150 1.965150 -v -3.371960 -3.034000 1.965150 -v -3.371960 -1.967150 0.827094 -v -3.371960 -3.034000 0.827094 -v -3.371960 -1.967150 -0.310965 -v -3.371960 -3.034000 -0.310965 -v -3.371960 -1.967150 -1.449020 -v -3.371960 -3.034000 -1.449020 -v -3.371960 -1.967150 -2.587080 -v -3.371960 -3.034000 -2.587080 -v -3.371960 -1.967150 -3.725140 -v -3.371960 -3.034000 -3.725140 -v -3.371960 -1.967150 -4.863200 -v -3.371960 -3.034000 -4.863200 -v -3.371960 -1.967150 -6.001260 -v -3.371960 -3.034000 -6.001260 -v -3.371960 -1.967150 -7.139320 -v -3.371960 -3.034000 -7.139320 -v -3.371960 -1.967150 -8.277380 -v -3.371960 -3.034000 -8.277380 -v -3.371960 -1.967150 -9.415440 -v -3.371960 -3.034000 -9.415440 -v 4.594460 -1.967150 8.793510 -v 3.456400 -3.033999 8.793510 -v 4.594460 -3.033999 8.793510 -v 3.456400 -1.967150 8.793510 -v 4.594460 0.276645 8.793510 -v 3.456400 0.276645 8.793510 -v 2.318340 0.276645 8.793510 -v 1.180280 -1.967150 8.793510 -v 3.456400 1.039180 8.793510 -v 4.594460 1.039180 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 0.042220 0.276645 8.793510 -v 1.180280 1.039180 8.793510 -v 0.042220 -1.967150 8.793510 -v -1.095840 0.276645 8.793510 -v 0.042220 1.039180 8.793510 -v -1.095840 -1.967150 8.793510 -v 0.042220 -3.033999 8.793510 -v -1.095840 -3.033999 8.793510 -v 1.180280 -3.033999 8.793510 -v -2.233900 0.276645 8.793510 -v -4.510020 -1.967150 8.793510 -v -4.510020 -3.033999 8.793510 -v -3.371960 0.276645 8.793510 -v -1.095840 1.039180 8.793510 -v -2.233900 1.039180 8.793510 -v -4.510020 0.276645 8.793510 -v -3.371960 1.039180 8.793510 -v -4.510020 1.039180 8.793510 -v -5.648080 0.276645 8.793510 -v -5.648080 -1.967150 8.793510 -v -5.648080 1.039180 8.793510 -v -6.786140 0.276645 8.793510 -v -5.648080 -3.033999 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 1.965150 -v 1.180280 -3.034000 3.103210 -v 1.180280 -3.034000 1.965150 -v 1.180280 -1.967150 0.827094 -v 1.180280 -3.034000 0.827094 -v 1.180280 -1.967150 3.103210 -v 1.180280 -3.034000 4.241270 -v 1.180280 -1.967150 4.241270 -v 1.180280 -3.034000 5.379330 -v 1.180280 -1.967150 5.379330 -v 1.180280 -3.034000 6.517390 -v 1.180280 -1.967150 6.517390 -v 1.180280 -3.034000 7.655450 -v 1.180280 -1.967150 7.655450 -v 1.180280 -1.967150 -0.310965 -v 1.180280 -3.034000 -0.310965 -v 1.180280 -1.967150 -1.449020 -v 1.180280 -3.034000 -1.449020 -v 1.180280 -1.967150 -2.587080 -v 1.180280 -3.034000 -2.587080 -v 1.180280 -1.967150 -3.725140 -v 1.180280 -3.034000 -3.725140 -v 1.180280 -1.967150 -4.863200 -v 1.180280 -3.034000 -4.863200 -v 1.180280 -1.967150 -6.001260 -v 1.180280 -3.034000 -6.001260 -v 1.180280 -1.967150 -7.139320 -v 1.180280 -3.034000 -7.139320 -v 1.180280 -1.967150 -8.277380 -v 1.180280 -3.034000 -8.277380 -v 1.180280 -1.967150 -9.415440 -v 1.180280 -3.034000 -9.415440 -v 3.456400 -3.034000 -9.415440 -v 3.456400 -1.967150 -9.415440 -v 2.318340 0.276645 -9.415440 -v 1.180280 0.276645 -9.415440 -v 4.594460 -3.034000 -9.415440 -v 4.594460 -1.967150 -9.415440 -v 3.456400 0.276645 -9.415440 -v 2.318340 1.039180 -9.415440 -v 4.594460 0.276645 -9.415440 -v 3.456400 1.039180 -9.415440 -v 4.594460 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 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 0.042220 -3.034000 -9.415440 -v -1.095840 -1.967150 -9.415440 -v -1.095840 -3.034000 -9.415440 -v -2.233900 0.276645 -9.415440 -v -1.095840 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 -4.510020 0.276645 -9.415440 -v -4.510020 1.039180 -9.415440 -v -3.371960 1.039180 -9.415440 -v -4.510020 -1.967150 -9.415440 -v -5.648080 0.276645 -9.415440 -v -5.648080 1.039180 -9.415440 -v -5.648080 -1.967150 -9.415440 -v -4.510020 -3.034000 -9.415440 -v -6.786140 0.276645 -9.415440 -v -6.786140 1.039180 -9.415440 -v -5.648080 -3.034000 -9.415440 -v -7.786200 -1.967150 -9.415440 -v -7.786200 0.276645 -9.415440 -v 6.870580 -1.967150 7.655450 -v 6.870580 -1.967150 6.517390 -v 6.870580 -1.967150 5.379330 -v 6.870580 -1.967150 4.241270 -v 6.870580 -1.967150 3.103210 -v 6.870580 -1.967150 1.965150 -v 6.870580 -1.967150 0.827094 -v 6.870580 -1.967150 -0.310965 -v 6.870580 -1.967150 -1.449020 -v 6.870580 -1.967150 -2.587080 -v 6.870580 -1.967150 -3.725140 -v 6.870580 -1.967150 -4.863200 -v 6.870580 -1.967150 -6.001260 -v 6.870580 -1.967150 -7.139320 -v 6.870580 -1.967150 -8.277380 -v -5.648080 -3.034000 0.827094 -v -5.648080 -3.034000 -0.310965 -v -5.648080 -3.034000 1.965150 -v -4.510020 -3.034000 1.965150 -v -5.648080 -3.034000 3.103210 -v -4.510020 -3.034000 0.827094 -v -5.648080 -3.034000 4.241270 -v -4.510020 -3.034000 3.103210 -v -4.510020 -3.034000 -0.310965 -v -4.510020 -3.034000 -1.449020 -v -4.510020 -3.034000 -2.587080 -v -5.648080 -3.034000 -1.449020 -v -5.648080 -3.034000 -2.587080 -v -4.510020 -3.034000 -3.725140 -v -5.648080 -3.034000 -3.725140 -v -4.510020 -3.034000 -4.863200 -v -5.648080 -3.034000 -4.863200 -v -4.510020 -3.034000 -6.001260 -v -5.648080 -3.034000 -6.001260 -v -4.510020 -3.034000 -7.139320 -v -5.648080 -3.034000 -7.139320 -v -4.510020 -3.034000 -8.277380 -v -5.648080 -3.034000 -8.277380 -v -4.510020 -3.034000 4.241270 -v -4.510020 -3.034000 5.379330 -v -5.648080 -3.034000 5.379330 -v -5.648080 -3.034000 6.517390 -v -4.510020 -3.034000 6.517390 -v -5.648080 -3.034000 7.655450 -v -4.510020 -3.034000 7.655450 -v -1.095840 -3.034000 0.827094 -v -1.095840 -3.034000 -0.310965 -v -1.095840 -3.034000 1.965150 -v 0.042220 -3.034000 1.965150 -v -1.095840 -3.034000 3.103210 -v 0.042220 -3.034000 0.827094 -v -1.095840 -3.034000 4.241270 -v 0.042220 -3.034000 3.103210 -v 0.042220 -3.034000 -0.310965 -v 0.042220 -3.034000 -1.449020 -v 0.042220 -3.034000 -2.587080 -v -1.095840 -3.034000 -1.449020 -v -1.095840 -3.034000 -2.587080 -v 0.042220 -3.034000 -3.725140 -v -1.095840 -3.034000 -3.725140 -v 0.042220 -3.034000 -4.863200 -v -1.095840 -3.034000 -4.863200 -v 0.042220 -3.034000 -6.001260 -v -1.095840 -3.034000 -6.001260 -v 0.042220 -3.034000 -7.139320 -v -1.095840 -3.034000 -7.139320 -v 0.042220 -3.034000 -8.277380 -v -1.095840 -3.034000 -8.277380 -v 0.042220 -3.034000 4.241270 -v 0.042220 -3.034000 5.379330 -v -1.095840 -3.034000 5.379330 -v -1.095840 -3.034000 6.517390 -v 0.042220 -3.034000 6.517390 -v -1.095840 -3.034000 7.655450 -v 0.042220 -3.034000 7.655450 -v 3.456400 -3.034000 -3.725140 -v 3.456400 -3.034000 -4.863200 -v 3.456400 -3.034000 -2.587080 -v 4.594460 -3.034000 -2.587080 -v 3.456400 -3.034000 -1.449020 -v 4.594460 -3.034000 -3.725140 -v 3.456400 -3.034000 -0.310965 -v 4.594460 -3.034000 -1.449020 -v 4.594460 -3.034000 -4.863200 -v 4.594460 -3.034000 -6.001260 -v 4.594460 -3.034000 -7.139320 -v 3.456400 -3.034000 -6.001260 -v 3.456400 -3.034000 -7.139320 -v 4.594460 -3.034000 -8.277380 -v 3.456400 -3.034000 -8.277380 -v 4.594460 -3.034000 -0.310965 -v 4.594460 -3.034000 0.827094 -v 3.456400 -3.034000 0.827094 -v 3.456400 -3.034000 1.965150 -v 4.594460 -3.034000 1.965150 -v 3.456400 -3.034000 3.103210 -v 4.594460 -3.034000 3.103210 -v 3.456400 -3.034000 4.241270 -v 4.594460 -3.034000 4.241270 -v 3.456400 -3.034000 5.379330 -v 4.594460 -3.034000 5.379330 -v 3.456400 -3.034000 6.517390 -v 4.594460 -3.034000 6.517390 -v 3.456400 -3.034000 7.655450 -v 4.594460 -3.034000 7.655450 -v -2.233900 0.276645 -2.587080 -v -2.233900 1.039180 -1.449020 -v -2.233900 1.039180 -2.587080 -v -2.233900 0.276645 -3.725140 -v -2.233900 1.039180 -3.725140 -v -2.233900 0.276645 -1.449020 -v -2.233900 1.039180 -0.310965 -v -2.233900 0.276645 -0.310965 -v -2.233900 1.039180 0.827094 -v -2.233900 0.276645 0.827094 -v -2.233900 1.039180 1.965150 -v -2.233900 0.276645 1.965150 -v -2.233900 1.039180 3.103210 -v -2.233900 0.276645 3.103210 -v -2.233900 1.039180 4.241270 -v -2.233900 0.276645 4.241270 -v -2.233900 1.039180 5.379330 -v -2.233900 0.276645 5.379330 -v -2.233900 1.039180 6.517390 -v -2.233900 0.276645 6.517390 -v -2.233900 1.039180 7.655450 -v -2.233900 0.276645 7.655450 -v -2.233900 0.276645 -4.863200 -v -2.233900 1.039180 -4.863200 -v -2.233900 0.276645 -6.001260 -v -2.233900 1.039180 -6.001260 -v -2.233900 0.276645 -7.139320 -v -2.233900 1.039180 -7.139320 -v -2.233900 0.276645 -8.277380 -v -2.233900 1.039180 -8.277380 -v 2.318340 0.276645 4.241270 -v 2.318340 1.039180 5.379330 -v 2.318340 1.039180 4.241270 -v 2.318340 0.276645 3.103210 -v 2.318340 1.039180 3.103210 -v 2.318340 0.276645 5.379330 -v 2.318340 1.039180 6.517390 -v 2.318340 0.276645 6.517390 -v 2.318340 1.039180 7.655450 -v 2.318340 0.276645 7.655450 -v 2.318340 0.276645 1.965150 -v 2.318340 1.039180 1.965150 -v 2.318340 0.276645 0.827094 -v 2.318340 1.039180 0.827094 -v 2.318340 0.276645 -0.310965 -v 2.318340 1.039180 -0.310965 -v 2.318340 0.276645 -1.449020 -v 2.318340 1.039180 -1.449020 -v 2.318340 0.276645 -2.587080 -v 2.318340 1.039180 -2.587080 -v 2.318340 0.276645 -3.725140 -v 2.318340 1.039180 -3.725140 -v 2.318340 0.276645 -4.863200 -v 2.318340 1.039180 -4.863200 -v 2.318340 0.276645 -6.001260 -v 2.318340 1.039180 -6.001260 -v 2.318340 0.276645 -7.139320 -v 2.318340 1.039180 -7.139320 -v 2.318340 0.276645 -8.277380 -v 2.318340 1.039180 -8.277380 -v -6.786140 0.276645 6.517390 -v -6.786140 1.039180 7.655450 -v -6.786140 1.039180 6.517390 -v -6.786140 0.276645 5.379330 -v -6.786140 1.039180 5.379330 -v -6.786140 0.276645 7.655450 -v -6.786140 0.276645 4.241270 -v -6.786140 1.039180 4.241270 -v -6.786140 0.276645 3.103210 -v -6.786140 1.039180 3.103210 -v -6.786140 0.276645 1.965150 -v -6.786140 1.039180 1.965150 -v -6.786140 0.276645 0.827094 -v -6.786140 1.039180 0.827094 -v -6.786140 0.276645 -0.310965 -v -6.786140 1.039180 -0.310965 -v -6.786140 0.276645 -1.449020 -v -6.786140 1.039180 -1.449020 -v -6.786140 0.276645 -2.587080 -v -6.786140 1.039180 -2.587080 -v -6.786140 0.276645 -3.725140 -v -6.786140 1.039180 -3.725140 -v -6.786140 0.276645 -4.863200 -v -6.786140 1.039180 -4.863200 -v -6.786140 0.276645 -6.001260 -v -6.786140 1.039180 -6.001260 -v -6.786140 0.276645 -7.139320 -v -6.786140 1.039180 -7.139320 -v -6.786140 0.276645 -8.277380 -v -6.786140 1.039180 -8.277380 -v 1.180280 0.276645 -7.139320 -v 1.180280 1.039180 -8.277380 -v 1.180280 1.039180 -7.139320 -v 1.180280 0.276645 -6.001260 -v 1.180280 1.039180 -6.001260 -v 1.180280 0.276645 -8.277380 -v 1.180280 0.276645 -4.863200 -v 1.180280 1.039180 -4.863200 -v 1.180280 0.276645 -3.725140 -v 1.180280 1.039180 -3.725140 -v 1.180280 0.276645 -2.587080 -v 1.180280 1.039180 -2.587080 -v 1.180280 0.276645 -1.449020 -v 1.180280 1.039180 -1.449020 -v 1.180280 0.276645 -0.310965 -v 1.180280 1.039180 -0.310965 -v 1.180280 0.276645 0.827094 -v 1.180280 1.039180 0.827094 -v 1.180280 0.276645 1.965150 -v 1.180280 1.039180 1.965150 -v 1.180280 0.276645 3.103210 -v 1.180280 1.039180 3.103210 -v 1.180280 0.276645 4.241270 -v 1.180280 1.039180 4.241270 -v 1.180280 0.276645 5.379330 -v 1.180280 1.039180 5.379330 -v 1.180280 0.276645 6.517390 -v 1.180280 1.039180 6.517390 -v 1.180280 0.276645 7.655450 -v 1.180280 1.039180 7.655450 -v 5.732520 0.276645 3.103210 -v 5.732520 1.039180 1.965150 -v 5.732520 1.039180 3.103210 -v 5.732520 0.276645 4.241270 -v 5.732520 1.039180 4.241270 -v 5.732520 0.276645 1.965150 -v 5.732520 1.039180 0.827094 -v 5.732520 0.276645 0.827094 -v 5.732520 1.039180 -0.310965 -v 5.732520 0.276645 -0.310965 -v 5.732520 1.039180 -1.449020 -v 5.732520 0.276645 -1.449020 -v 5.732520 1.039180 -2.587080 -v 5.732520 0.276645 -2.587080 -v 5.732520 1.039180 -3.725140 -v 5.732520 0.276645 -3.725140 -v 5.732520 1.039180 -4.863200 -v 5.732520 0.276645 -4.863200 -v 5.732520 1.039180 -6.001260 -v 5.732520 0.276645 -6.001260 -v 5.732520 1.039180 -7.139320 -v 5.732520 0.276645 -7.139320 -v 5.732520 1.039180 -8.277380 -v 5.732520 0.276645 -8.277380 -v 5.732520 0.276645 5.379330 -v 5.732520 1.039180 5.379330 -v 5.732520 0.276645 6.517390 -v 5.732520 1.039180 6.517390 -v 5.732520 0.276645 7.655450 -v 5.732520 1.039180 7.655450 -v -3.371960 1.039180 7.655450 -v -3.371960 0.276645 7.655450 -v -3.371960 1.039180 6.517390 -v -3.371960 0.276645 6.517390 -v -3.371960 1.039180 5.379330 -v -3.371960 0.276645 5.379330 -v -3.371960 1.039180 4.241270 -v -3.371960 0.276645 4.241270 -v -3.371960 1.039180 3.103210 -v -3.371960 0.276645 3.103210 -v -3.371960 1.039180 1.965150 -v -3.371960 0.276645 1.965150 -v -3.371960 1.039180 0.827094 -v -3.371960 0.276645 0.827094 -v -3.371960 1.039180 -0.310965 -v -3.371960 0.276645 -0.310965 -v -3.371960 1.039180 -1.449020 -v -3.371960 0.276645 -1.449020 -v -3.371960 1.039180 -2.587080 -v -3.371960 0.276645 -2.587080 -v -3.371960 1.039180 -3.725140 -v -3.371960 0.276645 -3.725140 -v -3.371960 1.039180 -4.863200 -v -3.371960 0.276645 -4.863200 -v -3.371960 1.039180 -6.001260 -v -3.371960 0.276645 -6.001260 -v -3.371960 1.039180 -7.139320 -v -3.371960 0.276645 -7.139320 -v -3.371960 1.039180 -8.277380 -v -3.371960 0.276645 -8.277380 -v 6.870580 0.276645 7.655450 -v 6.870580 0.276645 6.517390 -v 6.870580 0.276645 5.379330 -v 6.870580 0.276645 4.241270 -v 6.870580 0.276645 3.103210 -v 6.870580 0.276645 1.965150 -v 6.870580 0.276645 0.827094 -v 6.870580 0.276645 -0.310965 -v 6.870580 0.276645 -1.449020 -v 6.870580 0.276645 -2.587080 -v 6.870580 0.276645 -3.725140 -v 6.870580 0.276645 -4.863200 -v 6.870580 0.276645 -6.001260 -v 6.870580 0.276645 -7.139320 -v 6.870580 0.276645 -8.277380 -v -1.095840 0.276645 -10.802900 -v -1.095840 -1.967150 -10.802900 -v -1.095840 0.276644 -12.034100 -v -1.095840 -1.967150 -12.034100 -v -1.095840 -4.601110 -10.802900 -v -1.095840 -4.601110 -12.034100 -v -1.095840 -4.601110 -9.415440 -v -1.095840 1.039180 -10.802900 -v -1.095840 1.039180 -12.034100 -v -1.095840 2.768579 -10.802900 -v -1.095840 2.768579 -12.034100 -v -1.095840 3.746069 -10.802900 -v -1.095840 2.768580 -7.883420 -v -1.095840 3.746069 -12.034100 -v -1.095840 3.746070 -7.883420 -v -1.095840 0.276644 -14.284900 -v -1.095840 -1.967151 -14.284900 -v -1.095840 -4.601110 -14.284900 -v 0.042220 -1.967150 -12.034100 -v 0.042220 -4.601110 -10.802900 -v 0.042220 -4.601110 -12.034100 -v 0.042220 -4.601110 -14.284900 -v 0.042220 -1.967150 -10.802900 -v 0.042220 -4.601110 -9.415440 -v 0.042220 0.276645 -10.802900 -v 0.042220 1.039180 -10.802900 -v 0.042220 0.276644 -12.034100 -v 0.042220 1.039180 -12.034100 -v 0.042220 2.768579 -12.034100 -v 0.042220 2.768579 -10.802900 -v 0.042220 -1.967151 -14.284900 -v 0.042220 0.276644 -14.284900 -v 0.042220 3.746069 -12.034100 -v 0.042220 3.746069 -10.802900 -v 0.042220 3.746070 -7.883420 -v 0.042220 2.768580 -7.883420 -v -7.786200 -1.967150 -8.277380 -v -7.786200 -1.967150 -7.139320 -v -7.786200 -1.967150 -6.001260 -v -7.786200 -1.967150 -4.863200 -v -7.786200 -1.967150 -3.725140 -v -7.786200 -1.967150 -2.587080 -v -7.786200 -1.967150 -1.449020 -v -7.786200 -1.967150 -0.310965 -v -7.786200 -1.967150 0.827094 -v -7.786200 -1.967150 1.965150 -v -7.786200 -1.967150 3.103210 -v -7.786200 -1.967150 4.241270 -v -7.786200 -1.967150 5.379330 -v -7.786200 -1.967150 6.517390 -v -7.786200 -1.967150 7.655450 -v -7.786200 0.276645 3.103210 -v -7.786200 0.276645 4.241270 -v -7.786200 0.276645 5.379330 -v -7.786200 0.276645 1.965150 -v -7.786200 0.276645 0.827094 -v -7.786200 0.276645 -0.310965 -v -7.786200 0.276645 -1.449020 -v -7.786200 0.276645 -2.587080 -v -7.786200 0.276645 -3.725140 -v -7.786200 0.276645 -4.863200 -v -7.786200 0.276645 -6.001260 -v -7.786200 0.276645 -7.139320 -v -7.786200 0.276645 -8.277380 -v -7.786200 0.276645 6.517390 -v -7.786200 0.276645 7.655450 -v 0.042220 1.039180 7.655450 -v 0.042220 1.039180 6.517390 -v -1.095840 1.039180 7.655450 -v 0.042220 1.039180 5.379330 -v -1.095840 1.039180 6.517390 -v -1.095840 1.039180 5.379330 -v 0.042220 1.039180 4.241270 -v -1.095840 1.039180 4.241270 -v 0.042220 1.039180 3.103210 -v -1.095840 1.039180 3.103210 -v 0.042220 1.039180 1.965150 -v -1.095840 1.039180 1.965150 -v 0.042220 1.039180 0.827094 -v -1.095840 1.039180 0.827094 -v 0.042220 1.039180 -0.310965 -v -1.095840 1.039180 -0.310965 -v 0.042220 1.039180 -1.449020 -v -1.095840 1.039180 -1.449020 -v 0.042220 1.039180 -2.587080 -v -1.095840 1.039180 -2.587080 -v 0.042220 1.039180 -3.725140 -v -1.095840 1.039180 -3.725140 -v 0.042220 1.039180 -4.863200 -v -1.095840 1.039180 -4.863200 -v 0.042220 1.039180 -6.001260 -v -1.095840 1.039180 -6.001260 -v 0.042220 1.039180 -7.139320 -v -1.095840 1.039180 -7.139320 -v 0.042220 1.039180 -8.277380 -v -1.095840 1.039180 -8.277380 -v -4.510020 1.039180 7.655450 -v -4.510020 1.039180 6.517390 -v -5.648080 1.039180 7.655450 -v -4.510020 1.039180 5.379330 -v -5.648080 1.039180 6.517390 -v -5.648080 1.039180 5.379330 -v -4.510020 1.039180 4.241270 -v -5.648080 1.039180 4.241270 -v -4.510020 1.039180 3.103210 -v -5.648080 1.039180 3.103210 -v -4.510020 1.039180 1.965150 -v -5.648080 1.039180 1.965150 -v -4.510020 1.039180 0.827094 -v -5.648080 1.039180 0.827094 -v -4.510020 1.039180 -0.310965 -v -5.648080 1.039180 -0.310965 -v -4.510020 1.039180 -1.449020 -v -5.648080 1.039180 -1.449020 -v -4.510020 1.039180 -2.587080 -v -5.648080 1.039180 -2.587080 -v -4.510020 1.039180 -3.725140 -v -5.648080 1.039180 -3.725140 -v -4.510020 1.039180 -4.863200 -v -5.648080 1.039180 -4.863200 -v -4.510020 1.039180 -6.001260 -v -5.648080 1.039180 -6.001260 -v -4.510020 1.039180 -7.139320 -v -5.648080 1.039180 -7.139320 -v -4.510020 1.039180 -8.277380 -v -5.648080 1.039180 -8.277380 -v 4.594460 1.039180 7.655450 -v 4.594460 1.039180 6.517390 -v 3.456400 1.039180 7.655450 -v 4.594460 1.039180 5.379330 -v 3.456400 1.039180 6.517390 -v 3.456400 1.039180 5.379330 -v 4.594460 1.039180 4.241270 -v 3.456400 1.039180 4.241270 -v 4.594460 1.039180 3.103210 -v 3.456400 1.039180 3.103210 -v 4.594460 1.039180 1.965150 -v 3.456400 1.039180 1.965150 -v 4.594460 1.039180 0.827094 -v 3.456400 1.039180 0.827094 -v 4.594460 1.039180 -0.310965 -v 3.456400 1.039180 -0.310965 -v 4.594460 1.039180 -1.449020 -v 3.456400 1.039180 -1.449020 -v 4.594460 1.039180 -2.587080 -v 3.456400 1.039180 -2.587080 -v 4.594460 1.039180 -3.725140 -v 3.456400 1.039180 -3.725140 -v 4.594460 1.039180 -4.863200 -v 3.456400 1.039180 -4.863200 -v 4.594460 1.039180 -6.001260 -v 3.456400 1.039180 -6.001260 -v 4.594460 1.039180 -7.139320 -v 3.456400 1.039180 -7.139320 -v 4.594460 1.039180 -8.277380 -v 3.456400 1.039180 -8.277380 -vt 0.116019 0.974315 -vt 0.087066 0.947167 -vt 0.116022 0.947170 -vt 0.144976 0.974318 -vt 0.144979 0.947173 -vt 0.087063 0.974311 -vt 0.058110 0.947165 -vt 0.058107 0.974308 -vt 0.029155 0.947162 -vt 0.029152 0.974306 -vt 0.000199 0.947159 -vt 0.000197 0.974303 -vt 0.173933 0.974322 -vt 0.173936 0.947177 -vt 0.202891 0.974326 -vt 0.202894 0.947180 -vt 0.231849 0.974330 -vt 0.231853 0.947184 -vt 0.260808 0.974334 -vt 0.260812 0.947187 -vt 0.289768 0.974338 -vt 0.289772 0.947190 -vt 0.318729 0.974342 -vt 0.318732 0.947194 -vt 0.347690 0.974345 -vt 0.347693 0.947196 -vt 0.376652 0.974348 -vt 0.376654 0.947199 -vt 0.405614 0.974351 -vt 0.405616 0.947201 -vt 0.434577 0.974353 -vt 0.434578 0.947203 -vt 0.463539 0.974355 -vt 0.463541 0.947205 -vt 0.029160 0.492913 -vt 0.058118 0.520059 -vt 0.029160 0.520059 -vt 0.000202 0.492913 -vt 0.000202 0.520059 -vt 0.058118 0.492913 -vt 0.087076 0.520059 -vt 0.087076 0.492913 -vt 0.116034 0.520059 -vt 0.116034 0.492914 -vt 0.144992 0.520060 -vt 0.144992 0.492914 -vt 0.173949 0.520060 -vt 0.173950 0.492914 -vt 0.202907 0.520060 -vt 0.202907 0.492915 -vt 0.231864 0.520060 -vt 0.231865 0.492915 -vt 0.260822 0.520061 -vt 0.260822 0.492916 -vt 0.289779 0.520061 -vt 0.289778 0.492916 -vt 0.318735 0.520060 -vt 0.318735 0.492916 -vt 0.347692 0.520060 -vt 0.347691 0.492915 -vt 0.376649 0.520059 -vt 0.376648 0.492915 -vt 0.405605 0.520058 -vt 0.405604 0.492914 -vt 0.434561 0.520056 -vt 0.434560 0.492912 -vt 0.463517 0.520055 -vt 0.463516 0.492911 -vt 0.087075 0.804197 -vt 0.058119 0.777052 -vt 0.087076 0.777053 -vt 0.116032 0.804198 -vt 0.116033 0.777053 -vt 0.058119 0.804197 -vt 0.029163 0.777052 -vt 0.029163 0.804196 -vt 0.000207 0.777052 -vt 0.000207 0.804196 -vt 0.144989 0.804200 -vt 0.144990 0.777054 -vt 0.173947 0.804201 -vt 0.173948 0.777055 -vt 0.202905 0.804202 -vt 0.202906 0.777056 -vt 0.231863 0.804203 -vt 0.231864 0.777057 -vt 0.260822 0.804204 -vt 0.260822 0.777057 -vt 0.289780 0.804205 -vt 0.289781 0.777058 -vt 0.318740 0.804205 -vt 0.318740 0.777058 -vt 0.347700 0.804206 -vt 0.347700 0.777058 -vt 0.376660 0.804206 -vt 0.376659 0.777058 -vt 0.405620 0.804205 -vt 0.405620 0.777057 -vt 0.434581 0.804205 -vt 0.434580 0.777056 -vt 0.463543 0.804203 -vt 0.463541 0.777054 -vt 0.144991 0.634078 -vt 0.116033 0.606933 -vt 0.144991 0.606933 -vt 0.173949 0.634079 -vt 0.173949 0.606933 -vt 0.116034 0.634078 -vt 0.087076 0.606933 -vt 0.087076 0.634079 -vt 0.058118 0.606933 -vt 0.058118 0.634079 -vt 0.029160 0.606933 -vt 0.029160 0.634079 -vt 0.000202 0.606933 -vt 0.000202 0.634080 -vt 0.202907 0.634079 -vt 0.202907 0.606933 -vt 0.231864 0.634078 -vt 0.231864 0.606933 -vt 0.260822 0.634078 -vt 0.260822 0.606933 -vt 0.289780 0.634078 -vt 0.289780 0.606932 -vt 0.318738 0.634077 -vt 0.318737 0.606932 -vt 0.347696 0.634077 -vt 0.347695 0.606931 -vt 0.376653 0.634076 -vt 0.376652 0.606930 -vt 0.405611 0.634074 -vt 0.405609 0.606928 -vt 0.434569 0.634072 -vt 0.434567 0.606927 -vt 0.463527 0.634069 -vt 0.463524 0.606924 -vt 0.405621 0.833166 -vt 0.434582 0.860316 -vt 0.405620 0.860316 -vt 0.376660 0.833166 -vt 0.376659 0.860315 -vt 0.434582 0.833166 -vt 0.463545 0.860317 -vt 0.463544 0.833166 -vt 0.347699 0.833166 -vt 0.347698 0.860314 -vt 0.318739 0.833165 -vt 0.318738 0.860313 -vt 0.289780 0.833164 -vt 0.289778 0.860311 -vt 0.260820 0.833163 -vt 0.260819 0.860309 -vt 0.231862 0.833161 -vt 0.231860 0.860308 -vt 0.202903 0.833160 -vt 0.202902 0.860306 -vt 0.173946 0.833158 -vt 0.173944 0.860304 -vt 0.144988 0.833157 -vt 0.144987 0.860302 -vt 0.116031 0.833155 -vt 0.116029 0.860300 -vt 0.087074 0.833154 -vt 0.087073 0.860299 -vt 0.058118 0.833153 -vt 0.058116 0.860297 -vt 0.029162 0.833152 -vt 0.029161 0.860295 -vt 0.000206 0.833151 -vt 0.000205 0.860294 -vt 0.662141 0.076691 -vt 0.691099 0.103837 -vt 0.662141 0.103837 -vt 0.633183 0.076691 -vt 0.633183 0.103837 -vt 0.691099 0.076691 -vt 0.720057 0.103837 -vt 0.720058 0.076691 -vt 0.662141 0.019597 -vt 0.691100 0.019597 -vt 0.720058 0.019597 -vt 0.749016 0.076691 -vt 0.691100 0.000194 -vt 0.662142 0.000194 -vt 0.633183 0.019597 -vt 0.633183 0.000194 -vt 0.604225 0.019597 -vt 0.604225 0.076691 -vt 0.720058 0.000194 -vt 0.749016 0.019597 -vt 0.777974 0.019597 -vt 0.749016 0.000195 -vt 0.777974 0.076691 -vt 0.806932 0.019597 -vt 0.777974 0.000195 -vt 0.806932 0.076691 -vt 0.777974 0.103837 -vt 0.806932 0.103837 -vt 0.749016 0.103837 -vt 0.835890 0.103837 -vt 0.835890 0.076691 -vt 0.864848 0.076691 -vt 0.835890 0.019597 -vt 0.893806 0.076691 -vt 0.893806 0.103837 -vt 0.864848 0.103837 -vt 0.864848 0.019597 -vt 0.806932 0.000195 -vt 0.835890 0.000195 -vt 0.893806 0.019597 -vt 0.864848 0.000195 -vt 0.893806 0.000194 -vt 0.922764 0.019597 -vt 0.922764 0.076691 -vt 0.922764 0.000194 -vt 0.951722 0.019597 -vt 0.951722 0.076691 -vt 0.951722 0.103837 -vt 0.922764 0.103837 -vt 0.977169 0.019597 -vt 0.977169 0.076690 -vt 0.951722 0.000194 -vt 0.289780 0.663036 -vt 0.318739 0.690182 -vt 0.289781 0.690182 -vt 0.260822 0.663036 -vt 0.260823 0.690182 -vt 0.318739 0.663035 -vt 0.347698 0.690181 -vt 0.347697 0.663035 -vt 0.376656 0.690180 -vt 0.376655 0.663033 -vt 0.405615 0.690178 -vt 0.405613 0.663032 -vt 0.434574 0.690176 -vt 0.434571 0.663030 -vt 0.463533 0.690173 -vt 0.463530 0.663027 -vt 0.231865 0.663036 -vt 0.231865 0.690182 -vt 0.202907 0.663036 -vt 0.202907 0.690182 -vt 0.173949 0.663036 -vt 0.173949 0.690182 -vt 0.144991 0.663036 -vt 0.144991 0.690182 -vt 0.116034 0.663036 -vt 0.116034 0.690182 -vt 0.087076 0.663036 -vt 0.087076 0.690182 -vt 0.058118 0.663036 -vt 0.058119 0.690182 -vt 0.029161 0.663037 -vt 0.029162 0.690182 -vt 0.000203 0.663038 -vt 0.000205 0.690183 -vt 0.579762 0.491109 -vt 0.550803 0.463966 -vt 0.579760 0.463963 -vt 0.550805 0.491111 -vt 0.579767 0.548202 -vt 0.608720 0.491107 -vt 0.608724 0.548199 -vt 0.521845 0.463968 -vt 0.521847 0.491114 -vt 0.550809 0.548204 -vt 0.579768 0.567604 -vt 0.521852 0.548206 -vt 0.550811 0.567606 -vt 0.492890 0.491116 -vt 0.492888 0.463971 -vt 0.521853 0.567608 -vt 0.492895 0.548208 -vt 0.463933 0.491118 -vt 0.492896 0.567610 -vt 0.463938 0.548210 -vt 0.637682 0.548197 -vt 0.637683 0.567600 -vt 0.608726 0.567602 -vt 0.637678 0.491105 -vt 0.608718 0.463961 -vt 0.637676 0.463959 -vt 0.666636 0.491103 -vt 0.666635 0.463957 -vt 0.695594 0.491102 -vt 0.695595 0.548197 -vt 0.666637 0.548197 -vt 0.695593 0.463956 -vt 0.724553 0.491102 -vt 0.724554 0.548197 -vt 0.695596 0.567600 -vt 0.666637 0.567600 -vt 0.753512 0.548197 -vt 0.753512 0.567600 -vt 0.724554 0.567600 -vt 0.753512 0.491102 -vt 0.724553 0.463955 -vt 0.782471 0.548197 -vt 0.782471 0.567600 -vt 0.782471 0.491102 -vt 0.753512 0.463955 -vt 0.811429 0.548197 -vt 0.811429 0.567600 -vt 0.782471 0.463955 -vt 0.811430 0.491102 -vt 0.836877 0.491102 -vt 0.836877 0.548197 -vt 0.811430 0.463955 -vt 0.434558 0.463956 -vt 0.405603 0.463958 -vt 0.463514 0.463955 -vt 0.376647 0.463959 -vt 0.347691 0.463959 -vt 0.318735 0.463959 -vt 0.289779 0.463959 -vt 0.260822 0.463959 -vt 0.231865 0.463958 -vt 0.202908 0.463957 -vt 0.173950 0.463956 -vt 0.144992 0.463956 -vt 0.116034 0.463956 -vt 0.087076 0.463955 -vt 0.058118 0.463955 -vt 0.029160 0.463955 -vt 0.000202 0.463955 -vt 0.260815 0.918228 -vt 0.231856 0.918225 -vt 0.289774 0.918230 -vt 0.289777 0.889271 -vt 0.318734 0.918233 -vt 0.260817 0.889269 -vt 0.347695 0.918235 -vt 0.318737 0.889273 -vt 0.231858 0.889266 -vt 0.202900 0.889264 -vt 0.173942 0.889262 -vt 0.202897 0.918222 -vt 0.173939 0.918219 -vt 0.144984 0.889259 -vt 0.144982 0.918216 -vt 0.116028 0.889257 -vt 0.116025 0.918214 -vt 0.087071 0.889255 -vt 0.087069 0.918211 -vt 0.058115 0.889253 -vt 0.058113 0.918209 -vt 0.029159 0.889251 -vt 0.029157 0.918206 -vt 0.000204 0.889249 -vt 0.000202 0.918204 -vt 0.347697 0.889274 -vt 0.376658 0.889276 -vt 0.376656 0.918237 -vt 0.405618 0.918239 -vt 0.405619 0.889277 -vt 0.434580 0.918241 -vt 0.434581 0.889278 -vt 0.463543 0.918242 -vt 0.463544 0.889279 -vt 0.260823 0.748099 -vt 0.231864 0.748098 -vt 0.289781 0.748099 -vt 0.289781 0.719140 -vt 0.318740 0.748099 -vt 0.260823 0.719140 -vt 0.347699 0.748099 -vt 0.318740 0.719140 -vt 0.231865 0.719140 -vt 0.202907 0.719140 -vt 0.173949 0.719140 -vt 0.202906 0.748098 -vt 0.173948 0.748097 -vt 0.144991 0.719139 -vt 0.144991 0.748097 -vt 0.116034 0.719139 -vt 0.116033 0.748096 -vt 0.087076 0.719139 -vt 0.087076 0.748096 -vt 0.058119 0.719139 -vt 0.058119 0.748096 -vt 0.029162 0.719139 -vt 0.029163 0.748096 -vt 0.000206 0.719140 -vt 0.000207 0.748096 -vt 0.347698 0.719140 -vt 0.376657 0.719139 -vt 0.376659 0.748098 -vt 0.405618 0.748097 -vt 0.405617 0.719137 -vt 0.434578 0.748095 -vt 0.434576 0.719135 -vt 0.463539 0.748093 -vt 0.463536 0.719133 -vt 0.144991 0.577975 -vt 0.116033 0.577975 -vt 0.173949 0.577975 -vt 0.173949 0.549017 -vt 0.202907 0.577975 -vt 0.144991 0.549017 -vt 0.231864 0.577975 -vt 0.202907 0.549018 -vt 0.116034 0.549017 -vt 0.087076 0.549017 -vt 0.058118 0.549017 -vt 0.087076 0.577975 -vt 0.058118 0.577975 -vt 0.029160 0.549017 -vt 0.029160 0.577975 -vt 0.000202 0.549017 -vt 0.000202 0.577975 -vt 0.231864 0.549018 -vt 0.260822 0.549018 -vt 0.260822 0.577975 -vt 0.289779 0.577975 -vt 0.289779 0.549018 -vt 0.318736 0.577974 -vt 0.318736 0.549017 -vt 0.347694 0.577974 -vt 0.347693 0.549017 -vt 0.376651 0.577973 -vt 0.376650 0.549016 -vt 0.405608 0.577971 -vt 0.405606 0.549014 -vt 0.434565 0.577969 -vt 0.434563 0.549013 -vt 0.463521 0.577967 -vt 0.463519 0.549011 -vt 0.237437 0.289790 -vt 0.256842 0.260831 -vt 0.256841 0.289791 -vt 0.237435 0.318750 -vt 0.256839 0.318751 -vt 0.237438 0.260831 -vt 0.256843 0.231873 -vt 0.237440 0.231872 -vt 0.256844 0.202915 -vt 0.237441 0.202914 -vt 0.256845 0.173957 -vt 0.237443 0.173956 -vt 0.256846 0.145001 -vt 0.237444 0.145000 -vt 0.256847 0.116044 -vt 0.237446 0.116043 -vt 0.256848 0.087089 -vt 0.237447 0.087088 -vt 0.256849 0.058134 -vt 0.237449 0.058133 -vt 0.256850 0.029180 -vt 0.237450 0.029179 -vt 0.256852 0.000226 -vt 0.237452 0.000225 -vt 0.237433 0.347711 -vt 0.256839 0.347712 -vt 0.237432 0.376673 -vt 0.256838 0.376674 -vt 0.237431 0.405636 -vt 0.256837 0.405637 -vt 0.237430 0.434601 -vt 0.256837 0.434601 -vt 0.237429 0.463567 -vt 0.256838 0.463567 -vt 0.392072 0.116043 -vt 0.411472 0.087086 -vt 0.411474 0.116042 -vt 0.392074 0.144999 -vt 0.411476 0.144998 -vt 0.392071 0.087087 -vt 0.411469 0.058130 -vt 0.392068 0.058132 -vt 0.411467 0.029175 -vt 0.392066 0.029177 -vt 0.411463 0.000221 -vt 0.392064 0.000223 -vt 0.392076 0.173956 -vt 0.411478 0.173955 -vt 0.392077 0.202913 -vt 0.411480 0.202912 -vt 0.392079 0.231871 -vt 0.411481 0.231870 -vt 0.392080 0.260829 -vt 0.411483 0.260828 -vt 0.392082 0.289788 -vt 0.411485 0.289787 -vt 0.392084 0.318747 -vt 0.411488 0.318746 -vt 0.392086 0.347707 -vt 0.411490 0.347705 -vt 0.392089 0.376667 -vt 0.411493 0.376665 -vt 0.392093 0.405628 -vt 0.411497 0.405625 -vt 0.392097 0.434589 -vt 0.411501 0.434585 -vt 0.392102 0.463550 -vt 0.411507 0.463546 -vt 0.082827 0.058117 -vt 0.102232 0.029164 -vt 0.102228 0.058119 -vt 0.082823 0.087072 -vt 0.102224 0.087075 -vt 0.082831 0.029162 -vt 0.102236 0.000209 -vt 0.082835 0.000207 -vt 0.082819 0.116028 -vt 0.102221 0.116031 -vt 0.082815 0.144984 -vt 0.102217 0.144987 -vt 0.082811 0.173940 -vt 0.102213 0.173943 -vt 0.082806 0.202897 -vt 0.102209 0.202900 -vt 0.082802 0.231854 -vt 0.102204 0.231857 -vt 0.082797 0.260812 -vt 0.102200 0.260815 -vt 0.082791 0.289770 -vt 0.102194 0.289774 -vt 0.082785 0.318729 -vt 0.102189 0.318733 -vt 0.082779 0.347689 -vt 0.102183 0.347693 -vt 0.082772 0.376649 -vt 0.102177 0.376654 -vt 0.082764 0.405611 -vt 0.102170 0.405616 -vt 0.082755 0.434573 -vt 0.102162 0.434579 -vt 0.082745 0.463537 -vt 0.102153 0.463544 -vt 0.363131 0.405631 -vt 0.343729 0.434595 -vt 0.343726 0.405633 -vt 0.363129 0.376670 -vt 0.343724 0.376671 -vt 0.363135 0.434593 -vt 0.343733 0.463559 -vt 0.363139 0.463555 -vt 0.363126 0.347709 -vt 0.343722 0.347710 -vt 0.363124 0.318749 -vt 0.343720 0.318750 -vt 0.363123 0.289790 -vt 0.343719 0.289791 -vt 0.363122 0.260831 -vt 0.343718 0.260832 -vt 0.363121 0.231873 -vt 0.343718 0.231873 -vt 0.363120 0.202915 -vt 0.343717 0.202915 -vt 0.363118 0.173957 -vt 0.343716 0.173958 -vt 0.363117 0.145001 -vt 0.343716 0.145001 -vt 0.363116 0.116044 -vt 0.343715 0.116045 -vt 0.363115 0.087089 -vt 0.343714 0.087089 -vt 0.363114 0.058133 -vt 0.343713 0.058134 -vt 0.363112 0.029179 -vt 0.343712 0.029180 -vt 0.363110 0.000226 -vt 0.343711 0.000226 -vt 0.517748 0.144989 -vt 0.498349 0.173948 -vt 0.498346 0.144991 -vt 0.517745 0.116032 -vt 0.498343 0.116034 -vt 0.517751 0.173946 -vt 0.498352 0.202905 -vt 0.517754 0.202903 -vt 0.498355 0.231863 -vt 0.517757 0.231861 -vt 0.498358 0.260820 -vt 0.517760 0.260818 -vt 0.498361 0.289778 -vt 0.517763 0.289776 -vt 0.498364 0.318737 -vt 0.517767 0.318734 -vt 0.498367 0.347695 -vt 0.517770 0.347693 -vt 0.498371 0.376653 -vt 0.517774 0.376651 -vt 0.498375 0.405612 -vt 0.517778 0.405609 -vt 0.498379 0.434570 -vt 0.517782 0.434567 -vt 0.498384 0.463528 -vt 0.517787 0.463525 -vt 0.517742 0.087075 -vt 0.498340 0.087077 -vt 0.517739 0.058119 -vt 0.498337 0.058121 -vt 0.517735 0.029162 -vt 0.498333 0.029165 -vt 0.517731 0.000205 -vt 0.498329 0.000208 -vt 0.208499 0.000223 -vt 0.189096 0.029175 -vt 0.189099 0.000221 -vt 0.208496 0.029177 -vt 0.189093 0.058129 -vt 0.208494 0.058131 -vt 0.189091 0.087084 -vt 0.208492 0.087086 -vt 0.189088 0.116040 -vt 0.208490 0.116042 -vt 0.189086 0.144996 -vt 0.208488 0.144998 -vt 0.189083 0.173953 -vt 0.208486 0.173955 -vt 0.189081 0.202910 -vt 0.208483 0.202912 -vt 0.189078 0.231868 -vt 0.208481 0.231870 -vt 0.189076 0.260827 -vt 0.208479 0.260829 -vt 0.189073 0.289786 -vt 0.208477 0.289788 -vt 0.189070 0.318746 -vt 0.208474 0.318748 -vt 0.189067 0.347707 -vt 0.208472 0.347709 -vt 0.189063 0.376669 -vt 0.208469 0.376671 -vt 0.189060 0.405633 -vt 0.208467 0.405635 -vt 0.189056 0.434597 -vt 0.208464 0.434599 -vt 0.189053 0.463564 -vt 0.208462 0.463566 -vt 0.546692 0.029158 -vt 0.546688 0.000201 -vt 0.546696 0.058115 -vt 0.546699 0.087072 -vt 0.546702 0.116029 -vt 0.546705 0.144986 -vt 0.546709 0.173943 -vt 0.546712 0.202900 -vt 0.546715 0.231858 -vt 0.546718 0.260815 -vt 0.546721 0.289773 -vt 0.546725 0.318731 -vt 0.546728 0.347689 -vt 0.546732 0.376647 -vt 0.546736 0.405605 -vt 0.546740 0.434563 -vt 0.546744 0.463521 -vt 0.779682 0.749443 -vt 0.744378 0.806538 -vt 0.744377 0.749444 -vt 0.713049 0.806539 -vt 0.713048 0.749445 -vt 0.744376 0.682422 -vt 0.713047 0.682423 -vt 0.779683 0.806538 -vt 0.779681 0.682421 -vt 0.779683 0.825941 -vt 0.744379 0.825941 -vt 0.713050 0.825941 -vt 0.744378 0.869946 -vt 0.713050 0.869946 -vt 0.744378 0.894818 -vt 0.818664 0.869946 -vt 0.713050 0.894818 -vt 0.818664 0.894818 -vt 0.655778 0.806540 -vt 0.655777 0.749446 -vt 0.655775 0.682424 -vt 0.569547 0.749447 -vt 0.538217 0.682426 -vt 0.569546 0.682425 -vt 0.626817 0.682425 -vt 0.538218 0.749448 -vt 0.502912 0.682427 -vt 0.502914 0.806542 -vt 0.502913 0.749448 -vt 0.538218 0.806541 -vt 0.502915 0.825944 -vt 0.538219 0.825944 -vt 0.569547 0.806541 -vt 0.569547 0.825944 -vt 0.569546 0.869948 -vt 0.538218 0.869947 -vt 0.626818 0.749446 -vt 0.626819 0.806540 -vt 0.569546 0.894819 -vt 0.538218 0.894819 -vt 0.463933 0.894818 -vt 0.463933 0.869946 -vt 0.603794 0.116022 -vt 0.603790 0.087065 -vt 0.603797 0.144979 -vt 0.603801 0.173936 -vt 0.603804 0.202894 -vt 0.603808 0.231851 -vt 0.603811 0.260809 -vt 0.603814 0.289766 -vt 0.603818 0.318724 -vt 0.603822 0.347682 -vt 0.603825 0.376640 -vt 0.603829 0.405597 -vt 0.603833 0.434555 -vt 0.603837 0.463513 -vt 0.603787 0.058108 -vt 0.603783 0.029151 -vt 0.603779 0.000194 -vt 0.029149 0.999750 -vt 0.000194 0.999747 -vt 0.058105 0.999753 -vt 0.087060 0.999756 -vt 0.116016 0.999760 -vt 0.144972 0.999764 -vt 0.173929 0.999768 -vt 0.202887 0.999773 -vt 0.231845 0.999778 -vt 0.260805 0.999783 -vt 0.289765 0.999787 -vt 0.318726 0.999792 -vt 0.347687 0.999795 -vt 0.376649 0.999799 -vt 0.405612 0.999801 -vt 0.434575 0.999804 -vt 0.463537 0.999806 -vt 0.057370 0.144980 -vt 0.057374 0.116024 -vt 0.057379 0.087069 -vt 0.057365 0.173936 -vt 0.057361 0.202893 -vt 0.057355 0.231850 -vt 0.057350 0.260807 -vt 0.057344 0.289765 -vt 0.057338 0.318724 -vt 0.057331 0.347683 -vt 0.057323 0.376643 -vt 0.057314 0.405603 -vt 0.057305 0.434564 -vt 0.057294 0.463526 -vt 0.057383 0.058113 -vt 0.057387 0.029158 -vt 0.057391 0.000203 -vt 0.314758 0.000227 -vt 0.314758 0.029181 -vt 0.285805 0.000227 -vt 0.314758 0.058135 -vt 0.285804 0.029180 -vt 0.314759 0.087090 -vt 0.285804 0.058135 -vt 0.285803 0.087090 -vt 0.314759 0.116045 -vt 0.285803 0.116045 -vt 0.314759 0.145002 -vt 0.285802 0.145001 -vt 0.314759 0.173958 -vt 0.285802 0.173958 -vt 0.314759 0.202916 -vt 0.285802 0.202915 -vt 0.314759 0.231874 -vt 0.285801 0.231873 -vt 0.314760 0.260832 -vt 0.285801 0.260832 -vt 0.314760 0.289791 -vt 0.285800 0.289791 -vt 0.314760 0.318751 -vt 0.285800 0.318751 -vt 0.314761 0.347712 -vt 0.285800 0.347712 -vt 0.314762 0.376673 -vt 0.285800 0.376674 -vt 0.314764 0.405635 -vt 0.285801 0.405637 -vt 0.314766 0.434598 -vt 0.285802 0.434600 -vt 0.314769 0.463562 -vt 0.285804 0.463565 -vt 0.160145 0.000217 -vt 0.160142 0.029172 -vt 0.131191 0.000214 -vt 0.160138 0.058126 -vt 0.131187 0.029168 -vt 0.160135 0.087082 -vt 0.131183 0.058123 -vt 0.131180 0.087078 -vt 0.160132 0.116037 -vt 0.131176 0.116034 -vt 0.160129 0.144994 -vt 0.131173 0.144990 -vt 0.160126 0.173950 -vt 0.131170 0.173947 -vt 0.160123 0.202907 -vt 0.131166 0.202904 -vt 0.160120 0.231865 -vt 0.131162 0.231862 -vt 0.160117 0.260824 -vt 0.131158 0.260820 -vt 0.160113 0.289783 -vt 0.131154 0.289779 -vt 0.160109 0.318743 -vt 0.131149 0.318739 -vt 0.160105 0.347704 -vt 0.131144 0.347699 -vt 0.160101 0.376666 -vt 0.131138 0.376660 -vt 0.160096 0.405629 -vt 0.131132 0.405623 -vt 0.160091 0.434593 -vt 0.131126 0.434587 -vt 0.160085 0.463559 -vt 0.131119 0.463552 -vt 0.469373 0.000213 -vt 0.469377 0.029168 -vt 0.440418 0.000217 -vt 0.469381 0.058124 -vt 0.440421 0.029172 -vt 0.469384 0.087080 -vt 0.440425 0.058127 -vt 0.440428 0.087083 -vt 0.469387 0.116037 -vt 0.440430 0.116039 -vt 0.469389 0.144994 -vt 0.440433 0.144996 -vt 0.469392 0.173951 -vt 0.440435 0.173953 -vt 0.469394 0.202908 -vt 0.440437 0.202910 -vt 0.469397 0.231865 -vt 0.440439 0.231868 -vt 0.469400 0.260823 -vt 0.440442 0.260826 -vt 0.469402 0.289781 -vt 0.440444 0.289784 -vt 0.469405 0.318740 -vt 0.440447 0.318743 -vt 0.469409 0.347699 -vt 0.440450 0.347702 -vt 0.469412 0.376657 -vt 0.440453 0.376661 -vt 0.469416 0.405616 -vt 0.440457 0.405620 -vt 0.469421 0.434575 -vt 0.440461 0.434580 -vt 0.469426 0.463534 -vt 0.440467 0.463540 -vt 0.000206 0.434543 -vt 0.000194 0.463503 -vt 0.000217 0.405584 -vt 0.000226 0.376625 -vt 0.000235 0.347667 -vt 0.000244 0.318709 -vt 0.000251 0.289752 -vt 0.000258 0.260795 -vt 0.000264 0.231838 -vt 0.000270 0.202882 -vt 0.000276 0.173926 -vt 0.000281 0.144971 -vt 0.000285 0.116015 -vt 0.000290 0.087060 -vt 0.000294 0.058105 -vt 0.000299 0.029149 -vt 0.000303 0.000194 -vt 0.666640 0.558125 -vt 0.637681 0.558127 -vt 0.604225 0.133183 -vt 0.639530 0.104225 -vt 0.639530 0.133183 -vt 0.604225 0.104225 -vt 0.661494 0.463564 -vt 0.680897 0.434607 -vt 0.680897 0.463565 -vt 0.724902 0.434608 -vt 0.724902 0.463566 -vt 0.661495 0.434607 -vt 0.749775 0.434608 -vt 0.749774 0.463567 -vt 0.683535 0.104225 -vt 0.683535 0.133183 -vt 0.781104 0.434608 -vt 0.781104 0.463567 -vt 0.855393 0.434608 -vt 0.855393 0.463567 -vt 0.666641 0.593430 -vt 0.637683 0.593431 -vt 0.666643 0.624759 -vt 0.637685 0.624760 -vt 0.666646 0.682031 -vt 0.637688 0.682033 -vt 0.604225 0.463561 -vt 0.604227 0.434604 -vt 0.757821 0.133183 -vt 0.782694 0.104225 -vt 0.782694 0.133183 -vt 0.757821 0.104225 -s off -f 1/1 2/2 3/3 -f 4/4 1/1 3/3 -f 4/4 3/3 5/5 -f 1/1 6/6 2/2 -f 6/6 7/7 2/2 -f 6/6 8/8 7/7 -f 8/8 9/9 7/7 -f 8/8 10/10 9/9 -f 10/10 11/11 9/9 -f 10/10 12/12 11/11 -f 13/13 4/4 5/5 -f 13/13 5/5 14/14 -f 15/15 13/13 14/14 -f 15/15 14/14 16/16 -f 17/17 15/15 16/16 -f 17/17 16/16 18/18 -f 19/19 17/17 18/18 -f 19/19 18/18 20/20 -f 21/21 19/19 20/20 -f 21/21 20/20 22/22 -f 23/23 21/21 22/22 -f 23/23 22/22 24/24 -f 25/25 23/23 24/24 -f 25/25 24/24 26/26 -f 27/27 25/25 26/26 -f 27/27 26/26 28/28 -f 29/29 27/27 28/28 -f 29/29 28/28 30/30 -f 31/31 29/29 30/30 -f 31/31 30/30 32/32 -f 33/33 31/31 32/32 -f 33/33 32/32 34/34 -f 35/35 36/36 37/37 -f 38/38 35/35 37/37 -f 38/38 37/37 39/39 -f 35/35 40/40 36/36 -f 40/40 41/41 36/36 -f 40/40 42/42 41/41 -f 42/42 43/43 41/41 -f 42/42 44/44 43/43 -f 44/44 45/45 43/43 -f 44/44 46/46 45/45 -f 46/46 47/47 45/45 -f 46/46 48/48 47/47 -f 48/48 49/49 47/47 -f 48/48 50/50 49/49 -f 50/50 51/51 49/49 -f 50/50 52/52 51/51 -f 52/52 53/53 51/51 -f 52/52 54/54 53/53 -f 54/54 55/55 53/53 -f 54/54 56/56 55/55 -f 56/56 57/57 55/55 -f 56/56 58/58 57/57 -f 58/58 59/59 57/57 -f 58/58 60/60 59/59 -f 60/60 61/61 59/59 -f 60/60 62/62 61/61 -f 62/62 63/63 61/61 -f 62/62 64/64 63/63 -f 64/64 65/65 63/63 -f 64/64 66/66 65/65 -f 66/66 67/67 65/65 -f 66/66 68/68 67/67 -f 69/69 70/70 71/71 -f 72/72 69/69 71/71 -f 72/72 71/71 73/73 -f 69/69 74/74 70/70 -f 74/74 75/75 70/70 -f 74/74 76/76 75/75 -f 76/76 77/77 75/75 -f 76/76 78/78 77/77 -f 79/79 72/72 73/73 -f 79/79 73/73 80/80 -f 81/81 79/79 80/80 -f 81/81 80/80 82/82 -f 83/83 81/81 82/82 -f 83/83 82/82 84/84 -f 85/85 83/83 84/84 -f 85/85 84/84 86/86 -f 87/87 85/85 86/86 -f 87/87 86/86 88/88 -f 89/89 87/87 88/88 -f 89/89 88/88 90/90 -f 91/91 89/89 90/90 -f 91/91 90/90 92/92 -f 93/93 91/91 92/92 -f 93/93 92/92 94/94 -f 95/95 93/93 94/94 -f 95/95 94/94 96/96 -f 97/97 95/95 96/96 -f 97/97 96/96 98/98 -f 99/99 97/97 98/98 -f 99/99 98/98 100/100 -f 101/101 99/99 100/100 -f 101/101 100/100 102/102 -f 103/103 104/104 105/105 -f 106/106 103/103 105/105 -f 106/106 105/105 107/107 -f 103/103 108/108 104/104 -f 108/108 109/109 104/104 -f 108/108 110/110 109/109 -f 110/110 111/111 109/109 -f 110/110 112/112 111/111 -f 112/112 113/113 111/111 -f 112/112 114/114 113/113 -f 114/114 115/115 113/113 -f 114/114 116/116 115/115 -f 117/117 106/106 107/107 -f 117/117 107/107 118/118 -f 119/119 117/117 118/118 -f 119/119 118/118 120/120 -f 121/121 119/119 120/120 -f 121/121 120/120 122/122 -f 123/123 121/121 122/122 -f 123/123 122/122 124/124 -f 125/125 123/123 124/124 -f 125/125 124/124 126/126 -f 127/127 125/125 126/126 -f 127/127 126/126 128/128 -f 129/129 127/127 128/128 -f 129/129 128/128 130/130 -f 131/131 129/129 130/130 -f 131/131 130/130 132/132 -f 133/133 131/131 132/132 -f 133/133 132/132 134/134 -f 135/135 133/133 134/134 -f 135/135 134/134 136/136 -f 137/137 138/138 139/139 -f 140/140 137/137 139/139 -f 140/140 139/139 141/141 -f 137/137 142/142 138/138 -f 142/142 143/143 138/138 -f 142/142 144/144 143/143 -f 145/145 140/140 141/141 -f 145/145 141/141 146/146 -f 147/147 145/145 146/146 -f 147/147 146/146 148/148 -f 149/149 147/147 148/148 -f 149/149 148/148 150/150 -f 151/151 149/149 150/150 -f 151/151 150/150 152/152 -f 153/153 151/151 152/152 -f 153/153 152/152 154/154 -f 155/155 153/153 154/154 -f 155/155 154/154 156/156 -f 157/157 155/155 156/156 -f 157/157 156/156 158/158 -f 159/159 157/157 158/158 -f 159/159 158/158 160/160 -f 161/161 159/159 160/160 -f 161/161 160/160 162/162 -f 163/163 161/161 162/162 -f 163/163 162/162 164/164 -f 165/165 163/163 164/164 -f 165/165 164/164 166/166 -f 167/167 165/165 166/166 -f 167/167 166/166 168/168 -f 169/169 167/167 168/168 -f 169/169 168/168 170/170 -f 171/171 172/172 173/173 -f 68/174 171/171 173/173 -f 68/174 173/173 67/175 -f 171/171 174/176 172/172 -f 174/176 136/177 172/172 -f 174/176 135/178 136/177 -f 174/176 171/171 175/179 -f 174/176 175/179 176/180 -f 135/178 174/176 176/180 -f 135/178 176/180 177/181 -f 178/182 135/178 177/181 -f 177/181 176/180 179/183 -f 176/180 175/179 180/184 -f 176/180 180/184 179/183 -f 175/179 181/185 182/186 -f 175/179 182/186 180/184 -f 171/171 181/185 175/179 -f 171/171 68/174 181/185 -f 68/174 183/187 181/185 -f 68/174 184/188 183/187 -f 177/181 179/183 185/189 -f 178/182 177/181 186/190 -f 187/191 186/190 188/192 -f 189/193 178/182 186/190 -f 189/193 186/190 187/191 -f 190/194 187/191 191/195 -f 187/191 188/192 191/195 -f 192/196 189/193 187/191 -f 192/196 187/191 190/194 -f 178/182 189/193 193/197 -f 189/193 192/196 194/198 -f 189/193 194/198 193/197 -f 178/182 193/197 195/199 -f 192/196 102/200 194/198 -f 192/196 101/201 102/200 -f 101/201 192/196 190/194 -f 144/202 101/201 196/203 -f 101/201 190/194 196/203 -f 144/202 197/204 198/205 -f 144/202 198/205 143/206 -f 197/204 144/202 199/207 -f 144/202 196/203 199/207 -f 196/203 190/194 200/208 -f 196/203 200/208 201/209 -f 190/194 191/195 200/208 -f 202/210 199/207 203/211 -f 197/204 199/207 202/210 -f 202/210 203/211 204/212 -f 205/213 202/210 204/212 -f 206/214 197/204 202/210 -f 206/214 202/210 205/213 -f 205/213 204/212 207/215 -f 208/216 205/213 207/215 -f 33/217 206/214 205/213 -f 33/217 205/213 208/216 -f 206/214 33/217 34/218 -f 206/214 34/218 209/219 -f 197/204 206/214 209/219 -f 197/204 209/219 198/205 -f 33/217 208/216 210/220 -f 33/217 210/220 211/221 -f 208/216 207/215 212/222 -f 213/223 214/224 215/225 -f 216/226 213/223 215/225 -f 216/226 215/225 217/227 -f 213/223 218/228 214/224 -f 218/228 219/229 214/224 -f 218/228 220/230 219/229 -f 220/230 221/231 219/229 -f 220/230 222/232 221/231 -f 222/232 223/233 221/231 -f 222/232 224/234 223/233 -f 224/234 225/235 223/233 -f 224/234 226/236 225/235 -f 226/236 195/237 225/235 -f 226/236 178/238 195/237 -f 227/239 216/226 217/227 -f 227/239 217/227 228/240 -f 229/241 227/239 228/240 -f 229/241 228/240 230/242 -f 231/243 229/241 230/242 -f 231/243 230/242 232/244 -f 233/245 231/243 232/244 -f 233/245 232/244 234/246 -f 235/247 233/245 234/246 -f 235/247 234/246 236/248 -f 237/249 235/247 236/248 -f 237/249 236/248 238/250 -f 239/251 237/249 238/250 -f 239/251 238/250 240/252 -f 241/253 239/251 240/252 -f 241/253 240/252 242/254 -f 243/255 241/253 242/254 -f 243/255 242/254 244/256 -f 116/257 245/258 115/259 -f 116/257 246/260 245/258 -f 246/260 116/257 247/261 -f 116/257 243/262 248/263 -f 116/257 248/263 247/261 -f 246/260 249/264 245/258 -f 246/260 250/265 249/264 -f 250/265 246/260 251/266 -f 246/260 247/261 251/266 -f 251/266 247/261 252/267 -f 253/268 251/266 254/269 -f 251/266 252/267 254/269 -f 250/265 251/266 253/268 -f 250/265 38/270 39/271 -f 250/265 39/271 249/264 -f 38/270 250/265 253/268 -f 253/268 254/269 255/272 -f 256/273 253/268 255/272 -f 38/270 253/268 256/273 -f 257/274 38/270 256/273 -f 256/273 255/272 258/275 -f 257/274 256/273 259/276 -f 248/263 260/277 261/278 -f 248/263 261/278 262/279 -f 243/262 260/277 248/263 -f 243/262 263/280 260/277 -f 263/280 243/262 244/281 -f 263/280 244/281 264/282 -f 265/283 263/280 264/282 -f 265/283 264/282 266/284 -f 78/285 265/283 266/284 -f 265/283 78/285 267/286 -f 265/283 267/286 268/287 -f 78/285 266/284 77/288 -f 78/285 169/289 269/290 -f 78/285 269/290 267/286 -f 268/287 267/286 270/291 -f 268/287 270/291 271/292 -f 269/290 272/293 273/294 -f 269/290 273/294 274/295 -f 169/289 272/293 269/290 -f 275/296 169/289 170/297 -f 169/289 275/296 272/293 -f 272/293 276/298 277/299 -f 272/293 277/299 273/294 -f 275/296 276/298 272/293 -f 278/300 275/296 279/301 -f 275/296 170/297 279/301 -f 275/296 278/300 276/298 -f 276/298 280/302 281/303 -f 276/298 281/303 277/299 -f 278/300 280/302 276/298 -f 278/300 279/301 282/304 -f 12/305 278/300 282/304 -f 278/300 12/305 280/302 -f 280/302 12/305 283/306 -f 280/302 283/306 284/307 -f 12/305 282/304 11/308 -f 133/133 178/238 226/236 -f 131/131 133/133 226/236 -f 131/131 226/236 224/234 -f 133/133 135/135 178/238 -f 129/129 131/131 224/234 -f 129/129 224/234 222/232 -f 127/127 129/129 222/232 -f 127/127 222/232 220/230 -f 125/125 127/127 220/230 -f 125/125 220/230 218/228 -f 123/123 125/125 218/228 -f 123/123 218/228 213/223 -f 121/121 123/123 213/223 -f 121/121 213/223 216/226 -f 119/119 121/121 216/226 -f 119/119 216/226 227/239 -f 117/117 119/119 227/239 -f 117/117 227/239 229/241 -f 106/106 117/117 229/241 -f 106/106 229/241 231/243 -f 103/103 106/106 231/243 -f 103/103 231/243 233/245 -f 108/108 103/103 233/245 -f 108/108 233/245 235/247 -f 110/110 108/108 235/247 -f 110/110 235/247 237/249 -f 112/112 110/110 237/249 -f 112/112 237/249 239/251 -f 114/114 112/112 239/251 -f 114/114 239/251 241/253 -f 116/116 114/114 241/253 -f 116/116 241/253 243/255 -f 99/99 144/144 142/142 -f 97/97 99/99 142/142 -f 97/97 142/142 137/137 -f 99/99 101/101 144/144 -f 95/95 97/97 137/137 -f 95/95 137/137 140/140 -f 93/93 95/95 140/140 -f 93/93 140/140 145/145 -f 91/91 93/93 145/145 -f 91/91 145/145 147/147 -f 89/89 91/91 147/147 -f 89/89 147/147 149/149 -f 87/87 89/89 149/149 -f 87/87 149/149 151/151 -f 85/85 87/87 151/151 -f 85/85 151/151 153/153 -f 83/83 85/85 153/153 -f 83/83 153/153 155/155 -f 81/81 83/83 155/155 -f 81/81 155/155 157/157 -f 79/79 81/81 157/157 -f 79/79 157/157 159/159 -f 72/72 79/79 159/159 -f 72/72 159/159 161/161 -f 69/69 72/72 161/161 -f 69/69 161/161 163/163 -f 74/74 69/69 163/163 -f 74/74 163/163 165/165 -f 76/76 74/74 165/165 -f 76/76 165/165 167/167 -f 78/78 76/76 167/167 -f 78/78 167/167 169/169 -f 285/309 68/68 66/66 -f 286/310 285/309 66/66 -f 286/310 66/66 64/64 -f 285/309 184/311 68/68 -f 287/312 286/310 64/64 -f 287/312 64/64 62/62 -f 288/313 287/312 62/62 -f 288/313 62/62 60/60 -f 289/314 288/313 60/60 -f 289/314 60/60 58/58 -f 290/315 289/314 58/58 -f 290/315 58/58 56/56 -f 291/316 290/315 56/56 -f 291/316 56/56 54/54 -f 292/317 291/316 54/54 -f 292/317 54/54 52/52 -f 293/318 292/317 52/52 -f 293/318 52/52 50/50 -f 294/319 293/318 50/50 -f 294/319 50/50 48/48 -f 295/320 294/319 48/48 -f 295/320 48/48 46/46 -f 296/321 295/320 46/46 -f 296/321 46/46 44/44 -f 297/322 296/321 44/44 -f 297/322 44/44 42/42 -f 298/323 297/322 42/42 -f 298/323 42/42 40/40 -f 299/324 298/323 40/40 -f 299/324 40/40 35/35 -f 257/325 299/324 35/35 -f 257/325 35/35 38/38 -f 300/326 22/22 20/20 -f 301/327 300/326 20/20 -f 301/327 20/20 18/18 -f 300/326 302/328 22/22 -f 302/328 24/24 22/22 -f 303/329 304/330 302/328 -f 302/328 304/330 24/24 -f 305/331 303/329 302/328 -f 305/331 302/328 300/326 -f 304/330 26/26 24/24 -f 304/330 306/332 26/26 -f 307/333 306/332 304/330 -f 303/329 307/333 304/330 -f 152/152 150/150 303/329 -f 152/152 303/329 305/331 -f 150/150 307/333 303/329 -f 154/154 152/152 305/331 -f 154/154 305/331 308/334 -f 308/334 305/331 300/326 -f 156/156 154/154 308/334 -f 156/156 308/334 309/335 -f 309/335 308/334 301/327 -f 308/334 300/326 301/327 -f 158/158 156/156 309/335 -f 158/158 309/335 310/336 -f 309/335 301/327 311/337 -f 310/336 309/335 311/337 -f 311/337 301/327 18/18 -f 311/337 18/18 16/16 -f 310/336 311/337 312/338 -f 312/338 311/337 16/16 -f 160/160 158/158 310/336 -f 160/160 310/336 313/339 -f 313/339 310/336 312/338 -f 314/340 312/338 14/14 -f 312/338 16/16 14/14 -f 313/339 312/338 314/340 -f 315/341 313/339 314/340 -f 162/162 160/160 313/339 -f 162/162 313/339 315/341 -f 314/340 14/14 5/5 -f 315/341 314/340 316/342 -f 316/342 314/340 5/5 -f 164/164 162/162 315/341 -f 164/164 315/341 317/343 -f 317/343 315/341 316/342 -f 318/344 316/342 3/3 -f 316/342 5/5 3/3 -f 317/343 316/342 318/344 -f 166/166 164/164 317/343 -f 166/166 317/343 319/345 -f 319/345 317/343 318/344 -f 318/344 3/3 2/2 -f 319/345 318/344 320/346 -f 320/346 318/344 2/2 -f 168/168 166/166 319/345 -f 168/168 319/345 321/347 -f 321/347 319/345 320/346 -f 322/348 320/346 7/7 -f 320/346 2/2 7/7 -f 321/347 320/346 322/348 -f 170/170 168/168 321/347 -f 170/170 321/347 279/349 -f 279/349 321/347 322/348 -f 322/348 7/7 9/9 -f 279/349 322/348 282/350 -f 282/350 322/348 9/9 -f 282/350 9/9 11/11 -f 148/148 323/351 307/333 -f 150/150 148/148 307/333 -f 307/333 323/351 306/332 -f 148/148 146/146 323/351 -f 323/351 324/352 325/353 -f 323/351 325/353 306/332 -f 146/146 324/352 323/351 -f 306/332 325/353 28/28 -f 306/332 28/28 26/26 -f 325/353 326/354 30/30 -f 325/353 30/30 28/28 -f 324/352 326/354 325/353 -f 141/141 327/355 324/352 -f 324/352 327/355 326/354 -f 146/146 141/141 324/352 -f 327/355 328/356 326/354 -f 326/354 328/356 32/32 -f 326/354 32/32 30/30 -f 141/141 139/139 327/355 -f 139/139 329/357 327/355 -f 327/355 329/357 328/356 -f 328/356 209/358 34/34 -f 328/356 34/34 32/32 -f 329/357 209/358 328/356 -f 138/138 198/359 329/357 -f 139/139 138/138 329/357 -f 329/357 198/359 209/358 -f 138/138 143/143 198/359 -f 330/360 90/90 88/88 -f 331/361 330/360 88/88 -f 331/361 88/88 86/86 -f 330/360 332/362 90/90 -f 332/362 92/92 90/90 -f 333/363 334/364 332/362 -f 332/362 334/364 92/92 -f 335/365 333/363 332/362 -f 335/365 332/362 330/360 -f 334/364 94/94 92/92 -f 334/364 336/366 94/94 -f 337/367 336/366 334/364 -f 333/363 337/367 334/364 -f 217/227 215/225 333/363 -f 217/227 333/363 335/365 -f 215/225 337/367 333/363 -f 338/368 335/365 330/360 -f 228/240 217/227 335/365 -f 228/240 335/365 338/368 -f 230/242 228/240 338/368 -f 230/242 338/368 339/369 -f 338/368 330/360 331/361 -f 339/369 338/368 331/361 -f 232/244 230/242 339/369 -f 232/244 339/369 340/370 -f 339/369 331/361 341/371 -f 340/370 339/369 341/371 -f 341/371 331/361 86/86 -f 341/371 86/86 84/84 -f 340/370 341/371 342/372 -f 342/372 341/371 84/84 -f 234/246 232/244 340/370 -f 234/246 340/370 343/373 -f 343/373 340/370 342/372 -f 344/374 342/372 82/82 -f 342/372 84/84 82/82 -f 343/373 342/372 344/374 -f 236/248 234/246 343/373 -f 236/248 343/373 345/375 -f 345/375 343/373 344/374 -f 344/374 82/82 80/80 -f 345/375 344/374 346/376 -f 346/376 344/374 80/80 -f 238/250 236/248 345/375 -f 238/250 345/375 347/377 -f 347/377 345/375 346/376 -f 348/378 346/376 73/73 -f 346/376 80/80 73/73 -f 347/377 346/376 348/378 -f 240/252 238/250 347/377 -f 240/252 347/377 349/379 -f 349/379 347/377 348/378 -f 348/378 73/73 71/71 -f 349/379 348/378 350/380 -f 350/380 348/378 71/71 -f 242/254 240/252 349/379 -f 242/254 349/379 351/381 -f 351/381 349/379 350/380 -f 352/382 350/380 70/70 -f 350/380 71/71 70/70 -f 351/381 350/380 352/382 -f 244/256 242/254 351/381 -f 244/256 351/381 264/383 -f 264/383 351/381 352/382 -f 352/382 70/70 75/75 -f 264/383 352/382 266/384 -f 266/384 352/382 75/75 -f 266/384 75/75 77/77 -f 214/224 353/385 337/367 -f 215/225 214/224 337/367 -f 337/367 353/385 336/366 -f 214/224 219/229 353/385 -f 219/229 354/386 353/385 -f 353/385 354/386 355/387 -f 353/385 355/387 336/366 -f 336/366 355/387 96/96 -f 336/366 96/96 94/94 -f 355/387 356/388 98/98 -f 355/387 98/98 96/96 -f 354/386 356/388 355/387 -f 221/231 357/389 354/386 -f 219/229 221/231 354/386 -f 354/386 357/389 356/388 -f 357/389 358/390 356/388 -f 356/388 358/390 100/100 -f 356/388 100/100 98/98 -f 221/231 223/233 357/389 -f 223/233 359/391 357/389 -f 357/389 359/391 358/390 -f 358/390 194/392 102/102 -f 358/390 102/102 100/100 -f 359/391 194/392 358/390 -f 225/235 193/393 359/391 -f 223/233 225/235 359/391 -f 359/391 193/393 194/392 -f 225/235 195/237 193/393 -f 360/394 107/107 105/105 -f 361/395 360/394 105/105 -f 361/395 105/105 104/104 -f 360/394 362/396 107/107 -f 362/396 118/118 107/107 -f 363/397 364/398 362/396 -f 362/396 364/398 118/118 -f 365/399 363/397 362/396 -f 365/399 362/396 360/394 -f 364/398 120/120 118/118 -f 364/398 366/400 120/120 -f 367/401 366/400 364/398 -f 363/397 367/401 364/398 -f 45/45 47/47 363/397 -f 45/45 363/397 365/399 -f 47/47 367/401 363/397 -f 368/402 365/399 360/394 -f 43/43 45/45 365/399 -f 43/43 365/399 368/402 -f 41/41 43/43 368/402 -f 41/41 368/402 369/403 -f 368/402 360/394 361/395 -f 369/403 368/402 361/395 -f 36/36 41/41 369/403 -f 36/36 369/403 370/404 -f 369/403 361/395 371/405 -f 370/404 369/403 371/405 -f 371/405 361/395 104/104 -f 371/405 104/104 109/109 -f 370/404 371/405 372/406 -f 372/406 371/405 109/109 -f 37/37 36/36 370/404 -f 37/37 370/404 373/407 -f 373/407 370/404 372/406 -f 374/408 372/406 111/111 -f 372/406 109/109 111/111 -f 373/407 372/406 374/408 -f 39/39 37/37 373/407 -f 39/39 373/407 249/409 -f 249/409 373/407 374/408 -f 374/408 111/111 113/113 -f 249/409 374/408 245/410 -f 245/410 374/408 113/113 -f 245/410 113/113 115/115 -f 49/49 375/411 367/401 -f 47/47 49/49 367/401 -f 367/401 375/411 366/400 -f 49/49 51/51 375/411 -f 51/51 376/412 375/411 -f 375/411 376/412 377/413 -f 375/411 377/413 366/400 -f 366/400 377/413 122/122 -f 366/400 122/122 120/120 -f 377/413 378/414 124/124 -f 377/413 124/124 122/122 -f 376/412 378/414 377/413 -f 53/53 379/415 376/412 -f 51/51 53/53 376/412 -f 376/412 379/415 378/414 -f 379/415 380/416 378/414 -f 378/414 380/416 126/126 -f 378/414 126/126 124/124 -f 53/53 55/55 379/415 -f 55/55 381/417 379/415 -f 379/415 381/417 380/416 -f 380/416 382/418 128/128 -f 380/416 128/128 126/126 -f 381/417 382/418 380/416 -f 57/57 383/419 381/417 -f 55/55 57/57 381/417 -f 381/417 383/419 382/418 -f 383/419 384/420 382/418 -f 382/418 384/420 130/130 -f 382/418 130/130 128/128 -f 57/57 59/59 383/419 -f 383/419 385/421 384/420 -f 59/59 385/421 383/419 -f 384/420 386/422 132/132 -f 384/420 132/132 130/130 -f 385/421 386/422 384/420 -f 61/61 387/423 385/421 -f 385/421 387/423 386/422 -f 59/59 61/61 385/421 -f 387/423 388/424 386/422 -f 386/422 388/424 134/134 -f 386/422 134/134 132/132 -f 61/61 63/63 387/423 -f 63/63 389/425 387/423 -f 387/423 389/425 388/424 -f 388/424 172/426 136/136 -f 388/424 136/136 134/134 -f 389/425 172/426 388/424 -f 65/65 173/427 389/425 -f 63/63 65/65 389/425 -f 389/425 173/427 172/426 -f 65/65 67/67 173/427 -f 390/428 391/429 392/430 -f 393/431 390/428 392/430 -f 393/431 392/430 394/432 -f 390/428 395/433 391/429 -f 395/433 396/434 391/429 -f 395/433 397/435 396/434 -f 397/435 398/436 396/434 -f 397/435 399/437 398/436 -f 399/437 400/438 398/436 -f 399/437 401/439 400/438 -f 401/439 402/440 400/438 -f 401/439 403/441 402/440 -f 403/441 404/442 402/440 -f 403/441 405/443 404/442 -f 405/443 406/444 404/442 -f 405/443 407/445 406/444 -f 407/445 408/446 406/444 -f 407/445 409/447 408/446 -f 409/447 410/448 408/446 -f 409/447 411/449 410/448 -f 411/449 201/450 410/448 -f 411/449 196/451 201/450 -f 412/452 393/431 394/432 -f 412/452 394/432 413/453 -f 414/454 412/452 413/453 -f 414/454 413/453 415/455 -f 416/456 414/454 415/455 -f 416/456 415/455 417/457 -f 418/458 416/456 417/457 -f 418/458 417/457 419/459 -f 267/460 418/458 419/459 -f 267/460 419/459 270/461 -f 420/462 421/463 422/464 -f 423/465 420/462 422/464 -f 423/465 422/464 424/466 -f 420/462 425/467 421/463 -f 425/467 426/468 421/463 -f 425/467 427/469 426/468 -f 427/469 428/470 426/468 -f 427/469 429/471 428/470 -f 429/471 185/472 428/470 -f 429/471 177/473 185/472 -f 430/474 423/465 424/466 -f 430/474 424/466 431/475 -f 432/476 430/474 431/475 -f 432/476 431/475 433/477 -f 434/478 432/476 433/477 -f 434/478 433/477 435/479 -f 436/480 434/478 435/479 -f 436/480 435/479 437/481 -f 438/482 436/480 437/481 -f 438/482 437/481 439/483 -f 440/484 438/482 439/483 -f 440/484 439/483 441/485 -f 442/486 440/484 441/485 -f 442/486 441/485 443/487 -f 444/488 442/486 443/487 -f 444/488 443/487 445/489 -f 446/490 444/488 445/489 -f 446/490 445/489 447/491 -f 448/492 446/490 447/491 -f 448/492 447/491 449/493 -f 247/494 448/492 449/493 -f 247/494 449/493 252/495 -f 450/496 451/497 452/498 -f 453/499 450/496 452/498 -f 453/499 452/498 454/500 -f 450/496 455/501 451/497 -f 455/501 212/502 451/497 -f 455/501 208/503 212/502 -f 456/504 453/499 454/500 -f 456/504 454/500 457/505 -f 458/506 456/504 457/505 -f 458/506 457/505 459/507 -f 460/508 458/506 459/507 -f 460/508 459/507 461/509 -f 462/510 460/508 461/509 -f 462/510 461/509 463/511 -f 464/512 462/510 463/511 -f 464/512 463/511 465/513 -f 466/514 464/512 465/513 -f 466/514 465/513 467/515 -f 468/516 466/514 467/515 -f 468/516 467/515 469/517 -f 470/518 468/516 469/517 -f 470/518 469/517 471/519 -f 472/520 470/518 471/519 -f 472/520 471/519 473/521 -f 474/522 472/520 473/521 -f 474/522 473/521 475/523 -f 476/524 474/522 475/523 -f 476/524 475/523 477/525 -f 478/526 476/524 477/525 -f 478/526 477/525 479/527 -f 280/528 478/526 479/527 -f 280/528 479/527 281/529 -f 480/530 481/531 482/532 -f 483/533 480/530 482/532 -f 483/533 482/532 484/534 -f 480/530 485/535 481/531 -f 485/535 262/536 481/531 -f 485/535 248/537 262/536 -f 486/538 483/533 484/534 -f 486/538 484/534 487/539 -f 488/540 486/538 487/539 -f 488/540 487/539 489/541 -f 490/542 488/540 489/541 -f 490/542 489/541 491/543 -f 492/544 490/542 491/543 -f 492/544 491/543 493/545 -f 494/546 492/544 493/545 -f 494/546 493/545 495/547 -f 496/548 494/546 495/547 -f 496/548 495/547 497/549 -f 498/550 496/548 497/549 -f 498/550 497/549 499/551 -f 500/552 498/550 499/551 -f 500/552 499/551 501/553 -f 502/554 500/552 501/553 -f 502/554 501/553 503/555 -f 504/556 502/554 503/555 -f 504/556 503/555 505/557 -f 506/558 504/556 505/557 -f 506/558 505/557 507/559 -f 508/560 506/558 507/559 -f 508/560 507/559 509/561 -f 186/562 508/560 509/561 -f 186/562 509/561 188/563 -f 510/564 511/565 512/566 -f 513/567 510/564 512/566 -f 513/567 512/566 514/568 -f 510/564 515/569 511/565 -f 515/569 516/570 511/565 -f 515/569 517/571 516/570 -f 517/571 518/572 516/570 -f 517/571 519/573 518/572 -f 519/573 520/574 518/572 -f 519/573 521/575 520/574 -f 521/575 522/576 520/574 -f 521/575 523/577 522/576 -f 523/577 524/578 522/576 -f 523/577 525/579 524/578 -f 525/579 526/580 524/578 -f 525/579 527/581 526/580 -f 527/581 528/582 526/580 -f 527/581 529/583 528/582 -f 529/583 530/584 528/582 -f 529/583 531/585 530/584 -f 531/585 532/586 530/584 -f 531/585 533/587 532/586 -f 533/587 258/588 532/586 -f 533/587 256/589 258/588 -f 534/590 513/567 514/568 -f 534/590 514/568 535/591 -f 536/592 534/590 535/591 -f 536/592 535/591 537/593 -f 538/594 536/592 537/593 -f 538/594 537/593 539/595 -f 181/596 538/594 539/595 -f 181/596 539/595 182/597 -f 199/598 540/599 203/600 -f 199/598 541/601 540/599 -f 541/601 542/602 540/599 -f 541/601 543/603 542/602 -f 543/603 544/604 542/602 -f 543/603 545/605 544/604 -f 545/605 546/606 544/604 -f 545/605 547/607 546/606 -f 547/607 548/608 546/606 -f 547/607 549/609 548/608 -f 549/609 550/610 548/608 -f 549/609 551/611 550/610 -f 551/611 552/612 550/610 -f 551/611 553/613 552/612 -f 553/613 554/614 552/612 -f 553/613 555/615 554/614 -f 555/615 556/616 554/614 -f 555/615 557/617 556/616 -f 557/617 558/618 556/616 -f 557/617 559/619 558/618 -f 559/619 560/620 558/618 -f 559/619 561/621 560/620 -f 561/621 562/622 560/620 -f 561/621 563/623 562/622 -f 563/623 564/624 562/622 -f 563/623 565/625 564/624 -f 565/625 566/626 564/624 -f 565/625 567/627 566/626 -f 567/627 568/628 566/626 -f 567/627 569/629 568/628 -f 569/629 274/630 568/628 -f 569/629 269/631 274/630 -f 429/471 186/562 177/473 -f 429/471 508/560 186/562 -f 427/469 508/560 429/471 -f 427/469 506/558 508/560 -f 425/467 506/558 427/469 -f 425/467 504/556 506/558 -f 420/462 504/556 425/467 -f 420/462 502/554 504/556 -f 423/465 502/554 420/462 -f 423/465 500/552 502/554 -f 430/474 500/552 423/465 -f 430/474 498/550 500/552 -f 432/476 498/550 430/474 -f 432/476 496/548 498/550 -f 434/478 496/548 432/476 -f 434/478 494/546 496/548 -f 436/480 494/546 434/478 -f 436/480 492/544 494/546 -f 438/482 492/544 436/480 -f 438/482 490/542 492/544 -f 440/484 490/542 438/482 -f 440/484 488/540 490/542 -f 442/486 488/540 440/484 -f 442/486 486/538 488/540 -f 444/488 486/538 442/486 -f 444/488 483/533 486/538 -f 446/490 483/533 444/488 -f 446/490 480/530 483/533 -f 448/492 480/530 446/490 -f 448/492 485/535 480/530 -f 247/494 485/535 448/492 -f 247/494 248/537 485/535 -f 411/449 199/598 196/451 -f 411/449 541/601 199/598 -f 409/447 541/601 411/449 -f 409/447 543/603 541/601 -f 407/445 543/603 409/447 -f 407/445 545/605 543/603 -f 405/443 545/605 407/445 -f 405/443 547/607 545/605 -f 403/441 547/607 405/443 -f 403/441 549/609 547/607 -f 401/439 549/609 403/441 -f 401/439 551/611 549/609 -f 399/437 551/611 401/439 -f 399/437 553/613 551/611 -f 397/435 553/613 399/437 -f 397/435 555/615 553/613 -f 395/433 555/615 397/435 -f 395/433 557/617 555/615 -f 390/428 557/617 395/433 -f 390/428 559/619 557/617 -f 393/431 559/619 390/428 -f 393/431 561/621 559/619 -f 412/452 561/621 393/431 -f 412/452 563/623 561/621 -f 414/454 563/623 412/452 -f 414/454 565/625 563/623 -f 416/456 565/625 414/454 -f 416/456 567/627 565/625 -f 418/458 567/627 416/456 -f 418/458 569/629 567/627 -f 267/460 569/629 418/458 -f 267/460 269/631 569/629 -f 570/632 181/596 183/633 -f 570/632 538/594 181/596 -f 571/634 538/594 570/632 -f 571/634 536/592 538/594 -f 572/635 536/592 571/634 -f 572/635 534/590 536/592 -f 573/636 534/590 572/635 -f 573/636 513/567 534/590 -f 574/637 513/567 573/636 -f 574/637 510/564 513/567 -f 575/638 510/564 574/637 -f 575/638 515/569 510/564 -f 576/639 515/569 575/638 -f 576/639 517/571 515/569 -f 577/640 517/571 576/639 -f 577/640 519/573 517/571 -f 578/641 519/573 577/640 -f 578/641 521/575 519/573 -f 579/642 521/575 578/641 -f 579/642 523/577 521/575 -f 580/643 523/577 579/642 -f 580/643 525/579 523/577 -f 581/644 525/579 580/643 -f 581/644 527/581 525/579 -f 582/645 527/581 581/644 -f 582/645 529/583 527/581 -f 583/646 529/583 582/645 -f 583/646 531/585 529/583 -f 584/647 531/585 583/646 -f 584/647 533/587 531/585 -f 259/648 533/587 584/647 -f 259/648 256/589 533/587 -f 265/649 585/650 586/651 -f 586/651 585/650 587/652 -f 586/651 587/652 588/653 -f 265/649 586/651 589/654 -f 586/651 588/653 590/655 -f 586/651 590/655 589/654 -f 265/649 268/656 585/650 -f 265/649 589/654 591/657 -f 268/656 271/658 592/659 -f 268/656 592/659 585/650 -f 585/650 592/659 593/660 -f 593/660 592/659 594/661 -f 585/650 593/660 587/652 -f 593/660 594/661 595/662 -f 596/663 594/661 597/664 -f 595/662 594/661 596/663 -f 595/662 596/663 598/665 -f 596/663 597/664 599/666 -f 588/653 587/652 600/667 -f 590/655 588/653 601/668 -f 588/653 600/667 601/668 -f 590/655 601/668 602/669 -f 603/670 604/671 605/672 -f 603/670 605/672 606/673 -f 603/670 607/674 604/671 -f 607/674 608/675 604/671 -f 260/676 263/677 607/674 -f 260/676 607/674 609/678 -f 609/678 607/674 603/670 -f 607/674 263/677 608/675 -f 261/679 260/676 609/678 -f 261/679 609/678 610/680 -f 610/680 609/678 611/681 -f 609/678 603/670 611/681 -f 610/680 611/681 612/682 -f 610/680 612/682 613/683 -f 610/680 613/683 614/684 -f 611/681 603/670 615/685 -f 611/681 615/685 616/686 -f 603/670 606/673 615/685 -f 614/684 613/683 617/687 -f 614/684 617/687 618/688 -f 614/684 618/688 619/689 -f 614/684 619/689 620/690 -f 288/691 574/637 573/636 -f 287/692 288/691 573/636 -f 287/692 573/636 572/635 -f 288/691 289/693 574/637 -f 289/693 575/638 574/637 -f 289/693 290/694 575/638 -f 290/694 576/639 575/638 -f 290/694 291/695 576/639 -f 291/695 577/640 576/639 -f 291/695 292/696 577/640 -f 292/696 578/641 577/640 -f 292/696 293/697 578/641 -f 293/697 579/642 578/641 -f 293/697 294/698 579/642 -f 294/698 580/643 579/642 -f 294/698 295/699 580/643 -f 295/699 581/644 580/643 -f 295/699 296/700 581/644 -f 296/700 582/645 581/644 -f 296/700 297/701 582/645 -f 297/701 583/646 582/645 -f 297/701 298/702 583/646 -f 298/702 584/647 583/646 -f 298/702 299/703 584/647 -f 299/703 259/648 584/647 -f 299/703 257/704 259/648 -f 286/705 287/692 572/635 -f 286/705 572/635 571/634 -f 285/706 286/705 571/634 -f 285/706 571/634 570/632 -f 184/707 285/706 570/632 -f 184/707 570/632 183/633 -f 12/12 621/708 283/709 -f 12/12 10/10 621/708 -f 10/10 622/710 621/708 -f 10/10 8/8 622/710 -f 8/8 623/711 622/710 -f 8/8 6/6 623/711 -f 6/6 624/712 623/711 -f 6/6 1/1 624/712 -f 1/1 625/713 624/712 -f 1/1 4/4 625/713 -f 4/4 626/714 625/713 -f 4/4 13/13 626/714 -f 13/13 627/715 626/714 -f 13/13 15/15 627/715 -f 15/15 628/716 627/715 -f 15/15 17/17 628/716 -f 17/17 629/717 628/716 -f 17/17 19/19 629/717 -f 19/19 630/718 629/717 -f 19/19 21/21 630/718 -f 21/21 631/719 630/718 -f 21/21 23/23 631/719 -f 23/23 632/720 631/719 -f 23/23 25/25 632/720 -f 25/25 633/721 632/720 -f 25/25 27/27 633/721 -f 27/27 634/722 633/721 -f 27/27 29/29 634/722 -f 29/29 635/723 634/722 -f 29/29 31/31 635/723 -f 31/31 211/724 635/723 -f 31/31 33/33 211/724 -f 456/504 636/725 637/726 -f 453/499 456/504 637/726 -f 453/499 637/726 638/727 -f 456/504 458/506 636/725 -f 458/506 639/728 636/725 -f 458/506 460/508 639/728 -f 460/508 640/729 639/728 -f 460/508 462/510 640/729 -f 462/510 641/730 640/729 -f 462/510 464/512 641/730 -f 464/512 642/731 641/730 -f 464/512 466/514 642/731 -f 466/514 643/732 642/731 -f 466/514 468/516 643/732 -f 468/516 644/733 643/732 -f 468/516 470/518 644/733 -f 470/518 645/734 644/733 -f 470/518 472/520 645/734 -f 472/520 646/735 645/734 -f 472/520 474/522 646/735 -f 474/522 647/736 646/735 -f 474/522 476/524 647/736 -f 476/524 648/737 647/736 -f 476/524 478/526 648/737 -f 478/526 284/738 648/737 -f 478/526 280/528 284/738 -f 450/496 453/499 638/727 -f 450/496 638/727 649/739 -f 455/501 450/496 649/739 -f 455/501 649/739 650/740 -f 208/503 455/501 650/740 -f 208/503 650/740 210/741 -f 509/561 191/742 188/563 -f 509/561 651/743 191/742 -f 507/559 651/743 509/561 -f 651/743 200/744 191/742 -f 507/559 652/745 651/743 -f 651/743 653/746 200/744 -f 652/745 653/746 651/743 -f 505/557 652/745 507/559 -f 505/557 654/747 652/745 -f 652/745 655/748 653/746 -f 654/747 655/748 652/745 -f 653/746 410/448 201/450 -f 653/746 201/450 200/744 -f 655/748 410/448 653/746 -f 656/749 408/446 655/748 -f 655/748 408/446 410/448 -f 654/747 656/749 655/748 -f 503/555 657/750 654/747 -f 503/555 654/747 505/557 -f 657/750 656/749 654/747 -f 656/749 406/444 408/446 -f 657/750 658/751 656/749 -f 658/751 406/444 656/749 -f 501/553 659/752 657/750 -f 501/553 657/750 503/555 -f 659/752 658/751 657/750 -f 660/753 404/442 658/751 -f 658/751 404/442 406/444 -f 659/752 660/753 658/751 -f 499/551 661/754 659/752 -f 499/551 659/752 501/553 -f 661/754 660/753 659/752 -f 660/753 402/440 404/442 -f 661/754 662/755 660/753 -f 662/755 402/440 660/753 -f 497/549 663/756 661/754 -f 497/549 661/754 499/551 -f 663/756 662/755 661/754 -f 664/757 400/438 662/755 -f 662/755 400/438 402/440 -f 663/756 664/757 662/755 -f 665/758 664/757 663/756 -f 495/547 665/758 663/756 -f 495/547 663/756 497/549 -f 664/757 398/436 400/438 -f 665/758 666/759 664/757 -f 666/759 398/436 664/757 -f 493/545 667/760 665/758 -f 493/545 665/758 495/547 -f 667/760 666/759 665/758 -f 668/761 396/434 666/759 -f 666/759 396/434 398/436 -f 667/760 668/761 666/759 -f 491/543 669/762 667/760 -f 491/543 667/760 493/545 -f 669/762 668/761 667/760 -f 668/761 391/429 396/434 -f 669/762 670/763 668/761 -f 670/763 391/429 668/761 -f 489/541 671/764 669/762 -f 489/541 669/762 491/543 -f 671/764 670/763 669/762 -f 672/765 392/430 670/763 -f 670/763 392/430 391/429 -f 671/764 672/765 670/763 -f 487/539 673/766 671/764 -f 487/539 671/764 489/541 -f 673/766 672/765 671/764 -f 672/765 394/432 392/430 -f 673/766 674/767 672/765 -f 674/767 394/432 672/765 -f 484/534 675/768 673/766 -f 484/534 673/766 487/539 -f 675/768 674/767 673/766 -f 676/769 413/453 674/767 -f 674/767 413/453 394/432 -f 675/768 676/769 674/767 -f 482/532 677/770 675/768 -f 482/532 675/768 484/534 -f 677/770 676/769 675/768 -f 676/769 415/455 413/453 -f 677/770 678/771 676/769 -f 678/771 415/455 676/769 -f 481/531 679/772 677/770 -f 481/531 677/770 482/532 -f 679/772 678/771 677/770 -f 680/773 417/457 678/771 -f 678/771 417/457 415/455 -f 679/772 680/773 678/771 -f 262/536 261/774 679/772 -f 262/536 679/772 481/531 -f 261/774 680/773 679/772 -f 680/773 419/459 417/457 -f 261/774 271/775 680/773 -f 271/775 419/459 680/773 -f 271/775 270/461 419/459 -f 540/599 204/776 203/600 -f 540/599 681/777 204/776 -f 542/602 681/777 540/599 -f 681/777 207/778 204/776 -f 542/602 682/779 681/777 -f 681/777 683/780 207/778 -f 682/779 683/780 681/777 -f 544/604 682/779 542/602 -f 544/604 684/781 682/779 -f 682/779 685/782 683/780 -f 684/781 685/782 682/779 -f 683/780 451/497 212/502 -f 683/780 212/502 207/778 -f 685/782 451/497 683/780 -f 686/783 452/498 685/782 -f 685/782 452/498 451/497 -f 684/781 686/783 685/782 -f 687/784 686/783 684/781 -f 546/606 687/784 684/781 -f 546/606 684/781 544/604 -f 686/783 454/500 452/498 -f 687/784 688/785 686/783 -f 688/785 454/500 686/783 -f 548/608 689/786 687/784 -f 548/608 687/784 546/606 -f 689/786 688/785 687/784 -f 690/787 457/505 688/785 -f 688/785 457/505 454/500 -f 689/786 690/787 688/785 -f 550/610 691/788 689/786 -f 550/610 689/786 548/608 -f 691/788 690/787 689/786 -f 690/787 459/507 457/505 -f 691/788 692/789 690/787 -f 692/789 459/507 690/787 -f 552/612 693/790 691/788 -f 552/612 691/788 550/610 -f 693/790 692/789 691/788 -f 694/791 461/509 692/789 -f 692/789 461/509 459/507 -f 693/790 694/791 692/789 -f 554/614 695/792 693/790 -f 554/614 693/790 552/612 -f 695/792 694/791 693/790 -f 694/791 463/511 461/509 -f 695/792 696/793 694/791 -f 696/793 463/511 694/791 -f 556/616 697/794 695/792 -f 556/616 695/792 554/614 -f 697/794 696/793 695/792 -f 698/795 465/513 696/793 -f 697/794 698/795 696/793 -f 696/793 465/513 463/511 -f 558/618 699/796 697/794 -f 558/618 697/794 556/616 -f 699/796 698/795 697/794 -f 698/795 467/515 465/513 -f 699/796 700/797 698/795 -f 700/797 467/515 698/795 -f 560/620 701/798 699/796 -f 560/620 699/796 558/618 -f 701/798 700/797 699/796 -f 702/799 469/517 700/797 -f 700/797 469/517 467/515 -f 701/798 702/799 700/797 -f 703/800 702/799 701/798 -f 562/622 703/800 701/798 -f 562/622 701/798 560/620 -f 702/799 471/519 469/517 -f 703/800 704/801 702/799 -f 704/801 471/519 702/799 -f 564/624 705/802 703/800 -f 564/624 703/800 562/622 -f 705/802 704/801 703/800 -f 706/803 473/521 704/801 -f 704/801 473/521 471/519 -f 705/802 706/803 704/801 -f 566/626 707/804 705/802 -f 566/626 705/802 564/624 -f 707/804 706/803 705/802 -f 706/803 475/523 473/521 -f 707/804 708/805 706/803 -f 708/805 475/523 706/803 -f 568/628 709/806 707/804 -f 568/628 707/804 566/626 -f 709/806 708/805 707/804 -f 710/807 477/525 708/805 -f 708/805 477/525 475/523 -f 709/806 710/807 708/805 -f 274/630 273/808 709/806 -f 274/630 709/806 568/628 -f 273/808 710/807 709/806 -f 710/807 479/527 477/525 -f 273/808 277/809 710/807 -f 277/809 479/527 710/807 -f 277/809 281/529 479/527 -f 539/595 180/810 182/597 -f 539/595 711/811 180/810 -f 537/593 711/811 539/595 -f 711/811 179/812 180/810 -f 537/593 712/813 711/811 -f 711/811 713/814 179/812 -f 712/813 713/814 711/811 -f 535/591 712/813 537/593 -f 535/591 714/815 712/813 -f 712/813 715/816 713/814 -f 714/815 715/816 712/813 -f 713/814 428/470 185/472 -f 713/814 185/472 179/812 -f 715/816 428/470 713/814 -f 716/817 426/468 715/816 -f 715/816 426/468 428/470 -f 714/815 716/817 715/816 -f 717/818 716/817 714/815 -f 514/568 717/818 714/815 -f 514/568 714/815 535/591 -f 716/817 421/463 426/468 -f 717/818 718/819 716/817 -f 718/819 421/463 716/817 -f 512/566 719/820 717/818 -f 512/566 717/818 514/568 -f 719/820 718/819 717/818 -f 720/821 422/464 718/819 -f 718/819 422/464 421/463 -f 719/820 720/821 718/819 -f 511/565 721/822 719/820 -f 511/565 719/820 512/566 -f 721/822 720/821 719/820 -f 720/821 424/466 422/464 -f 721/822 722/823 720/821 -f 722/823 424/466 720/821 -f 516/570 723/824 721/822 -f 516/570 721/822 511/565 -f 723/824 722/823 721/822 -f 724/825 431/475 722/823 -f 722/823 431/475 424/466 -f 723/824 724/825 722/823 -f 518/572 725/826 723/824 -f 518/572 723/824 516/570 -f 725/826 724/825 723/824 -f 724/825 433/477 431/475 -f 725/826 726/827 724/825 -f 726/827 433/477 724/825 -f 520/574 727/828 725/826 -f 520/574 725/826 518/572 -f 727/828 726/827 725/826 -f 728/829 435/479 726/827 -f 727/828 728/829 726/827 -f 726/827 435/479 433/477 -f 522/576 729/830 727/828 -f 522/576 727/828 520/574 -f 729/830 728/829 727/828 -f 728/829 437/481 435/479 -f 729/830 730/831 728/829 -f 730/831 437/481 728/829 -f 524/578 731/832 729/830 -f 524/578 729/830 522/576 -f 731/832 730/831 729/830 -f 732/833 439/483 730/831 -f 730/831 439/483 437/481 -f 731/832 732/833 730/831 -f 733/834 732/833 731/832 -f 526/580 733/834 731/832 -f 526/580 731/832 524/578 -f 732/833 441/485 439/483 -f 733/834 734/835 732/833 -f 734/835 441/485 732/833 -f 528/582 735/836 733/834 -f 528/582 733/834 526/580 -f 735/836 734/835 733/834 -f 736/837 443/487 734/835 -f 734/835 443/487 441/485 -f 735/836 736/837 734/835 -f 530/584 737/838 735/836 -f 530/584 735/836 528/582 -f 737/838 736/837 735/836 -f 736/837 445/489 443/487 -f 737/838 738/839 736/837 -f 738/839 445/489 736/837 -f 532/586 739/840 737/838 -f 532/586 737/838 530/584 -f 739/840 738/839 737/838 -f 740/841 447/491 738/839 -f 738/839 447/491 445/489 -f 739/840 740/841 738/839 -f 258/588 255/842 739/840 -f 258/588 739/840 532/586 -f 255/842 740/841 739/840 -f 740/841 449/493 447/491 -f 255/842 254/843 740/841 -f 254/843 449/493 740/841 -f 254/843 252/495 449/493 -f 621/844 647/736 648/737 -f 283/845 621/844 648/737 -f 283/845 648/737 284/738 -f 621/844 622/846 647/736 -f 622/846 646/735 647/736 -f 622/846 623/847 646/735 -f 623/847 645/734 646/735 -f 623/847 624/848 645/734 -f 624/848 644/733 645/734 -f 624/848 625/849 644/733 -f 625/849 643/732 644/733 -f 625/849 626/850 643/732 -f 626/850 642/731 643/732 -f 626/850 627/851 642/731 -f 627/851 641/730 642/731 -f 627/851 628/852 641/730 -f 628/852 640/729 641/730 -f 628/852 629/853 640/729 -f 629/853 639/728 640/729 -f 629/853 630/854 639/728 -f 630/854 636/725 639/728 -f 630/854 631/855 636/725 -f 631/855 637/726 636/725 -f 631/855 632/856 637/726 -f 632/856 638/727 637/726 -f 632/856 633/857 638/727 -f 633/857 649/739 638/727 -f 633/857 634/858 649/739 -f 634/858 650/740 649/739 -f 634/858 635/859 650/740 -f 635/859 210/741 650/740 -f 635/859 211/860 210/741 -f 263/280 591/861 608/862 -f 263/280 265/283 591/861 -f 271/863 610/864 592/865 -f 271/863 261/866 610/864 -f 611/867 593/868 612/869 -f 612/869 593/868 595/870 -f 612/869 595/870 613/871 -f 611/867 587/872 593/868 -f 613/871 595/870 598/873 -f 613/871 598/873 617/874 -f 592/865 614/875 594/876 -f 592/865 610/864 614/875 -f 596/877 617/874 598/873 -f 596/877 618/878 617/874 -f 618/878 596/877 599/879 -f 618/878 599/879 619/880 -f 608/862 589/881 604/882 -f 604/882 589/881 590/883 -f 604/882 590/883 605/884 -f 608/862 591/861 589/881 -f 605/884 590/883 602/885 -f 605/884 602/885 606/886 -f 615/685 600/667 616/686 -f 615/685 601/668 600/667 -f 601/668 615/685 606/673 -f 601/668 606/673 602/669 -f 587/872 616/887 600/888 -f 587/872 611/867 616/887 -f 597/889 619/890 599/891 -f 597/889 620/892 619/890 -f 594/876 620/892 597/889 -f 594/876 614/875 620/892 diff --git a/mods/boats/textures/boat_inventory.png b/mods/boats/textures/boat_inventory.png deleted file mode 100644 index f9d082e31625c099490403a56906e922e2ea9e72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 851 zcmV-Z1FZasP)>bI*)Nhm3B#3M=*L}JA!9HRz@*?WkF_AHc>+{j&Vqga7ao&Fo0-9c3?qe zR6TE8K~_mQd16INLponkKt(}5WKJ!rg-)P-N|<*>n|VftYCWQVN|tp)lXF9CR4=E3 zOr(KKj&DGUY(02gHk*4$o_j}wXFGsoI(Az!X;LqbaYBP;IB-`nU`i^CZ9s@>J9}X` zfn+vxTQz)OGkIP!b6GQIP%D~uM3QnrjBPxHXgYjiIcifdYEmsuJRy~ILX>krh-o=* zRxVvgDOf}&RYE14TQCv;002C6QchCF4C!)z#F_%)z?4wzjROrk zg#{I`ySuwv-~76p?lSrRYdN5Rg6?&ebLY%6bI z-nq};QSUzDun5`WTPSq6&@T6!4T~zlRFQC4DK5=Fe3b*&Ya)cAoQkrdfMie}9i0xe zz~?6l6eFw~7^$inDe-2?0((6T_%UzsiV=4?0YXMn^bDJenO^0@Ux!aE$C4=nlr4i( z(PP4u1SpW_7tagT{`IYM^0Q2Yu*Js)!RYZ%-d*VW}xw7 zaApN-Y~D;pq@3fvR?>;w(8Xe_NsBv}aFJ|=eSC6WN`O!7e>1udibU2qhRMiIzEB)* zz?%b_L?gY|lx( dAMEQD2kZ(bZYdv#XGG|aNV@)bxN++y^OPh8>jBr72S2Jx@ zEq`V`bXzl5Ml)+vF{gq~lypUiY(0~3JcMdHePla>X*qgeIeTF;sDn>~YCw8oK3YX8 zrGQMLeMpvbK#FcWQA99aNi0-BCX#bOh-W%uPB2P9FlkXKY*si?Jt3KPNPu87y7d!z z00001bW%=J06^y0W&i*IG)Y83R5;7+kXv?xAQVLd0)l9aK=G|HzG95cYyNX9w)v3N zA++~>xdBdTSqmSkCILNo9`d~K_;lU?lIGZh zQFU*qD3P!_$ZW(2`cRN^UHThnhBcH6gwu5h7)qtBnMH~{9t1b9 k#*!tWkz&lBcYo-<03BBywb>I+MgRZ+07*qoM6N<$f=^K0k^lez From 5c8adc1fd4be34a50d67ce0f10d7e04afa053e0e Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 13 Jan 2016 13:46:58 +0100 Subject: [PATCH 006/383] removing boats --- mods/boats | 1 - 1 file changed, 1 deletion(-) delete mode 160000 mods/boats diff --git a/mods/boats b/mods/boats deleted file mode 160000 index ffaf921c..00000000 --- a/mods/boats +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ffaf921ce4a5644c62eced2754bffe1a41950e73 From 6481b1a46e1901403ac26055a7886daf8359002c Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 20 Feb 2016 21:23:44 +0100 Subject: [PATCH 007/383] diamond pickaxe got speed of mithril pick --- mods/default/tools.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/default/tools.lua b/mods/default/tools.lua index a948886a..2e9b590f 100644 --- a/mods/default/tools.lua +++ b/mods/default/tools.lua @@ -88,7 +88,8 @@ 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.0, [2]=1.0, [3]=0.50}, uses=30, maxlevel=3}, + cracky = {times = {[1] = 2.25, [2] = 0.55, [3] = 0.35}, uses = 30, maxlevel= 2} }, damage_groups = {fleshy=5}, }, From 0d9cc71396aee3d14c1fec18ad4057f38a3a6f6b Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 14 Mar 2016 10:13:00 +0100 Subject: [PATCH 008/383] clean tnt/init.lua (removed merge comment by git) --- mods/tnt/init.lua | 5 ----- 1 file changed, 5 deletions(-) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index d7ff4122..be448644 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -235,16 +235,11 @@ minetest.register_node("tnt:tnt", { sounds = default.node_sound_wood_defaults(), on_punch = function(pos, node, puncher) if puncher:get_wielded_item():get_name() == "default:torch" then -<<<<<<< HEAD if(minetest.check_player_privs(puncher:get_player_name(), {trusted_player=true})) then minetest.sound_play("tnt_ignite", {pos=pos}) minetest.set_node(pos, {name="tnt:tnt_burning"}) minetest.get_node_timer(pos):start(4) end -======= - minetest.sound_play("tnt_ignite", {pos=pos}) - minetest.set_node(pos, {name="tnt:tnt_burning"}) ->>>>>>> dfee51c21e1131c9c80fc7382b000954962f8b49 end end, on_blast = function(pos, intensity) From b0f61a6a5799e025438034e4973875637ee6e26a Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 14 Mar 2016 10:17:10 +0100 Subject: [PATCH 009/383] removed obsolet timer --- mods/tnt/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index be448644..003ef440 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -238,7 +238,6 @@ minetest.register_node("tnt:tnt", { if(minetest.check_player_privs(puncher:get_player_name(), {trusted_player=true})) then minetest.sound_play("tnt_ignite", {pos=pos}) minetest.set_node(pos, {name="tnt:tnt_burning"}) - minetest.get_node_timer(pos):start(4) end end end, From d672f9a7db4dfc1b23e9e4b1e19fbc30fb408570 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 14 Mar 2016 21:06:42 +0100 Subject: [PATCH 010/383] added alias for default:ladder --- mods/default/aliases.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/default/aliases.lua b/mods/default/aliases.lua index 63fe59b2..23bc70dc 100644 --- a/mods/default/aliases.lua +++ b/mods/default/aliases.lua @@ -24,6 +24,7 @@ minetest.register_alias("glass", "default:glass") minetest.register_alias("wooden_fence", "default:fence_wood") minetest.register_alias("rail", "default: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") From 28976d3e6c3c0186b0d7c559ced60d8bc72c046e Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 18 Mar 2016 18:50:17 +0100 Subject: [PATCH 011/383] Revert "Convert fences to NDT_CONNECTED." This reverts commit d979293f1448882e3a2eb0f7a3ecbaaf6b189d36. --- mods/default/functions.lua | 23 +++++------------- mods/default/nodes.lua | 10 ++++---- .../textures/default_fence_acacia_wood.png | Bin 232 -> 0 bytes .../textures/default_fence_aspen_wood.png | Bin 450 -> 0 bytes .../textures/default_fence_junglewood.png | Bin 231 -> 0 bytes .../textures/default_fence_pine_wood.png | Bin 233 -> 0 bytes mods/default/textures/default_fence_wood.png | Bin 230 -> 0 bytes 7 files changed, 11 insertions(+), 22 deletions(-) delete mode 100644 mods/default/textures/default_fence_acacia_wood.png delete mode 100644 mods/default/textures/default_fence_aspen_wood.png delete mode 100644 mods/default/textures/default_fence_junglewood.png delete mode 100644 mods/default/textures/default_fence_pine_wood.png delete mode 100644 mods/default/textures/default_fence_wood.png diff --git a/mods/default/functions.lua b/mods/default/functions.lua index a85009bf..29506c40 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -213,27 +213,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 diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index a7fd43fa..50c33cd6 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1716,7 +1716,7 @@ minetest.register_node("default:ladder_steel", { default.register_fence("default:fence_wood", { description = "Wooden Fence", - texture = "default_fence_wood.png", + texture = "default_wood.png", material = "default:wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() @@ -1724,7 +1724,7 @@ default.register_fence("default:fence_wood", { default.register_fence("default:fence_acacia_wood", { description = "Acacia Fence", - texture = "default_fence_acacia_wood.png", + texture = "default_acacia_wood.png", material = "default:acacia_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() @@ -1732,7 +1732,7 @@ default.register_fence("default:fence_acacia_wood", { default.register_fence("default:fence_junglewood", { description = "Junglewood Fence", - texture = "default_fence_junglewood.png", + texture = "default_junglewood.png", material = "default:junglewood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() @@ -1740,7 +1740,7 @@ default.register_fence("default:fence_junglewood", { default.register_fence("default:fence_pine_wood", { description = "Pine Fence", - texture = "default_fence_pine_wood.png", + texture = "default_pine_wood.png", material = "default:pine_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() @@ -1748,7 +1748,7 @@ default.register_fence("default:fence_pine_wood", { default.register_fence("default:fence_aspen_wood", { description = "Aspen Fence", - texture = "default_fence_aspen_wood.png", + texture = "default_aspen_wood.png", material = "default:aspen_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() diff --git a/mods/default/textures/default_fence_acacia_wood.png b/mods/default/textures/default_fence_acacia_wood.png deleted file mode 100644 index 3b973f34fbaf1d6d9351fe4e24b3da9e614ff666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYjZ>9K){rdHk(p>FJJmvd zx|8-yC+#^-TAMxe_xc*|@He{o`^IIU;wDcQ#}JO|qNfeH4mpUhT!>tgG&R(|qW`_v zNzNmeN+-x1a9*-?OZ=1Ny&SJK|K8@|`OLN_^lpu3i^TQZ7mT9Q^weFS?JW6{88U70 zOw-TzOdmfj-w--+#paBn^%fKO&7HDbbWn& z>~rq5xcz!#aWHH4;v<4UQs@N$I!jTrL&C{1)w*OCGJm{71S1e_Lg!BaB=ajz603xV zAGd8CU`^8zsM#R^E1jbbK7o*aQ;Z@Y1z>tK$2O(UyI8t~nw@$X<8a0hTEc!TZBr6X zj#>Zt?Kd`?4N?4|T?ZqY`k5$JgQQYtDXTp99zYI26f1}de^}1 z%cRaybe497Z!;l;?G@|nVc0}B2fY>v>-9S%^Q&P3H);QaF*QNZ4Ov;}Rzj>2%0mBh zV7Kp8sVP@ad^|b#`eT(K7kA$VZ`>u&*%E6Se*OIJeOl=pxv!>M+J*m(Wubc{pU=MZ s`tLp1)^AMhzic}X%EwjFef4ep1?f_*GKfbTk^lez07*qoM6N<$f|}jMmH+?% diff --git a/mods/default/textures/default_fence_junglewood.png b/mods/default/textures/default_fence_junglewood.png deleted file mode 100644 index c390941ce54ff75c8b4c2b4ffcbbe4fc040f8088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYl@?%-6Jk^qXE9Y~H&f-b z)Znwy;nv?13a2N9MFk!yUWuCMzbcVBms zaK>vZj+c8~ysTe$JowiAWd5bQX$dpTAL!nG=B(7AbNd4GGM(72wj;$aBbFbG=zDkX zO#XEr-TTe@Z633)CYk=5GsTA?B}}mKI7Xa3%Q_ZmbBZJtqYQFvls=l+>`)4-BUj5CiVJH_AX>9fI(u=7R`@MS$ z!tQvx>?+<>x_oZsB-f8G(q1W^C^v|j{JD6ugz~9ntXI0h gRn$^wUH(M--J3)mdKI;Vst02}LGZ2$lO diff --git a/mods/default/textures/default_fence_wood.png b/mods/default/textures/default_fence_wood.png deleted file mode 100644 index 1e76430d2f54f3b259598fb396df4aaf8b30b39e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYZOyb<*60=PtXh{~5M-~s zu+F0~*?4ZHYiG7?vbR=yw(ZwzhqeM0H+Z@@hHzXL?Kb2(w_*wCU=;m z*XQ-k{~ai%)VSJcr}BNjhrXKIR?Td@5te)P$>Od29Stwu86PUVs<^v& Date: Fri, 18 Mar 2016 20:46:07 +0100 Subject: [PATCH 012/383] added boats mod as submodule --- .gitmodules | 3 + mods/boats | 1 + mods/boats/README.txt | 20 - mods/boats/depends.txt | 2 - mods/boats/init.lua | 331 --- mods/boats/models/boats_boat.obj | 3111 --------------------- mods/boats/models/rowboat.x | 760 ----- mods/boats/textures/boats_inventory.png | Bin 851 -> 0 bytes mods/boats/textures/boats_wield.png | Bin 546 -> 0 bytes mods/boats/textures/rowboat_inventory.png | Bin 444 -> 0 bytes mods/boats/textures/rowboat_wield.png | Bin 366 -> 0 bytes 11 files changed, 4 insertions(+), 4224 deletions(-) create mode 100644 .gitmodules create mode 160000 mods/boats delete mode 100644 mods/boats/README.txt delete mode 100644 mods/boats/depends.txt delete mode 100644 mods/boats/init.lua delete mode 100644 mods/boats/models/boats_boat.obj delete mode 100644 mods/boats/models/rowboat.x delete mode 100644 mods/boats/textures/boats_inventory.png delete mode 100644 mods/boats/textures/boats_wield.png delete mode 100644 mods/boats/textures/rowboat_inventory.png delete mode 100644 mods/boats/textures/rowboat_wield.png diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..6090a239 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "mods/boats"] + path = mods/boats + url = https://github.com/tenplus1/boats diff --git a/mods/boats b/mods/boats new file mode 160000 index 00000000..ffaf921c --- /dev/null +++ b/mods/boats @@ -0,0 +1 @@ +Subproject commit ffaf921ce4a5644c62eced2754bffe1a41950e73 diff --git a/mods/boats/README.txt b/mods/boats/README.txt deleted file mode 100644 index 3fa40f25..00000000 --- a/mods/boats/README.txt +++ /dev/null @@ -1,20 +0,0 @@ -Minetest 0.4 mod: boats -======================= -by PilzAdam, slightly modified for NeXt -changed by TenPlus1 to add some new features - - boat is destroyed when crashing (drops 3 wood) - - boat turns faster - - used model from ds_rowboat mod - -License of source code: ------------------------ -WTFPL - -License of media (textures and sounds): ---------------------------------------- -WTFPL - -Authors of media files: ------------------------ -textures: Zeg9 -model: thetoon and Zeg9, modified by PavelS(SokolovPavel) diff --git a/mods/boats/depends.txt b/mods/boats/depends.txt deleted file mode 100644 index 7c506cfb..00000000 --- a/mods/boats/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -mobs? \ No newline at end of file diff --git a/mods/boats/init.lua b/mods/boats/init.lua deleted file mode 100644 index 7dac561f..00000000 --- a/mods/boats/init.lua +++ /dev/null @@ -1,331 +0,0 @@ -handlers = {} - -minetest.register_on_leaveplayer(function(player) - handlers[player:get_player_name()] = nil -end) - --- --- Helper functions --- - -local function is_water(pos) - - return minetest.get_item_group(minetest.get_node(pos).name, "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 square = math.sqrt - -local function get_v(v) - - return square(v.x *v.x + v.z *v.z) -end - --- --- Boat entity --- - -local boat = { - physical = true, - collisionbox = {-0.5, -0.4, -0.5, 0.5, 0.3, 0.5}, - visual = "mesh", - mesh = "rowboat.x", - 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 - - handlers[name] = nil - self.driver = nil - - clicker:set_detach() - - default.player_attached[name] = false - default.player_set_animation(clicker, "stand" , 30) - - local pos = clicker:getpos() - - minetest.after(0.1, function() - clicker:setpos({x=pos.x, y=pos.y+0.2, z=pos.z}) - end) - - elseif not self.driver then - - if handlers[name] and handlers[name].driver then - handlers[name].driver = nil - end - - handlers[name] = self.object:get_luaentity() - 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) - - self.object:setyaw(clicker:get_look_yaw() - math.pi / 2) - end -end - -function boat.on_activate(self, staticdata, dtime_s) - - if mobs and mobs.entity and mobs.entity == false then - self.object:remove() - return - end - - self.object:set_armor_groups({immortal = 1}) - self.v = 0 - self.v2 = self.v - self.last_v = self.v - self.count = 0 -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 - local name = puncher:get_player_name() - puncher:set_detach() - self.driver = nil - handlers[name] = nil - default.player_attached[name] = false - end - - if not self.driver then - - self.removed = true - - if not minetest.setting_getbool("creative_mode") then - - local inv = puncher:get_inventory() - - if inv:room_for_item("main", "boats:boat") then - inv:add_item("main", "boats:boat") - else - minetest.add_item(self.object:getpos(), "boats:boat") - end - end - - self.object:remove() - end -end - -function boat.on_step(self, dtime) - - -- after 10 seconds remove boat and drop as item if not boarded - self.count = self.count + dtime - - if self.count > 10 then - --minetest.add_item(self.object:getpos(), "boats:boat") - --self.object:remove() - return - end - - self.v = get_v(self.object:getvelocity()) * get_sign(self.v) - - if self.driver then - - self.count = 0 - - 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.08) -- 0.03 changed to speed up turning - else - self.object:setyaw(yaw + (1 + dtime) * 0.08) -- 0.03 - end - - elseif ctrl.right then - - if self.v < 0 then - self.object:setyaw(yaw + (1 + dtime) * 0.08) -- 0.03 - else - self.object:setyaw(yaw - (1 + dtime) * 0.08) -- 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) > 4.5 then - self.v = 4.5 * get_sign(self.v) - end - - local p = self.object:getpos() - local new_velo = {x = 0, y = 0, z = 0} - local new_acce = {x = 0, y = 0, z = 0} - - p.y = p.y - 0.5 - - 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 = 0, z = 0} -- y was 1 - 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 >= 4.5 then - y = 4.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) - - -- if boat comes to sudden stop then it has crashed, destroy boat and drop 3x wood - if self.v2 - self.v >= 3 then - - if self.driver then ---print ("Crash! with driver", self.v2 - self.v) - self.driver:set_detach() - default.player_attached[self.driver:get_player_name()] = false - default.player_set_animation(self.driver, "stand" , 30) - else ---print ("Crash! no driver") - end - - minetest.add_item(self.object:getpos(), "default:wood 3") - - self.object:remove() - - return - end - - self.v2 = self.v - -end - -minetest.register_entity("boats:boat", boat) - -minetest.register_craftitem("boats:boat", { - description = "Boat", - inventory_image = "rowboat_inventory.png", - wield_image = "rowboat_wield.png", - wield_scale = {x = 2, y = 2, z = 1}, - liquids_pointable = true, - - on_place = function(itemstack, placer, pointed_thing) - - if pointed_thing.type ~= "node" - or not is_water(pointed_thing.under) then - return - end - - pointed_thing.under.y = pointed_thing.under.y + 0.5 - - minetest.add_entity(pointed_thing.under, "boats:boat") - - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - - return itemstack - end, -}) - -minetest.register_craft({ - output = "boats:boat", - recipe = { - {"", "", ""}, - {"group:wood", "", "group:wood"}, - {"group:wood", "group:wood", "group:wood"}, - }, -}) - -minetest.register_alias("ds_rowboat:ds_rowboat", "boats:boat") - -print ("[MOD] Boats loaded") diff --git a/mods/boats/models/boats_boat.obj b/mods/boats/models/boats_boat.obj deleted file mode 100644 index 8c3424fa..00000000 --- a/mods/boats/models/boats_boat.obj +++ /dev/null @@ -1,3111 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: '' -# www.blender.org -v -6.786140 -1.967150 -4.863200 -v -6.786140 -3.034000 -6.001260 -v -6.786140 -3.034000 -4.863200 -v -6.786140 -1.967150 -3.725140 -v -6.786140 -3.034000 -3.725140 -v -6.786140 -1.967150 -6.001260 -v -6.786140 -3.034000 -7.139320 -v -6.786140 -1.967150 -7.139320 -v -6.786140 -3.034000 -8.277380 -v -6.786140 -1.967150 -8.277380 -v -6.786140 -3.034000 -9.415440 -v -6.786140 -1.967150 -9.415440 -v -6.786140 -1.967150 -2.587080 -v -6.786140 -3.034000 -2.587080 -v -6.786140 -1.967150 -1.449020 -v -6.786140 -3.034000 -1.449020 -v -6.786140 -1.967150 -0.310965 -v -6.786140 -3.034000 -0.310965 -v -6.786140 -1.967150 0.827094 -v -6.786140 -3.034000 0.827094 -v -6.786140 -1.967150 1.965150 -v -6.786140 -3.034000 1.965150 -v -6.786140 -1.967150 3.103210 -v -6.786140 -3.034000 3.103210 -v -6.786140 -1.967150 4.241270 -v -6.786140 -3.034000 4.241270 -v -6.786140 -1.967150 5.379330 -v -6.786140 -3.034000 5.379330 -v -6.786140 -1.967150 6.517390 -v -6.786140 -3.034000 6.517390 -v -6.786140 -1.967150 7.655450 -v -6.786140 -3.034000 7.655450 -v -6.786140 -1.967150 8.793510 -v -6.786140 -3.033999 8.793510 -v 5.732520 -1.967150 -8.277380 -v 5.732520 -3.034000 -7.139320 -v 5.732520 -3.034000 -8.277380 -v 5.732520 -1.967150 -9.415440 -v 5.732520 -3.034000 -9.415440 -v 5.732520 -1.967150 -7.139320 -v 5.732520 -3.034000 -6.001260 -v 5.732520 -1.967150 -6.001260 -v 5.732520 -3.034000 -4.863200 -v 5.732520 -1.967150 -4.863200 -v 5.732520 -3.034000 -3.725140 -v 5.732520 -1.967150 -3.725140 -v 5.732520 -3.034000 -2.587080 -v 5.732520 -1.967150 -2.587080 -v 5.732520 -3.034000 -1.449020 -v 5.732520 -1.967150 -1.449020 -v 5.732520 -3.034000 -0.310965 -v 5.732520 -1.967150 -0.310965 -v 5.732520 -3.034000 0.827094 -v 5.732520 -1.967150 0.827094 -v 5.732520 -3.034000 1.965150 -v 5.732520 -1.967150 1.965150 -v 5.732520 -3.034000 3.103210 -v 5.732520 -1.967150 3.103210 -v 5.732520 -3.034000 4.241270 -v 5.732520 -1.967150 4.241270 -v 5.732520 -3.034000 5.379330 -v 5.732520 -1.967150 5.379330 -v 5.732520 -3.034000 6.517390 -v 5.732520 -1.967150 6.517390 -v 5.732520 -3.034000 7.655450 -v 5.732520 -1.967150 7.655450 -v 5.732520 -3.033999 8.793510 -v 5.732520 -1.967150 8.793510 -v -2.233900 -1.967150 -6.001260 -v -2.233900 -3.034000 -7.139320 -v -2.233900 -3.034000 -6.001260 -v -2.233900 -1.967150 -4.863200 -v -2.233900 -3.034000 -4.863200 -v -2.233900 -1.967150 -7.139320 -v -2.233900 -3.034000 -8.277380 -v -2.233900 -1.967150 -8.277380 -v -2.233900 -3.034000 -9.415440 -v -2.233900 -1.967150 -9.415440 -v -2.233900 -1.967150 -3.725140 -v -2.233900 -3.034000 -3.725140 -v -2.233900 -1.967150 -2.587080 -v -2.233900 -3.034000 -2.587080 -v -2.233900 -1.967150 -1.449020 -v -2.233900 -3.034000 -1.449020 -v -2.233900 -1.967150 -0.310965 -v -2.233900 -3.034000 -0.310965 -v -2.233900 -1.967150 0.827094 -v -2.233900 -3.034000 0.827094 -v -2.233900 -1.967150 1.965150 -v -2.233900 -3.034000 1.965150 -v -2.233900 -1.967150 3.103210 -v -2.233900 -3.034000 3.103210 -v -2.233900 -1.967150 4.241270 -v -2.233900 -3.034000 4.241270 -v -2.233900 -1.967150 5.379330 -v -2.233900 -3.034000 5.379330 -v -2.233900 -1.967150 6.517390 -v -2.233900 -3.034000 6.517390 -v -2.233900 -1.967150 7.655450 -v -2.233900 -3.034000 7.655450 -v -2.233900 -1.967150 8.793510 -v -2.233900 -3.033999 8.793510 -v 2.318340 -1.967150 -3.725140 -v 2.318340 -3.034000 -4.863200 -v 2.318340 -3.034000 -3.725140 -v 2.318340 -1.967150 -2.587080 -v 2.318340 -3.034000 -2.587080 -v 2.318340 -1.967150 -4.863200 -v 2.318340 -3.034000 -6.001260 -v 2.318340 -1.967150 -6.001260 -v 2.318340 -3.034000 -7.139320 -v 2.318340 -1.967150 -7.139320 -v 2.318340 -3.034000 -8.277380 -v 2.318340 -1.967150 -8.277380 -v 2.318340 -3.034000 -9.415440 -v 2.318340 -1.967150 -9.415440 -v 2.318340 -1.967150 -1.449020 -v 2.318340 -3.034000 -1.449020 -v 2.318340 -1.967150 -0.310965 -v 2.318340 -3.034000 -0.310965 -v 2.318340 -1.967150 0.827094 -v 2.318340 -3.034000 0.827094 -v 2.318340 -1.967150 1.965150 -v 2.318340 -3.034000 1.965150 -v 2.318340 -1.967150 3.103210 -v 2.318340 -3.034000 3.103210 -v 2.318340 -1.967150 4.241270 -v 2.318340 -3.034000 4.241270 -v 2.318340 -1.967150 5.379330 -v 2.318340 -3.034000 5.379330 -v 2.318340 -1.967150 6.517390 -v 2.318340 -3.034000 6.517390 -v 2.318340 -1.967150 7.655450 -v 2.318340 -3.034000 7.655450 -v 2.318340 -1.967150 8.793510 -v 2.318340 -3.033999 8.793510 -v -3.371960 -1.967150 6.517390 -v -3.371960 -3.034000 7.655450 -v -3.371960 -3.034000 6.517390 -v -3.371960 -1.967150 5.379330 -v -3.371960 -3.034000 5.379330 -v -3.371960 -1.967150 7.655450 -v -3.371960 -3.033999 8.793510 -v -3.371960 -1.967150 8.793510 -v -3.371960 -1.967150 4.241270 -v -3.371960 -3.034000 4.241270 -v -3.371960 -1.967150 3.103210 -v -3.371960 -3.034000 3.103210 -v -3.371960 -1.967150 1.965150 -v -3.371960 -3.034000 1.965150 -v -3.371960 -1.967150 0.827094 -v -3.371960 -3.034000 0.827094 -v -3.371960 -1.967150 -0.310965 -v -3.371960 -3.034000 -0.310965 -v -3.371960 -1.967150 -1.449020 -v -3.371960 -3.034000 -1.449020 -v -3.371960 -1.967150 -2.587080 -v -3.371960 -3.034000 -2.587080 -v -3.371960 -1.967150 -3.725140 -v -3.371960 -3.034000 -3.725140 -v -3.371960 -1.967150 -4.863200 -v -3.371960 -3.034000 -4.863200 -v -3.371960 -1.967150 -6.001260 -v -3.371960 -3.034000 -6.001260 -v -3.371960 -1.967150 -7.139320 -v -3.371960 -3.034000 -7.139320 -v -3.371960 -1.967150 -8.277380 -v -3.371960 -3.034000 -8.277380 -v -3.371960 -1.967150 -9.415440 -v -3.371960 -3.034000 -9.415440 -v 4.594460 -1.967150 8.793510 -v 3.456400 -3.033999 8.793510 -v 4.594460 -3.033999 8.793510 -v 3.456400 -1.967150 8.793510 -v 4.594460 0.276645 8.793510 -v 3.456400 0.276645 8.793510 -v 2.318340 0.276645 8.793510 -v 1.180280 -1.967150 8.793510 -v 3.456400 1.039180 8.793510 -v 4.594460 1.039180 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 0.042220 0.276645 8.793510 -v 1.180280 1.039180 8.793510 -v 0.042220 -1.967150 8.793510 -v -1.095840 0.276645 8.793510 -v 0.042220 1.039180 8.793510 -v -1.095840 -1.967150 8.793510 -v 0.042220 -3.033999 8.793510 -v -1.095840 -3.033999 8.793510 -v 1.180280 -3.033999 8.793510 -v -2.233900 0.276645 8.793510 -v -4.510020 -1.967150 8.793510 -v -4.510020 -3.033999 8.793510 -v -3.371960 0.276645 8.793510 -v -1.095840 1.039180 8.793510 -v -2.233900 1.039180 8.793510 -v -4.510020 0.276645 8.793510 -v -3.371960 1.039180 8.793510 -v -4.510020 1.039180 8.793510 -v -5.648080 0.276645 8.793510 -v -5.648080 -1.967150 8.793510 -v -5.648080 1.039180 8.793510 -v -6.786140 0.276645 8.793510 -v -5.648080 -3.033999 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 1.965150 -v 1.180280 -3.034000 3.103210 -v 1.180280 -3.034000 1.965150 -v 1.180280 -1.967150 0.827094 -v 1.180280 -3.034000 0.827094 -v 1.180280 -1.967150 3.103210 -v 1.180280 -3.034000 4.241270 -v 1.180280 -1.967150 4.241270 -v 1.180280 -3.034000 5.379330 -v 1.180280 -1.967150 5.379330 -v 1.180280 -3.034000 6.517390 -v 1.180280 -1.967150 6.517390 -v 1.180280 -3.034000 7.655450 -v 1.180280 -1.967150 7.655450 -v 1.180280 -1.967150 -0.310965 -v 1.180280 -3.034000 -0.310965 -v 1.180280 -1.967150 -1.449020 -v 1.180280 -3.034000 -1.449020 -v 1.180280 -1.967150 -2.587080 -v 1.180280 -3.034000 -2.587080 -v 1.180280 -1.967150 -3.725140 -v 1.180280 -3.034000 -3.725140 -v 1.180280 -1.967150 -4.863200 -v 1.180280 -3.034000 -4.863200 -v 1.180280 -1.967150 -6.001260 -v 1.180280 -3.034000 -6.001260 -v 1.180280 -1.967150 -7.139320 -v 1.180280 -3.034000 -7.139320 -v 1.180280 -1.967150 -8.277380 -v 1.180280 -3.034000 -8.277380 -v 1.180280 -1.967150 -9.415440 -v 1.180280 -3.034000 -9.415440 -v 3.456400 -3.034000 -9.415440 -v 3.456400 -1.967150 -9.415440 -v 2.318340 0.276645 -9.415440 -v 1.180280 0.276645 -9.415440 -v 4.594460 -3.034000 -9.415440 -v 4.594460 -1.967150 -9.415440 -v 3.456400 0.276645 -9.415440 -v 2.318340 1.039180 -9.415440 -v 4.594460 0.276645 -9.415440 -v 3.456400 1.039180 -9.415440 -v 4.594460 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 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 0.042220 -3.034000 -9.415440 -v -1.095840 -1.967150 -9.415440 -v -1.095840 -3.034000 -9.415440 -v -2.233900 0.276645 -9.415440 -v -1.095840 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 -4.510020 0.276645 -9.415440 -v -4.510020 1.039180 -9.415440 -v -3.371960 1.039180 -9.415440 -v -4.510020 -1.967150 -9.415440 -v -5.648080 0.276645 -9.415440 -v -5.648080 1.039180 -9.415440 -v -5.648080 -1.967150 -9.415440 -v -4.510020 -3.034000 -9.415440 -v -6.786140 0.276645 -9.415440 -v -6.786140 1.039180 -9.415440 -v -5.648080 -3.034000 -9.415440 -v -7.786200 -1.967150 -9.415440 -v -7.786200 0.276645 -9.415440 -v 6.870580 -1.967150 7.655450 -v 6.870580 -1.967150 6.517390 -v 6.870580 -1.967150 5.379330 -v 6.870580 -1.967150 4.241270 -v 6.870580 -1.967150 3.103210 -v 6.870580 -1.967150 1.965150 -v 6.870580 -1.967150 0.827094 -v 6.870580 -1.967150 -0.310965 -v 6.870580 -1.967150 -1.449020 -v 6.870580 -1.967150 -2.587080 -v 6.870580 -1.967150 -3.725140 -v 6.870580 -1.967150 -4.863200 -v 6.870580 -1.967150 -6.001260 -v 6.870580 -1.967150 -7.139320 -v 6.870580 -1.967150 -8.277380 -v -5.648080 -3.034000 0.827094 -v -5.648080 -3.034000 -0.310965 -v -5.648080 -3.034000 1.965150 -v -4.510020 -3.034000 1.965150 -v -5.648080 -3.034000 3.103210 -v -4.510020 -3.034000 0.827094 -v -5.648080 -3.034000 4.241270 -v -4.510020 -3.034000 3.103210 -v -4.510020 -3.034000 -0.310965 -v -4.510020 -3.034000 -1.449020 -v -4.510020 -3.034000 -2.587080 -v -5.648080 -3.034000 -1.449020 -v -5.648080 -3.034000 -2.587080 -v -4.510020 -3.034000 -3.725140 -v -5.648080 -3.034000 -3.725140 -v -4.510020 -3.034000 -4.863200 -v -5.648080 -3.034000 -4.863200 -v -4.510020 -3.034000 -6.001260 -v -5.648080 -3.034000 -6.001260 -v -4.510020 -3.034000 -7.139320 -v -5.648080 -3.034000 -7.139320 -v -4.510020 -3.034000 -8.277380 -v -5.648080 -3.034000 -8.277380 -v -4.510020 -3.034000 4.241270 -v -4.510020 -3.034000 5.379330 -v -5.648080 -3.034000 5.379330 -v -5.648080 -3.034000 6.517390 -v -4.510020 -3.034000 6.517390 -v -5.648080 -3.034000 7.655450 -v -4.510020 -3.034000 7.655450 -v -1.095840 -3.034000 0.827094 -v -1.095840 -3.034000 -0.310965 -v -1.095840 -3.034000 1.965150 -v 0.042220 -3.034000 1.965150 -v -1.095840 -3.034000 3.103210 -v 0.042220 -3.034000 0.827094 -v -1.095840 -3.034000 4.241270 -v 0.042220 -3.034000 3.103210 -v 0.042220 -3.034000 -0.310965 -v 0.042220 -3.034000 -1.449020 -v 0.042220 -3.034000 -2.587080 -v -1.095840 -3.034000 -1.449020 -v -1.095840 -3.034000 -2.587080 -v 0.042220 -3.034000 -3.725140 -v -1.095840 -3.034000 -3.725140 -v 0.042220 -3.034000 -4.863200 -v -1.095840 -3.034000 -4.863200 -v 0.042220 -3.034000 -6.001260 -v -1.095840 -3.034000 -6.001260 -v 0.042220 -3.034000 -7.139320 -v -1.095840 -3.034000 -7.139320 -v 0.042220 -3.034000 -8.277380 -v -1.095840 -3.034000 -8.277380 -v 0.042220 -3.034000 4.241270 -v 0.042220 -3.034000 5.379330 -v -1.095840 -3.034000 5.379330 -v -1.095840 -3.034000 6.517390 -v 0.042220 -3.034000 6.517390 -v -1.095840 -3.034000 7.655450 -v 0.042220 -3.034000 7.655450 -v 3.456400 -3.034000 -3.725140 -v 3.456400 -3.034000 -4.863200 -v 3.456400 -3.034000 -2.587080 -v 4.594460 -3.034000 -2.587080 -v 3.456400 -3.034000 -1.449020 -v 4.594460 -3.034000 -3.725140 -v 3.456400 -3.034000 -0.310965 -v 4.594460 -3.034000 -1.449020 -v 4.594460 -3.034000 -4.863200 -v 4.594460 -3.034000 -6.001260 -v 4.594460 -3.034000 -7.139320 -v 3.456400 -3.034000 -6.001260 -v 3.456400 -3.034000 -7.139320 -v 4.594460 -3.034000 -8.277380 -v 3.456400 -3.034000 -8.277380 -v 4.594460 -3.034000 -0.310965 -v 4.594460 -3.034000 0.827094 -v 3.456400 -3.034000 0.827094 -v 3.456400 -3.034000 1.965150 -v 4.594460 -3.034000 1.965150 -v 3.456400 -3.034000 3.103210 -v 4.594460 -3.034000 3.103210 -v 3.456400 -3.034000 4.241270 -v 4.594460 -3.034000 4.241270 -v 3.456400 -3.034000 5.379330 -v 4.594460 -3.034000 5.379330 -v 3.456400 -3.034000 6.517390 -v 4.594460 -3.034000 6.517390 -v 3.456400 -3.034000 7.655450 -v 4.594460 -3.034000 7.655450 -v -2.233900 0.276645 -2.587080 -v -2.233900 1.039180 -1.449020 -v -2.233900 1.039180 -2.587080 -v -2.233900 0.276645 -3.725140 -v -2.233900 1.039180 -3.725140 -v -2.233900 0.276645 -1.449020 -v -2.233900 1.039180 -0.310965 -v -2.233900 0.276645 -0.310965 -v -2.233900 1.039180 0.827094 -v -2.233900 0.276645 0.827094 -v -2.233900 1.039180 1.965150 -v -2.233900 0.276645 1.965150 -v -2.233900 1.039180 3.103210 -v -2.233900 0.276645 3.103210 -v -2.233900 1.039180 4.241270 -v -2.233900 0.276645 4.241270 -v -2.233900 1.039180 5.379330 -v -2.233900 0.276645 5.379330 -v -2.233900 1.039180 6.517390 -v -2.233900 0.276645 6.517390 -v -2.233900 1.039180 7.655450 -v -2.233900 0.276645 7.655450 -v -2.233900 0.276645 -4.863200 -v -2.233900 1.039180 -4.863200 -v -2.233900 0.276645 -6.001260 -v -2.233900 1.039180 -6.001260 -v -2.233900 0.276645 -7.139320 -v -2.233900 1.039180 -7.139320 -v -2.233900 0.276645 -8.277380 -v -2.233900 1.039180 -8.277380 -v 2.318340 0.276645 4.241270 -v 2.318340 1.039180 5.379330 -v 2.318340 1.039180 4.241270 -v 2.318340 0.276645 3.103210 -v 2.318340 1.039180 3.103210 -v 2.318340 0.276645 5.379330 -v 2.318340 1.039180 6.517390 -v 2.318340 0.276645 6.517390 -v 2.318340 1.039180 7.655450 -v 2.318340 0.276645 7.655450 -v 2.318340 0.276645 1.965150 -v 2.318340 1.039180 1.965150 -v 2.318340 0.276645 0.827094 -v 2.318340 1.039180 0.827094 -v 2.318340 0.276645 -0.310965 -v 2.318340 1.039180 -0.310965 -v 2.318340 0.276645 -1.449020 -v 2.318340 1.039180 -1.449020 -v 2.318340 0.276645 -2.587080 -v 2.318340 1.039180 -2.587080 -v 2.318340 0.276645 -3.725140 -v 2.318340 1.039180 -3.725140 -v 2.318340 0.276645 -4.863200 -v 2.318340 1.039180 -4.863200 -v 2.318340 0.276645 -6.001260 -v 2.318340 1.039180 -6.001260 -v 2.318340 0.276645 -7.139320 -v 2.318340 1.039180 -7.139320 -v 2.318340 0.276645 -8.277380 -v 2.318340 1.039180 -8.277380 -v -6.786140 0.276645 6.517390 -v -6.786140 1.039180 7.655450 -v -6.786140 1.039180 6.517390 -v -6.786140 0.276645 5.379330 -v -6.786140 1.039180 5.379330 -v -6.786140 0.276645 7.655450 -v -6.786140 0.276645 4.241270 -v -6.786140 1.039180 4.241270 -v -6.786140 0.276645 3.103210 -v -6.786140 1.039180 3.103210 -v -6.786140 0.276645 1.965150 -v -6.786140 1.039180 1.965150 -v -6.786140 0.276645 0.827094 -v -6.786140 1.039180 0.827094 -v -6.786140 0.276645 -0.310965 -v -6.786140 1.039180 -0.310965 -v -6.786140 0.276645 -1.449020 -v -6.786140 1.039180 -1.449020 -v -6.786140 0.276645 -2.587080 -v -6.786140 1.039180 -2.587080 -v -6.786140 0.276645 -3.725140 -v -6.786140 1.039180 -3.725140 -v -6.786140 0.276645 -4.863200 -v -6.786140 1.039180 -4.863200 -v -6.786140 0.276645 -6.001260 -v -6.786140 1.039180 -6.001260 -v -6.786140 0.276645 -7.139320 -v -6.786140 1.039180 -7.139320 -v -6.786140 0.276645 -8.277380 -v -6.786140 1.039180 -8.277380 -v 1.180280 0.276645 -7.139320 -v 1.180280 1.039180 -8.277380 -v 1.180280 1.039180 -7.139320 -v 1.180280 0.276645 -6.001260 -v 1.180280 1.039180 -6.001260 -v 1.180280 0.276645 -8.277380 -v 1.180280 0.276645 -4.863200 -v 1.180280 1.039180 -4.863200 -v 1.180280 0.276645 -3.725140 -v 1.180280 1.039180 -3.725140 -v 1.180280 0.276645 -2.587080 -v 1.180280 1.039180 -2.587080 -v 1.180280 0.276645 -1.449020 -v 1.180280 1.039180 -1.449020 -v 1.180280 0.276645 -0.310965 -v 1.180280 1.039180 -0.310965 -v 1.180280 0.276645 0.827094 -v 1.180280 1.039180 0.827094 -v 1.180280 0.276645 1.965150 -v 1.180280 1.039180 1.965150 -v 1.180280 0.276645 3.103210 -v 1.180280 1.039180 3.103210 -v 1.180280 0.276645 4.241270 -v 1.180280 1.039180 4.241270 -v 1.180280 0.276645 5.379330 -v 1.180280 1.039180 5.379330 -v 1.180280 0.276645 6.517390 -v 1.180280 1.039180 6.517390 -v 1.180280 0.276645 7.655450 -v 1.180280 1.039180 7.655450 -v 5.732520 0.276645 3.103210 -v 5.732520 1.039180 1.965150 -v 5.732520 1.039180 3.103210 -v 5.732520 0.276645 4.241270 -v 5.732520 1.039180 4.241270 -v 5.732520 0.276645 1.965150 -v 5.732520 1.039180 0.827094 -v 5.732520 0.276645 0.827094 -v 5.732520 1.039180 -0.310965 -v 5.732520 0.276645 -0.310965 -v 5.732520 1.039180 -1.449020 -v 5.732520 0.276645 -1.449020 -v 5.732520 1.039180 -2.587080 -v 5.732520 0.276645 -2.587080 -v 5.732520 1.039180 -3.725140 -v 5.732520 0.276645 -3.725140 -v 5.732520 1.039180 -4.863200 -v 5.732520 0.276645 -4.863200 -v 5.732520 1.039180 -6.001260 -v 5.732520 0.276645 -6.001260 -v 5.732520 1.039180 -7.139320 -v 5.732520 0.276645 -7.139320 -v 5.732520 1.039180 -8.277380 -v 5.732520 0.276645 -8.277380 -v 5.732520 0.276645 5.379330 -v 5.732520 1.039180 5.379330 -v 5.732520 0.276645 6.517390 -v 5.732520 1.039180 6.517390 -v 5.732520 0.276645 7.655450 -v 5.732520 1.039180 7.655450 -v -3.371960 1.039180 7.655450 -v -3.371960 0.276645 7.655450 -v -3.371960 1.039180 6.517390 -v -3.371960 0.276645 6.517390 -v -3.371960 1.039180 5.379330 -v -3.371960 0.276645 5.379330 -v -3.371960 1.039180 4.241270 -v -3.371960 0.276645 4.241270 -v -3.371960 1.039180 3.103210 -v -3.371960 0.276645 3.103210 -v -3.371960 1.039180 1.965150 -v -3.371960 0.276645 1.965150 -v -3.371960 1.039180 0.827094 -v -3.371960 0.276645 0.827094 -v -3.371960 1.039180 -0.310965 -v -3.371960 0.276645 -0.310965 -v -3.371960 1.039180 -1.449020 -v -3.371960 0.276645 -1.449020 -v -3.371960 1.039180 -2.587080 -v -3.371960 0.276645 -2.587080 -v -3.371960 1.039180 -3.725140 -v -3.371960 0.276645 -3.725140 -v -3.371960 1.039180 -4.863200 -v -3.371960 0.276645 -4.863200 -v -3.371960 1.039180 -6.001260 -v -3.371960 0.276645 -6.001260 -v -3.371960 1.039180 -7.139320 -v -3.371960 0.276645 -7.139320 -v -3.371960 1.039180 -8.277380 -v -3.371960 0.276645 -8.277380 -v 6.870580 0.276645 7.655450 -v 6.870580 0.276645 6.517390 -v 6.870580 0.276645 5.379330 -v 6.870580 0.276645 4.241270 -v 6.870580 0.276645 3.103210 -v 6.870580 0.276645 1.965150 -v 6.870580 0.276645 0.827094 -v 6.870580 0.276645 -0.310965 -v 6.870580 0.276645 -1.449020 -v 6.870580 0.276645 -2.587080 -v 6.870580 0.276645 -3.725140 -v 6.870580 0.276645 -4.863200 -v 6.870580 0.276645 -6.001260 -v 6.870580 0.276645 -7.139320 -v 6.870580 0.276645 -8.277380 -v -1.095840 0.276645 -10.802900 -v -1.095840 -1.967150 -10.802900 -v -1.095840 0.276644 -12.034100 -v -1.095840 -1.967150 -12.034100 -v -1.095840 -4.601110 -10.802900 -v -1.095840 -4.601110 -12.034100 -v -1.095840 -4.601110 -9.415440 -v -1.095840 1.039180 -10.802900 -v -1.095840 1.039180 -12.034100 -v -1.095840 2.768579 -10.802900 -v -1.095840 2.768579 -12.034100 -v -1.095840 3.746069 -10.802900 -v -1.095840 2.768580 -7.883420 -v -1.095840 3.746069 -12.034100 -v -1.095840 3.746070 -7.883420 -v -1.095840 0.276644 -14.284900 -v -1.095840 -1.967151 -14.284900 -v -1.095840 -4.601110 -14.284900 -v 0.042220 -1.967150 -12.034100 -v 0.042220 -4.601110 -10.802900 -v 0.042220 -4.601110 -12.034100 -v 0.042220 -4.601110 -14.284900 -v 0.042220 -1.967150 -10.802900 -v 0.042220 -4.601110 -9.415440 -v 0.042220 0.276645 -10.802900 -v 0.042220 1.039180 -10.802900 -v 0.042220 0.276644 -12.034100 -v 0.042220 1.039180 -12.034100 -v 0.042220 2.768579 -12.034100 -v 0.042220 2.768579 -10.802900 -v 0.042220 -1.967151 -14.284900 -v 0.042220 0.276644 -14.284900 -v 0.042220 3.746069 -12.034100 -v 0.042220 3.746069 -10.802900 -v 0.042220 3.746070 -7.883420 -v 0.042220 2.768580 -7.883420 -v -7.786200 -1.967150 -8.277380 -v -7.786200 -1.967150 -7.139320 -v -7.786200 -1.967150 -6.001260 -v -7.786200 -1.967150 -4.863200 -v -7.786200 -1.967150 -3.725140 -v -7.786200 -1.967150 -2.587080 -v -7.786200 -1.967150 -1.449020 -v -7.786200 -1.967150 -0.310965 -v -7.786200 -1.967150 0.827094 -v -7.786200 -1.967150 1.965150 -v -7.786200 -1.967150 3.103210 -v -7.786200 -1.967150 4.241270 -v -7.786200 -1.967150 5.379330 -v -7.786200 -1.967150 6.517390 -v -7.786200 -1.967150 7.655450 -v -7.786200 0.276645 3.103210 -v -7.786200 0.276645 4.241270 -v -7.786200 0.276645 5.379330 -v -7.786200 0.276645 1.965150 -v -7.786200 0.276645 0.827094 -v -7.786200 0.276645 -0.310965 -v -7.786200 0.276645 -1.449020 -v -7.786200 0.276645 -2.587080 -v -7.786200 0.276645 -3.725140 -v -7.786200 0.276645 -4.863200 -v -7.786200 0.276645 -6.001260 -v -7.786200 0.276645 -7.139320 -v -7.786200 0.276645 -8.277380 -v -7.786200 0.276645 6.517390 -v -7.786200 0.276645 7.655450 -v 0.042220 1.039180 7.655450 -v 0.042220 1.039180 6.517390 -v -1.095840 1.039180 7.655450 -v 0.042220 1.039180 5.379330 -v -1.095840 1.039180 6.517390 -v -1.095840 1.039180 5.379330 -v 0.042220 1.039180 4.241270 -v -1.095840 1.039180 4.241270 -v 0.042220 1.039180 3.103210 -v -1.095840 1.039180 3.103210 -v 0.042220 1.039180 1.965150 -v -1.095840 1.039180 1.965150 -v 0.042220 1.039180 0.827094 -v -1.095840 1.039180 0.827094 -v 0.042220 1.039180 -0.310965 -v -1.095840 1.039180 -0.310965 -v 0.042220 1.039180 -1.449020 -v -1.095840 1.039180 -1.449020 -v 0.042220 1.039180 -2.587080 -v -1.095840 1.039180 -2.587080 -v 0.042220 1.039180 -3.725140 -v -1.095840 1.039180 -3.725140 -v 0.042220 1.039180 -4.863200 -v -1.095840 1.039180 -4.863200 -v 0.042220 1.039180 -6.001260 -v -1.095840 1.039180 -6.001260 -v 0.042220 1.039180 -7.139320 -v -1.095840 1.039180 -7.139320 -v 0.042220 1.039180 -8.277380 -v -1.095840 1.039180 -8.277380 -v -4.510020 1.039180 7.655450 -v -4.510020 1.039180 6.517390 -v -5.648080 1.039180 7.655450 -v -4.510020 1.039180 5.379330 -v -5.648080 1.039180 6.517390 -v -5.648080 1.039180 5.379330 -v -4.510020 1.039180 4.241270 -v -5.648080 1.039180 4.241270 -v -4.510020 1.039180 3.103210 -v -5.648080 1.039180 3.103210 -v -4.510020 1.039180 1.965150 -v -5.648080 1.039180 1.965150 -v -4.510020 1.039180 0.827094 -v -5.648080 1.039180 0.827094 -v -4.510020 1.039180 -0.310965 -v -5.648080 1.039180 -0.310965 -v -4.510020 1.039180 -1.449020 -v -5.648080 1.039180 -1.449020 -v -4.510020 1.039180 -2.587080 -v -5.648080 1.039180 -2.587080 -v -4.510020 1.039180 -3.725140 -v -5.648080 1.039180 -3.725140 -v -4.510020 1.039180 -4.863200 -v -5.648080 1.039180 -4.863200 -v -4.510020 1.039180 -6.001260 -v -5.648080 1.039180 -6.001260 -v -4.510020 1.039180 -7.139320 -v -5.648080 1.039180 -7.139320 -v -4.510020 1.039180 -8.277380 -v -5.648080 1.039180 -8.277380 -v 4.594460 1.039180 7.655450 -v 4.594460 1.039180 6.517390 -v 3.456400 1.039180 7.655450 -v 4.594460 1.039180 5.379330 -v 3.456400 1.039180 6.517390 -v 3.456400 1.039180 5.379330 -v 4.594460 1.039180 4.241270 -v 3.456400 1.039180 4.241270 -v 4.594460 1.039180 3.103210 -v 3.456400 1.039180 3.103210 -v 4.594460 1.039180 1.965150 -v 3.456400 1.039180 1.965150 -v 4.594460 1.039180 0.827094 -v 3.456400 1.039180 0.827094 -v 4.594460 1.039180 -0.310965 -v 3.456400 1.039180 -0.310965 -v 4.594460 1.039180 -1.449020 -v 3.456400 1.039180 -1.449020 -v 4.594460 1.039180 -2.587080 -v 3.456400 1.039180 -2.587080 -v 4.594460 1.039180 -3.725140 -v 3.456400 1.039180 -3.725140 -v 4.594460 1.039180 -4.863200 -v 3.456400 1.039180 -4.863200 -v 4.594460 1.039180 -6.001260 -v 3.456400 1.039180 -6.001260 -v 4.594460 1.039180 -7.139320 -v 3.456400 1.039180 -7.139320 -v 4.594460 1.039180 -8.277380 -v 3.456400 1.039180 -8.277380 -vt 0.116019 0.974315 -vt 0.087066 0.947167 -vt 0.116022 0.947170 -vt 0.144976 0.974318 -vt 0.144979 0.947173 -vt 0.087063 0.974311 -vt 0.058110 0.947165 -vt 0.058107 0.974308 -vt 0.029155 0.947162 -vt 0.029152 0.974306 -vt 0.000199 0.947159 -vt 0.000197 0.974303 -vt 0.173933 0.974322 -vt 0.173936 0.947177 -vt 0.202891 0.974326 -vt 0.202894 0.947180 -vt 0.231849 0.974330 -vt 0.231853 0.947184 -vt 0.260808 0.974334 -vt 0.260812 0.947187 -vt 0.289768 0.974338 -vt 0.289772 0.947190 -vt 0.318729 0.974342 -vt 0.318732 0.947194 -vt 0.347690 0.974345 -vt 0.347693 0.947196 -vt 0.376652 0.974348 -vt 0.376654 0.947199 -vt 0.405614 0.974351 -vt 0.405616 0.947201 -vt 0.434577 0.974353 -vt 0.434578 0.947203 -vt 0.463539 0.974355 -vt 0.463541 0.947205 -vt 0.029160 0.492913 -vt 0.058118 0.520059 -vt 0.029160 0.520059 -vt 0.000202 0.492913 -vt 0.000202 0.520059 -vt 0.058118 0.492913 -vt 0.087076 0.520059 -vt 0.087076 0.492913 -vt 0.116034 0.520059 -vt 0.116034 0.492914 -vt 0.144992 0.520060 -vt 0.144992 0.492914 -vt 0.173949 0.520060 -vt 0.173950 0.492914 -vt 0.202907 0.520060 -vt 0.202907 0.492915 -vt 0.231864 0.520060 -vt 0.231865 0.492915 -vt 0.260822 0.520061 -vt 0.260822 0.492916 -vt 0.289779 0.520061 -vt 0.289778 0.492916 -vt 0.318735 0.520060 -vt 0.318735 0.492916 -vt 0.347692 0.520060 -vt 0.347691 0.492915 -vt 0.376649 0.520059 -vt 0.376648 0.492915 -vt 0.405605 0.520058 -vt 0.405604 0.492914 -vt 0.434561 0.520056 -vt 0.434560 0.492912 -vt 0.463517 0.520055 -vt 0.463516 0.492911 -vt 0.087075 0.804197 -vt 0.058119 0.777052 -vt 0.087076 0.777053 -vt 0.116032 0.804198 -vt 0.116033 0.777053 -vt 0.058119 0.804197 -vt 0.029163 0.777052 -vt 0.029163 0.804196 -vt 0.000207 0.777052 -vt 0.000207 0.804196 -vt 0.144989 0.804200 -vt 0.144990 0.777054 -vt 0.173947 0.804201 -vt 0.173948 0.777055 -vt 0.202905 0.804202 -vt 0.202906 0.777056 -vt 0.231863 0.804203 -vt 0.231864 0.777057 -vt 0.260822 0.804204 -vt 0.260822 0.777057 -vt 0.289780 0.804205 -vt 0.289781 0.777058 -vt 0.318740 0.804205 -vt 0.318740 0.777058 -vt 0.347700 0.804206 -vt 0.347700 0.777058 -vt 0.376660 0.804206 -vt 0.376659 0.777058 -vt 0.405620 0.804205 -vt 0.405620 0.777057 -vt 0.434581 0.804205 -vt 0.434580 0.777056 -vt 0.463543 0.804203 -vt 0.463541 0.777054 -vt 0.144991 0.634078 -vt 0.116033 0.606933 -vt 0.144991 0.606933 -vt 0.173949 0.634079 -vt 0.173949 0.606933 -vt 0.116034 0.634078 -vt 0.087076 0.606933 -vt 0.087076 0.634079 -vt 0.058118 0.606933 -vt 0.058118 0.634079 -vt 0.029160 0.606933 -vt 0.029160 0.634079 -vt 0.000202 0.606933 -vt 0.000202 0.634080 -vt 0.202907 0.634079 -vt 0.202907 0.606933 -vt 0.231864 0.634078 -vt 0.231864 0.606933 -vt 0.260822 0.634078 -vt 0.260822 0.606933 -vt 0.289780 0.634078 -vt 0.289780 0.606932 -vt 0.318738 0.634077 -vt 0.318737 0.606932 -vt 0.347696 0.634077 -vt 0.347695 0.606931 -vt 0.376653 0.634076 -vt 0.376652 0.606930 -vt 0.405611 0.634074 -vt 0.405609 0.606928 -vt 0.434569 0.634072 -vt 0.434567 0.606927 -vt 0.463527 0.634069 -vt 0.463524 0.606924 -vt 0.405621 0.833166 -vt 0.434582 0.860316 -vt 0.405620 0.860316 -vt 0.376660 0.833166 -vt 0.376659 0.860315 -vt 0.434582 0.833166 -vt 0.463545 0.860317 -vt 0.463544 0.833166 -vt 0.347699 0.833166 -vt 0.347698 0.860314 -vt 0.318739 0.833165 -vt 0.318738 0.860313 -vt 0.289780 0.833164 -vt 0.289778 0.860311 -vt 0.260820 0.833163 -vt 0.260819 0.860309 -vt 0.231862 0.833161 -vt 0.231860 0.860308 -vt 0.202903 0.833160 -vt 0.202902 0.860306 -vt 0.173946 0.833158 -vt 0.173944 0.860304 -vt 0.144988 0.833157 -vt 0.144987 0.860302 -vt 0.116031 0.833155 -vt 0.116029 0.860300 -vt 0.087074 0.833154 -vt 0.087073 0.860299 -vt 0.058118 0.833153 -vt 0.058116 0.860297 -vt 0.029162 0.833152 -vt 0.029161 0.860295 -vt 0.000206 0.833151 -vt 0.000205 0.860294 -vt 0.662141 0.076691 -vt 0.691099 0.103837 -vt 0.662141 0.103837 -vt 0.633183 0.076691 -vt 0.633183 0.103837 -vt 0.691099 0.076691 -vt 0.720057 0.103837 -vt 0.720058 0.076691 -vt 0.662141 0.019597 -vt 0.691100 0.019597 -vt 0.720058 0.019597 -vt 0.749016 0.076691 -vt 0.691100 0.000194 -vt 0.662142 0.000194 -vt 0.633183 0.019597 -vt 0.633183 0.000194 -vt 0.604225 0.019597 -vt 0.604225 0.076691 -vt 0.720058 0.000194 -vt 0.749016 0.019597 -vt 0.777974 0.019597 -vt 0.749016 0.000195 -vt 0.777974 0.076691 -vt 0.806932 0.019597 -vt 0.777974 0.000195 -vt 0.806932 0.076691 -vt 0.777974 0.103837 -vt 0.806932 0.103837 -vt 0.749016 0.103837 -vt 0.835890 0.103837 -vt 0.835890 0.076691 -vt 0.864848 0.076691 -vt 0.835890 0.019597 -vt 0.893806 0.076691 -vt 0.893806 0.103837 -vt 0.864848 0.103837 -vt 0.864848 0.019597 -vt 0.806932 0.000195 -vt 0.835890 0.000195 -vt 0.893806 0.019597 -vt 0.864848 0.000195 -vt 0.893806 0.000194 -vt 0.922764 0.019597 -vt 0.922764 0.076691 -vt 0.922764 0.000194 -vt 0.951722 0.019597 -vt 0.951722 0.076691 -vt 0.951722 0.103837 -vt 0.922764 0.103837 -vt 0.977169 0.019597 -vt 0.977169 0.076690 -vt 0.951722 0.000194 -vt 0.289780 0.663036 -vt 0.318739 0.690182 -vt 0.289781 0.690182 -vt 0.260822 0.663036 -vt 0.260823 0.690182 -vt 0.318739 0.663035 -vt 0.347698 0.690181 -vt 0.347697 0.663035 -vt 0.376656 0.690180 -vt 0.376655 0.663033 -vt 0.405615 0.690178 -vt 0.405613 0.663032 -vt 0.434574 0.690176 -vt 0.434571 0.663030 -vt 0.463533 0.690173 -vt 0.463530 0.663027 -vt 0.231865 0.663036 -vt 0.231865 0.690182 -vt 0.202907 0.663036 -vt 0.202907 0.690182 -vt 0.173949 0.663036 -vt 0.173949 0.690182 -vt 0.144991 0.663036 -vt 0.144991 0.690182 -vt 0.116034 0.663036 -vt 0.116034 0.690182 -vt 0.087076 0.663036 -vt 0.087076 0.690182 -vt 0.058118 0.663036 -vt 0.058119 0.690182 -vt 0.029161 0.663037 -vt 0.029162 0.690182 -vt 0.000203 0.663038 -vt 0.000205 0.690183 -vt 0.579762 0.491109 -vt 0.550803 0.463966 -vt 0.579760 0.463963 -vt 0.550805 0.491111 -vt 0.579767 0.548202 -vt 0.608720 0.491107 -vt 0.608724 0.548199 -vt 0.521845 0.463968 -vt 0.521847 0.491114 -vt 0.550809 0.548204 -vt 0.579768 0.567604 -vt 0.521852 0.548206 -vt 0.550811 0.567606 -vt 0.492890 0.491116 -vt 0.492888 0.463971 -vt 0.521853 0.567608 -vt 0.492895 0.548208 -vt 0.463933 0.491118 -vt 0.492896 0.567610 -vt 0.463938 0.548210 -vt 0.637682 0.548197 -vt 0.637683 0.567600 -vt 0.608726 0.567602 -vt 0.637678 0.491105 -vt 0.608718 0.463961 -vt 0.637676 0.463959 -vt 0.666636 0.491103 -vt 0.666635 0.463957 -vt 0.695594 0.491102 -vt 0.695595 0.548197 -vt 0.666637 0.548197 -vt 0.695593 0.463956 -vt 0.724553 0.491102 -vt 0.724554 0.548197 -vt 0.695596 0.567600 -vt 0.666637 0.567600 -vt 0.753512 0.548197 -vt 0.753512 0.567600 -vt 0.724554 0.567600 -vt 0.753512 0.491102 -vt 0.724553 0.463955 -vt 0.782471 0.548197 -vt 0.782471 0.567600 -vt 0.782471 0.491102 -vt 0.753512 0.463955 -vt 0.811429 0.548197 -vt 0.811429 0.567600 -vt 0.782471 0.463955 -vt 0.811430 0.491102 -vt 0.836877 0.491102 -vt 0.836877 0.548197 -vt 0.811430 0.463955 -vt 0.434558 0.463956 -vt 0.405603 0.463958 -vt 0.463514 0.463955 -vt 0.376647 0.463959 -vt 0.347691 0.463959 -vt 0.318735 0.463959 -vt 0.289779 0.463959 -vt 0.260822 0.463959 -vt 0.231865 0.463958 -vt 0.202908 0.463957 -vt 0.173950 0.463956 -vt 0.144992 0.463956 -vt 0.116034 0.463956 -vt 0.087076 0.463955 -vt 0.058118 0.463955 -vt 0.029160 0.463955 -vt 0.000202 0.463955 -vt 0.260815 0.918228 -vt 0.231856 0.918225 -vt 0.289774 0.918230 -vt 0.289777 0.889271 -vt 0.318734 0.918233 -vt 0.260817 0.889269 -vt 0.347695 0.918235 -vt 0.318737 0.889273 -vt 0.231858 0.889266 -vt 0.202900 0.889264 -vt 0.173942 0.889262 -vt 0.202897 0.918222 -vt 0.173939 0.918219 -vt 0.144984 0.889259 -vt 0.144982 0.918216 -vt 0.116028 0.889257 -vt 0.116025 0.918214 -vt 0.087071 0.889255 -vt 0.087069 0.918211 -vt 0.058115 0.889253 -vt 0.058113 0.918209 -vt 0.029159 0.889251 -vt 0.029157 0.918206 -vt 0.000204 0.889249 -vt 0.000202 0.918204 -vt 0.347697 0.889274 -vt 0.376658 0.889276 -vt 0.376656 0.918237 -vt 0.405618 0.918239 -vt 0.405619 0.889277 -vt 0.434580 0.918241 -vt 0.434581 0.889278 -vt 0.463543 0.918242 -vt 0.463544 0.889279 -vt 0.260823 0.748099 -vt 0.231864 0.748098 -vt 0.289781 0.748099 -vt 0.289781 0.719140 -vt 0.318740 0.748099 -vt 0.260823 0.719140 -vt 0.347699 0.748099 -vt 0.318740 0.719140 -vt 0.231865 0.719140 -vt 0.202907 0.719140 -vt 0.173949 0.719140 -vt 0.202906 0.748098 -vt 0.173948 0.748097 -vt 0.144991 0.719139 -vt 0.144991 0.748097 -vt 0.116034 0.719139 -vt 0.116033 0.748096 -vt 0.087076 0.719139 -vt 0.087076 0.748096 -vt 0.058119 0.719139 -vt 0.058119 0.748096 -vt 0.029162 0.719139 -vt 0.029163 0.748096 -vt 0.000206 0.719140 -vt 0.000207 0.748096 -vt 0.347698 0.719140 -vt 0.376657 0.719139 -vt 0.376659 0.748098 -vt 0.405618 0.748097 -vt 0.405617 0.719137 -vt 0.434578 0.748095 -vt 0.434576 0.719135 -vt 0.463539 0.748093 -vt 0.463536 0.719133 -vt 0.144991 0.577975 -vt 0.116033 0.577975 -vt 0.173949 0.577975 -vt 0.173949 0.549017 -vt 0.202907 0.577975 -vt 0.144991 0.549017 -vt 0.231864 0.577975 -vt 0.202907 0.549018 -vt 0.116034 0.549017 -vt 0.087076 0.549017 -vt 0.058118 0.549017 -vt 0.087076 0.577975 -vt 0.058118 0.577975 -vt 0.029160 0.549017 -vt 0.029160 0.577975 -vt 0.000202 0.549017 -vt 0.000202 0.577975 -vt 0.231864 0.549018 -vt 0.260822 0.549018 -vt 0.260822 0.577975 -vt 0.289779 0.577975 -vt 0.289779 0.549018 -vt 0.318736 0.577974 -vt 0.318736 0.549017 -vt 0.347694 0.577974 -vt 0.347693 0.549017 -vt 0.376651 0.577973 -vt 0.376650 0.549016 -vt 0.405608 0.577971 -vt 0.405606 0.549014 -vt 0.434565 0.577969 -vt 0.434563 0.549013 -vt 0.463521 0.577967 -vt 0.463519 0.549011 -vt 0.237437 0.289790 -vt 0.256842 0.260831 -vt 0.256841 0.289791 -vt 0.237435 0.318750 -vt 0.256839 0.318751 -vt 0.237438 0.260831 -vt 0.256843 0.231873 -vt 0.237440 0.231872 -vt 0.256844 0.202915 -vt 0.237441 0.202914 -vt 0.256845 0.173957 -vt 0.237443 0.173956 -vt 0.256846 0.145001 -vt 0.237444 0.145000 -vt 0.256847 0.116044 -vt 0.237446 0.116043 -vt 0.256848 0.087089 -vt 0.237447 0.087088 -vt 0.256849 0.058134 -vt 0.237449 0.058133 -vt 0.256850 0.029180 -vt 0.237450 0.029179 -vt 0.256852 0.000226 -vt 0.237452 0.000225 -vt 0.237433 0.347711 -vt 0.256839 0.347712 -vt 0.237432 0.376673 -vt 0.256838 0.376674 -vt 0.237431 0.405636 -vt 0.256837 0.405637 -vt 0.237430 0.434601 -vt 0.256837 0.434601 -vt 0.237429 0.463567 -vt 0.256838 0.463567 -vt 0.392072 0.116043 -vt 0.411472 0.087086 -vt 0.411474 0.116042 -vt 0.392074 0.144999 -vt 0.411476 0.144998 -vt 0.392071 0.087087 -vt 0.411469 0.058130 -vt 0.392068 0.058132 -vt 0.411467 0.029175 -vt 0.392066 0.029177 -vt 0.411463 0.000221 -vt 0.392064 0.000223 -vt 0.392076 0.173956 -vt 0.411478 0.173955 -vt 0.392077 0.202913 -vt 0.411480 0.202912 -vt 0.392079 0.231871 -vt 0.411481 0.231870 -vt 0.392080 0.260829 -vt 0.411483 0.260828 -vt 0.392082 0.289788 -vt 0.411485 0.289787 -vt 0.392084 0.318747 -vt 0.411488 0.318746 -vt 0.392086 0.347707 -vt 0.411490 0.347705 -vt 0.392089 0.376667 -vt 0.411493 0.376665 -vt 0.392093 0.405628 -vt 0.411497 0.405625 -vt 0.392097 0.434589 -vt 0.411501 0.434585 -vt 0.392102 0.463550 -vt 0.411507 0.463546 -vt 0.082827 0.058117 -vt 0.102232 0.029164 -vt 0.102228 0.058119 -vt 0.082823 0.087072 -vt 0.102224 0.087075 -vt 0.082831 0.029162 -vt 0.102236 0.000209 -vt 0.082835 0.000207 -vt 0.082819 0.116028 -vt 0.102221 0.116031 -vt 0.082815 0.144984 -vt 0.102217 0.144987 -vt 0.082811 0.173940 -vt 0.102213 0.173943 -vt 0.082806 0.202897 -vt 0.102209 0.202900 -vt 0.082802 0.231854 -vt 0.102204 0.231857 -vt 0.082797 0.260812 -vt 0.102200 0.260815 -vt 0.082791 0.289770 -vt 0.102194 0.289774 -vt 0.082785 0.318729 -vt 0.102189 0.318733 -vt 0.082779 0.347689 -vt 0.102183 0.347693 -vt 0.082772 0.376649 -vt 0.102177 0.376654 -vt 0.082764 0.405611 -vt 0.102170 0.405616 -vt 0.082755 0.434573 -vt 0.102162 0.434579 -vt 0.082745 0.463537 -vt 0.102153 0.463544 -vt 0.363131 0.405631 -vt 0.343729 0.434595 -vt 0.343726 0.405633 -vt 0.363129 0.376670 -vt 0.343724 0.376671 -vt 0.363135 0.434593 -vt 0.343733 0.463559 -vt 0.363139 0.463555 -vt 0.363126 0.347709 -vt 0.343722 0.347710 -vt 0.363124 0.318749 -vt 0.343720 0.318750 -vt 0.363123 0.289790 -vt 0.343719 0.289791 -vt 0.363122 0.260831 -vt 0.343718 0.260832 -vt 0.363121 0.231873 -vt 0.343718 0.231873 -vt 0.363120 0.202915 -vt 0.343717 0.202915 -vt 0.363118 0.173957 -vt 0.343716 0.173958 -vt 0.363117 0.145001 -vt 0.343716 0.145001 -vt 0.363116 0.116044 -vt 0.343715 0.116045 -vt 0.363115 0.087089 -vt 0.343714 0.087089 -vt 0.363114 0.058133 -vt 0.343713 0.058134 -vt 0.363112 0.029179 -vt 0.343712 0.029180 -vt 0.363110 0.000226 -vt 0.343711 0.000226 -vt 0.517748 0.144989 -vt 0.498349 0.173948 -vt 0.498346 0.144991 -vt 0.517745 0.116032 -vt 0.498343 0.116034 -vt 0.517751 0.173946 -vt 0.498352 0.202905 -vt 0.517754 0.202903 -vt 0.498355 0.231863 -vt 0.517757 0.231861 -vt 0.498358 0.260820 -vt 0.517760 0.260818 -vt 0.498361 0.289778 -vt 0.517763 0.289776 -vt 0.498364 0.318737 -vt 0.517767 0.318734 -vt 0.498367 0.347695 -vt 0.517770 0.347693 -vt 0.498371 0.376653 -vt 0.517774 0.376651 -vt 0.498375 0.405612 -vt 0.517778 0.405609 -vt 0.498379 0.434570 -vt 0.517782 0.434567 -vt 0.498384 0.463528 -vt 0.517787 0.463525 -vt 0.517742 0.087075 -vt 0.498340 0.087077 -vt 0.517739 0.058119 -vt 0.498337 0.058121 -vt 0.517735 0.029162 -vt 0.498333 0.029165 -vt 0.517731 0.000205 -vt 0.498329 0.000208 -vt 0.208499 0.000223 -vt 0.189096 0.029175 -vt 0.189099 0.000221 -vt 0.208496 0.029177 -vt 0.189093 0.058129 -vt 0.208494 0.058131 -vt 0.189091 0.087084 -vt 0.208492 0.087086 -vt 0.189088 0.116040 -vt 0.208490 0.116042 -vt 0.189086 0.144996 -vt 0.208488 0.144998 -vt 0.189083 0.173953 -vt 0.208486 0.173955 -vt 0.189081 0.202910 -vt 0.208483 0.202912 -vt 0.189078 0.231868 -vt 0.208481 0.231870 -vt 0.189076 0.260827 -vt 0.208479 0.260829 -vt 0.189073 0.289786 -vt 0.208477 0.289788 -vt 0.189070 0.318746 -vt 0.208474 0.318748 -vt 0.189067 0.347707 -vt 0.208472 0.347709 -vt 0.189063 0.376669 -vt 0.208469 0.376671 -vt 0.189060 0.405633 -vt 0.208467 0.405635 -vt 0.189056 0.434597 -vt 0.208464 0.434599 -vt 0.189053 0.463564 -vt 0.208462 0.463566 -vt 0.546692 0.029158 -vt 0.546688 0.000201 -vt 0.546696 0.058115 -vt 0.546699 0.087072 -vt 0.546702 0.116029 -vt 0.546705 0.144986 -vt 0.546709 0.173943 -vt 0.546712 0.202900 -vt 0.546715 0.231858 -vt 0.546718 0.260815 -vt 0.546721 0.289773 -vt 0.546725 0.318731 -vt 0.546728 0.347689 -vt 0.546732 0.376647 -vt 0.546736 0.405605 -vt 0.546740 0.434563 -vt 0.546744 0.463521 -vt 0.779682 0.749443 -vt 0.744378 0.806538 -vt 0.744377 0.749444 -vt 0.713049 0.806539 -vt 0.713048 0.749445 -vt 0.744376 0.682422 -vt 0.713047 0.682423 -vt 0.779683 0.806538 -vt 0.779681 0.682421 -vt 0.779683 0.825941 -vt 0.744379 0.825941 -vt 0.713050 0.825941 -vt 0.744378 0.869946 -vt 0.713050 0.869946 -vt 0.744378 0.894818 -vt 0.818664 0.869946 -vt 0.713050 0.894818 -vt 0.818664 0.894818 -vt 0.655778 0.806540 -vt 0.655777 0.749446 -vt 0.655775 0.682424 -vt 0.569547 0.749447 -vt 0.538217 0.682426 -vt 0.569546 0.682425 -vt 0.626817 0.682425 -vt 0.538218 0.749448 -vt 0.502912 0.682427 -vt 0.502914 0.806542 -vt 0.502913 0.749448 -vt 0.538218 0.806541 -vt 0.502915 0.825944 -vt 0.538219 0.825944 -vt 0.569547 0.806541 -vt 0.569547 0.825944 -vt 0.569546 0.869948 -vt 0.538218 0.869947 -vt 0.626818 0.749446 -vt 0.626819 0.806540 -vt 0.569546 0.894819 -vt 0.538218 0.894819 -vt 0.463933 0.894818 -vt 0.463933 0.869946 -vt 0.603794 0.116022 -vt 0.603790 0.087065 -vt 0.603797 0.144979 -vt 0.603801 0.173936 -vt 0.603804 0.202894 -vt 0.603808 0.231851 -vt 0.603811 0.260809 -vt 0.603814 0.289766 -vt 0.603818 0.318724 -vt 0.603822 0.347682 -vt 0.603825 0.376640 -vt 0.603829 0.405597 -vt 0.603833 0.434555 -vt 0.603837 0.463513 -vt 0.603787 0.058108 -vt 0.603783 0.029151 -vt 0.603779 0.000194 -vt 0.029149 0.999750 -vt 0.000194 0.999747 -vt 0.058105 0.999753 -vt 0.087060 0.999756 -vt 0.116016 0.999760 -vt 0.144972 0.999764 -vt 0.173929 0.999768 -vt 0.202887 0.999773 -vt 0.231845 0.999778 -vt 0.260805 0.999783 -vt 0.289765 0.999787 -vt 0.318726 0.999792 -vt 0.347687 0.999795 -vt 0.376649 0.999799 -vt 0.405612 0.999801 -vt 0.434575 0.999804 -vt 0.463537 0.999806 -vt 0.057370 0.144980 -vt 0.057374 0.116024 -vt 0.057379 0.087069 -vt 0.057365 0.173936 -vt 0.057361 0.202893 -vt 0.057355 0.231850 -vt 0.057350 0.260807 -vt 0.057344 0.289765 -vt 0.057338 0.318724 -vt 0.057331 0.347683 -vt 0.057323 0.376643 -vt 0.057314 0.405603 -vt 0.057305 0.434564 -vt 0.057294 0.463526 -vt 0.057383 0.058113 -vt 0.057387 0.029158 -vt 0.057391 0.000203 -vt 0.314758 0.000227 -vt 0.314758 0.029181 -vt 0.285805 0.000227 -vt 0.314758 0.058135 -vt 0.285804 0.029180 -vt 0.314759 0.087090 -vt 0.285804 0.058135 -vt 0.285803 0.087090 -vt 0.314759 0.116045 -vt 0.285803 0.116045 -vt 0.314759 0.145002 -vt 0.285802 0.145001 -vt 0.314759 0.173958 -vt 0.285802 0.173958 -vt 0.314759 0.202916 -vt 0.285802 0.202915 -vt 0.314759 0.231874 -vt 0.285801 0.231873 -vt 0.314760 0.260832 -vt 0.285801 0.260832 -vt 0.314760 0.289791 -vt 0.285800 0.289791 -vt 0.314760 0.318751 -vt 0.285800 0.318751 -vt 0.314761 0.347712 -vt 0.285800 0.347712 -vt 0.314762 0.376673 -vt 0.285800 0.376674 -vt 0.314764 0.405635 -vt 0.285801 0.405637 -vt 0.314766 0.434598 -vt 0.285802 0.434600 -vt 0.314769 0.463562 -vt 0.285804 0.463565 -vt 0.160145 0.000217 -vt 0.160142 0.029172 -vt 0.131191 0.000214 -vt 0.160138 0.058126 -vt 0.131187 0.029168 -vt 0.160135 0.087082 -vt 0.131183 0.058123 -vt 0.131180 0.087078 -vt 0.160132 0.116037 -vt 0.131176 0.116034 -vt 0.160129 0.144994 -vt 0.131173 0.144990 -vt 0.160126 0.173950 -vt 0.131170 0.173947 -vt 0.160123 0.202907 -vt 0.131166 0.202904 -vt 0.160120 0.231865 -vt 0.131162 0.231862 -vt 0.160117 0.260824 -vt 0.131158 0.260820 -vt 0.160113 0.289783 -vt 0.131154 0.289779 -vt 0.160109 0.318743 -vt 0.131149 0.318739 -vt 0.160105 0.347704 -vt 0.131144 0.347699 -vt 0.160101 0.376666 -vt 0.131138 0.376660 -vt 0.160096 0.405629 -vt 0.131132 0.405623 -vt 0.160091 0.434593 -vt 0.131126 0.434587 -vt 0.160085 0.463559 -vt 0.131119 0.463552 -vt 0.469373 0.000213 -vt 0.469377 0.029168 -vt 0.440418 0.000217 -vt 0.469381 0.058124 -vt 0.440421 0.029172 -vt 0.469384 0.087080 -vt 0.440425 0.058127 -vt 0.440428 0.087083 -vt 0.469387 0.116037 -vt 0.440430 0.116039 -vt 0.469389 0.144994 -vt 0.440433 0.144996 -vt 0.469392 0.173951 -vt 0.440435 0.173953 -vt 0.469394 0.202908 -vt 0.440437 0.202910 -vt 0.469397 0.231865 -vt 0.440439 0.231868 -vt 0.469400 0.260823 -vt 0.440442 0.260826 -vt 0.469402 0.289781 -vt 0.440444 0.289784 -vt 0.469405 0.318740 -vt 0.440447 0.318743 -vt 0.469409 0.347699 -vt 0.440450 0.347702 -vt 0.469412 0.376657 -vt 0.440453 0.376661 -vt 0.469416 0.405616 -vt 0.440457 0.405620 -vt 0.469421 0.434575 -vt 0.440461 0.434580 -vt 0.469426 0.463534 -vt 0.440467 0.463540 -vt 0.000206 0.434543 -vt 0.000194 0.463503 -vt 0.000217 0.405584 -vt 0.000226 0.376625 -vt 0.000235 0.347667 -vt 0.000244 0.318709 -vt 0.000251 0.289752 -vt 0.000258 0.260795 -vt 0.000264 0.231838 -vt 0.000270 0.202882 -vt 0.000276 0.173926 -vt 0.000281 0.144971 -vt 0.000285 0.116015 -vt 0.000290 0.087060 -vt 0.000294 0.058105 -vt 0.000299 0.029149 -vt 0.000303 0.000194 -vt 0.666640 0.558125 -vt 0.637681 0.558127 -vt 0.604225 0.133183 -vt 0.639530 0.104225 -vt 0.639530 0.133183 -vt 0.604225 0.104225 -vt 0.661494 0.463564 -vt 0.680897 0.434607 -vt 0.680897 0.463565 -vt 0.724902 0.434608 -vt 0.724902 0.463566 -vt 0.661495 0.434607 -vt 0.749775 0.434608 -vt 0.749774 0.463567 -vt 0.683535 0.104225 -vt 0.683535 0.133183 -vt 0.781104 0.434608 -vt 0.781104 0.463567 -vt 0.855393 0.434608 -vt 0.855393 0.463567 -vt 0.666641 0.593430 -vt 0.637683 0.593431 -vt 0.666643 0.624759 -vt 0.637685 0.624760 -vt 0.666646 0.682031 -vt 0.637688 0.682033 -vt 0.604225 0.463561 -vt 0.604227 0.434604 -vt 0.757821 0.133183 -vt 0.782694 0.104225 -vt 0.782694 0.133183 -vt 0.757821 0.104225 -s off -f 1/1 2/2 3/3 -f 4/4 1/1 3/3 -f 4/4 3/3 5/5 -f 1/1 6/6 2/2 -f 6/6 7/7 2/2 -f 6/6 8/8 7/7 -f 8/8 9/9 7/7 -f 8/8 10/10 9/9 -f 10/10 11/11 9/9 -f 10/10 12/12 11/11 -f 13/13 4/4 5/5 -f 13/13 5/5 14/14 -f 15/15 13/13 14/14 -f 15/15 14/14 16/16 -f 17/17 15/15 16/16 -f 17/17 16/16 18/18 -f 19/19 17/17 18/18 -f 19/19 18/18 20/20 -f 21/21 19/19 20/20 -f 21/21 20/20 22/22 -f 23/23 21/21 22/22 -f 23/23 22/22 24/24 -f 25/25 23/23 24/24 -f 25/25 24/24 26/26 -f 27/27 25/25 26/26 -f 27/27 26/26 28/28 -f 29/29 27/27 28/28 -f 29/29 28/28 30/30 -f 31/31 29/29 30/30 -f 31/31 30/30 32/32 -f 33/33 31/31 32/32 -f 33/33 32/32 34/34 -f 35/35 36/36 37/37 -f 38/38 35/35 37/37 -f 38/38 37/37 39/39 -f 35/35 40/40 36/36 -f 40/40 41/41 36/36 -f 40/40 42/42 41/41 -f 42/42 43/43 41/41 -f 42/42 44/44 43/43 -f 44/44 45/45 43/43 -f 44/44 46/46 45/45 -f 46/46 47/47 45/45 -f 46/46 48/48 47/47 -f 48/48 49/49 47/47 -f 48/48 50/50 49/49 -f 50/50 51/51 49/49 -f 50/50 52/52 51/51 -f 52/52 53/53 51/51 -f 52/52 54/54 53/53 -f 54/54 55/55 53/53 -f 54/54 56/56 55/55 -f 56/56 57/57 55/55 -f 56/56 58/58 57/57 -f 58/58 59/59 57/57 -f 58/58 60/60 59/59 -f 60/60 61/61 59/59 -f 60/60 62/62 61/61 -f 62/62 63/63 61/61 -f 62/62 64/64 63/63 -f 64/64 65/65 63/63 -f 64/64 66/66 65/65 -f 66/66 67/67 65/65 -f 66/66 68/68 67/67 -f 69/69 70/70 71/71 -f 72/72 69/69 71/71 -f 72/72 71/71 73/73 -f 69/69 74/74 70/70 -f 74/74 75/75 70/70 -f 74/74 76/76 75/75 -f 76/76 77/77 75/75 -f 76/76 78/78 77/77 -f 79/79 72/72 73/73 -f 79/79 73/73 80/80 -f 81/81 79/79 80/80 -f 81/81 80/80 82/82 -f 83/83 81/81 82/82 -f 83/83 82/82 84/84 -f 85/85 83/83 84/84 -f 85/85 84/84 86/86 -f 87/87 85/85 86/86 -f 87/87 86/86 88/88 -f 89/89 87/87 88/88 -f 89/89 88/88 90/90 -f 91/91 89/89 90/90 -f 91/91 90/90 92/92 -f 93/93 91/91 92/92 -f 93/93 92/92 94/94 -f 95/95 93/93 94/94 -f 95/95 94/94 96/96 -f 97/97 95/95 96/96 -f 97/97 96/96 98/98 -f 99/99 97/97 98/98 -f 99/99 98/98 100/100 -f 101/101 99/99 100/100 -f 101/101 100/100 102/102 -f 103/103 104/104 105/105 -f 106/106 103/103 105/105 -f 106/106 105/105 107/107 -f 103/103 108/108 104/104 -f 108/108 109/109 104/104 -f 108/108 110/110 109/109 -f 110/110 111/111 109/109 -f 110/110 112/112 111/111 -f 112/112 113/113 111/111 -f 112/112 114/114 113/113 -f 114/114 115/115 113/113 -f 114/114 116/116 115/115 -f 117/117 106/106 107/107 -f 117/117 107/107 118/118 -f 119/119 117/117 118/118 -f 119/119 118/118 120/120 -f 121/121 119/119 120/120 -f 121/121 120/120 122/122 -f 123/123 121/121 122/122 -f 123/123 122/122 124/124 -f 125/125 123/123 124/124 -f 125/125 124/124 126/126 -f 127/127 125/125 126/126 -f 127/127 126/126 128/128 -f 129/129 127/127 128/128 -f 129/129 128/128 130/130 -f 131/131 129/129 130/130 -f 131/131 130/130 132/132 -f 133/133 131/131 132/132 -f 133/133 132/132 134/134 -f 135/135 133/133 134/134 -f 135/135 134/134 136/136 -f 137/137 138/138 139/139 -f 140/140 137/137 139/139 -f 140/140 139/139 141/141 -f 137/137 142/142 138/138 -f 142/142 143/143 138/138 -f 142/142 144/144 143/143 -f 145/145 140/140 141/141 -f 145/145 141/141 146/146 -f 147/147 145/145 146/146 -f 147/147 146/146 148/148 -f 149/149 147/147 148/148 -f 149/149 148/148 150/150 -f 151/151 149/149 150/150 -f 151/151 150/150 152/152 -f 153/153 151/151 152/152 -f 153/153 152/152 154/154 -f 155/155 153/153 154/154 -f 155/155 154/154 156/156 -f 157/157 155/155 156/156 -f 157/157 156/156 158/158 -f 159/159 157/157 158/158 -f 159/159 158/158 160/160 -f 161/161 159/159 160/160 -f 161/161 160/160 162/162 -f 163/163 161/161 162/162 -f 163/163 162/162 164/164 -f 165/165 163/163 164/164 -f 165/165 164/164 166/166 -f 167/167 165/165 166/166 -f 167/167 166/166 168/168 -f 169/169 167/167 168/168 -f 169/169 168/168 170/170 -f 171/171 172/172 173/173 -f 68/174 171/171 173/173 -f 68/174 173/173 67/175 -f 171/171 174/176 172/172 -f 174/176 136/177 172/172 -f 174/176 135/178 136/177 -f 174/176 171/171 175/179 -f 174/176 175/179 176/180 -f 135/178 174/176 176/180 -f 135/178 176/180 177/181 -f 178/182 135/178 177/181 -f 177/181 176/180 179/183 -f 176/180 175/179 180/184 -f 176/180 180/184 179/183 -f 175/179 181/185 182/186 -f 175/179 182/186 180/184 -f 171/171 181/185 175/179 -f 171/171 68/174 181/185 -f 68/174 183/187 181/185 -f 68/174 184/188 183/187 -f 177/181 179/183 185/189 -f 178/182 177/181 186/190 -f 187/191 186/190 188/192 -f 189/193 178/182 186/190 -f 189/193 186/190 187/191 -f 190/194 187/191 191/195 -f 187/191 188/192 191/195 -f 192/196 189/193 187/191 -f 192/196 187/191 190/194 -f 178/182 189/193 193/197 -f 189/193 192/196 194/198 -f 189/193 194/198 193/197 -f 178/182 193/197 195/199 -f 192/196 102/200 194/198 -f 192/196 101/201 102/200 -f 101/201 192/196 190/194 -f 144/202 101/201 196/203 -f 101/201 190/194 196/203 -f 144/202 197/204 198/205 -f 144/202 198/205 143/206 -f 197/204 144/202 199/207 -f 144/202 196/203 199/207 -f 196/203 190/194 200/208 -f 196/203 200/208 201/209 -f 190/194 191/195 200/208 -f 202/210 199/207 203/211 -f 197/204 199/207 202/210 -f 202/210 203/211 204/212 -f 205/213 202/210 204/212 -f 206/214 197/204 202/210 -f 206/214 202/210 205/213 -f 205/213 204/212 207/215 -f 208/216 205/213 207/215 -f 33/217 206/214 205/213 -f 33/217 205/213 208/216 -f 206/214 33/217 34/218 -f 206/214 34/218 209/219 -f 197/204 206/214 209/219 -f 197/204 209/219 198/205 -f 33/217 208/216 210/220 -f 33/217 210/220 211/221 -f 208/216 207/215 212/222 -f 213/223 214/224 215/225 -f 216/226 213/223 215/225 -f 216/226 215/225 217/227 -f 213/223 218/228 214/224 -f 218/228 219/229 214/224 -f 218/228 220/230 219/229 -f 220/230 221/231 219/229 -f 220/230 222/232 221/231 -f 222/232 223/233 221/231 -f 222/232 224/234 223/233 -f 224/234 225/235 223/233 -f 224/234 226/236 225/235 -f 226/236 195/237 225/235 -f 226/236 178/238 195/237 -f 227/239 216/226 217/227 -f 227/239 217/227 228/240 -f 229/241 227/239 228/240 -f 229/241 228/240 230/242 -f 231/243 229/241 230/242 -f 231/243 230/242 232/244 -f 233/245 231/243 232/244 -f 233/245 232/244 234/246 -f 235/247 233/245 234/246 -f 235/247 234/246 236/248 -f 237/249 235/247 236/248 -f 237/249 236/248 238/250 -f 239/251 237/249 238/250 -f 239/251 238/250 240/252 -f 241/253 239/251 240/252 -f 241/253 240/252 242/254 -f 243/255 241/253 242/254 -f 243/255 242/254 244/256 -f 116/257 245/258 115/259 -f 116/257 246/260 245/258 -f 246/260 116/257 247/261 -f 116/257 243/262 248/263 -f 116/257 248/263 247/261 -f 246/260 249/264 245/258 -f 246/260 250/265 249/264 -f 250/265 246/260 251/266 -f 246/260 247/261 251/266 -f 251/266 247/261 252/267 -f 253/268 251/266 254/269 -f 251/266 252/267 254/269 -f 250/265 251/266 253/268 -f 250/265 38/270 39/271 -f 250/265 39/271 249/264 -f 38/270 250/265 253/268 -f 253/268 254/269 255/272 -f 256/273 253/268 255/272 -f 38/270 253/268 256/273 -f 257/274 38/270 256/273 -f 256/273 255/272 258/275 -f 257/274 256/273 259/276 -f 248/263 260/277 261/278 -f 248/263 261/278 262/279 -f 243/262 260/277 248/263 -f 243/262 263/280 260/277 -f 263/280 243/262 244/281 -f 263/280 244/281 264/282 -f 265/283 263/280 264/282 -f 265/283 264/282 266/284 -f 78/285 265/283 266/284 -f 265/283 78/285 267/286 -f 265/283 267/286 268/287 -f 78/285 266/284 77/288 -f 78/285 169/289 269/290 -f 78/285 269/290 267/286 -f 268/287 267/286 270/291 -f 268/287 270/291 271/292 -f 269/290 272/293 273/294 -f 269/290 273/294 274/295 -f 169/289 272/293 269/290 -f 275/296 169/289 170/297 -f 169/289 275/296 272/293 -f 272/293 276/298 277/299 -f 272/293 277/299 273/294 -f 275/296 276/298 272/293 -f 278/300 275/296 279/301 -f 275/296 170/297 279/301 -f 275/296 278/300 276/298 -f 276/298 280/302 281/303 -f 276/298 281/303 277/299 -f 278/300 280/302 276/298 -f 278/300 279/301 282/304 -f 12/305 278/300 282/304 -f 278/300 12/305 280/302 -f 280/302 12/305 283/306 -f 280/302 283/306 284/307 -f 12/305 282/304 11/308 -f 133/133 178/238 226/236 -f 131/131 133/133 226/236 -f 131/131 226/236 224/234 -f 133/133 135/135 178/238 -f 129/129 131/131 224/234 -f 129/129 224/234 222/232 -f 127/127 129/129 222/232 -f 127/127 222/232 220/230 -f 125/125 127/127 220/230 -f 125/125 220/230 218/228 -f 123/123 125/125 218/228 -f 123/123 218/228 213/223 -f 121/121 123/123 213/223 -f 121/121 213/223 216/226 -f 119/119 121/121 216/226 -f 119/119 216/226 227/239 -f 117/117 119/119 227/239 -f 117/117 227/239 229/241 -f 106/106 117/117 229/241 -f 106/106 229/241 231/243 -f 103/103 106/106 231/243 -f 103/103 231/243 233/245 -f 108/108 103/103 233/245 -f 108/108 233/245 235/247 -f 110/110 108/108 235/247 -f 110/110 235/247 237/249 -f 112/112 110/110 237/249 -f 112/112 237/249 239/251 -f 114/114 112/112 239/251 -f 114/114 239/251 241/253 -f 116/116 114/114 241/253 -f 116/116 241/253 243/255 -f 99/99 144/144 142/142 -f 97/97 99/99 142/142 -f 97/97 142/142 137/137 -f 99/99 101/101 144/144 -f 95/95 97/97 137/137 -f 95/95 137/137 140/140 -f 93/93 95/95 140/140 -f 93/93 140/140 145/145 -f 91/91 93/93 145/145 -f 91/91 145/145 147/147 -f 89/89 91/91 147/147 -f 89/89 147/147 149/149 -f 87/87 89/89 149/149 -f 87/87 149/149 151/151 -f 85/85 87/87 151/151 -f 85/85 151/151 153/153 -f 83/83 85/85 153/153 -f 83/83 153/153 155/155 -f 81/81 83/83 155/155 -f 81/81 155/155 157/157 -f 79/79 81/81 157/157 -f 79/79 157/157 159/159 -f 72/72 79/79 159/159 -f 72/72 159/159 161/161 -f 69/69 72/72 161/161 -f 69/69 161/161 163/163 -f 74/74 69/69 163/163 -f 74/74 163/163 165/165 -f 76/76 74/74 165/165 -f 76/76 165/165 167/167 -f 78/78 76/76 167/167 -f 78/78 167/167 169/169 -f 285/309 68/68 66/66 -f 286/310 285/309 66/66 -f 286/310 66/66 64/64 -f 285/309 184/311 68/68 -f 287/312 286/310 64/64 -f 287/312 64/64 62/62 -f 288/313 287/312 62/62 -f 288/313 62/62 60/60 -f 289/314 288/313 60/60 -f 289/314 60/60 58/58 -f 290/315 289/314 58/58 -f 290/315 58/58 56/56 -f 291/316 290/315 56/56 -f 291/316 56/56 54/54 -f 292/317 291/316 54/54 -f 292/317 54/54 52/52 -f 293/318 292/317 52/52 -f 293/318 52/52 50/50 -f 294/319 293/318 50/50 -f 294/319 50/50 48/48 -f 295/320 294/319 48/48 -f 295/320 48/48 46/46 -f 296/321 295/320 46/46 -f 296/321 46/46 44/44 -f 297/322 296/321 44/44 -f 297/322 44/44 42/42 -f 298/323 297/322 42/42 -f 298/323 42/42 40/40 -f 299/324 298/323 40/40 -f 299/324 40/40 35/35 -f 257/325 299/324 35/35 -f 257/325 35/35 38/38 -f 300/326 22/22 20/20 -f 301/327 300/326 20/20 -f 301/327 20/20 18/18 -f 300/326 302/328 22/22 -f 302/328 24/24 22/22 -f 303/329 304/330 302/328 -f 302/328 304/330 24/24 -f 305/331 303/329 302/328 -f 305/331 302/328 300/326 -f 304/330 26/26 24/24 -f 304/330 306/332 26/26 -f 307/333 306/332 304/330 -f 303/329 307/333 304/330 -f 152/152 150/150 303/329 -f 152/152 303/329 305/331 -f 150/150 307/333 303/329 -f 154/154 152/152 305/331 -f 154/154 305/331 308/334 -f 308/334 305/331 300/326 -f 156/156 154/154 308/334 -f 156/156 308/334 309/335 -f 309/335 308/334 301/327 -f 308/334 300/326 301/327 -f 158/158 156/156 309/335 -f 158/158 309/335 310/336 -f 309/335 301/327 311/337 -f 310/336 309/335 311/337 -f 311/337 301/327 18/18 -f 311/337 18/18 16/16 -f 310/336 311/337 312/338 -f 312/338 311/337 16/16 -f 160/160 158/158 310/336 -f 160/160 310/336 313/339 -f 313/339 310/336 312/338 -f 314/340 312/338 14/14 -f 312/338 16/16 14/14 -f 313/339 312/338 314/340 -f 315/341 313/339 314/340 -f 162/162 160/160 313/339 -f 162/162 313/339 315/341 -f 314/340 14/14 5/5 -f 315/341 314/340 316/342 -f 316/342 314/340 5/5 -f 164/164 162/162 315/341 -f 164/164 315/341 317/343 -f 317/343 315/341 316/342 -f 318/344 316/342 3/3 -f 316/342 5/5 3/3 -f 317/343 316/342 318/344 -f 166/166 164/164 317/343 -f 166/166 317/343 319/345 -f 319/345 317/343 318/344 -f 318/344 3/3 2/2 -f 319/345 318/344 320/346 -f 320/346 318/344 2/2 -f 168/168 166/166 319/345 -f 168/168 319/345 321/347 -f 321/347 319/345 320/346 -f 322/348 320/346 7/7 -f 320/346 2/2 7/7 -f 321/347 320/346 322/348 -f 170/170 168/168 321/347 -f 170/170 321/347 279/349 -f 279/349 321/347 322/348 -f 322/348 7/7 9/9 -f 279/349 322/348 282/350 -f 282/350 322/348 9/9 -f 282/350 9/9 11/11 -f 148/148 323/351 307/333 -f 150/150 148/148 307/333 -f 307/333 323/351 306/332 -f 148/148 146/146 323/351 -f 323/351 324/352 325/353 -f 323/351 325/353 306/332 -f 146/146 324/352 323/351 -f 306/332 325/353 28/28 -f 306/332 28/28 26/26 -f 325/353 326/354 30/30 -f 325/353 30/30 28/28 -f 324/352 326/354 325/353 -f 141/141 327/355 324/352 -f 324/352 327/355 326/354 -f 146/146 141/141 324/352 -f 327/355 328/356 326/354 -f 326/354 328/356 32/32 -f 326/354 32/32 30/30 -f 141/141 139/139 327/355 -f 139/139 329/357 327/355 -f 327/355 329/357 328/356 -f 328/356 209/358 34/34 -f 328/356 34/34 32/32 -f 329/357 209/358 328/356 -f 138/138 198/359 329/357 -f 139/139 138/138 329/357 -f 329/357 198/359 209/358 -f 138/138 143/143 198/359 -f 330/360 90/90 88/88 -f 331/361 330/360 88/88 -f 331/361 88/88 86/86 -f 330/360 332/362 90/90 -f 332/362 92/92 90/90 -f 333/363 334/364 332/362 -f 332/362 334/364 92/92 -f 335/365 333/363 332/362 -f 335/365 332/362 330/360 -f 334/364 94/94 92/92 -f 334/364 336/366 94/94 -f 337/367 336/366 334/364 -f 333/363 337/367 334/364 -f 217/227 215/225 333/363 -f 217/227 333/363 335/365 -f 215/225 337/367 333/363 -f 338/368 335/365 330/360 -f 228/240 217/227 335/365 -f 228/240 335/365 338/368 -f 230/242 228/240 338/368 -f 230/242 338/368 339/369 -f 338/368 330/360 331/361 -f 339/369 338/368 331/361 -f 232/244 230/242 339/369 -f 232/244 339/369 340/370 -f 339/369 331/361 341/371 -f 340/370 339/369 341/371 -f 341/371 331/361 86/86 -f 341/371 86/86 84/84 -f 340/370 341/371 342/372 -f 342/372 341/371 84/84 -f 234/246 232/244 340/370 -f 234/246 340/370 343/373 -f 343/373 340/370 342/372 -f 344/374 342/372 82/82 -f 342/372 84/84 82/82 -f 343/373 342/372 344/374 -f 236/248 234/246 343/373 -f 236/248 343/373 345/375 -f 345/375 343/373 344/374 -f 344/374 82/82 80/80 -f 345/375 344/374 346/376 -f 346/376 344/374 80/80 -f 238/250 236/248 345/375 -f 238/250 345/375 347/377 -f 347/377 345/375 346/376 -f 348/378 346/376 73/73 -f 346/376 80/80 73/73 -f 347/377 346/376 348/378 -f 240/252 238/250 347/377 -f 240/252 347/377 349/379 -f 349/379 347/377 348/378 -f 348/378 73/73 71/71 -f 349/379 348/378 350/380 -f 350/380 348/378 71/71 -f 242/254 240/252 349/379 -f 242/254 349/379 351/381 -f 351/381 349/379 350/380 -f 352/382 350/380 70/70 -f 350/380 71/71 70/70 -f 351/381 350/380 352/382 -f 244/256 242/254 351/381 -f 244/256 351/381 264/383 -f 264/383 351/381 352/382 -f 352/382 70/70 75/75 -f 264/383 352/382 266/384 -f 266/384 352/382 75/75 -f 266/384 75/75 77/77 -f 214/224 353/385 337/367 -f 215/225 214/224 337/367 -f 337/367 353/385 336/366 -f 214/224 219/229 353/385 -f 219/229 354/386 353/385 -f 353/385 354/386 355/387 -f 353/385 355/387 336/366 -f 336/366 355/387 96/96 -f 336/366 96/96 94/94 -f 355/387 356/388 98/98 -f 355/387 98/98 96/96 -f 354/386 356/388 355/387 -f 221/231 357/389 354/386 -f 219/229 221/231 354/386 -f 354/386 357/389 356/388 -f 357/389 358/390 356/388 -f 356/388 358/390 100/100 -f 356/388 100/100 98/98 -f 221/231 223/233 357/389 -f 223/233 359/391 357/389 -f 357/389 359/391 358/390 -f 358/390 194/392 102/102 -f 358/390 102/102 100/100 -f 359/391 194/392 358/390 -f 225/235 193/393 359/391 -f 223/233 225/235 359/391 -f 359/391 193/393 194/392 -f 225/235 195/237 193/393 -f 360/394 107/107 105/105 -f 361/395 360/394 105/105 -f 361/395 105/105 104/104 -f 360/394 362/396 107/107 -f 362/396 118/118 107/107 -f 363/397 364/398 362/396 -f 362/396 364/398 118/118 -f 365/399 363/397 362/396 -f 365/399 362/396 360/394 -f 364/398 120/120 118/118 -f 364/398 366/400 120/120 -f 367/401 366/400 364/398 -f 363/397 367/401 364/398 -f 45/45 47/47 363/397 -f 45/45 363/397 365/399 -f 47/47 367/401 363/397 -f 368/402 365/399 360/394 -f 43/43 45/45 365/399 -f 43/43 365/399 368/402 -f 41/41 43/43 368/402 -f 41/41 368/402 369/403 -f 368/402 360/394 361/395 -f 369/403 368/402 361/395 -f 36/36 41/41 369/403 -f 36/36 369/403 370/404 -f 369/403 361/395 371/405 -f 370/404 369/403 371/405 -f 371/405 361/395 104/104 -f 371/405 104/104 109/109 -f 370/404 371/405 372/406 -f 372/406 371/405 109/109 -f 37/37 36/36 370/404 -f 37/37 370/404 373/407 -f 373/407 370/404 372/406 -f 374/408 372/406 111/111 -f 372/406 109/109 111/111 -f 373/407 372/406 374/408 -f 39/39 37/37 373/407 -f 39/39 373/407 249/409 -f 249/409 373/407 374/408 -f 374/408 111/111 113/113 -f 249/409 374/408 245/410 -f 245/410 374/408 113/113 -f 245/410 113/113 115/115 -f 49/49 375/411 367/401 -f 47/47 49/49 367/401 -f 367/401 375/411 366/400 -f 49/49 51/51 375/411 -f 51/51 376/412 375/411 -f 375/411 376/412 377/413 -f 375/411 377/413 366/400 -f 366/400 377/413 122/122 -f 366/400 122/122 120/120 -f 377/413 378/414 124/124 -f 377/413 124/124 122/122 -f 376/412 378/414 377/413 -f 53/53 379/415 376/412 -f 51/51 53/53 376/412 -f 376/412 379/415 378/414 -f 379/415 380/416 378/414 -f 378/414 380/416 126/126 -f 378/414 126/126 124/124 -f 53/53 55/55 379/415 -f 55/55 381/417 379/415 -f 379/415 381/417 380/416 -f 380/416 382/418 128/128 -f 380/416 128/128 126/126 -f 381/417 382/418 380/416 -f 57/57 383/419 381/417 -f 55/55 57/57 381/417 -f 381/417 383/419 382/418 -f 383/419 384/420 382/418 -f 382/418 384/420 130/130 -f 382/418 130/130 128/128 -f 57/57 59/59 383/419 -f 383/419 385/421 384/420 -f 59/59 385/421 383/419 -f 384/420 386/422 132/132 -f 384/420 132/132 130/130 -f 385/421 386/422 384/420 -f 61/61 387/423 385/421 -f 385/421 387/423 386/422 -f 59/59 61/61 385/421 -f 387/423 388/424 386/422 -f 386/422 388/424 134/134 -f 386/422 134/134 132/132 -f 61/61 63/63 387/423 -f 63/63 389/425 387/423 -f 387/423 389/425 388/424 -f 388/424 172/426 136/136 -f 388/424 136/136 134/134 -f 389/425 172/426 388/424 -f 65/65 173/427 389/425 -f 63/63 65/65 389/425 -f 389/425 173/427 172/426 -f 65/65 67/67 173/427 -f 390/428 391/429 392/430 -f 393/431 390/428 392/430 -f 393/431 392/430 394/432 -f 390/428 395/433 391/429 -f 395/433 396/434 391/429 -f 395/433 397/435 396/434 -f 397/435 398/436 396/434 -f 397/435 399/437 398/436 -f 399/437 400/438 398/436 -f 399/437 401/439 400/438 -f 401/439 402/440 400/438 -f 401/439 403/441 402/440 -f 403/441 404/442 402/440 -f 403/441 405/443 404/442 -f 405/443 406/444 404/442 -f 405/443 407/445 406/444 -f 407/445 408/446 406/444 -f 407/445 409/447 408/446 -f 409/447 410/448 408/446 -f 409/447 411/449 410/448 -f 411/449 201/450 410/448 -f 411/449 196/451 201/450 -f 412/452 393/431 394/432 -f 412/452 394/432 413/453 -f 414/454 412/452 413/453 -f 414/454 413/453 415/455 -f 416/456 414/454 415/455 -f 416/456 415/455 417/457 -f 418/458 416/456 417/457 -f 418/458 417/457 419/459 -f 267/460 418/458 419/459 -f 267/460 419/459 270/461 -f 420/462 421/463 422/464 -f 423/465 420/462 422/464 -f 423/465 422/464 424/466 -f 420/462 425/467 421/463 -f 425/467 426/468 421/463 -f 425/467 427/469 426/468 -f 427/469 428/470 426/468 -f 427/469 429/471 428/470 -f 429/471 185/472 428/470 -f 429/471 177/473 185/472 -f 430/474 423/465 424/466 -f 430/474 424/466 431/475 -f 432/476 430/474 431/475 -f 432/476 431/475 433/477 -f 434/478 432/476 433/477 -f 434/478 433/477 435/479 -f 436/480 434/478 435/479 -f 436/480 435/479 437/481 -f 438/482 436/480 437/481 -f 438/482 437/481 439/483 -f 440/484 438/482 439/483 -f 440/484 439/483 441/485 -f 442/486 440/484 441/485 -f 442/486 441/485 443/487 -f 444/488 442/486 443/487 -f 444/488 443/487 445/489 -f 446/490 444/488 445/489 -f 446/490 445/489 447/491 -f 448/492 446/490 447/491 -f 448/492 447/491 449/493 -f 247/494 448/492 449/493 -f 247/494 449/493 252/495 -f 450/496 451/497 452/498 -f 453/499 450/496 452/498 -f 453/499 452/498 454/500 -f 450/496 455/501 451/497 -f 455/501 212/502 451/497 -f 455/501 208/503 212/502 -f 456/504 453/499 454/500 -f 456/504 454/500 457/505 -f 458/506 456/504 457/505 -f 458/506 457/505 459/507 -f 460/508 458/506 459/507 -f 460/508 459/507 461/509 -f 462/510 460/508 461/509 -f 462/510 461/509 463/511 -f 464/512 462/510 463/511 -f 464/512 463/511 465/513 -f 466/514 464/512 465/513 -f 466/514 465/513 467/515 -f 468/516 466/514 467/515 -f 468/516 467/515 469/517 -f 470/518 468/516 469/517 -f 470/518 469/517 471/519 -f 472/520 470/518 471/519 -f 472/520 471/519 473/521 -f 474/522 472/520 473/521 -f 474/522 473/521 475/523 -f 476/524 474/522 475/523 -f 476/524 475/523 477/525 -f 478/526 476/524 477/525 -f 478/526 477/525 479/527 -f 280/528 478/526 479/527 -f 280/528 479/527 281/529 -f 480/530 481/531 482/532 -f 483/533 480/530 482/532 -f 483/533 482/532 484/534 -f 480/530 485/535 481/531 -f 485/535 262/536 481/531 -f 485/535 248/537 262/536 -f 486/538 483/533 484/534 -f 486/538 484/534 487/539 -f 488/540 486/538 487/539 -f 488/540 487/539 489/541 -f 490/542 488/540 489/541 -f 490/542 489/541 491/543 -f 492/544 490/542 491/543 -f 492/544 491/543 493/545 -f 494/546 492/544 493/545 -f 494/546 493/545 495/547 -f 496/548 494/546 495/547 -f 496/548 495/547 497/549 -f 498/550 496/548 497/549 -f 498/550 497/549 499/551 -f 500/552 498/550 499/551 -f 500/552 499/551 501/553 -f 502/554 500/552 501/553 -f 502/554 501/553 503/555 -f 504/556 502/554 503/555 -f 504/556 503/555 505/557 -f 506/558 504/556 505/557 -f 506/558 505/557 507/559 -f 508/560 506/558 507/559 -f 508/560 507/559 509/561 -f 186/562 508/560 509/561 -f 186/562 509/561 188/563 -f 510/564 511/565 512/566 -f 513/567 510/564 512/566 -f 513/567 512/566 514/568 -f 510/564 515/569 511/565 -f 515/569 516/570 511/565 -f 515/569 517/571 516/570 -f 517/571 518/572 516/570 -f 517/571 519/573 518/572 -f 519/573 520/574 518/572 -f 519/573 521/575 520/574 -f 521/575 522/576 520/574 -f 521/575 523/577 522/576 -f 523/577 524/578 522/576 -f 523/577 525/579 524/578 -f 525/579 526/580 524/578 -f 525/579 527/581 526/580 -f 527/581 528/582 526/580 -f 527/581 529/583 528/582 -f 529/583 530/584 528/582 -f 529/583 531/585 530/584 -f 531/585 532/586 530/584 -f 531/585 533/587 532/586 -f 533/587 258/588 532/586 -f 533/587 256/589 258/588 -f 534/590 513/567 514/568 -f 534/590 514/568 535/591 -f 536/592 534/590 535/591 -f 536/592 535/591 537/593 -f 538/594 536/592 537/593 -f 538/594 537/593 539/595 -f 181/596 538/594 539/595 -f 181/596 539/595 182/597 -f 199/598 540/599 203/600 -f 199/598 541/601 540/599 -f 541/601 542/602 540/599 -f 541/601 543/603 542/602 -f 543/603 544/604 542/602 -f 543/603 545/605 544/604 -f 545/605 546/606 544/604 -f 545/605 547/607 546/606 -f 547/607 548/608 546/606 -f 547/607 549/609 548/608 -f 549/609 550/610 548/608 -f 549/609 551/611 550/610 -f 551/611 552/612 550/610 -f 551/611 553/613 552/612 -f 553/613 554/614 552/612 -f 553/613 555/615 554/614 -f 555/615 556/616 554/614 -f 555/615 557/617 556/616 -f 557/617 558/618 556/616 -f 557/617 559/619 558/618 -f 559/619 560/620 558/618 -f 559/619 561/621 560/620 -f 561/621 562/622 560/620 -f 561/621 563/623 562/622 -f 563/623 564/624 562/622 -f 563/623 565/625 564/624 -f 565/625 566/626 564/624 -f 565/625 567/627 566/626 -f 567/627 568/628 566/626 -f 567/627 569/629 568/628 -f 569/629 274/630 568/628 -f 569/629 269/631 274/630 -f 429/471 186/562 177/473 -f 429/471 508/560 186/562 -f 427/469 508/560 429/471 -f 427/469 506/558 508/560 -f 425/467 506/558 427/469 -f 425/467 504/556 506/558 -f 420/462 504/556 425/467 -f 420/462 502/554 504/556 -f 423/465 502/554 420/462 -f 423/465 500/552 502/554 -f 430/474 500/552 423/465 -f 430/474 498/550 500/552 -f 432/476 498/550 430/474 -f 432/476 496/548 498/550 -f 434/478 496/548 432/476 -f 434/478 494/546 496/548 -f 436/480 494/546 434/478 -f 436/480 492/544 494/546 -f 438/482 492/544 436/480 -f 438/482 490/542 492/544 -f 440/484 490/542 438/482 -f 440/484 488/540 490/542 -f 442/486 488/540 440/484 -f 442/486 486/538 488/540 -f 444/488 486/538 442/486 -f 444/488 483/533 486/538 -f 446/490 483/533 444/488 -f 446/490 480/530 483/533 -f 448/492 480/530 446/490 -f 448/492 485/535 480/530 -f 247/494 485/535 448/492 -f 247/494 248/537 485/535 -f 411/449 199/598 196/451 -f 411/449 541/601 199/598 -f 409/447 541/601 411/449 -f 409/447 543/603 541/601 -f 407/445 543/603 409/447 -f 407/445 545/605 543/603 -f 405/443 545/605 407/445 -f 405/443 547/607 545/605 -f 403/441 547/607 405/443 -f 403/441 549/609 547/607 -f 401/439 549/609 403/441 -f 401/439 551/611 549/609 -f 399/437 551/611 401/439 -f 399/437 553/613 551/611 -f 397/435 553/613 399/437 -f 397/435 555/615 553/613 -f 395/433 555/615 397/435 -f 395/433 557/617 555/615 -f 390/428 557/617 395/433 -f 390/428 559/619 557/617 -f 393/431 559/619 390/428 -f 393/431 561/621 559/619 -f 412/452 561/621 393/431 -f 412/452 563/623 561/621 -f 414/454 563/623 412/452 -f 414/454 565/625 563/623 -f 416/456 565/625 414/454 -f 416/456 567/627 565/625 -f 418/458 567/627 416/456 -f 418/458 569/629 567/627 -f 267/460 569/629 418/458 -f 267/460 269/631 569/629 -f 570/632 181/596 183/633 -f 570/632 538/594 181/596 -f 571/634 538/594 570/632 -f 571/634 536/592 538/594 -f 572/635 536/592 571/634 -f 572/635 534/590 536/592 -f 573/636 534/590 572/635 -f 573/636 513/567 534/590 -f 574/637 513/567 573/636 -f 574/637 510/564 513/567 -f 575/638 510/564 574/637 -f 575/638 515/569 510/564 -f 576/639 515/569 575/638 -f 576/639 517/571 515/569 -f 577/640 517/571 576/639 -f 577/640 519/573 517/571 -f 578/641 519/573 577/640 -f 578/641 521/575 519/573 -f 579/642 521/575 578/641 -f 579/642 523/577 521/575 -f 580/643 523/577 579/642 -f 580/643 525/579 523/577 -f 581/644 525/579 580/643 -f 581/644 527/581 525/579 -f 582/645 527/581 581/644 -f 582/645 529/583 527/581 -f 583/646 529/583 582/645 -f 583/646 531/585 529/583 -f 584/647 531/585 583/646 -f 584/647 533/587 531/585 -f 259/648 533/587 584/647 -f 259/648 256/589 533/587 -f 265/649 585/650 586/651 -f 586/651 585/650 587/652 -f 586/651 587/652 588/653 -f 265/649 586/651 589/654 -f 586/651 588/653 590/655 -f 586/651 590/655 589/654 -f 265/649 268/656 585/650 -f 265/649 589/654 591/657 -f 268/656 271/658 592/659 -f 268/656 592/659 585/650 -f 585/650 592/659 593/660 -f 593/660 592/659 594/661 -f 585/650 593/660 587/652 -f 593/660 594/661 595/662 -f 596/663 594/661 597/664 -f 595/662 594/661 596/663 -f 595/662 596/663 598/665 -f 596/663 597/664 599/666 -f 588/653 587/652 600/667 -f 590/655 588/653 601/668 -f 588/653 600/667 601/668 -f 590/655 601/668 602/669 -f 603/670 604/671 605/672 -f 603/670 605/672 606/673 -f 603/670 607/674 604/671 -f 607/674 608/675 604/671 -f 260/676 263/677 607/674 -f 260/676 607/674 609/678 -f 609/678 607/674 603/670 -f 607/674 263/677 608/675 -f 261/679 260/676 609/678 -f 261/679 609/678 610/680 -f 610/680 609/678 611/681 -f 609/678 603/670 611/681 -f 610/680 611/681 612/682 -f 610/680 612/682 613/683 -f 610/680 613/683 614/684 -f 611/681 603/670 615/685 -f 611/681 615/685 616/686 -f 603/670 606/673 615/685 -f 614/684 613/683 617/687 -f 614/684 617/687 618/688 -f 614/684 618/688 619/689 -f 614/684 619/689 620/690 -f 288/691 574/637 573/636 -f 287/692 288/691 573/636 -f 287/692 573/636 572/635 -f 288/691 289/693 574/637 -f 289/693 575/638 574/637 -f 289/693 290/694 575/638 -f 290/694 576/639 575/638 -f 290/694 291/695 576/639 -f 291/695 577/640 576/639 -f 291/695 292/696 577/640 -f 292/696 578/641 577/640 -f 292/696 293/697 578/641 -f 293/697 579/642 578/641 -f 293/697 294/698 579/642 -f 294/698 580/643 579/642 -f 294/698 295/699 580/643 -f 295/699 581/644 580/643 -f 295/699 296/700 581/644 -f 296/700 582/645 581/644 -f 296/700 297/701 582/645 -f 297/701 583/646 582/645 -f 297/701 298/702 583/646 -f 298/702 584/647 583/646 -f 298/702 299/703 584/647 -f 299/703 259/648 584/647 -f 299/703 257/704 259/648 -f 286/705 287/692 572/635 -f 286/705 572/635 571/634 -f 285/706 286/705 571/634 -f 285/706 571/634 570/632 -f 184/707 285/706 570/632 -f 184/707 570/632 183/633 -f 12/12 621/708 283/709 -f 12/12 10/10 621/708 -f 10/10 622/710 621/708 -f 10/10 8/8 622/710 -f 8/8 623/711 622/710 -f 8/8 6/6 623/711 -f 6/6 624/712 623/711 -f 6/6 1/1 624/712 -f 1/1 625/713 624/712 -f 1/1 4/4 625/713 -f 4/4 626/714 625/713 -f 4/4 13/13 626/714 -f 13/13 627/715 626/714 -f 13/13 15/15 627/715 -f 15/15 628/716 627/715 -f 15/15 17/17 628/716 -f 17/17 629/717 628/716 -f 17/17 19/19 629/717 -f 19/19 630/718 629/717 -f 19/19 21/21 630/718 -f 21/21 631/719 630/718 -f 21/21 23/23 631/719 -f 23/23 632/720 631/719 -f 23/23 25/25 632/720 -f 25/25 633/721 632/720 -f 25/25 27/27 633/721 -f 27/27 634/722 633/721 -f 27/27 29/29 634/722 -f 29/29 635/723 634/722 -f 29/29 31/31 635/723 -f 31/31 211/724 635/723 -f 31/31 33/33 211/724 -f 456/504 636/725 637/726 -f 453/499 456/504 637/726 -f 453/499 637/726 638/727 -f 456/504 458/506 636/725 -f 458/506 639/728 636/725 -f 458/506 460/508 639/728 -f 460/508 640/729 639/728 -f 460/508 462/510 640/729 -f 462/510 641/730 640/729 -f 462/510 464/512 641/730 -f 464/512 642/731 641/730 -f 464/512 466/514 642/731 -f 466/514 643/732 642/731 -f 466/514 468/516 643/732 -f 468/516 644/733 643/732 -f 468/516 470/518 644/733 -f 470/518 645/734 644/733 -f 470/518 472/520 645/734 -f 472/520 646/735 645/734 -f 472/520 474/522 646/735 -f 474/522 647/736 646/735 -f 474/522 476/524 647/736 -f 476/524 648/737 647/736 -f 476/524 478/526 648/737 -f 478/526 284/738 648/737 -f 478/526 280/528 284/738 -f 450/496 453/499 638/727 -f 450/496 638/727 649/739 -f 455/501 450/496 649/739 -f 455/501 649/739 650/740 -f 208/503 455/501 650/740 -f 208/503 650/740 210/741 -f 509/561 191/742 188/563 -f 509/561 651/743 191/742 -f 507/559 651/743 509/561 -f 651/743 200/744 191/742 -f 507/559 652/745 651/743 -f 651/743 653/746 200/744 -f 652/745 653/746 651/743 -f 505/557 652/745 507/559 -f 505/557 654/747 652/745 -f 652/745 655/748 653/746 -f 654/747 655/748 652/745 -f 653/746 410/448 201/450 -f 653/746 201/450 200/744 -f 655/748 410/448 653/746 -f 656/749 408/446 655/748 -f 655/748 408/446 410/448 -f 654/747 656/749 655/748 -f 503/555 657/750 654/747 -f 503/555 654/747 505/557 -f 657/750 656/749 654/747 -f 656/749 406/444 408/446 -f 657/750 658/751 656/749 -f 658/751 406/444 656/749 -f 501/553 659/752 657/750 -f 501/553 657/750 503/555 -f 659/752 658/751 657/750 -f 660/753 404/442 658/751 -f 658/751 404/442 406/444 -f 659/752 660/753 658/751 -f 499/551 661/754 659/752 -f 499/551 659/752 501/553 -f 661/754 660/753 659/752 -f 660/753 402/440 404/442 -f 661/754 662/755 660/753 -f 662/755 402/440 660/753 -f 497/549 663/756 661/754 -f 497/549 661/754 499/551 -f 663/756 662/755 661/754 -f 664/757 400/438 662/755 -f 662/755 400/438 402/440 -f 663/756 664/757 662/755 -f 665/758 664/757 663/756 -f 495/547 665/758 663/756 -f 495/547 663/756 497/549 -f 664/757 398/436 400/438 -f 665/758 666/759 664/757 -f 666/759 398/436 664/757 -f 493/545 667/760 665/758 -f 493/545 665/758 495/547 -f 667/760 666/759 665/758 -f 668/761 396/434 666/759 -f 666/759 396/434 398/436 -f 667/760 668/761 666/759 -f 491/543 669/762 667/760 -f 491/543 667/760 493/545 -f 669/762 668/761 667/760 -f 668/761 391/429 396/434 -f 669/762 670/763 668/761 -f 670/763 391/429 668/761 -f 489/541 671/764 669/762 -f 489/541 669/762 491/543 -f 671/764 670/763 669/762 -f 672/765 392/430 670/763 -f 670/763 392/430 391/429 -f 671/764 672/765 670/763 -f 487/539 673/766 671/764 -f 487/539 671/764 489/541 -f 673/766 672/765 671/764 -f 672/765 394/432 392/430 -f 673/766 674/767 672/765 -f 674/767 394/432 672/765 -f 484/534 675/768 673/766 -f 484/534 673/766 487/539 -f 675/768 674/767 673/766 -f 676/769 413/453 674/767 -f 674/767 413/453 394/432 -f 675/768 676/769 674/767 -f 482/532 677/770 675/768 -f 482/532 675/768 484/534 -f 677/770 676/769 675/768 -f 676/769 415/455 413/453 -f 677/770 678/771 676/769 -f 678/771 415/455 676/769 -f 481/531 679/772 677/770 -f 481/531 677/770 482/532 -f 679/772 678/771 677/770 -f 680/773 417/457 678/771 -f 678/771 417/457 415/455 -f 679/772 680/773 678/771 -f 262/536 261/774 679/772 -f 262/536 679/772 481/531 -f 261/774 680/773 679/772 -f 680/773 419/459 417/457 -f 261/774 271/775 680/773 -f 271/775 419/459 680/773 -f 271/775 270/461 419/459 -f 540/599 204/776 203/600 -f 540/599 681/777 204/776 -f 542/602 681/777 540/599 -f 681/777 207/778 204/776 -f 542/602 682/779 681/777 -f 681/777 683/780 207/778 -f 682/779 683/780 681/777 -f 544/604 682/779 542/602 -f 544/604 684/781 682/779 -f 682/779 685/782 683/780 -f 684/781 685/782 682/779 -f 683/780 451/497 212/502 -f 683/780 212/502 207/778 -f 685/782 451/497 683/780 -f 686/783 452/498 685/782 -f 685/782 452/498 451/497 -f 684/781 686/783 685/782 -f 687/784 686/783 684/781 -f 546/606 687/784 684/781 -f 546/606 684/781 544/604 -f 686/783 454/500 452/498 -f 687/784 688/785 686/783 -f 688/785 454/500 686/783 -f 548/608 689/786 687/784 -f 548/608 687/784 546/606 -f 689/786 688/785 687/784 -f 690/787 457/505 688/785 -f 688/785 457/505 454/500 -f 689/786 690/787 688/785 -f 550/610 691/788 689/786 -f 550/610 689/786 548/608 -f 691/788 690/787 689/786 -f 690/787 459/507 457/505 -f 691/788 692/789 690/787 -f 692/789 459/507 690/787 -f 552/612 693/790 691/788 -f 552/612 691/788 550/610 -f 693/790 692/789 691/788 -f 694/791 461/509 692/789 -f 692/789 461/509 459/507 -f 693/790 694/791 692/789 -f 554/614 695/792 693/790 -f 554/614 693/790 552/612 -f 695/792 694/791 693/790 -f 694/791 463/511 461/509 -f 695/792 696/793 694/791 -f 696/793 463/511 694/791 -f 556/616 697/794 695/792 -f 556/616 695/792 554/614 -f 697/794 696/793 695/792 -f 698/795 465/513 696/793 -f 697/794 698/795 696/793 -f 696/793 465/513 463/511 -f 558/618 699/796 697/794 -f 558/618 697/794 556/616 -f 699/796 698/795 697/794 -f 698/795 467/515 465/513 -f 699/796 700/797 698/795 -f 700/797 467/515 698/795 -f 560/620 701/798 699/796 -f 560/620 699/796 558/618 -f 701/798 700/797 699/796 -f 702/799 469/517 700/797 -f 700/797 469/517 467/515 -f 701/798 702/799 700/797 -f 703/800 702/799 701/798 -f 562/622 703/800 701/798 -f 562/622 701/798 560/620 -f 702/799 471/519 469/517 -f 703/800 704/801 702/799 -f 704/801 471/519 702/799 -f 564/624 705/802 703/800 -f 564/624 703/800 562/622 -f 705/802 704/801 703/800 -f 706/803 473/521 704/801 -f 704/801 473/521 471/519 -f 705/802 706/803 704/801 -f 566/626 707/804 705/802 -f 566/626 705/802 564/624 -f 707/804 706/803 705/802 -f 706/803 475/523 473/521 -f 707/804 708/805 706/803 -f 708/805 475/523 706/803 -f 568/628 709/806 707/804 -f 568/628 707/804 566/626 -f 709/806 708/805 707/804 -f 710/807 477/525 708/805 -f 708/805 477/525 475/523 -f 709/806 710/807 708/805 -f 274/630 273/808 709/806 -f 274/630 709/806 568/628 -f 273/808 710/807 709/806 -f 710/807 479/527 477/525 -f 273/808 277/809 710/807 -f 277/809 479/527 710/807 -f 277/809 281/529 479/527 -f 539/595 180/810 182/597 -f 539/595 711/811 180/810 -f 537/593 711/811 539/595 -f 711/811 179/812 180/810 -f 537/593 712/813 711/811 -f 711/811 713/814 179/812 -f 712/813 713/814 711/811 -f 535/591 712/813 537/593 -f 535/591 714/815 712/813 -f 712/813 715/816 713/814 -f 714/815 715/816 712/813 -f 713/814 428/470 185/472 -f 713/814 185/472 179/812 -f 715/816 428/470 713/814 -f 716/817 426/468 715/816 -f 715/816 426/468 428/470 -f 714/815 716/817 715/816 -f 717/818 716/817 714/815 -f 514/568 717/818 714/815 -f 514/568 714/815 535/591 -f 716/817 421/463 426/468 -f 717/818 718/819 716/817 -f 718/819 421/463 716/817 -f 512/566 719/820 717/818 -f 512/566 717/818 514/568 -f 719/820 718/819 717/818 -f 720/821 422/464 718/819 -f 718/819 422/464 421/463 -f 719/820 720/821 718/819 -f 511/565 721/822 719/820 -f 511/565 719/820 512/566 -f 721/822 720/821 719/820 -f 720/821 424/466 422/464 -f 721/822 722/823 720/821 -f 722/823 424/466 720/821 -f 516/570 723/824 721/822 -f 516/570 721/822 511/565 -f 723/824 722/823 721/822 -f 724/825 431/475 722/823 -f 722/823 431/475 424/466 -f 723/824 724/825 722/823 -f 518/572 725/826 723/824 -f 518/572 723/824 516/570 -f 725/826 724/825 723/824 -f 724/825 433/477 431/475 -f 725/826 726/827 724/825 -f 726/827 433/477 724/825 -f 520/574 727/828 725/826 -f 520/574 725/826 518/572 -f 727/828 726/827 725/826 -f 728/829 435/479 726/827 -f 727/828 728/829 726/827 -f 726/827 435/479 433/477 -f 522/576 729/830 727/828 -f 522/576 727/828 520/574 -f 729/830 728/829 727/828 -f 728/829 437/481 435/479 -f 729/830 730/831 728/829 -f 730/831 437/481 728/829 -f 524/578 731/832 729/830 -f 524/578 729/830 522/576 -f 731/832 730/831 729/830 -f 732/833 439/483 730/831 -f 730/831 439/483 437/481 -f 731/832 732/833 730/831 -f 733/834 732/833 731/832 -f 526/580 733/834 731/832 -f 526/580 731/832 524/578 -f 732/833 441/485 439/483 -f 733/834 734/835 732/833 -f 734/835 441/485 732/833 -f 528/582 735/836 733/834 -f 528/582 733/834 526/580 -f 735/836 734/835 733/834 -f 736/837 443/487 734/835 -f 734/835 443/487 441/485 -f 735/836 736/837 734/835 -f 530/584 737/838 735/836 -f 530/584 735/836 528/582 -f 737/838 736/837 735/836 -f 736/837 445/489 443/487 -f 737/838 738/839 736/837 -f 738/839 445/489 736/837 -f 532/586 739/840 737/838 -f 532/586 737/838 530/584 -f 739/840 738/839 737/838 -f 740/841 447/491 738/839 -f 738/839 447/491 445/489 -f 739/840 740/841 738/839 -f 258/588 255/842 739/840 -f 258/588 739/840 532/586 -f 255/842 740/841 739/840 -f 740/841 449/493 447/491 -f 255/842 254/843 740/841 -f 254/843 449/493 740/841 -f 254/843 252/495 449/493 -f 621/844 647/736 648/737 -f 283/845 621/844 648/737 -f 283/845 648/737 284/738 -f 621/844 622/846 647/736 -f 622/846 646/735 647/736 -f 622/846 623/847 646/735 -f 623/847 645/734 646/735 -f 623/847 624/848 645/734 -f 624/848 644/733 645/734 -f 624/848 625/849 644/733 -f 625/849 643/732 644/733 -f 625/849 626/850 643/732 -f 626/850 642/731 643/732 -f 626/850 627/851 642/731 -f 627/851 641/730 642/731 -f 627/851 628/852 641/730 -f 628/852 640/729 641/730 -f 628/852 629/853 640/729 -f 629/853 639/728 640/729 -f 629/853 630/854 639/728 -f 630/854 636/725 639/728 -f 630/854 631/855 636/725 -f 631/855 637/726 636/725 -f 631/855 632/856 637/726 -f 632/856 638/727 637/726 -f 632/856 633/857 638/727 -f 633/857 649/739 638/727 -f 633/857 634/858 649/739 -f 634/858 650/740 649/739 -f 634/858 635/859 650/740 -f 635/859 210/741 650/740 -f 635/859 211/860 210/741 -f 263/280 591/861 608/862 -f 263/280 265/283 591/861 -f 271/863 610/864 592/865 -f 271/863 261/866 610/864 -f 611/867 593/868 612/869 -f 612/869 593/868 595/870 -f 612/869 595/870 613/871 -f 611/867 587/872 593/868 -f 613/871 595/870 598/873 -f 613/871 598/873 617/874 -f 592/865 614/875 594/876 -f 592/865 610/864 614/875 -f 596/877 617/874 598/873 -f 596/877 618/878 617/874 -f 618/878 596/877 599/879 -f 618/878 599/879 619/880 -f 608/862 589/881 604/882 -f 604/882 589/881 590/883 -f 604/882 590/883 605/884 -f 608/862 591/861 589/881 -f 605/884 590/883 602/885 -f 605/884 602/885 606/886 -f 615/685 600/667 616/686 -f 615/685 601/668 600/667 -f 601/668 615/685 606/673 -f 601/668 606/673 602/669 -f 587/872 616/887 600/888 -f 587/872 611/867 616/887 -f 597/889 619/890 599/891 -f 597/889 620/892 619/890 -f 594/876 620/892 597/889 -f 594/876 614/875 620/892 diff --git a/mods/boats/models/rowboat.x b/mods/boats/models/rowboat.x deleted file mode 100644 index 73a61df3..00000000 --- a/mods/boats/models/rowboat.x +++ /dev/null @@ -1,760 +0,0 @@ -xof 0303txt 0032 - -Frame Root { - FrameTransformMatrix { - 1.000000, 0.000000, 0.000000, 0.000000, - 0.000000,-0.000000, 1.000000, 0.000000, - 0.000000, 1.000000, 0.000000, 0.000000, - 0.000000, 0.000000, 0.000000, 1.000000;; - } - Frame Cube_000 { - FrameTransformMatrix { - 1.000000, 0.000000, 0.000000, 0.000000, - 0.000000, 1.000000, 0.000000, 0.000000, - 0.000000, 0.000000, 1.000000, 0.000000, - 0.000000, 0.000000, 0.000000, 1.000000;; - } - Mesh { // Cube_000 mesh - 240; - 6.000000; 3.999999; 2.376923;, - 5.999998;-8.000001; 2.376923;, - 5.999998;-8.000001; 4.376923;, - 6.000001; 3.999999; 4.376923;, - -2.000000; 8.000000; 2.376923;, - 2.000000; 8.000000; 2.376923;, - 2.000001; 8.000000; 4.376923;, - -1.999999; 8.000000; 4.376923;, - -6.000000; 4.000000; 4.376923;, - -6.000001;-8.000000; 4.376923;, - -6.000001;-7.999999; 2.376923;, - -6.000000; 4.000000; 2.376923;, - -3.999999; 6.000001; 2.376923;, - -1.999999; 6.000000; 2.376923;, - -2.000001;-8.000002; 2.376923;, - -4.000001;-8.000000; 2.376923;, - -2.000000; 4.000000;-1.623077;, - -2.000001;-7.999999;-1.623077;, - 1.999999;-8.000001;-1.623077;, - 2.000000; 4.000000;-1.623077;, - -2.000000; 4.000000; 0.376923;, - 2.000000; 3.999999; 0.376923;, - 1.999999;-8.000001; 0.376923;, - -2.000001;-8.000000; 0.376923;, - -2.000000; 4.000000;-1.623077;, - 2.000000; 4.000000;-1.623077;, - 2.000000; 3.999999; 0.376923;, - -2.000000; 4.000000; 0.376923;, - 2.000000; 4.000000;-1.623077;, - 1.999999;-8.000001;-1.623077;, - 1.999999;-8.000001; 0.376923;, - 2.000000; 3.999999; 0.376923;, - 1.999999;-8.000001;-1.623077;, - -2.000001;-7.999999;-1.623077;, - -2.000001;-8.000000; 0.376923;, - 1.999999;-8.000001; 0.376923;, - -2.000000; 4.000000; 0.376923;, - -2.000001;-8.000000; 0.376923;, - -2.000001;-7.999999;-1.623077;, - -2.000000; 4.000000;-1.623077;, - -4.000001;-8.000000; 0.376923;, - -4.000001;-10.000000; 0.376923;, - 4.000000;-10.000000; 0.376923;, - 3.999999;-8.000000; 0.376923;, - -4.000000;-7.999999; 4.376923;, - 4.000000;-8.000001; 4.376923;, - 3.999999;-10.000001; 4.376923;, - -4.000001;-10.000000; 4.376923;, - -4.000001;-8.000000; 0.376923;, - 3.999999;-8.000000; 0.376923;, - 4.000000;-8.000001; 4.376923;, - -4.000000;-7.999999; 4.376923;, - 3.999999;-8.000000; 0.376923;, - 4.000000;-10.000000; 0.376923;, - 3.999999;-10.000001; 4.376923;, - 4.000000;-8.000001; 4.376923;, - 4.000000;-10.000000; 0.376923;, - -4.000001;-10.000000; 0.376923;, - -4.000001;-10.000000; 4.376923;, - 3.999999;-10.000001; 4.376923;, - -4.000000;-7.999999; 4.376923;, - -4.000001;-10.000000; 4.376923;, - -4.000001;-10.000000; 0.376923;, - -4.000001;-8.000000; 0.376923;, - 4.000000; 4.000000; 2.376923;, - 3.999999;-8.000001; 2.376923;, - 5.999998;-8.000001; 2.376923;, - 6.000000; 3.999999; 2.376923;, - 4.000001; 4.000000; 4.376923;, - 6.000001; 3.999999; 4.376923;, - 5.999998;-8.000001; 4.376923;, - 4.000000;-8.000001; 4.376923;, - 4.000000; 4.000000; 2.376923;, - 6.000000; 3.999999; 2.376923;, - 6.000001; 3.999999; 4.376923;, - 4.000001; 4.000000; 4.376923;, - 5.999998;-8.000001; 2.376923;, - 3.999999;-8.000001; 2.376923;, - 4.000000;-8.000001; 4.376923;, - 5.999998;-8.000001; 4.376923;, - 4.000001; 4.000000; 4.376923;, - 4.000000;-8.000001; 4.376923;, - 3.999999;-8.000001; 2.376923;, - 4.000000; 4.000000; 2.376923;, - 2.000000; 6.000000; 0.376923;, - 1.999999;-8.000001; 0.376923;, - 3.999999;-8.000000; 0.376923;, - 4.000000; 6.000000; 0.376923;, - 2.000001; 6.000000; 2.376923;, - 4.000001; 5.999999; 2.376923;, - 3.999999;-8.000001; 2.376923;, - 1.999999;-8.000000; 2.376923;, - 2.000000; 6.000000; 0.376923;, - 4.000000; 6.000000; 0.376923;, - 4.000001; 5.999999; 2.376923;, - 2.000001; 6.000000; 2.376923;, - 4.000000; 6.000000; 0.376923;, - 3.999999;-8.000000; 0.376923;, - 3.999999;-8.000001; 2.376923;, - 4.000001; 5.999999; 2.376923;, - 3.999999;-8.000000; 0.376923;, - 1.999999;-8.000001; 0.376923;, - 1.999999;-8.000000; 2.376923;, - 3.999999;-8.000001; 2.376923;, - 2.000001; 6.000000; 2.376923;, - 1.999999;-8.000000; 2.376923;, - 1.999999;-8.000001; 0.376923;, - 2.000000; 6.000000; 0.376923;, - 2.000001; 6.000000; 2.376923;, - 2.000000; 4.000000; 2.376923;, - 4.000000; 4.000000; 2.376923;, - 4.000001; 5.999999; 2.376923;, - 2.000001; 6.000000; 4.376923;, - 4.000001; 5.999999; 4.376923;, - 4.000001; 4.000000; 4.376923;, - 2.000000; 4.000000; 4.376923;, - 2.000001; 6.000000; 2.376923;, - 4.000001; 5.999999; 2.376923;, - 4.000001; 5.999999; 4.376923;, - 2.000001; 6.000000; 4.376923;, - 4.000001; 5.999999; 2.376923;, - 4.000000; 4.000000; 2.376923;, - 4.000001; 4.000000; 4.376923;, - 4.000001; 5.999999; 4.376923;, - 4.000000; 4.000000; 2.376923;, - 2.000000; 4.000000; 2.376923;, - 2.000000; 4.000000; 4.376923;, - 4.000001; 4.000000; 4.376923;, - 2.000001; 6.000000; 4.376923;, - 2.000000; 4.000000; 4.376923;, - 2.000000; 4.000000; 2.376923;, - 2.000001; 6.000000; 2.376923;, - -3.999999; 6.000001; 2.376923;, - -4.000000; 4.000000; 2.376923;, - -2.000000; 4.000000; 2.376923;, - -1.999999; 6.000000; 2.376923;, - -3.999999; 6.000001; 4.376923;, - -1.999999; 6.000000; 4.376923;, - -2.000000; 4.000000; 4.376923;, - -4.000000; 3.999999; 4.376923;, - -3.999999; 6.000001; 2.376923;, - -1.999999; 6.000000; 2.376923;, - -1.999999; 6.000000; 4.376923;, - -3.999999; 6.000001; 4.376923;, - -1.999999; 6.000000; 2.376923;, - -2.000000; 4.000000; 2.376923;, - -2.000000; 4.000000; 4.376923;, - -1.999999; 6.000000; 4.376923;, - -2.000000; 4.000000; 2.376923;, - -4.000000; 4.000000; 2.376923;, - -4.000000; 3.999999; 4.376923;, - -2.000000; 4.000000; 4.376923;, - -3.999999; 6.000001; 4.376923;, - -4.000000; 3.999999; 4.376923;, - -4.000000; 4.000000; 2.376923;, - -3.999999; 6.000001; 2.376923;, - -2.000000; 8.000000; 2.376923;, - -1.999999; 6.000000; 2.376923;, - 2.000001; 6.000000; 2.376923;, - 2.000000; 8.000000; 2.376923;, - -1.999999; 8.000000; 4.376923;, - 2.000001; 8.000000; 4.376923;, - 2.000001; 6.000000; 4.376923;, - -1.999999; 6.000000; 4.376923;, - 2.000000; 8.000000; 2.376923;, - 2.000001; 6.000000; 2.376923;, - 2.000001; 6.000000; 4.376923;, - 2.000001; 8.000000; 4.376923;, - 2.000001; 6.000000; 2.376923;, - -1.999999; 6.000000; 2.376923;, - -1.999999; 6.000000; 4.376923;, - 2.000001; 6.000000; 4.376923;, - -1.999999; 8.000000; 4.376923;, - -1.999999; 6.000000; 4.376923;, - -1.999999; 6.000000; 2.376923;, - -2.000000; 8.000000; 2.376923;, - -2.000000; 6.000000; 0.376923;, - -2.000000; 4.000000; 0.376923;, - 2.000000; 3.999999; 0.376923;, - 2.000000; 6.000000; 0.376923;, - -1.999999; 6.000000; 2.376923;, - 2.000001; 6.000000; 2.376923;, - 2.000000; 4.000000; 2.376923;, - -2.000000; 4.000000; 2.376923;, - -2.000000; 6.000000; 0.376923;, - 2.000000; 6.000000; 0.376923;, - 2.000001; 6.000000; 2.376923;, - -1.999999; 6.000000; 2.376923;, - 2.000000; 6.000000; 0.376923;, - 2.000000; 3.999999; 0.376923;, - 2.000000; 4.000000; 2.376923;, - 2.000001; 6.000000; 2.376923;, - 2.000000; 3.999999; 0.376923;, - -2.000000; 4.000000; 0.376923;, - -2.000000; 4.000000; 2.376923;, - 2.000000; 4.000000; 2.376923;, - -1.999999; 6.000000; 2.376923;, - -2.000000; 4.000000; 2.376923;, - -2.000000; 4.000000; 0.376923;, - -2.000000; 6.000000; 0.376923;, - -6.000000; 4.000000; 2.376923;, - -6.000001;-7.999999; 2.376923;, - -4.000001;-8.000000; 2.376923;, - -4.000000; 4.000000; 2.376923;, - -6.000000; 4.000000; 4.376923;, - -4.000000; 3.999999; 4.376923;, - -4.000000;-7.999999; 4.376923;, - -6.000001;-8.000000; 4.376923;, - -6.000000; 4.000000; 2.376923;, - -4.000000; 4.000000; 2.376923;, - -4.000000; 3.999999; 4.376923;, - -6.000000; 4.000000; 4.376923;, - -4.000000; 4.000000; 2.376923;, - -4.000001;-8.000000; 2.376923;, - -4.000000;-7.999999; 4.376923;, - -4.000000; 3.999999; 4.376923;, - -4.000001;-8.000000; 2.376923;, - -6.000001;-7.999999; 2.376923;, - -6.000001;-8.000000; 4.376923;, - -4.000000;-7.999999; 4.376923;, - -4.000000; 6.000001; 0.376923;, - -4.000001;-8.000000; 0.376923;, - -2.000001;-8.000000; 0.376923;, - -2.000000; 6.000000; 0.376923;, - -4.000000; 6.000001; 0.376923;, - -2.000000; 6.000000; 0.376923;, - -1.999999; 6.000000; 2.376923;, - -3.999999; 6.000001; 2.376923;, - -2.000000; 6.000000; 0.376923;, - -2.000001;-8.000000; 0.376923;, - -2.000001;-8.000002; 2.376923;, - -1.999999; 6.000000; 2.376923;, - -2.000001;-8.000000; 0.376923;, - -4.000001;-8.000000; 0.376923;, - -4.000001;-8.000000; 2.376923;, - -2.000001;-8.000002; 2.376923;, - -3.999999; 6.000001; 2.376923;, - -4.000001;-8.000000; 2.376923;, - -4.000001;-8.000000; 0.376923;, - -4.000000; 6.000001; 0.376923;; - 60; - 4;0,1,2,3;, - 4;4,5,6,7;, - 4;8,9,10,11;, - 4;12,13,14,15;, - 4;16,17,18,19;, - 4;20,21,22,23;, - 4;24,25,26,27;, - 4;28,29,30,31;, - 4;32,33,34,35;, - 4;36,37,38,39;, - 4;40,41,42,43;, - 4;44,45,46,47;, - 4;48,49,50,51;, - 4;52,53,54,55;, - 4;56,57,58,59;, - 4;60,61,62,63;, - 4;64,65,66,67;, - 4;68,69,70,71;, - 4;72,73,74,75;, - 4;76,77,78,79;, - 4;80,81,82,83;, - 4;84,85,86,87;, - 4;88,89,90,91;, - 4;92,93,94,95;, - 4;96,97,98,99;, - 4;100,101,102,103;, - 4;104,105,106,107;, - 4;108,109,110,111;, - 4;112,113,114,115;, - 4;116,117,118,119;, - 4;120,121,122,123;, - 4;124,125,126,127;, - 4;128,129,130,131;, - 4;132,133,134,135;, - 4;136,137,138,139;, - 4;140,141,142,143;, - 4;144,145,146,147;, - 4;148,149,150,151;, - 4;152,153,154,155;, - 4;156,157,158,159;, - 4;160,161,162,163;, - 4;164,165,166,167;, - 4;168,169,170,171;, - 4;172,173,174,175;, - 4;176,177,178,179;, - 4;180,181,182,183;, - 4;184,185,186,187;, - 4;188,189,190,191;, - 4;192,193,194,195;, - 4;196,197,198,199;, - 4;200,201,202,203;, - 4;204,205,206,207;, - 4;208,209,210,211;, - 4;212,213,214,215;, - 4;216,217,218,219;, - 4;220,221,222,223;, - 4;224,225,226,227;, - 4;228,229,230,231;, - 4;232,233,234,235;, - 4;236,237,238,239;; - MeshNormals { // Cube_000 normals - 60; - -1.000000; 0.000000; 0.000000;, - 0.000000;-1.000000;-0.000000;, - 1.000000;-0.000000; 0.000000;, - 0.000000; 0.000000;-1.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -0.000000;-1.000000;-0.000000;, - -1.000000; 0.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - 1.000000;-0.000000;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -0.000000;-1.000000;-0.000000;, - -1.000000; 0.000000;-0.000000;, - 0.000000; 1.000000; 0.000000;, - 1.000000;-0.000000;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -0.000000;-1.000000;-0.000000;, - 0.000000; 1.000000; 0.000000;, - 1.000000;-0.000000;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -0.000000;-1.000000;-0.000001;, - -1.000000; 0.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - 1.000000;-0.000000;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -0.000000;-1.000000; 0.000000;, - -1.000000; 0.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - 1.000000;-0.000001;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -0.000001;-1.000000; 0.000000;, - -1.000000; 0.000001;-0.000000;, - -0.000000; 1.000000; 0.000000;, - 1.000000;-0.000000;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -1.000000;-0.000000; 0.000000;, - -0.000000; 1.000000;-0.000000;, - 1.000000; 0.000000;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - 0.000000;-1.000000;-0.000000;, - -1.000000; 0.000000; 0.000000;, - 0.000000; 1.000000;-0.000000;, - 1.000000;-0.000000;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -0.000000;-1.000000;-0.000000;, - -1.000000; 0.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - 0.000000; 0.000000; 1.000000;, - -0.000000;-1.000000;-0.000000;, - -1.000000; 0.000000; 0.000000;, - 0.000001; 1.000000; 0.000001;, - 1.000000;-0.000000;-0.000000;; - 60; - 4;0,0,0,0;, - 4;1,1,1,1;, - 4;2,2,2,2;, - 4;3,3,3,3;, - 4;4,4,4,4;, - 4;5,5,5,5;, - 4;6,6,6,6;, - 4;7,7,7,7;, - 4;8,8,8,8;, - 4;9,9,9,9;, - 4;10,10,10,10;, - 4;11,11,11,11;, - 4;12,12,12,12;, - 4;13,13,13,13;, - 4;14,14,14,14;, - 4;15,15,15,15;, - 4;16,16,16,16;, - 4;17,17,17,17;, - 4;18,18,18,18;, - 4;19,19,19,19;, - 4;20,20,20,20;, - 4;21,21,21,21;, - 4;22,22,22,22;, - 4;23,23,23,23;, - 4;24,24,24,24;, - 4;25,25,25,25;, - 4;26,26,26,26;, - 4;27,27,27,27;, - 4;28,28,28,28;, - 4;29,29,29,29;, - 4;30,30,30,30;, - 4;31,31,31,31;, - 4;32,32,32,32;, - 4;33,33,33,33;, - 4;34,34,34,34;, - 4;35,35,35,35;, - 4;36,36,36,36;, - 4;37,37,37,37;, - 4;38,38,38,38;, - 4;39,39,39,39;, - 4;40,40,40,40;, - 4;41,41,41,41;, - 4;42,42,42,42;, - 4;43,43,43,43;, - 4;44,44,44,44;, - 4;45,45,45,45;, - 4;46,46,46,46;, - 4;47,47,47,47;, - 4;48,48,48,48;, - 4;49,49,49,49;, - 4;50,50,50,50;, - 4;51,51,51,51;, - 4;52,52,52,52;, - 4;53,53,53,53;, - 4;54,54,54,54;, - 4;55,55,55,55;, - 4;56,56,56,56;, - 4;57,57,57,57;, - 4;58,58,58,58;, - 4;59,59,59,59;; - } // End of Cube_000 normals - MeshTextureCoords { // Cube_000 UV coordinates - 240; - 6.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 6.000000; 0.000000;, - 2.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 2.000000; 0.000000;, - 6.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 6.000000; 0.000000;, - 7.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 5.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 5.000000;-1.000000;, - 6.000000;-1.000000;, - 6.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 2.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 2.000000; 0.000000;, - 6.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 6.000000; 0.000000;, - 3.000000; 0.999999;, - 0.000000; 1.000000;, - 0.000000; 0.000001;, - 3.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000001; 1.000000;, - 0.000000;-4.000000;, - 1.000000;-4.000000;, - 1.000000;-3.000000;, - 0.999999; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-3.000000;, - 4.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 4.000000;-1.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 1.000000;-1.000000;, - 5.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-0.999999;, - 5.000000;-1.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 1.000000;-1.000000;, - 5.375000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 5.375000; 0.000000;, - 5.375000; 0.000000;, - 5.375000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;, - 6.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 6.000000; 0.000000;, - 7.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 1.000000;-1.000000;, - 1.000000;-1.000000;, - 0.999999; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 2.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000001;, - 2.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 1.000000;-1.000000;, - 1.000000;-1.000000;, - 0.999999; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 2.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 2.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 2.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000001;, - 2.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;, - 7.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 6.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 6.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;; - } // End of Cube_000 UV coordinates - MeshMaterialList { // Cube_000 material list - 1; - 60; - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0;; - Material Material { - 0.640000; 0.640000; 0.640000; 1.000000;; - 96.078431; - 0.500000; 0.500000; 0.500000;; - 0.000000; 0.000000; 0.000000;; - TextureFilename {"default_wood.png";} - } - } // End of Cube_000 material list - } // End of Cube_000 mesh - } // End of Cube_000 -} // End of Root diff --git a/mods/boats/textures/boats_inventory.png b/mods/boats/textures/boats_inventory.png deleted file mode 100644 index f9d082e31625c099490403a56906e922e2ea9e72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 851 zcmV-Z1FZasP)>bI*)Nhm3B#3M=*L}JA!9HRz@*?WkF_AHc>+{j&Vqga7ao&Fo0-9c3?qe zR6TE8K~_mQd16INLponkKt(}5WKJ!rg-)P-N|<*>n|VftYCWQVN|tp)lXF9CR4=E3 zOr(KKj&DGUY(02gHk*4$o_j}wXFGsoI(Az!X;LqbaYBP;IB-`nU`i^CZ9s@>J9}X` zfn+vxTQz)OGkIP!b6GQIP%D~uM3QnrjBPxHXgYjiIcifdYEmsuJRy~ILX>krh-o=* zRxVvgDOf}&RYE14TQCv;002C6QchCF4C!)z#F_%)z?4wzjROrk zg#{I`ySuwv-~76p?lSrRYdN5Rg6?&ebLY%6bI z-nq};QSUzDun5`WTPSq6&@T6!4T~zlRFQC4DK5=Fe3b*&Ya)cAoQkrdfMie}9i0xe zz~?6l6eFw~7^$inDe-2?0((6T_%UzsiV=4?0YXMn^bDJenO^0@Ux!aE$C4=nlr4i( z(PP4u1SpW_7tagT{`IYM^0Q2Yu*Js)!RYZ%-d*VW}xw7 zaApN-Y~D;pq@3fvR?>;w(8Xe_NsBv}aFJ|=eSC6WN`O!7e>1udibU2qhRMiIzEB)* zz?%b_L?gY|lx( dAMEQD2kZ(bZYdv#XGG|aNV@)bxN++y^OPh8>jBr72S2Jx@ zEq`V`bXzl5Ml)+vF{gq~lypUiY(0~3JcMdHePla>X*qgeIeTF;sDn>~YCw8oK3YX8 zrGQMLeMpvbK#FcWQA99aNi0-BCX#bOh-W%uPB2P9FlkXKY*si?Jt3KPNPu87y7d!z z00001bW%=J06^y0W&i*IG)Y83R5;7+kXv?xAQVLd0)l9aK=G|HzG95cYyNX9w)v3N zA++~>xdBdTSqmSkCILNo9`d~K_;lU?lIGZh zQFU*qD3P!_$ZW(2`cRN^UHThnhBcH6gwu5h7)qtBnMH~{9t1b9 k#*!tWkz&lBcYo-<03BBywb>I+MgRZ+07*qoM6N<$f=^K0k^lez diff --git a/mods/boats/textures/rowboat_inventory.png b/mods/boats/textures/rowboat_inventory.png deleted file mode 100644 index 086bb92bc2b3f0a03463ff5474bf52dc75dbf760..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 444 zcmV;t0YmEoM$eeXDFv@CZ%pQsBka|C;0FH z0004WQchCt0yp^kFpwRvR;Xp=b(b#6;Q4sa+@-*C32f*(whM~ z^cFGSx~^-zkVMmO)jcK;-!6Pz7q7Ln8guAz0ECK&?yZZjYsq2>pwDTdobFV4xQ8xg zmRm%pyG{Xg3KJ?K>f3~wmp&YgNi>Kk)8%2?buqJ=sVC4U8=yxaUBttLnZ?XCrhCo- z=tT~&ZM!aJ7IXIiP-hzSsxobf3iGwpOnuOurvQ3WHM$mGEcaH8YTz6+{V@PKmDy@s zW6%|7(7T>#01+5eWMiVx^jD*1(A#1vZRg2u&`0Q=%)RrmcNReZ0=jZ%b?(dteFjwS m$jZt9eQheUBI#R6Kh!S(O%kS6$54g<0000_d0O^ z0004WQchCx0a0`j|pSFVVN&3wMU!9HvY%GLX zmVbrsM_lpRqSlM8lUuih;C>y^W8^x{1g;@ch%uBolZ1#E341__Qt5Lh3<)Mk$$)Bh%h_y<*;TPB{d5VK zrQyPd0Y4@}7gIut1I3)h=kcxrp+p=K;%kCZ28ES7L8L<>YGZJH1ZF#8Yf!V_ufW^t zs4!m=w+q;OOq>a4FK!UpkgMafdl9!*#(TTzssD Date: Fri, 18 Mar 2016 20:52:59 +0100 Subject: [PATCH 013/383] added illuna and death_message to submodules --- .gitmodules | 6 ++++++ mods/death_message | 1 + mods/illuna | 1 + 3 files changed, 8 insertions(+) create mode 160000 mods/death_message create mode 160000 mods/illuna diff --git a/.gitmodules b/.gitmodules index 6090a239..cfd9cab2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,9 @@ [submodule "mods/boats"] path = mods/boats url = https://github.com/tenplus1/boats +[submodule "mods/illuna"] + path = mods/illuna + url = https://github.com/Illuna-Minetest/illuna +[submodule "mods/death_message"] + path = mods/death_message + url = https://github.com/Illuna-Minetest/death_message diff --git a/mods/death_message b/mods/death_message new file mode 160000 index 00000000..7a7462f0 --- /dev/null +++ b/mods/death_message @@ -0,0 +1 @@ +Subproject commit 7a7462f04ed94095e9920c53249ec55c00a89db6 diff --git a/mods/illuna b/mods/illuna new file mode 160000 index 00000000..fecacb60 --- /dev/null +++ b/mods/illuna @@ -0,0 +1 @@ +Subproject commit fecacb60e7bc813c3bd94000d4befebbbe07783e From a58df5b448dfafdcc34d6ef066920bf92dfd3212 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 26 Mar 2016 19:13:46 +0100 Subject: [PATCH 014/383] update submodule boats --- mods/default/furnace.lua | 300 +++++++++++++++++++-------------------- 1 file changed, 147 insertions(+), 153 deletions(-) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index aa2be212..6d89aae1 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -90,137 +90,6 @@ local function allow_metadata_inventory_take(pos, listname, index, stack, player return stack:get_count() end -local function swap_node(pos, name) - local node = minetest.get_node(pos) - if node.name == name then - return - end - node.name = name - minetest.swap_node(pos, node) -end - -local function furnace_node_timer(pos, elapsed) - -- - -- Inizialize metadata - -- - local meta = minetest.get_meta(pos) - local fuel_time = meta:get_float("fuel_time") or 0 - local src_time = meta:get_float("src_time") or 0 - local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 - - local inv = meta:get_inventory() - local srclist = inv:get_list("src") - local fuellist = inv:get_list("fuel") - local dstlist = inv:get_list("dst") - - -- - -- Cooking - -- - - -- Check if we have cookable content - local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) - local cookable = true - - if cooked.time == 0 then - cookable = false - end - - -- Check if we have enough fuel to burn - if fuel_time < fuel_totaltime then - -- The furnace is currently active and has enough fuel - fuel_time = fuel_time + 1 - - -- If there is a cookable item then check if it is ready yet - if cookable then - src_time = src_time + 1 - if src_time >= cooked.time then - -- Place result in dst list if possible - if inv:room_for_item("dst", cooked.item) then - inv:add_item("dst", cooked.item) - inv:set_stack("src", 1, aftercooked.items[1]) - src_time = 0 - end - end - end - else - -- Furnace ran out of fuel - if cookable then - -- We need to get new fuel - local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) - - if fuel.time == 0 then - -- No valid fuel in fuel list - fuel_totaltime = 0 - fuel_time = 0 - src_time = 0 - else - -- Take fuel from fuel list - inv:set_stack("fuel", 1, afterfuel.items[1]) - - fuel_totaltime = fuel.time - fuel_time = 0 - end - else - -- We don't need to get new fuel since there is no cookable item - fuel_totaltime = 0 - fuel_time = 0 - src_time = 0 - end - end - - -- - -- Update formspec, infotext and node - -- - local formspec = inactive_formspec - local item_state = "" - local item_percent = 0 - if cookable then - item_percent = math.floor(src_time / cooked.time * 100) - item_state = item_percent .. "%" - else - if srclist[1]:is_empty() then - item_state = "Empty" - else - item_state = "Not cookable" - end - end - - local fuel_state = "Empty" - local active = "inactive " - local result = false - - if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then - active = "active " - local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) - fuel_state = fuel_percent .. "%" - formspec = active_formspec(fuel_percent, item_percent) - swap_node(pos, "default:furnace_active") - -- make sure timer restarts automatically - result = true - else - if not fuellist[1]:is_empty() then - fuel_state = "0%" - end - swap_node(pos, "default:furnace") - -- stop timer on the inactive furnace - local timer = minetest.get_node_timer(pos) - timer:stop() - end - - local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")" - - -- - -- Set meta values - -- - meta:set_float("fuel_totaltime", fuel_totaltime) - meta:set_float("fuel_time", fuel_time) - meta:set_float("src_time", src_time) - meta:set_string("formspec", formspec) - meta:set_string("infotext", infotext) - - return result -end - -- -- Node definitions -- @@ -237,26 +106,9 @@ minetest.register_node("default:furnace", { legacy_facedir_simple = true, is_ground_content = false, sounds = default.node_sound_stone_defaults(), - + can_dig = can_dig, - - on_timer = furnace_node_timer, - - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", inactive_formspec) - local inv = meta:get_inventory() - inv:set_size('src', 1) - inv:set_size('fuel', 1) - inv:set_size('dst', 4) - end, - - on_metadata_inventory_put = function(pos) - -- start timer function, it will sort out whether furnace can burn or not. - local timer = minetest.get_node_timer(pos) - timer:start(1.0) - end, - + allow_metadata_inventory_put = allow_metadata_inventory_put, allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, @@ -286,12 +138,154 @@ minetest.register_node("default:furnace_active", { legacy_facedir_simple = true, is_ground_content = false, sounds = default.node_sound_stone_defaults(), - on_timer = furnace_node_timer, - + can_dig = can_dig, - + allow_metadata_inventory_put = allow_metadata_inventory_put, allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, }) +-- +-- ABM +-- + +local function swap_node(pos, name) + local node = minetest.get_node(pos) + if node.name == name then + return + end + node.name = name + minetest.swap_node(pos, node) +end + +minetest.register_abm({ + nodenames = {"default:furnace", "default:furnace_active"}, + interval = 1.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + -- + -- Inizialize metadata + -- + local meta = minetest.get_meta(pos) + local fuel_time = meta:get_float("fuel_time") or 0 + local src_time = meta:get_float("src_time") or 0 + local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 + + -- + -- Inizialize inventory + -- + local inv = meta:get_inventory() + for listname, size in pairs({ + src = 1, + fuel = 1, + dst = 4, + }) do + if inv:get_size(listname) ~= size then + inv:set_size(listname, size) + end + end + local srclist = inv:get_list("src") + local fuellist = inv:get_list("fuel") + local dstlist = inv:get_list("dst") + + -- + -- Cooking + -- + + -- Check if we have cookable content + local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) + local cookable = true + + if cooked.time == 0 then + cookable = false + end + + -- Check if we have enough fuel to burn + if fuel_time < fuel_totaltime then + -- The furnace is currently active and has enough fuel + fuel_time = fuel_time + 1 + + -- If there is a cookable item then check if it is ready yet + if cookable then + src_time = src_time + 1 + if src_time >= cooked.time then + -- Place result in dst list if possible + if inv:room_for_item("dst", cooked.item) then + inv:add_item("dst", cooked.item) + inv:set_stack("src", 1, aftercooked.items[1]) + src_time = 0 + end + end + end + else + -- Furnace ran out of fuel + if cookable then + -- We need to get new fuel + local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + + if fuel.time == 0 then + -- No valid fuel in fuel list + fuel_totaltime = 0 + fuel_time = 0 + src_time = 0 + else + -- Take fuel from fuel list + inv:set_stack("fuel", 1, afterfuel.items[1]) + + fuel_totaltime = fuel.time + fuel_time = 0 + + end + else + -- We don't need to get new fuel since there is no cookable item + fuel_totaltime = 0 + fuel_time = 0 + src_time = 0 + end + end + + -- + -- Update formspec, infotext and node + -- + local formspec = inactive_formspec + local item_state = "" + local item_percent = 0 + if cookable then + item_percent = math.floor(src_time / cooked.time * 100) + item_state = item_percent .. "%" + else + if srclist[1]:is_empty() then + item_state = "Empty" + else + item_state = "Not cookable" + end + end + + local fuel_state = "Empty" + local active = "inactive " + if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then + active = "active " + local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) + fuel_state = fuel_percent .. "%" + formspec = active_formspec(fuel_percent, item_percent) + swap_node(pos, "default:furnace_active") + else + if not fuellist[1]:is_empty() then + fuel_state = "0%" + end + swap_node(pos, "default:furnace") + end + + local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")" + + -- + -- Set meta values + -- + meta:set_float("fuel_totaltime", fuel_totaltime) + meta:set_float("fuel_time", fuel_time) + meta:set_float("src_time", src_time) + meta:set_string("formspec", formspec) + meta:set_string("infotext", infotext) + end, +}) From 954123df52081421daa231a5bb9f673384e71595 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 26 Mar 2016 19:14:57 +0100 Subject: [PATCH 015/383] Revert "update submodule boats" This reverts commit a58df5b448dfafdcc34d6ef066920bf92dfd3212. --- mods/default/furnace.lua | 300 ++++++++++++++++++++------------------- 1 file changed, 153 insertions(+), 147 deletions(-) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index 6d89aae1..aa2be212 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -90,6 +90,137 @@ local function allow_metadata_inventory_take(pos, listname, index, stack, player return stack:get_count() end +local function swap_node(pos, name) + local node = minetest.get_node(pos) + if node.name == name then + return + end + node.name = name + minetest.swap_node(pos, node) +end + +local function furnace_node_timer(pos, elapsed) + -- + -- Inizialize metadata + -- + local meta = minetest.get_meta(pos) + local fuel_time = meta:get_float("fuel_time") or 0 + local src_time = meta:get_float("src_time") or 0 + local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 + + local inv = meta:get_inventory() + local srclist = inv:get_list("src") + local fuellist = inv:get_list("fuel") + local dstlist = inv:get_list("dst") + + -- + -- Cooking + -- + + -- Check if we have cookable content + local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) + local cookable = true + + if cooked.time == 0 then + cookable = false + end + + -- Check if we have enough fuel to burn + if fuel_time < fuel_totaltime then + -- The furnace is currently active and has enough fuel + fuel_time = fuel_time + 1 + + -- If there is a cookable item then check if it is ready yet + if cookable then + src_time = src_time + 1 + if src_time >= cooked.time then + -- Place result in dst list if possible + if inv:room_for_item("dst", cooked.item) then + inv:add_item("dst", cooked.item) + inv:set_stack("src", 1, aftercooked.items[1]) + src_time = 0 + end + end + end + else + -- Furnace ran out of fuel + if cookable then + -- We need to get new fuel + local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + + if fuel.time == 0 then + -- No valid fuel in fuel list + fuel_totaltime = 0 + fuel_time = 0 + src_time = 0 + else + -- Take fuel from fuel list + inv:set_stack("fuel", 1, afterfuel.items[1]) + + fuel_totaltime = fuel.time + fuel_time = 0 + end + else + -- We don't need to get new fuel since there is no cookable item + fuel_totaltime = 0 + fuel_time = 0 + src_time = 0 + end + end + + -- + -- Update formspec, infotext and node + -- + local formspec = inactive_formspec + local item_state = "" + local item_percent = 0 + if cookable then + item_percent = math.floor(src_time / cooked.time * 100) + item_state = item_percent .. "%" + else + if srclist[1]:is_empty() then + item_state = "Empty" + else + item_state = "Not cookable" + end + end + + local fuel_state = "Empty" + local active = "inactive " + local result = false + + if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then + active = "active " + local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) + fuel_state = fuel_percent .. "%" + formspec = active_formspec(fuel_percent, item_percent) + swap_node(pos, "default:furnace_active") + -- make sure timer restarts automatically + result = true + else + if not fuellist[1]:is_empty() then + fuel_state = "0%" + end + swap_node(pos, "default:furnace") + -- stop timer on the inactive furnace + local timer = minetest.get_node_timer(pos) + timer:stop() + end + + local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")" + + -- + -- Set meta values + -- + meta:set_float("fuel_totaltime", fuel_totaltime) + meta:set_float("fuel_time", fuel_time) + meta:set_float("src_time", src_time) + meta:set_string("formspec", formspec) + meta:set_string("infotext", infotext) + + return result +end + -- -- Node definitions -- @@ -106,9 +237,26 @@ minetest.register_node("default:furnace", { legacy_facedir_simple = true, is_ground_content = false, sounds = default.node_sound_stone_defaults(), - + can_dig = can_dig, - + + on_timer = furnace_node_timer, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", inactive_formspec) + local inv = meta:get_inventory() + inv:set_size('src', 1) + inv:set_size('fuel', 1) + inv:set_size('dst', 4) + end, + + on_metadata_inventory_put = function(pos) + -- start timer function, it will sort out whether furnace can burn or not. + local timer = minetest.get_node_timer(pos) + timer:start(1.0) + end, + allow_metadata_inventory_put = allow_metadata_inventory_put, allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, @@ -138,154 +286,12 @@ minetest.register_node("default:furnace_active", { legacy_facedir_simple = true, is_ground_content = false, sounds = default.node_sound_stone_defaults(), - + on_timer = furnace_node_timer, + can_dig = can_dig, - + allow_metadata_inventory_put = allow_metadata_inventory_put, allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, }) --- --- ABM --- - -local function swap_node(pos, name) - local node = minetest.get_node(pos) - if node.name == name then - return - end - node.name = name - minetest.swap_node(pos, node) -end - -minetest.register_abm({ - nodenames = {"default:furnace", "default:furnace_active"}, - interval = 1.0, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - -- - -- Inizialize metadata - -- - local meta = minetest.get_meta(pos) - local fuel_time = meta:get_float("fuel_time") or 0 - local src_time = meta:get_float("src_time") or 0 - local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 - - -- - -- Inizialize inventory - -- - local inv = meta:get_inventory() - for listname, size in pairs({ - src = 1, - fuel = 1, - dst = 4, - }) do - if inv:get_size(listname) ~= size then - inv:set_size(listname, size) - end - end - local srclist = inv:get_list("src") - local fuellist = inv:get_list("fuel") - local dstlist = inv:get_list("dst") - - -- - -- Cooking - -- - - -- Check if we have cookable content - local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) - local cookable = true - - if cooked.time == 0 then - cookable = false - end - - -- Check if we have enough fuel to burn - if fuel_time < fuel_totaltime then - -- The furnace is currently active and has enough fuel - fuel_time = fuel_time + 1 - - -- If there is a cookable item then check if it is ready yet - if cookable then - src_time = src_time + 1 - if src_time >= cooked.time then - -- Place result in dst list if possible - if inv:room_for_item("dst", cooked.item) then - inv:add_item("dst", cooked.item) - inv:set_stack("src", 1, aftercooked.items[1]) - src_time = 0 - end - end - end - else - -- Furnace ran out of fuel - if cookable then - -- We need to get new fuel - local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) - - if fuel.time == 0 then - -- No valid fuel in fuel list - fuel_totaltime = 0 - fuel_time = 0 - src_time = 0 - else - -- Take fuel from fuel list - inv:set_stack("fuel", 1, afterfuel.items[1]) - - fuel_totaltime = fuel.time - fuel_time = 0 - - end - else - -- We don't need to get new fuel since there is no cookable item - fuel_totaltime = 0 - fuel_time = 0 - src_time = 0 - end - end - - -- - -- Update formspec, infotext and node - -- - local formspec = inactive_formspec - local item_state = "" - local item_percent = 0 - if cookable then - item_percent = math.floor(src_time / cooked.time * 100) - item_state = item_percent .. "%" - else - if srclist[1]:is_empty() then - item_state = "Empty" - else - item_state = "Not cookable" - end - end - - local fuel_state = "Empty" - local active = "inactive " - if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then - active = "active " - local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) - fuel_state = fuel_percent .. "%" - formspec = active_formspec(fuel_percent, item_percent) - swap_node(pos, "default:furnace_active") - else - if not fuellist[1]:is_empty() then - fuel_state = "0%" - end - swap_node(pos, "default:furnace") - end - - local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")" - - -- - -- Set meta values - -- - meta:set_float("fuel_totaltime", fuel_totaltime) - meta:set_float("fuel_time", fuel_time) - meta:set_float("src_time", src_time) - meta:set_string("formspec", formspec) - meta:set_string("infotext", infotext) - end, -}) From 8564858efe1e0989e07a727247a9c6cd241d0562 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 26 Mar 2016 19:24:40 +0100 Subject: [PATCH 016/383] re-added submodule boats --- .gitmodules | 6 +- mods/default/furnace.lua | 300 +++++++++++++++++++-------------------- 2 files changed, 150 insertions(+), 156 deletions(-) diff --git a/.gitmodules b/.gitmodules index cfd9cab2..0592d159 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,9 @@ -[submodule "mods/boats"] - path = mods/boats - url = https://github.com/tenplus1/boats [submodule "mods/illuna"] path = mods/illuna url = https://github.com/Illuna-Minetest/illuna [submodule "mods/death_message"] path = mods/death_message url = https://github.com/Illuna-Minetest/death_message +[submodule "mods/boats"] + path = mods/boats + url = https://github.com/tenplus1/boats diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index aa2be212..6d89aae1 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -90,137 +90,6 @@ local function allow_metadata_inventory_take(pos, listname, index, stack, player return stack:get_count() end -local function swap_node(pos, name) - local node = minetest.get_node(pos) - if node.name == name then - return - end - node.name = name - minetest.swap_node(pos, node) -end - -local function furnace_node_timer(pos, elapsed) - -- - -- Inizialize metadata - -- - local meta = minetest.get_meta(pos) - local fuel_time = meta:get_float("fuel_time") or 0 - local src_time = meta:get_float("src_time") or 0 - local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 - - local inv = meta:get_inventory() - local srclist = inv:get_list("src") - local fuellist = inv:get_list("fuel") - local dstlist = inv:get_list("dst") - - -- - -- Cooking - -- - - -- Check if we have cookable content - local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) - local cookable = true - - if cooked.time == 0 then - cookable = false - end - - -- Check if we have enough fuel to burn - if fuel_time < fuel_totaltime then - -- The furnace is currently active and has enough fuel - fuel_time = fuel_time + 1 - - -- If there is a cookable item then check if it is ready yet - if cookable then - src_time = src_time + 1 - if src_time >= cooked.time then - -- Place result in dst list if possible - if inv:room_for_item("dst", cooked.item) then - inv:add_item("dst", cooked.item) - inv:set_stack("src", 1, aftercooked.items[1]) - src_time = 0 - end - end - end - else - -- Furnace ran out of fuel - if cookable then - -- We need to get new fuel - local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) - - if fuel.time == 0 then - -- No valid fuel in fuel list - fuel_totaltime = 0 - fuel_time = 0 - src_time = 0 - else - -- Take fuel from fuel list - inv:set_stack("fuel", 1, afterfuel.items[1]) - - fuel_totaltime = fuel.time - fuel_time = 0 - end - else - -- We don't need to get new fuel since there is no cookable item - fuel_totaltime = 0 - fuel_time = 0 - src_time = 0 - end - end - - -- - -- Update formspec, infotext and node - -- - local formspec = inactive_formspec - local item_state = "" - local item_percent = 0 - if cookable then - item_percent = math.floor(src_time / cooked.time * 100) - item_state = item_percent .. "%" - else - if srclist[1]:is_empty() then - item_state = "Empty" - else - item_state = "Not cookable" - end - end - - local fuel_state = "Empty" - local active = "inactive " - local result = false - - if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then - active = "active " - local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) - fuel_state = fuel_percent .. "%" - formspec = active_formspec(fuel_percent, item_percent) - swap_node(pos, "default:furnace_active") - -- make sure timer restarts automatically - result = true - else - if not fuellist[1]:is_empty() then - fuel_state = "0%" - end - swap_node(pos, "default:furnace") - -- stop timer on the inactive furnace - local timer = minetest.get_node_timer(pos) - timer:stop() - end - - local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")" - - -- - -- Set meta values - -- - meta:set_float("fuel_totaltime", fuel_totaltime) - meta:set_float("fuel_time", fuel_time) - meta:set_float("src_time", src_time) - meta:set_string("formspec", formspec) - meta:set_string("infotext", infotext) - - return result -end - -- -- Node definitions -- @@ -237,26 +106,9 @@ minetest.register_node("default:furnace", { legacy_facedir_simple = true, is_ground_content = false, sounds = default.node_sound_stone_defaults(), - + can_dig = can_dig, - - on_timer = furnace_node_timer, - - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", inactive_formspec) - local inv = meta:get_inventory() - inv:set_size('src', 1) - inv:set_size('fuel', 1) - inv:set_size('dst', 4) - end, - - on_metadata_inventory_put = function(pos) - -- start timer function, it will sort out whether furnace can burn or not. - local timer = minetest.get_node_timer(pos) - timer:start(1.0) - end, - + allow_metadata_inventory_put = allow_metadata_inventory_put, allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, @@ -286,12 +138,154 @@ minetest.register_node("default:furnace_active", { legacy_facedir_simple = true, is_ground_content = false, sounds = default.node_sound_stone_defaults(), - on_timer = furnace_node_timer, - + can_dig = can_dig, - + allow_metadata_inventory_put = allow_metadata_inventory_put, allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, }) +-- +-- ABM +-- + +local function swap_node(pos, name) + local node = minetest.get_node(pos) + if node.name == name then + return + end + node.name = name + minetest.swap_node(pos, node) +end + +minetest.register_abm({ + nodenames = {"default:furnace", "default:furnace_active"}, + interval = 1.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + -- + -- Inizialize metadata + -- + local meta = minetest.get_meta(pos) + local fuel_time = meta:get_float("fuel_time") or 0 + local src_time = meta:get_float("src_time") or 0 + local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 + + -- + -- Inizialize inventory + -- + local inv = meta:get_inventory() + for listname, size in pairs({ + src = 1, + fuel = 1, + dst = 4, + }) do + if inv:get_size(listname) ~= size then + inv:set_size(listname, size) + end + end + local srclist = inv:get_list("src") + local fuellist = inv:get_list("fuel") + local dstlist = inv:get_list("dst") + + -- + -- Cooking + -- + + -- Check if we have cookable content + local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) + local cookable = true + + if cooked.time == 0 then + cookable = false + end + + -- Check if we have enough fuel to burn + if fuel_time < fuel_totaltime then + -- The furnace is currently active and has enough fuel + fuel_time = fuel_time + 1 + + -- If there is a cookable item then check if it is ready yet + if cookable then + src_time = src_time + 1 + if src_time >= cooked.time then + -- Place result in dst list if possible + if inv:room_for_item("dst", cooked.item) then + inv:add_item("dst", cooked.item) + inv:set_stack("src", 1, aftercooked.items[1]) + src_time = 0 + end + end + end + else + -- Furnace ran out of fuel + if cookable then + -- We need to get new fuel + local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + + if fuel.time == 0 then + -- No valid fuel in fuel list + fuel_totaltime = 0 + fuel_time = 0 + src_time = 0 + else + -- Take fuel from fuel list + inv:set_stack("fuel", 1, afterfuel.items[1]) + + fuel_totaltime = fuel.time + fuel_time = 0 + + end + else + -- We don't need to get new fuel since there is no cookable item + fuel_totaltime = 0 + fuel_time = 0 + src_time = 0 + end + end + + -- + -- Update formspec, infotext and node + -- + local formspec = inactive_formspec + local item_state = "" + local item_percent = 0 + if cookable then + item_percent = math.floor(src_time / cooked.time * 100) + item_state = item_percent .. "%" + else + if srclist[1]:is_empty() then + item_state = "Empty" + else + item_state = "Not cookable" + end + end + + local fuel_state = "Empty" + local active = "inactive " + if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then + active = "active " + local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) + fuel_state = fuel_percent .. "%" + formspec = active_formspec(fuel_percent, item_percent) + swap_node(pos, "default:furnace_active") + else + if not fuellist[1]:is_empty() then + fuel_state = "0%" + end + swap_node(pos, "default:furnace") + end + + local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")" + + -- + -- Set meta values + -- + meta:set_float("fuel_totaltime", fuel_totaltime) + meta:set_float("fuel_time", fuel_time) + meta:set_float("src_time", src_time) + meta:set_string("formspec", formspec) + meta:set_string("infotext", infotext) + end, +}) From ad7d4600969342cf4c1f39919602c961af3fd43a Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 26 Mar 2016 20:02:17 +0100 Subject: [PATCH 017/383] revert failed operations --- .gitmodules | 6 +- mods/default/furnace.lua | 300 ++++++++++++++++++++------------------- 2 files changed, 156 insertions(+), 150 deletions(-) diff --git a/.gitmodules b/.gitmodules index 0592d159..cfd9cab2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,9 @@ +[submodule "mods/boats"] + path = mods/boats + url = https://github.com/tenplus1/boats [submodule "mods/illuna"] path = mods/illuna url = https://github.com/Illuna-Minetest/illuna [submodule "mods/death_message"] path = mods/death_message url = https://github.com/Illuna-Minetest/death_message -[submodule "mods/boats"] - path = mods/boats - url = https://github.com/tenplus1/boats diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index 6d89aae1..aa2be212 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -90,6 +90,137 @@ local function allow_metadata_inventory_take(pos, listname, index, stack, player return stack:get_count() end +local function swap_node(pos, name) + local node = minetest.get_node(pos) + if node.name == name then + return + end + node.name = name + minetest.swap_node(pos, node) +end + +local function furnace_node_timer(pos, elapsed) + -- + -- Inizialize metadata + -- + local meta = minetest.get_meta(pos) + local fuel_time = meta:get_float("fuel_time") or 0 + local src_time = meta:get_float("src_time") or 0 + local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 + + local inv = meta:get_inventory() + local srclist = inv:get_list("src") + local fuellist = inv:get_list("fuel") + local dstlist = inv:get_list("dst") + + -- + -- Cooking + -- + + -- Check if we have cookable content + local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) + local cookable = true + + if cooked.time == 0 then + cookable = false + end + + -- Check if we have enough fuel to burn + if fuel_time < fuel_totaltime then + -- The furnace is currently active and has enough fuel + fuel_time = fuel_time + 1 + + -- If there is a cookable item then check if it is ready yet + if cookable then + src_time = src_time + 1 + if src_time >= cooked.time then + -- Place result in dst list if possible + if inv:room_for_item("dst", cooked.item) then + inv:add_item("dst", cooked.item) + inv:set_stack("src", 1, aftercooked.items[1]) + src_time = 0 + end + end + end + else + -- Furnace ran out of fuel + if cookable then + -- We need to get new fuel + local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + + if fuel.time == 0 then + -- No valid fuel in fuel list + fuel_totaltime = 0 + fuel_time = 0 + src_time = 0 + else + -- Take fuel from fuel list + inv:set_stack("fuel", 1, afterfuel.items[1]) + + fuel_totaltime = fuel.time + fuel_time = 0 + end + else + -- We don't need to get new fuel since there is no cookable item + fuel_totaltime = 0 + fuel_time = 0 + src_time = 0 + end + end + + -- + -- Update formspec, infotext and node + -- + local formspec = inactive_formspec + local item_state = "" + local item_percent = 0 + if cookable then + item_percent = math.floor(src_time / cooked.time * 100) + item_state = item_percent .. "%" + else + if srclist[1]:is_empty() then + item_state = "Empty" + else + item_state = "Not cookable" + end + end + + local fuel_state = "Empty" + local active = "inactive " + local result = false + + if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then + active = "active " + local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) + fuel_state = fuel_percent .. "%" + formspec = active_formspec(fuel_percent, item_percent) + swap_node(pos, "default:furnace_active") + -- make sure timer restarts automatically + result = true + else + if not fuellist[1]:is_empty() then + fuel_state = "0%" + end + swap_node(pos, "default:furnace") + -- stop timer on the inactive furnace + local timer = minetest.get_node_timer(pos) + timer:stop() + end + + local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")" + + -- + -- Set meta values + -- + meta:set_float("fuel_totaltime", fuel_totaltime) + meta:set_float("fuel_time", fuel_time) + meta:set_float("src_time", src_time) + meta:set_string("formspec", formspec) + meta:set_string("infotext", infotext) + + return result +end + -- -- Node definitions -- @@ -106,9 +237,26 @@ minetest.register_node("default:furnace", { legacy_facedir_simple = true, is_ground_content = false, sounds = default.node_sound_stone_defaults(), - + can_dig = can_dig, - + + on_timer = furnace_node_timer, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", inactive_formspec) + local inv = meta:get_inventory() + inv:set_size('src', 1) + inv:set_size('fuel', 1) + inv:set_size('dst', 4) + end, + + on_metadata_inventory_put = function(pos) + -- start timer function, it will sort out whether furnace can burn or not. + local timer = minetest.get_node_timer(pos) + timer:start(1.0) + end, + allow_metadata_inventory_put = allow_metadata_inventory_put, allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, @@ -138,154 +286,12 @@ minetest.register_node("default:furnace_active", { legacy_facedir_simple = true, is_ground_content = false, sounds = default.node_sound_stone_defaults(), - + on_timer = furnace_node_timer, + can_dig = can_dig, - + allow_metadata_inventory_put = allow_metadata_inventory_put, allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, }) --- --- ABM --- - -local function swap_node(pos, name) - local node = minetest.get_node(pos) - if node.name == name then - return - end - node.name = name - minetest.swap_node(pos, node) -end - -minetest.register_abm({ - nodenames = {"default:furnace", "default:furnace_active"}, - interval = 1.0, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - -- - -- Inizialize metadata - -- - local meta = minetest.get_meta(pos) - local fuel_time = meta:get_float("fuel_time") or 0 - local src_time = meta:get_float("src_time") or 0 - local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 - - -- - -- Inizialize inventory - -- - local inv = meta:get_inventory() - for listname, size in pairs({ - src = 1, - fuel = 1, - dst = 4, - }) do - if inv:get_size(listname) ~= size then - inv:set_size(listname, size) - end - end - local srclist = inv:get_list("src") - local fuellist = inv:get_list("fuel") - local dstlist = inv:get_list("dst") - - -- - -- Cooking - -- - - -- Check if we have cookable content - local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) - local cookable = true - - if cooked.time == 0 then - cookable = false - end - - -- Check if we have enough fuel to burn - if fuel_time < fuel_totaltime then - -- The furnace is currently active and has enough fuel - fuel_time = fuel_time + 1 - - -- If there is a cookable item then check if it is ready yet - if cookable then - src_time = src_time + 1 - if src_time >= cooked.time then - -- Place result in dst list if possible - if inv:room_for_item("dst", cooked.item) then - inv:add_item("dst", cooked.item) - inv:set_stack("src", 1, aftercooked.items[1]) - src_time = 0 - end - end - end - else - -- Furnace ran out of fuel - if cookable then - -- We need to get new fuel - local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) - - if fuel.time == 0 then - -- No valid fuel in fuel list - fuel_totaltime = 0 - fuel_time = 0 - src_time = 0 - else - -- Take fuel from fuel list - inv:set_stack("fuel", 1, afterfuel.items[1]) - - fuel_totaltime = fuel.time - fuel_time = 0 - - end - else - -- We don't need to get new fuel since there is no cookable item - fuel_totaltime = 0 - fuel_time = 0 - src_time = 0 - end - end - - -- - -- Update formspec, infotext and node - -- - local formspec = inactive_formspec - local item_state = "" - local item_percent = 0 - if cookable then - item_percent = math.floor(src_time / cooked.time * 100) - item_state = item_percent .. "%" - else - if srclist[1]:is_empty() then - item_state = "Empty" - else - item_state = "Not cookable" - end - end - - local fuel_state = "Empty" - local active = "inactive " - if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then - active = "active " - local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) - fuel_state = fuel_percent .. "%" - formspec = active_formspec(fuel_percent, item_percent) - swap_node(pos, "default:furnace_active") - else - if not fuellist[1]:is_empty() then - fuel_state = "0%" - end - swap_node(pos, "default:furnace") - end - - local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")" - - -- - -- Set meta values - -- - meta:set_float("fuel_totaltime", fuel_totaltime) - meta:set_float("fuel_time", fuel_time) - meta:set_float("src_time", src_time) - meta:set_string("formspec", formspec) - meta:set_string("infotext", infotext) - end, -}) From f80a67c17189c948273f950cbeb7caa9b99d0b5c Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 26 Mar 2016 20:08:48 +0100 Subject: [PATCH 018/383] rollback furnance to (hopefully) bugless state --- mods/furnace.lua | 177 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 mods/furnace.lua diff --git a/mods/furnace.lua b/mods/furnace.lua new file mode 100644 index 00000000..68d5180e --- /dev/null +++ b/mods/furnace.lua @@ -0,0 +1,177 @@ +-- minetest/creative/init.lua + +creative_inventory = {} +creative_inventory.creative_inventory_size = 0 + +-- Create detached creative inventory after loading all mods +minetest.after(0, function() + local inv = minetest.create_detached_inventory("creative", { + allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) + if minetest.setting_getbool("creative_mode") then + return count + else + return 0 + end + end, + allow_put = function(inv, listname, index, stack, player) + return 0 + end, + allow_take = function(inv, listname, index, stack, player) + if minetest.setting_getbool("creative_mode") then + return -1 + else + return 0 + end + end, + on_move = function(inv, from_list, from_index, to_list, to_index, count, player) + end, + on_put = function(inv, listname, index, stack, player) + end, + on_take = function(inv, listname, index, stack, player) + --print(player:get_player_name().." takes item from creative inventory; listname="..dump(listname)..", index="..dump(index)..", stack="..dump(stack)) + if stack then + minetest.log("action", player:get_player_name().." takes "..dump(stack:get_name()).." from creative inventory") + --print("stack:get_name()="..dump(stack:get_name())..", stack:get_count()="..dump(stack:get_count())) + end + end, + }) + local creative_list = {} + for name,def in pairs(minetest.registered_items) do + if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) + and def.description and def.description ~= "" then + table.insert(creative_list, name) + end + end + table.sort(creative_list) + inv:set_size("main", #creative_list) + for _,itemstring in ipairs(creative_list) do + inv:add_item("main", ItemStack(itemstring)) + end + creative_inventory.creative_inventory_size = #creative_list + --print("creative inventory size: "..dump(creative_inventory.creative_inventory_size)) +end) + +-- Create the trash field +local trash = minetest.create_detached_inventory("creative_trash", { + -- Allow the stack to be placed and remove it in on_put() + -- This allows the creative inventory to restore the stack + allow_put = function(inv, listname, index, stack, player) + if minetest.setting_getbool("creative_mode") then + return stack:get_count() + else + return 0 + end + end, + on_put = function(inv, listname, index, stack, player) + inv:set_stack(listname, index, "") + end, +}) +trash:set_size("main", 1) + + +creative_inventory.set_creative_formspec = function(player, start_i, pagenum) + pagenum = math.floor(pagenum) + local pagemax = math.floor((creative_inventory.creative_inventory_size-1) / (6*4) + 1) + player:set_inventory_formspec( + "size[13,7.5]".. + --"image[6,0.6;1,2;player.png]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + "list[current_player;main;5,3.5;8,1;]".. + "list[current_player;main;5,4.75;8,3;8]".. + "list[current_player;craft;8,0;3,3;]".. + "list[current_player;craftpreview;12,1;1,1;]".. + "image[11,1;1,1;gui_furnace_arrow_bg.png^[transformR270]".. + "list[detached:creative;main;0.3,0.5;4,6;"..tostring(start_i).."]".. + "label[2.0,6.55;"..tostring(pagenum).."/"..tostring(pagemax).."]".. + "button[0.3,6.5;1.6,1;creative_prev;<<]".. + "button[2.7,6.5;1.6,1;creative_next;>>]".. + "listring[current_player;main]".. + "listring[current_player;craft]".. + "listring[current_player;main]".. + "listring[detached:creative;main]".. + "label[5,1.5;Trash:]".. + "list[detached:creative_trash;main;5,2;1,1;]".. + default.get_hotbar_bg(5,3.5) + ) +end +minetest.register_on_joinplayer(function(player) + -- If in creative mode, modify player's inventory forms + if not minetest.setting_getbool("creative_mode") then + return + end + creative_inventory.set_creative_formspec(player, 0, 1) +end) +minetest.register_on_player_receive_fields(function(player, formname, fields) + if not minetest.setting_getbool("creative_mode") then + return + end + -- Figure out current page from formspec + local current_page = 0 + local formspec = player:get_inventory_formspec() + local start_i = string.match(formspec, "list%[detached:creative;main;[%d.]+,[%d.]+;[%d.]+,[%d.]+;(%d+)%]") + start_i = tonumber(start_i) or 0 + + if fields.creative_prev then + start_i = start_i - 4*6 + end + if fields.creative_next then + start_i = start_i + 4*6 + end + + if start_i < 0 then + start_i = start_i + 4*6 + end + if start_i >= creative_inventory.creative_inventory_size then + start_i = start_i - 4*6 + end + + if start_i < 0 or start_i >= creative_inventory.creative_inventory_size then + start_i = 0 + end + + creative_inventory.set_creative_formspec(player, start_i, start_i / (6*4) + 1) +end) + +if minetest.setting_getbool("creative_mode") then + local digtime = 0.5 + minetest.register_item(":", { + type = "none", + wield_image = "wieldhand.png", + wield_scale = {x=1,y=1,z=2.5}, + range = 10, + tool_capabilities = { + full_punch_interval = 0.5, + max_drop_level = 3, + groupcaps = { + crumbly = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, + cracky = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, + snappy = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, + choppy = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, + oddly_breakable_by_hand = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, + }, + damage_groups = {fleshy = 10}, + } + }) + + minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack) + return true + end) + + function minetest.handle_node_drops(pos, drops, digger) + if not digger or not digger:is_player() then + return + end + local inv = digger:get_inventory() + if inv then + for _,item in ipairs(drops) do + item = ItemStack(item):get_name() + if not inv:contains_item("main", item) then + inv:add_item("main", item) + end + end + end + end + +end From 0feed93d9e89505f6f23fe885f1f00cd50edecd8 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 26 Mar 2016 20:14:20 +0100 Subject: [PATCH 019/383] location fix: furnace.lua --- mods/default/furnace.lua | 432 ++++++++++++++------------------------- mods/furnace.lua | 177 ---------------- 2 files changed, 156 insertions(+), 453 deletions(-) delete mode 100644 mods/furnace.lua diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index aa2be212..68d5180e 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -1,297 +1,177 @@ +-- minetest/creative/init.lua --- --- Formspecs --- +creative_inventory = {} +creative_inventory.creative_inventory_size = 0 -local function active_formspec(fuel_percent, item_percent) - local formspec = - "size[8,8.5]".. - default.gui_bg.. - default.gui_bg_img.. - default.gui_slots.. - "list[current_name;src;2.75,0.5;1,1;]".. - "list[current_name;fuel;2.75,2.5;1,1;]".. - "image[2.75,1.5;1,1;default_furnace_fire_bg.png^[lowpart:".. - (100-fuel_percent)..":default_furnace_fire_fg.png]".. - "image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[lowpart:".. - (item_percent)..":gui_furnace_arrow_fg.png^[transformR270]".. - "list[current_name;dst;4.75,0.96;2,2;]".. - "list[current_player;main;0,4.25;8,1;]".. - "list[current_player;main;0,5.5;8,3;8]".. - "listring[current_name;dst]".. - "listring[current_player;main]".. - "listring[current_name;src]".. - "listring[current_player;main]".. - default.get_hotbar_bg(0, 4.25) - return formspec -end - -local inactive_formspec = - "size[8,8.5]".. - default.gui_bg.. - default.gui_bg_img.. - default.gui_slots.. - "list[current_name;src;2.75,0.5;1,1;]".. - "list[current_name;fuel;2.75,2.5;1,1;]".. - "image[2.75,1.5;1,1;default_furnace_fire_bg.png]".. - "image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270]".. - "list[current_name;dst;4.75,0.96;2,2;]".. - "list[current_player;main;0,4.25;8,1;]".. - "list[current_player;main;0,5.5;8,3;8]".. - "listring[current_name;dst]".. - "listring[current_player;main]".. - "listring[current_name;src]".. - "listring[current_player;main]".. - default.get_hotbar_bg(0, 4.25) - --- --- Node callback functions that are the same for active and inactive furnace --- - -local function can_dig(pos, player) - local meta = minetest.get_meta(pos); - local inv = meta:get_inventory() - return inv:is_empty("fuel") and inv:is_empty("dst") and inv:is_empty("src") -end - -local function allow_metadata_inventory_put(pos, listname, index, stack, player) - if minetest.is_protected(pos, player:get_player_name()) then - return 0 - end - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - if listname == "fuel" then - if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 then - if inv:is_empty("src") then - meta:set_string("infotext", "Furnace is empty") +-- Create detached creative inventory after loading all mods +minetest.after(0, function() + local inv = minetest.create_detached_inventory("creative", { + allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) + if minetest.setting_getbool("creative_mode") then + return count + else + return 0 end + end, + allow_put = function(inv, listname, index, stack, player) + return 0 + end, + allow_take = function(inv, listname, index, stack, player) + if minetest.setting_getbool("creative_mode") then + return -1 + else + return 0 + end + end, + on_move = function(inv, from_list, from_index, to_list, to_index, count, player) + end, + on_put = function(inv, listname, index, stack, player) + end, + on_take = function(inv, listname, index, stack, player) + --print(player:get_player_name().." takes item from creative inventory; listname="..dump(listname)..", index="..dump(index)..", stack="..dump(stack)) + if stack then + minetest.log("action", player:get_player_name().." takes "..dump(stack:get_name()).." from creative inventory") + --print("stack:get_name()="..dump(stack:get_name())..", stack:get_count()="..dump(stack:get_count())) + end + end, + }) + local creative_list = {} + for name,def in pairs(minetest.registered_items) do + if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) + and def.description and def.description ~= "" then + table.insert(creative_list, name) + end + end + table.sort(creative_list) + inv:set_size("main", #creative_list) + for _,itemstring in ipairs(creative_list) do + inv:add_item("main", ItemStack(itemstring)) + end + creative_inventory.creative_inventory_size = #creative_list + --print("creative inventory size: "..dump(creative_inventory.creative_inventory_size)) +end) + +-- Create the trash field +local trash = minetest.create_detached_inventory("creative_trash", { + -- Allow the stack to be placed and remove it in on_put() + -- This allows the creative inventory to restore the stack + allow_put = function(inv, listname, index, stack, player) + if minetest.setting_getbool("creative_mode") then return stack:get_count() else return 0 end - elseif listname == "src" then - return stack:get_count() - elseif listname == "dst" then - return 0 - end -end + end, + on_put = function(inv, listname, index, stack, player) + inv:set_stack(listname, index, "") + end, +}) +trash:set_size("main", 1) -local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local stack = inv:get_stack(from_list, from_index) - return allow_metadata_inventory_put(pos, to_list, to_index, stack, player) -end -local function allow_metadata_inventory_take(pos, listname, index, stack, player) - if minetest.is_protected(pos, player:get_player_name()) then - return 0 - end - return stack:get_count() +creative_inventory.set_creative_formspec = function(player, start_i, pagenum) + pagenum = math.floor(pagenum) + local pagemax = math.floor((creative_inventory.creative_inventory_size-1) / (6*4) + 1) + player:set_inventory_formspec( + "size[13,7.5]".. + --"image[6,0.6;1,2;player.png]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + "list[current_player;main;5,3.5;8,1;]".. + "list[current_player;main;5,4.75;8,3;8]".. + "list[current_player;craft;8,0;3,3;]".. + "list[current_player;craftpreview;12,1;1,1;]".. + "image[11,1;1,1;gui_furnace_arrow_bg.png^[transformR270]".. + "list[detached:creative;main;0.3,0.5;4,6;"..tostring(start_i).."]".. + "label[2.0,6.55;"..tostring(pagenum).."/"..tostring(pagemax).."]".. + "button[0.3,6.5;1.6,1;creative_prev;<<]".. + "button[2.7,6.5;1.6,1;creative_next;>>]".. + "listring[current_player;main]".. + "listring[current_player;craft]".. + "listring[current_player;main]".. + "listring[detached:creative;main]".. + "label[5,1.5;Trash:]".. + "list[detached:creative_trash;main;5,2;1,1;]".. + default.get_hotbar_bg(5,3.5) + ) end - -local function swap_node(pos, name) - local node = minetest.get_node(pos) - if node.name == name then +minetest.register_on_joinplayer(function(player) + -- If in creative mode, modify player's inventory forms + if not minetest.setting_getbool("creative_mode") then return end - node.name = name - minetest.swap_node(pos, node) -end + creative_inventory.set_creative_formspec(player, 0, 1) +end) +minetest.register_on_player_receive_fields(function(player, formname, fields) + if not minetest.setting_getbool("creative_mode") then + return + end + -- Figure out current page from formspec + local current_page = 0 + local formspec = player:get_inventory_formspec() + local start_i = string.match(formspec, "list%[detached:creative;main;[%d.]+,[%d.]+;[%d.]+,[%d.]+;(%d+)%]") + start_i = tonumber(start_i) or 0 -local function furnace_node_timer(pos, elapsed) - -- - -- Inizialize metadata - -- - local meta = minetest.get_meta(pos) - local fuel_time = meta:get_float("fuel_time") or 0 - local src_time = meta:get_float("src_time") or 0 - local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 - - local inv = meta:get_inventory() - local srclist = inv:get_list("src") - local fuellist = inv:get_list("fuel") - local dstlist = inv:get_list("dst") - - -- - -- Cooking - -- - - -- Check if we have cookable content - local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) - local cookable = true - - if cooked.time == 0 then - cookable = false + if fields.creative_prev then + start_i = start_i - 4*6 + end + if fields.creative_next then + start_i = start_i + 4*6 end - -- Check if we have enough fuel to burn - if fuel_time < fuel_totaltime then - -- The furnace is currently active and has enough fuel - fuel_time = fuel_time + 1 + if start_i < 0 then + start_i = start_i + 4*6 + end + if start_i >= creative_inventory.creative_inventory_size then + start_i = start_i - 4*6 + end + + if start_i < 0 or start_i >= creative_inventory.creative_inventory_size then + start_i = 0 + end - -- If there is a cookable item then check if it is ready yet - if cookable then - src_time = src_time + 1 - if src_time >= cooked.time then - -- Place result in dst list if possible - if inv:room_for_item("dst", cooked.item) then - inv:add_item("dst", cooked.item) - inv:set_stack("src", 1, aftercooked.items[1]) - src_time = 0 + creative_inventory.set_creative_formspec(player, start_i, start_i / (6*4) + 1) +end) + +if minetest.setting_getbool("creative_mode") then + local digtime = 0.5 + minetest.register_item(":", { + type = "none", + wield_image = "wieldhand.png", + wield_scale = {x=1,y=1,z=2.5}, + range = 10, + tool_capabilities = { + full_punch_interval = 0.5, + max_drop_level = 3, + groupcaps = { + crumbly = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, + cracky = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, + snappy = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, + choppy = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, + oddly_breakable_by_hand = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, + }, + damage_groups = {fleshy = 10}, + } + }) + + minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack) + return true + end) + + function minetest.handle_node_drops(pos, drops, digger) + if not digger or not digger:is_player() then + return + end + local inv = digger:get_inventory() + if inv then + for _,item in ipairs(drops) do + item = ItemStack(item):get_name() + if not inv:contains_item("main", item) then + inv:add_item("main", item) end end end - else - -- Furnace ran out of fuel - if cookable then - -- We need to get new fuel - local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) - - if fuel.time == 0 then - -- No valid fuel in fuel list - fuel_totaltime = 0 - fuel_time = 0 - src_time = 0 - else - -- Take fuel from fuel list - inv:set_stack("fuel", 1, afterfuel.items[1]) - - fuel_totaltime = fuel.time - fuel_time = 0 - end - else - -- We don't need to get new fuel since there is no cookable item - fuel_totaltime = 0 - fuel_time = 0 - src_time = 0 - end end - - -- - -- Update formspec, infotext and node - -- - local formspec = inactive_formspec - local item_state = "" - local item_percent = 0 - if cookable then - item_percent = math.floor(src_time / cooked.time * 100) - item_state = item_percent .. "%" - else - if srclist[1]:is_empty() then - item_state = "Empty" - else - item_state = "Not cookable" - end - end - - local fuel_state = "Empty" - local active = "inactive " - local result = false - - if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then - active = "active " - local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) - fuel_state = fuel_percent .. "%" - formspec = active_formspec(fuel_percent, item_percent) - swap_node(pos, "default:furnace_active") - -- make sure timer restarts automatically - result = true - else - if not fuellist[1]:is_empty() then - fuel_state = "0%" - end - swap_node(pos, "default:furnace") - -- stop timer on the inactive furnace - local timer = minetest.get_node_timer(pos) - timer:stop() - end - - local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")" - - -- - -- Set meta values - -- - meta:set_float("fuel_totaltime", fuel_totaltime) - meta:set_float("fuel_time", fuel_time) - meta:set_float("src_time", src_time) - meta:set_string("formspec", formspec) - meta:set_string("infotext", infotext) - - return result + end - --- --- Node definitions --- - -minetest.register_node("default:furnace", { - description = "Furnace", - tiles = { - "default_furnace_top.png", "default_furnace_bottom.png", - "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", "default_furnace_front.png" - }, - paramtype2 = "facedir", - groups = {cracky=2}, - legacy_facedir_simple = true, - is_ground_content = false, - sounds = default.node_sound_stone_defaults(), - - can_dig = can_dig, - - on_timer = furnace_node_timer, - - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", inactive_formspec) - local inv = meta:get_inventory() - inv:set_size('src', 1) - inv:set_size('fuel', 1) - inv:set_size('dst', 4) - end, - - on_metadata_inventory_put = function(pos) - -- start timer function, it will sort out whether furnace can burn or not. - local timer = minetest.get_node_timer(pos) - timer:start(1.0) - end, - - allow_metadata_inventory_put = allow_metadata_inventory_put, - allow_metadata_inventory_move = allow_metadata_inventory_move, - allow_metadata_inventory_take = allow_metadata_inventory_take, -}) - -minetest.register_node("default:furnace_active", { - description = "Furnace", - tiles = { - "default_furnace_top.png", "default_furnace_bottom.png", - "default_furnace_side.png", "default_furnace_side.png", - "default_furnace_side.png", - { - image = "default_furnace_front_active.png", - backface_culling = false, - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 1.5 - }, - } - }, - paramtype2 = "facedir", - light_source = 8, - drop = "default:furnace", - groups = {cracky=2, not_in_creative_inventory=1}, - legacy_facedir_simple = true, - is_ground_content = false, - sounds = default.node_sound_stone_defaults(), - on_timer = furnace_node_timer, - - can_dig = can_dig, - - allow_metadata_inventory_put = allow_metadata_inventory_put, - allow_metadata_inventory_move = allow_metadata_inventory_move, - allow_metadata_inventory_take = allow_metadata_inventory_take, -}) - diff --git a/mods/furnace.lua b/mods/furnace.lua deleted file mode 100644 index 68d5180e..00000000 --- a/mods/furnace.lua +++ /dev/null @@ -1,177 +0,0 @@ --- minetest/creative/init.lua - -creative_inventory = {} -creative_inventory.creative_inventory_size = 0 - --- Create detached creative inventory after loading all mods -minetest.after(0, function() - local inv = minetest.create_detached_inventory("creative", { - allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) - if minetest.setting_getbool("creative_mode") then - return count - else - return 0 - end - end, - allow_put = function(inv, listname, index, stack, player) - return 0 - end, - allow_take = function(inv, listname, index, stack, player) - if minetest.setting_getbool("creative_mode") then - return -1 - else - return 0 - end - end, - on_move = function(inv, from_list, from_index, to_list, to_index, count, player) - end, - on_put = function(inv, listname, index, stack, player) - end, - on_take = function(inv, listname, index, stack, player) - --print(player:get_player_name().." takes item from creative inventory; listname="..dump(listname)..", index="..dump(index)..", stack="..dump(stack)) - if stack then - minetest.log("action", player:get_player_name().." takes "..dump(stack:get_name()).." from creative inventory") - --print("stack:get_name()="..dump(stack:get_name())..", stack:get_count()="..dump(stack:get_count())) - end - end, - }) - local creative_list = {} - for name,def in pairs(minetest.registered_items) do - if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) - and def.description and def.description ~= "" then - table.insert(creative_list, name) - end - end - table.sort(creative_list) - inv:set_size("main", #creative_list) - for _,itemstring in ipairs(creative_list) do - inv:add_item("main", ItemStack(itemstring)) - end - creative_inventory.creative_inventory_size = #creative_list - --print("creative inventory size: "..dump(creative_inventory.creative_inventory_size)) -end) - --- Create the trash field -local trash = minetest.create_detached_inventory("creative_trash", { - -- Allow the stack to be placed and remove it in on_put() - -- This allows the creative inventory to restore the stack - allow_put = function(inv, listname, index, stack, player) - if minetest.setting_getbool("creative_mode") then - return stack:get_count() - else - return 0 - end - end, - on_put = function(inv, listname, index, stack, player) - inv:set_stack(listname, index, "") - end, -}) -trash:set_size("main", 1) - - -creative_inventory.set_creative_formspec = function(player, start_i, pagenum) - pagenum = math.floor(pagenum) - local pagemax = math.floor((creative_inventory.creative_inventory_size-1) / (6*4) + 1) - player:set_inventory_formspec( - "size[13,7.5]".. - --"image[6,0.6;1,2;player.png]".. - default.gui_bg.. - default.gui_bg_img.. - default.gui_slots.. - "list[current_player;main;5,3.5;8,1;]".. - "list[current_player;main;5,4.75;8,3;8]".. - "list[current_player;craft;8,0;3,3;]".. - "list[current_player;craftpreview;12,1;1,1;]".. - "image[11,1;1,1;gui_furnace_arrow_bg.png^[transformR270]".. - "list[detached:creative;main;0.3,0.5;4,6;"..tostring(start_i).."]".. - "label[2.0,6.55;"..tostring(pagenum).."/"..tostring(pagemax).."]".. - "button[0.3,6.5;1.6,1;creative_prev;<<]".. - "button[2.7,6.5;1.6,1;creative_next;>>]".. - "listring[current_player;main]".. - "listring[current_player;craft]".. - "listring[current_player;main]".. - "listring[detached:creative;main]".. - "label[5,1.5;Trash:]".. - "list[detached:creative_trash;main;5,2;1,1;]".. - default.get_hotbar_bg(5,3.5) - ) -end -minetest.register_on_joinplayer(function(player) - -- If in creative mode, modify player's inventory forms - if not minetest.setting_getbool("creative_mode") then - return - end - creative_inventory.set_creative_formspec(player, 0, 1) -end) -minetest.register_on_player_receive_fields(function(player, formname, fields) - if not minetest.setting_getbool("creative_mode") then - return - end - -- Figure out current page from formspec - local current_page = 0 - local formspec = player:get_inventory_formspec() - local start_i = string.match(formspec, "list%[detached:creative;main;[%d.]+,[%d.]+;[%d.]+,[%d.]+;(%d+)%]") - start_i = tonumber(start_i) or 0 - - if fields.creative_prev then - start_i = start_i - 4*6 - end - if fields.creative_next then - start_i = start_i + 4*6 - end - - if start_i < 0 then - start_i = start_i + 4*6 - end - if start_i >= creative_inventory.creative_inventory_size then - start_i = start_i - 4*6 - end - - if start_i < 0 or start_i >= creative_inventory.creative_inventory_size then - start_i = 0 - end - - creative_inventory.set_creative_formspec(player, start_i, start_i / (6*4) + 1) -end) - -if minetest.setting_getbool("creative_mode") then - local digtime = 0.5 - minetest.register_item(":", { - type = "none", - wield_image = "wieldhand.png", - wield_scale = {x=1,y=1,z=2.5}, - range = 10, - tool_capabilities = { - full_punch_interval = 0.5, - max_drop_level = 3, - groupcaps = { - crumbly = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, - cracky = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, - snappy = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, - choppy = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, - oddly_breakable_by_hand = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, - }, - damage_groups = {fleshy = 10}, - } - }) - - minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack) - return true - end) - - function minetest.handle_node_drops(pos, drops, digger) - if not digger or not digger:is_player() then - return - end - local inv = digger:get_inventory() - if inv then - for _,item in ipairs(drops) do - item = ItemStack(item):get_name() - if not inv:contains_item("main", item) then - inv:add_item("main", item) - end - end - end - end - -end From 068c3eaa0efb86b6174076e65db0ab3d24113308 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 26 Mar 2016 20:24:17 +0100 Subject: [PATCH 020/383] fixed little mistake on furnace reverting --- mods/default/furnace.lua | 430 +++++++++++++++++++++++++-------------- 1 file changed, 272 insertions(+), 158 deletions(-) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index 68d5180e..6d89aae1 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -1,177 +1,291 @@ --- minetest/creative/init.lua -creative_inventory = {} -creative_inventory.creative_inventory_size = 0 +-- +-- Formspecs +-- --- Create detached creative inventory after loading all mods -minetest.after(0, function() - local inv = minetest.create_detached_inventory("creative", { - allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) - if minetest.setting_getbool("creative_mode") then - return count - else - return 0 - end - end, - allow_put = function(inv, listname, index, stack, player) - return 0 - end, - allow_take = function(inv, listname, index, stack, player) - if minetest.setting_getbool("creative_mode") then - return -1 - else - return 0 - end - end, - on_move = function(inv, from_list, from_index, to_list, to_index, count, player) - end, - on_put = function(inv, listname, index, stack, player) - end, - on_take = function(inv, listname, index, stack, player) - --print(player:get_player_name().." takes item from creative inventory; listname="..dump(listname)..", index="..dump(index)..", stack="..dump(stack)) - if stack then - minetest.log("action", player:get_player_name().." takes "..dump(stack:get_name()).." from creative inventory") - --print("stack:get_name()="..dump(stack:get_name())..", stack:get_count()="..dump(stack:get_count())) - end - end, - }) - local creative_list = {} - for name,def in pairs(minetest.registered_items) do - if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) - and def.description and def.description ~= "" then - table.insert(creative_list, name) - end +local function active_formspec(fuel_percent, item_percent) + local formspec = + "size[8,8.5]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + "list[current_name;src;2.75,0.5;1,1;]".. + "list[current_name;fuel;2.75,2.5;1,1;]".. + "image[2.75,1.5;1,1;default_furnace_fire_bg.png^[lowpart:".. + (100-fuel_percent)..":default_furnace_fire_fg.png]".. + "image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[lowpart:".. + (item_percent)..":gui_furnace_arrow_fg.png^[transformR270]".. + "list[current_name;dst;4.75,0.96;2,2;]".. + "list[current_player;main;0,4.25;8,1;]".. + "list[current_player;main;0,5.5;8,3;8]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]".. + default.get_hotbar_bg(0, 4.25) + return formspec +end + +local inactive_formspec = + "size[8,8.5]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + "list[current_name;src;2.75,0.5;1,1;]".. + "list[current_name;fuel;2.75,2.5;1,1;]".. + "image[2.75,1.5;1,1;default_furnace_fire_bg.png]".. + "image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270]".. + "list[current_name;dst;4.75,0.96;2,2;]".. + "list[current_player;main;0,4.25;8,1;]".. + "list[current_player;main;0,5.5;8,3;8]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]".. + default.get_hotbar_bg(0, 4.25) + +-- +-- Node callback functions that are the same for active and inactive furnace +-- + +local function can_dig(pos, player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("fuel") and inv:is_empty("dst") and inv:is_empty("src") +end + +local function allow_metadata_inventory_put(pos, listname, index, stack, player) + if minetest.is_protected(pos, player:get_player_name()) then + return 0 end - table.sort(creative_list) - inv:set_size("main", #creative_list) - for _,itemstring in ipairs(creative_list) do - inv:add_item("main", ItemStack(itemstring)) - end - creative_inventory.creative_inventory_size = #creative_list - --print("creative inventory size: "..dump(creative_inventory.creative_inventory_size)) -end) - --- Create the trash field -local trash = minetest.create_detached_inventory("creative_trash", { - -- Allow the stack to be placed and remove it in on_put() - -- This allows the creative inventory to restore the stack - allow_put = function(inv, listname, index, stack, player) - if minetest.setting_getbool("creative_mode") then + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if listname == "fuel" then + if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 then + if inv:is_empty("src") then + meta:set_string("infotext", "Furnace is empty") + end return stack:get_count() else return 0 end - end, - on_put = function(inv, listname, index, stack, player) - inv:set_stack(listname, index, "") - end, -}) -trash:set_size("main", 1) - - -creative_inventory.set_creative_formspec = function(player, start_i, pagenum) - pagenum = math.floor(pagenum) - local pagemax = math.floor((creative_inventory.creative_inventory_size-1) / (6*4) + 1) - player:set_inventory_formspec( - "size[13,7.5]".. - --"image[6,0.6;1,2;player.png]".. - default.gui_bg.. - default.gui_bg_img.. - default.gui_slots.. - "list[current_player;main;5,3.5;8,1;]".. - "list[current_player;main;5,4.75;8,3;8]".. - "list[current_player;craft;8,0;3,3;]".. - "list[current_player;craftpreview;12,1;1,1;]".. - "image[11,1;1,1;gui_furnace_arrow_bg.png^[transformR270]".. - "list[detached:creative;main;0.3,0.5;4,6;"..tostring(start_i).."]".. - "label[2.0,6.55;"..tostring(pagenum).."/"..tostring(pagemax).."]".. - "button[0.3,6.5;1.6,1;creative_prev;<<]".. - "button[2.7,6.5;1.6,1;creative_next;>>]".. - "listring[current_player;main]".. - "listring[current_player;craft]".. - "listring[current_player;main]".. - "listring[detached:creative;main]".. - "label[5,1.5;Trash:]".. - "list[detached:creative_trash;main;5,2;1,1;]".. - default.get_hotbar_bg(5,3.5) - ) + elseif listname == "src" then + return stack:get_count() + elseif listname == "dst" then + return 0 + end end -minetest.register_on_joinplayer(function(player) - -- If in creative mode, modify player's inventory forms - if not minetest.setting_getbool("creative_mode") then - return - end - creative_inventory.set_creative_formspec(player, 0, 1) -end) -minetest.register_on_player_receive_fields(function(player, formname, fields) - if not minetest.setting_getbool("creative_mode") then - return - end - -- Figure out current page from formspec - local current_page = 0 - local formspec = player:get_inventory_formspec() - local start_i = string.match(formspec, "list%[detached:creative;main;[%d.]+,[%d.]+;[%d.]+,[%d.]+;(%d+)%]") - start_i = tonumber(start_i) or 0 - if fields.creative_prev then - start_i = start_i - 4*6 - end - if fields.creative_next then - start_i = start_i + 4*6 - end +local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local stack = inv:get_stack(from_list, from_index) + return allow_metadata_inventory_put(pos, to_list, to_index, stack, player) +end - if start_i < 0 then - start_i = start_i + 4*6 - end - if start_i >= creative_inventory.creative_inventory_size then - start_i = start_i - 4*6 - end - - if start_i < 0 or start_i >= creative_inventory.creative_inventory_size then - start_i = 0 +local function allow_metadata_inventory_take(pos, listname, index, stack, player) + if minetest.is_protected(pos, player:get_player_name()) then + return 0 end + return stack:get_count() +end - creative_inventory.set_creative_formspec(player, start_i, start_i / (6*4) + 1) -end) +-- +-- Node definitions +-- -if minetest.setting_getbool("creative_mode") then - local digtime = 0.5 - minetest.register_item(":", { - type = "none", - wield_image = "wieldhand.png", - wield_scale = {x=1,y=1,z=2.5}, - range = 10, - tool_capabilities = { - full_punch_interval = 0.5, - max_drop_level = 3, - groupcaps = { - crumbly = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, - cracky = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, - snappy = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, - choppy = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, - oddly_breakable_by_hand = {times={[1]=digtime, [2]=digtime, [3]=digtime}, uses=0, maxlevel=3}, +minetest.register_node("default:furnace", { + description = "Furnace", + tiles = { + "default_furnace_top.png", "default_furnace_bottom.png", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", "default_furnace_front.png" + }, + paramtype2 = "facedir", + groups = {cracky=2}, + legacy_facedir_simple = true, + is_ground_content = false, + sounds = default.node_sound_stone_defaults(), + + can_dig = can_dig, + + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, +}) + +minetest.register_node("default:furnace_active", { + description = "Furnace", + tiles = { + "default_furnace_top.png", "default_furnace_bottom.png", + "default_furnace_side.png", "default_furnace_side.png", + "default_furnace_side.png", + { + image = "default_furnace_front_active.png", + backface_culling = false, + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1.5 }, - damage_groups = {fleshy = 10}, } - }) + }, + paramtype2 = "facedir", + light_source = 8, + drop = "default:furnace", + groups = {cracky=2, not_in_creative_inventory=1}, + legacy_facedir_simple = true, + is_ground_content = false, + sounds = default.node_sound_stone_defaults(), - minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack) - return true - end) + can_dig = can_dig, - function minetest.handle_node_drops(pos, drops, digger) - if not digger or not digger:is_player() then - return - end - local inv = digger:get_inventory() - if inv then - for _,item in ipairs(drops) do - item = ItemStack(item):get_name() - if not inv:contains_item("main", item) then - inv:add_item("main", item) - end + allow_metadata_inventory_put = allow_metadata_inventory_put, + allow_metadata_inventory_move = allow_metadata_inventory_move, + allow_metadata_inventory_take = allow_metadata_inventory_take, +}) + +-- +-- ABM +-- + +local function swap_node(pos, name) + local node = minetest.get_node(pos) + if node.name == name then + return + end + node.name = name + minetest.swap_node(pos, node) +end + +minetest.register_abm({ + nodenames = {"default:furnace", "default:furnace_active"}, + interval = 1.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + -- + -- Inizialize metadata + -- + local meta = minetest.get_meta(pos) + local fuel_time = meta:get_float("fuel_time") or 0 + local src_time = meta:get_float("src_time") or 0 + local fuel_totaltime = meta:get_float("fuel_totaltime") or 0 + + -- + -- Inizialize inventory + -- + local inv = meta:get_inventory() + for listname, size in pairs({ + src = 1, + fuel = 1, + dst = 4, + }) do + if inv:get_size(listname) ~= size then + inv:set_size(listname, size) end end - end - -end + local srclist = inv:get_list("src") + local fuellist = inv:get_list("fuel") + local dstlist = inv:get_list("dst") + + -- + -- Cooking + -- + + -- Check if we have cookable content + local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) + local cookable = true + + if cooked.time == 0 then + cookable = false + end + + -- Check if we have enough fuel to burn + if fuel_time < fuel_totaltime then + -- The furnace is currently active and has enough fuel + fuel_time = fuel_time + 1 + + -- If there is a cookable item then check if it is ready yet + if cookable then + src_time = src_time + 1 + if src_time >= cooked.time then + -- Place result in dst list if possible + if inv:room_for_item("dst", cooked.item) then + inv:add_item("dst", cooked.item) + inv:set_stack("src", 1, aftercooked.items[1]) + src_time = 0 + end + end + end + else + -- Furnace ran out of fuel + if cookable then + -- We need to get new fuel + local fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + + if fuel.time == 0 then + -- No valid fuel in fuel list + fuel_totaltime = 0 + fuel_time = 0 + src_time = 0 + else + -- Take fuel from fuel list + inv:set_stack("fuel", 1, afterfuel.items[1]) + + fuel_totaltime = fuel.time + fuel_time = 0 + + end + else + -- We don't need to get new fuel since there is no cookable item + fuel_totaltime = 0 + fuel_time = 0 + src_time = 0 + end + end + + -- + -- Update formspec, infotext and node + -- + local formspec = inactive_formspec + local item_state = "" + local item_percent = 0 + if cookable then + item_percent = math.floor(src_time / cooked.time * 100) + item_state = item_percent .. "%" + else + if srclist[1]:is_empty() then + item_state = "Empty" + else + item_state = "Not cookable" + end + end + + local fuel_state = "Empty" + local active = "inactive " + if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then + active = "active " + local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) + fuel_state = fuel_percent .. "%" + formspec = active_formspec(fuel_percent, item_percent) + swap_node(pos, "default:furnace_active") + else + if not fuellist[1]:is_empty() then + fuel_state = "0%" + end + swap_node(pos, "default:furnace") + end + + local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")" + + -- + -- Set meta values + -- + meta:set_float("fuel_totaltime", fuel_totaltime) + meta:set_float("fuel_time", fuel_time) + meta:set_float("src_time", src_time) + meta:set_string("formspec", formspec) + meta:set_string("infotext", infotext) + end, +}) From 627328d4a3ba0a57c8ad2e1d4a201b2987be8d6e Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 29 Mar 2016 13:03:26 +0200 Subject: [PATCH 021/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index fecacb60..141dad63 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit fecacb60e7bc813c3bd94000d4befebbbe07783e +Subproject commit 141dad63c5993dde68c460a89389804be660a08d From c4807da40ee4aa3b06d30767d290aeb3aada6a10 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 29 Mar 2016 16:03:44 +0200 Subject: [PATCH 022/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 141dad63..299a9fb9 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 141dad63c5993dde68c460a89389804be660a08d +Subproject commit 299a9fb93619d22b464bd2607a075648ba31beb9 From 0fc11da8c75caf59a0e5e6ebeb5dcd518c3e1e95 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 11 Apr 2016 12:53:22 +0200 Subject: [PATCH 023/383] removed boats again and added the wanted one to submodules --- mods/boats | 1 + mods/boats/models/boats_boat.obj | 358 ------------------------------- 2 files changed, 1 insertion(+), 358 deletions(-) create mode 160000 mods/boats delete mode 100644 mods/boats/models/boats_boat.obj diff --git a/mods/boats b/mods/boats new file mode 160000 index 00000000..ffaf921c --- /dev/null +++ b/mods/boats @@ -0,0 +1 @@ +Subproject commit ffaf921ce4a5644c62eced2754bffe1a41950e73 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 From 69f284f950036afb9272bc91af129efb97d83194 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 2 May 2016 11:11:05 +0200 Subject: [PATCH 024/383] merge minetest/minetest_game master --- .gitmodules | 2 +- mods/boats | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 160000 mods/boats diff --git a/.gitmodules b/.gitmodules index cfd9cab2..77a95bce 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "mods/boats"] path = mods/boats - url = https://github.com/tenplus1/boats + url = https://github.com/tenplus1/boats.git [submodule "mods/illuna"] path = mods/illuna url = https://github.com/Illuna-Minetest/illuna diff --git a/mods/boats b/mods/boats new file mode 160000 index 00000000..045f1b9e --- /dev/null +++ b/mods/boats @@ -0,0 +1 @@ +Subproject commit 045f1b9e678179da5362e5b52dd895c2f3ccc072 From 25aff14341c5b19fb867e13191c2f7c71ce0d495 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 15 May 2016 15:51:24 +0200 Subject: [PATCH 025/383] add wine mod to submodules --- .gitmodules | 3 +++ mods/wine | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/wine diff --git a/.gitmodules b/.gitmodules index 77a95bce..6fb30c2d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "mods/death_message"] path = mods/death_message url = https://github.com/Illuna-Minetest/death_message +[submodule "mods/wine"] + path = mods/wine + url = https://github.com/tenplus1/wine diff --git a/mods/wine b/mods/wine new file mode 160000 index 00000000..bfb7ba69 --- /dev/null +++ b/mods/wine @@ -0,0 +1 @@ +Subproject commit bfb7ba696df5dc7135687f9b5032ae279fa9dc6a From f70c1e91b1277159b680ea8bddc422d1c0ec4557 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 15 May 2016 21:28:13 +0200 Subject: [PATCH 026/383] remove obsolet submodule death_messagem add new death_messages module --- .gitmodules | 6 +++--- mods/death_message | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 160000 mods/death_message diff --git a/.gitmodules b/.gitmodules index 6fb30c2d..435b4041 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,10 +3,10 @@ url = https://github.com/tenplus1/boats.git [submodule "mods/illuna"] path = mods/illuna - url = https://github.com/Illuna-Minetest/illuna + url = https://git.tchncs.de/Illuna-Minetest/illuna [submodule "mods/death_message"] - path = mods/death_message - url = https://github.com/Illuna-Minetest/death_message + path = mods/death_messages + url = https://git.tchncs.de/Illuna-Minetest/death_message [submodule "mods/wine"] path = mods/wine url = https://github.com/tenplus1/wine diff --git a/mods/death_message b/mods/death_message deleted file mode 160000 index 7a7462f0..00000000 --- a/mods/death_message +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7a7462f04ed94095e9920c53249ec55c00a89db6 From 482573ca32ff71bdb6f73fc45347ea782417f9be Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 15 May 2016 21:35:10 +0200 Subject: [PATCH 027/383] update/fix submodule death_messages --- .gitmodules | 7 +++++-- mods/death_messages | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) create mode 160000 mods/death_messages diff --git a/.gitmodules b/.gitmodules index 435b4041..f2a09e5e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,10 +3,13 @@ url = https://github.com/tenplus1/boats.git [submodule "mods/illuna"] path = mods/illuna - url = https://git.tchncs.de/Illuna-Minetest/illuna + url = https://git.tchncs.de/Illuna-Minetest/illuna.git [submodule "mods/death_message"] path = mods/death_messages - url = https://git.tchncs.de/Illuna-Minetest/death_message + url = https://git.tchncs.de/Illuna-Minetest/death_message.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 diff --git a/mods/death_messages b/mods/death_messages new file mode 160000 index 00000000..32f96793 --- /dev/null +++ b/mods/death_messages @@ -0,0 +1 @@ +Subproject commit 32f967935fa71c6bd103d107117168a86a3ec21e From 018c89a9d686da2dda9985487c3948b47253a7bb Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 16 May 2016 00:26:42 +0200 Subject: [PATCH 028/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 299a9fb9..3a6b2885 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 299a9fb93619d22b464bd2607a075648ba31beb9 +Subproject commit 3a6b288541ea83ada0dfc0e8ab9977717c4b6817 From ac7e46b74d130d276257f5ca773ee97a5476a1cf Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 18 May 2016 12:28:04 +0200 Subject: [PATCH 029/383] add mobs_redo, mobs_animal, mobs_monster to submodules --- .gitmodules | 9 +++++++++ mods/mobs_animal | 1 + mods/mobs_monster | 1 + mods/mobs_redo | 1 + 4 files changed, 12 insertions(+) create mode 160000 mods/mobs_animal create mode 160000 mods/mobs_monster create mode 160000 mods/mobs_redo diff --git a/.gitmodules b/.gitmodules index f2a09e5e..fc4f6446 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,3 +13,12 @@ [submodule "mods/death_messages"] path = mods/death_messages url = https://git.tchncs.de/Illuna-Minetest/death_messages.git +[submodule "mods/mobs_redo"] + path = mods/mobs_redo + url = https://github.com/tenplus1/mobs_redo +[submodule "mods/mobs_animal"] + path = mods/mobs_animal + url = https://github.com/tenplus1/mobs_animal +[submodule "mods/mobs_monster"] + path = mods/mobs_monster + url = https://github.com/tenplus1/mobs_monster diff --git a/mods/mobs_animal b/mods/mobs_animal new file mode 160000 index 00000000..85eaef6d --- /dev/null +++ b/mods/mobs_animal @@ -0,0 +1 @@ +Subproject commit 85eaef6dff0ff6a80e70a79e22133b004c23ab6a diff --git a/mods/mobs_monster b/mods/mobs_monster new file mode 160000 index 00000000..1212d2a6 --- /dev/null +++ b/mods/mobs_monster @@ -0,0 +1 @@ +Subproject commit 1212d2a666f907bdc26832070a990e2ccad903a4 diff --git a/mods/mobs_redo b/mods/mobs_redo new file mode 160000 index 00000000..67aa752c --- /dev/null +++ b/mods/mobs_redo @@ -0,0 +1 @@ +Subproject commit 67aa752c4433c7172cb7ac86728c455d986678bf From 7ac7661de1072c55f6be64e37c462cfbdf95c68a Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 19 May 2016 23:18:25 +0200 Subject: [PATCH 030/383] update submodule mods/illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 3a6b2885..fd6ae0f4 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 3a6b288541ea83ada0dfc0e8ab9977717c4b6817 +Subproject commit fd6ae0f46b5d71eaad565225a53e3b084d567396 From 8578d16b761018a1a5a98b720fef8c7600248c51 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 19 May 2016 23:36:55 +0200 Subject: [PATCH 031/383] add alias for moretrees:slab_acacia_planks, fixes #4 --- mods/stairs/init.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 7688d905..be00d34b 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 From bb93133ceb507c99f1bab3e3ea2ecd6f1bbd2760 Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 20 May 2016 12:39:21 +0200 Subject: [PATCH 032/383] replace submodule mods/mobs_animal --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index fc4f6446..2f3151b3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -18,7 +18,7 @@ url = https://github.com/tenplus1/mobs_redo [submodule "mods/mobs_animal"] path = mods/mobs_animal - url = https://github.com/tenplus1/mobs_animal + url = https://git.tchncs.de/Illuna-Minetest/mobs_animal.git [submodule "mods/mobs_monster"] path = mods/mobs_monster url = https://github.com/tenplus1/mobs_monster From 95adcfc97b147d61eb8bf17f27ef36fcafed96b2 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 21 May 2016 15:39:37 +0200 Subject: [PATCH 033/383] update submodules mods/mobs_animal and mods/mobs_monster --- mods/mobs_animal | 2 +- mods/mobs_monster | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/mobs_animal b/mods/mobs_animal index 85eaef6d..4718d6ee 160000 --- a/mods/mobs_animal +++ b/mods/mobs_animal @@ -1 +1 @@ -Subproject commit 85eaef6dff0ff6a80e70a79e22133b004c23ab6a +Subproject commit 4718d6ee1b141fb2e35c3dfe38e6b43a801317ac diff --git a/mods/mobs_monster b/mods/mobs_monster index 1212d2a6..f83ecdfd 160000 --- a/mods/mobs_monster +++ b/mods/mobs_monster @@ -1 +1 @@ -Subproject commit 1212d2a666f907bdc26832070a990e2ccad903a4 +Subproject commit f83ecdfdf94f6eb01f9d453341f3d332fb0cb951 From 3c9c69e5feae4329261409658fc7f04b2fe3ec9e Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 22 May 2016 09:56:56 +0200 Subject: [PATCH 034/383] replace farming with submodule --- .gitmodules | 3 + mods/farming | 1 + mods/farming/README.txt | 48 --- mods/farming/api.lua | 328 ------------------ mods/farming/depends.txt | 2 - mods/farming/hoes.lua | 41 --- mods/farming/init.lua | 78 ----- mods/farming/nodes.lua | 165 --------- mods/farming/textures/farming_bread.png | Bin 393 -> 0 bytes mods/farming/textures/farming_cotton.png | Bin 166 -> 0 bytes mods/farming/textures/farming_cotton_1.png | Bin 110 -> 0 bytes mods/farming/textures/farming_cotton_2.png | Bin 120 -> 0 bytes mods/farming/textures/farming_cotton_3.png | Bin 144 -> 0 bytes mods/farming/textures/farming_cotton_4.png | Bin 150 -> 0 bytes mods/farming/textures/farming_cotton_5.png | Bin 159 -> 0 bytes mods/farming/textures/farming_cotton_6.png | Bin 164 -> 0 bytes mods/farming/textures/farming_cotton_7.png | Bin 170 -> 0 bytes mods/farming/textures/farming_cotton_8.png | Bin 196 -> 0 bytes mods/farming/textures/farming_cotton_seed.png | Bin 150 -> 0 bytes .../textures/farming_desert_sand_soil.png | Bin 467 -> 0 bytes .../textures/farming_desert_sand_soil_wet.png | Bin 351 -> 0 bytes .../farming_desert_sand_soil_wet_side.png | Bin 272 -> 0 bytes mods/farming/textures/farming_flour.png | Bin 159 -> 0 bytes mods/farming/textures/farming_soil.png | Bin 706 -> 0 bytes mods/farming/textures/farming_soil_wet.png | Bin 677 -> 0 bytes .../textures/farming_soil_wet_side.png | Bin 96 -> 0 bytes mods/farming/textures/farming_straw.png | Bin 887 -> 0 bytes .../textures/farming_tool_bronzehoe.png | Bin 212 -> 0 bytes .../textures/farming_tool_diamondhoe.png | Bin 183 -> 0 bytes .../farming/textures/farming_tool_mesehoe.png | Bin 181 -> 0 bytes .../textures/farming_tool_steelhoe.png | Bin 181 -> 0 bytes .../textures/farming_tool_stonehoe.png | Bin 185 -> 0 bytes .../farming/textures/farming_tool_woodhoe.png | Bin 171 -> 0 bytes mods/farming/textures/farming_wheat.png | Bin 241 -> 0 bytes mods/farming/textures/farming_wheat_1.png | Bin 120 -> 0 bytes mods/farming/textures/farming_wheat_2.png | Bin 142 -> 0 bytes mods/farming/textures/farming_wheat_3.png | Bin 172 -> 0 bytes mods/farming/textures/farming_wheat_4.png | Bin 191 -> 0 bytes mods/farming/textures/farming_wheat_5.png | Bin 218 -> 0 bytes mods/farming/textures/farming_wheat_6.png | Bin 234 -> 0 bytes mods/farming/textures/farming_wheat_7.png | Bin 253 -> 0 bytes mods/farming/textures/farming_wheat_8.png | Bin 310 -> 0 bytes mods/farming/textures/farming_wheat_seed.png | Bin 141 -> 0 bytes 43 files changed, 4 insertions(+), 662 deletions(-) create mode 160000 mods/farming delete mode 100644 mods/farming/README.txt delete mode 100644 mods/farming/api.lua delete mode 100644 mods/farming/depends.txt delete mode 100644 mods/farming/hoes.lua delete mode 100644 mods/farming/init.lua delete mode 100644 mods/farming/nodes.lua delete mode 100644 mods/farming/textures/farming_bread.png delete mode 100644 mods/farming/textures/farming_cotton.png delete mode 100644 mods/farming/textures/farming_cotton_1.png delete mode 100644 mods/farming/textures/farming_cotton_2.png delete mode 100644 mods/farming/textures/farming_cotton_3.png delete mode 100644 mods/farming/textures/farming_cotton_4.png delete mode 100644 mods/farming/textures/farming_cotton_5.png delete mode 100644 mods/farming/textures/farming_cotton_6.png delete mode 100644 mods/farming/textures/farming_cotton_7.png delete mode 100644 mods/farming/textures/farming_cotton_8.png delete mode 100644 mods/farming/textures/farming_cotton_seed.png delete mode 100644 mods/farming/textures/farming_desert_sand_soil.png delete mode 100644 mods/farming/textures/farming_desert_sand_soil_wet.png delete mode 100644 mods/farming/textures/farming_desert_sand_soil_wet_side.png delete mode 100644 mods/farming/textures/farming_flour.png delete mode 100644 mods/farming/textures/farming_soil.png delete mode 100644 mods/farming/textures/farming_soil_wet.png delete mode 100644 mods/farming/textures/farming_soil_wet_side.png delete mode 100644 mods/farming/textures/farming_straw.png delete mode 100644 mods/farming/textures/farming_tool_bronzehoe.png delete mode 100644 mods/farming/textures/farming_tool_diamondhoe.png delete mode 100644 mods/farming/textures/farming_tool_mesehoe.png delete mode 100644 mods/farming/textures/farming_tool_steelhoe.png delete mode 100644 mods/farming/textures/farming_tool_stonehoe.png delete mode 100644 mods/farming/textures/farming_tool_woodhoe.png delete mode 100644 mods/farming/textures/farming_wheat.png delete mode 100644 mods/farming/textures/farming_wheat_1.png delete mode 100644 mods/farming/textures/farming_wheat_2.png delete mode 100644 mods/farming/textures/farming_wheat_3.png delete mode 100644 mods/farming/textures/farming_wheat_4.png delete mode 100644 mods/farming/textures/farming_wheat_5.png delete mode 100644 mods/farming/textures/farming_wheat_6.png delete mode 100644 mods/farming/textures/farming_wheat_7.png delete mode 100644 mods/farming/textures/farming_wheat_8.png delete mode 100644 mods/farming/textures/farming_wheat_seed.png diff --git a/.gitmodules b/.gitmodules index 2f3151b3..91d14c39 100644 --- a/.gitmodules +++ b/.gitmodules @@ -22,3 +22,6 @@ [submodule "mods/mobs_monster"] path = mods/mobs_monster url = https://github.com/tenplus1/mobs_monster +[submodule "mods/farming"] + path = mods/farming + url = https://git.tchncs.de/Illuna-Minetest/farming.git diff --git a/mods/farming b/mods/farming new file mode 160000 index 00000000..0df8a782 --- /dev/null +++ b/mods/farming @@ -0,0 +1 @@ +Subproject commit 0df8a78219e8b030e36018116fea4d660288549e diff --git a/mods/farming/README.txt b/mods/farming/README.txt deleted file mode 100644 index 143cf382..00000000 --- a/mods/farming/README.txt +++ /dev/null @@ -1,48 +0,0 @@ -Minetest Game mod: farming -========================== - -License of source code: ------------------------ -Copyright (C) 2014 webdesigner97 - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 2, December 2004 - - Copyright (C) 2004 Sam Hocevar - - Everyone is permitted to copy and distribute verbatim or modified - copies of this license document, and changing it is allowed as long - as the name is changed. - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. You just DO WHAT THE FUCK YOU WANT TO. - -License of media (textures): ----------------------------- -Created by PilzAdam (License: WTFPL): - farming_bread.png - farming_soil.png - farming_soil_wet.png - farming_soil_wet_side.png - farming_string.png - -Created by BlockMen (License: 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 (License: WTFPL): - farming_straw.png - -Created by Gambit (License: WTFPL): - 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 68f7be75..00000000 --- a/mods/farming/api.lua +++ /dev/null @@ -1,328 +0,0 @@ --- Wear out hoes, place soil --- TODO Ignore group:flower -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, wear out item 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 - itemstack:add_wear(65535/(uses-1)) - 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 - }) - -- 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 - --- 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 - end - if pt.type ~= "node" then - return - 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 - end - if not minetest.registered_nodes[above.name] then - return - end - - -- check if pointing at the top of the node - if pt.above.y ~= pt.under.y+1 then - return - end - - -- check if you can replace the node above the pointed node - if not minetest.registered_nodes[above.name].buildable_to then - return - end - - -- check if pointing at soil - if minetest.get_item_group(under.name, "soil") < 2 then - return - end - - -- add the node and remove 1 item from the itemstack - minetest.add_node(pt.above, {name = plantname, param2 = 1}) - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - return itemstack -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 - - -- Register seed - local g = {seed = 1, snappy = 3, attached_node = 1} - 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", - 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({ - dug = {name = "default_grass_footstep", gain = 0.2}, - place = {name = "default_place_node", gain = 0.25}, - }), - - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, mname .. ":seed_" .. pname) - end, - }) - - -- Register harvest - minetest.register_craftitem(":" .. mname .. ":" .. pname, { - description = pname:gsub("^%l", string.upper), - inventory_image = mname .. "_" .. pname .. ".png", - }) - - -- Register growing steps - for i=1,def.steps do - local drop = { - items = { - {items = {mname .. ":" .. pname}, rarity = 9 - i}, - {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, - {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, - {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 2}, - } - } - local nodegroups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1} - nodegroups[pname] = i - minetest.register_node(mname .. ":" .. pname .. "_" .. i, { - drawtype = "plantlike", - waving = 1, - tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"}, - paramtype = "light", - 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(), - }) - end - - -- Growing ABM - minetest.register_abm({ - nodenames = {"group:" .. pname, "group:seed"}, - neighbors = {"group:soil"}, - interval = 9, - chance = 20, - action = function(pos, node) - local plant_height = minetest.get_item_group(node.name, pname) - - -- return if already full grown - if plant_height == def.steps then - return - end - - local node_def = minetest.registered_items[node.name] or nil - - -- grow seed - if minetest.get_item_group(node.name, "seed") and node_def.fertility then - local can_grow = false - local soil_node = minetest.get_node_or_nil({x = pos.x, y = pos.y - 1, z = pos.z}) - if not soil_node then - return - end - for _, v in pairs(node_def.fertility) do - if minetest.get_item_group(soil_node.name, v) ~= 0 then - can_grow = true - end - end - if can_grow then - minetest.set_node(pos, {name = node.name:gsub("seed_", "") .. "_1"}) - end - return - end - - -- check if on wet soil - pos.y = pos.y - 1 - local n = minetest.get_node(pos) - if minetest.get_item_group(n.name, "soil") < 3 then - return - end - pos.y = pos.y + 1 - - -- check light - local ll = minetest.get_node_light(pos) - - if not ll or ll < def.minlight or ll > def.maxlight then - return - end - - -- grow - minetest.set_node(pos, {name = mname .. ":" .. pname .. "_" .. plant_height + 1}) - end - }) - - -- Return - local r = { - seed = mname .. ":seed_" .. pname, - harvest = mname .. ":" .. pname - } - return r -end diff --git a/mods/farming/depends.txt b/mods/farming/depends.txt deleted file mode 100644 index 470ec30b..00000000 --- a/mods/farming/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -wool diff --git a/mods/farming/hoes.lua b/mods/farming/hoes.lua deleted file mode 100644 index 31da19ff..00000000 --- a/mods/farming/hoes.lua +++ /dev/null @@ -1,41 +0,0 @@ -farming.register_hoe(":farming:hoe_wood", { - description = "Wooden Hoe", - inventory_image = "farming_tool_woodhoe.png", - max_uses = 30, - material = "group:wood" -}) - -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 45370e73..00000000 --- a/mods/farming/init.lua +++ /dev/null @@ -1,78 +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", - inventory_image = "farming_wheat_seed.png", - steps = 8, - minlight = 13, - maxlight = default.LIGHT_MAX, - fertility = {"grassland"} -}) -minetest.register_craftitem("farming:flour", { - description = "Flour", - inventory_image = "farming_flour.png", -}) - -minetest.register_craftitem("farming:bread", { - description = "Bread", - inventory_image = "farming_bread.png", - on_use = minetest.item_eat(5), -}) - -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"} -}) - -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"}, - } -}) diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua deleted file mode 100644 index b55a1aaa..00000000 --- a/mods/farming/nodes.lua +++ /dev/null @@ -1,165 +0,0 @@ -minetest.override_item("default:dirt", { - groups = {crumbly=3, soil=1}, - soil = { - base = "default:dirt", - dry = "farming:soil", - wet = "farming:soil_wet" - } -}) - -minetest.override_item("default:dirt_with_grass", { - groups = {crumbly=3, soil=1}, - soil = { - base = "default:dirt_with_grass", - dry = "farming:soil", - wet = "farming:soil_wet" - } -}) - -minetest.override_item("default:dirt_with_dry_grass", { - groups = {crumbly=3, soil=1}, - 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}, - sounds = default.node_sound_leaves_defaults(), -}) - -minetest.register_abm({ - 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 0c25678ce995d71809c5938be9c1b06bfa590321..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfx&WULS0Ftjm2p}aLxwTKtW=gt zOQviyrWr|$1!jz8W(>Mc_|#N z9<0+6nP&ttH+V94J2DkpG4)0;PV!^uHf1O>V%Xncvaw!sU$N@OG?h&SN~=;8H>OK2 zO_f|2DLErqs6Rlk(NSPQBJZLMp2>kc6Fqr~9eL{Qcv_uV8y%TC9GGhDn5INBO!a1% z>cWs?#2``l1>_~hk|4ie28U-i(tw;!PZ!4!iOX~QU4@to8CW{ir4#S6mY4tgZ#b#x z5u^3?cZaW>S&)B@!?W^NGT-4f8d;^&N2yKBYck5fN2iyvte;>cYqG40Qb zrAw4%FMGQ}xOC?(j(^Wo+IMYMVtM@|%}2W@Eg;(PkV5lWX1n+v#s^XAfs+yr7;N~- kJM-s1yC|ROw)wRTJMM9^%}vYk0y>Jp)78&qol`;+0AGWMWdHyG diff --git a/mods/farming/textures/farming_cotton.png b/mods/farming/textures/farming_cotton.png deleted file mode 100644 index e2bbfd7af486b64c658bcc7c6101b22ca95ab7e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*BafCZDwc^5Q*R977}| zSr0DcZ7^V9IdHq4Ni2b@Yl)oJL=T}^0;}d*gS0ZNc)pv#?FO^M1yu&Vn1`<#1mxd1 zsLOFAD19%^&t2!R;b0Y$+r@xA4H4-)+zAIn7@l~rgS35MzHe`kJ%8G{#~_}ktDnm{ Hr-UW|pV=_A diff --git a/mods/farming/textures/farming_cotton_1.png b/mods/farming/textures/farming_cotton_1.png deleted file mode 100644 index 5fc218078722b9634503146a0fb0d3353c3e5859..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0ENCG36TW*{TIiIzRq! z3jxI$OM?7@862M7NCWBcba4!+U`$>hl)xgG#>vCLxQk&%%X!6lKsg3aS3j3^P6N1~t zT7lw>B|(0{3=Yq3qyafno-U3d6^zLXSPYCdFr0Mfa%j5C=_!@pqwneB7{YNqd4UMW0SP{XHb$ow$z^Sx4T37?j~qC$fI-YC mC8cFmP*}r-9yd1!AqL+pCe=^OGu(k%89ZJ6T-G@yGywoue<@V} diff --git a/mods/farming/textures/farming_cotton_4.png b/mods/farming/textures/farming_cotton_4.png deleted file mode 100644 index f314b07b7e1968592fb8bf3f9fb592f4a6467010..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=7hmI;G_XzVTY!9oC1Y zup|P77)yfuf*Bm1-ADs+Og&v3LpZJ{EAVbOAi-zQ#?;oq5F)ymnOS)P%j(3i1g4Y5 q%sbf$~F!A+hX*qB)6klZKoY&;i1vH7l)78&qol`;+0Mzd* A1ONa4 diff --git a/mods/farming/textures/farming_cotton_6.png b/mods/farming/textures/farming_cotton_6.png deleted file mode 100644 index f4bd4fb346ec9ee2a71696d9337723d2be7de8dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^3h)VW^~o%3Ot#4jH=kbW9_ejT z5o;-L`KAjf%UBZR7tG-B>_!@pn!GVY2Kz8F^Aq7W=<|h7su7+0_ z%;(jgy1^6crYhviImc{Ej=$HGy^A(l>lC<3yg$co;R#@=OgfrXJV)k$6JL*(mP0PX<{vDId%2_RfQB-7 My85}Sb4q9e07KF(tpET3 diff --git a/mods/farming/textures/farming_cotton_8.png b/mods/farming/textures/farming_cotton_8.png deleted file mode 100644 index f835ba5b3f6f2c4d0e6c3f730be01e599dab7b6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ1=1BEstJygSFT*~H50Ya z6g2nMH80Iv29#hd3GxeOaCmkj4akZ0ba4#fxSrd&k+;Es=fIpT2I&tPJ~#^SGX#C- zlbP^;{Q{w$icL9n8i96(^{U|s@{S!nx`{Fen{H}v4KbMfXl0lD=7OY*ggmJ~bxxfl+I4L|LH_AoGby85}Sb4q9e09F4!`v3p{ diff --git a/mods/farming/textures/farming_cotton_seed.png b/mods/farming/textures/farming_cotton_seed.png deleted file mode 100644 index f1d5b8ab714e2f074b8136aac0d8dab88c0acc2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b^~o&sbXJcEvo6REsH=<@ zI$@IslwvFi@(X5gcy=QV$T9VFaSW+oOg_LkL)2l3Fmv-nh7LuY0}32s=^+P}PGejn t#^aEscx$0U1mmeR5eCVl4VN|87&b3ts&DABf<~Ev zM3{a-k$F9gcRh}FI?}9T&!%C@reD6ASEz|hrie?Ofkl#fL6LkuiE}-Ob~}o8I)!pL ziE%iDa5mDZVZobOvy@V>jZvwKN~DEJjd?(odOwYIKFX$E$emrooLj+{Tez85y_r_D zkyNUVOrU^Bk$XUcZ8yZ5UdNR2b7G&V_-5Fc1L1 z1%gLNa6L!Q^}YYHKH(~u0W^7z7Ic?^uhyO`FpL(sx+q%Oc!r&f2&}~pG;zB!u{D>+ zdk5Us!Qs`Z549Coj|-HcrmveSe?(4V9PkxTW$Lb7l41|K5e+GvN%XOarwj$==fdcH z$k=wX)9UZEUmjzde8D|XKF?2;{L};iwv_*uKh?*=8PHJrG3|uYHhWmPO{SSpcoM0#U3W>qSlfJ%&S zL703;mw85xb3ux6KZk8Te`h#-WjJkKE}MKwifur5VKsnjIfG+6e??2S0002GNklctStLLU@VQkp*kluu_SY z*YUA|(c;17CcuxqS;2&D9^I}RapNFCnM)q}kYtfP6;Q&YiO{!niiS%EsFSsf%WO)C zC&$Jp#qCj^x4-Yl@I1Fhva@gY&-B=Iq1xH6o}a^GYesOR?@Z#Do_@o;{SrT~=lSB_ xuW|1fV?iSas?Np4*w*1WrepMF(mG5J&p-Pc3xv*T0crpM002ovPDHLkV1lrul%W6s 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 41e5a04a36f76537ad5153b3360fc929dd905a3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmV+r0q_2aP)WvN|$y>po31Gdr6XUMWBOAm2^g#c}Ss!O`w5FqK8k6YC)TMNR4ntJ*s2)0001+ zNklYz~^4HgN(6gQT6MII~5cDTAG(%!x*qKqm%67ZLL_!bh4I0$m)uG^b3q zU=R{1n8rLw)P%vbiY;5I#L0<4X?ffBsx^m{8G`m*tXgwMEQvvIuKMybi|z+9#C@!0 z;O^CSV7Rv2EMrFY>M(|<)0()-cQfZQ072F1$GKM-7$YsB_T5c=z`z=tz}(x)tqlM) Ww=vDlXsW0H0000MaIl#*FCAl<2 z*jzM4Ty?~h`4}A)c{PPt?KMP{c^Kt*n1q=bRCrk=xEU0986`OxWVslmco^k*nT44c z#Mwdm`4||0?gk==lYqvmax=(sFz88e+o=nSF))N!Dw)c0i7+sj$_sdC3VG;?gI%2B*-tAL5ssp zg-ugQ=JU=uj`9Nk{{8*_^zOAo%NAzE^8Wkr>FulM&mKK`aOcLA%jZt--?L|7TSI-Y zt)cF}e?Ncx`2PLeVafjvYCCXwRlio7S(M+S^r<9N}ZCe)ikpO+brY zd%8G=NL=n)e-CV|fjjVi!YBt~8j4oBq$NwtYo?c(at-|KQ;Z)*ex=iq0{<>owioXsq z1ik!ouD*J@sM%aW-=!Po+i&^w^w-O$1utxSnvFerlGdfq=U>%&>050@iqkdj*>7K8 zJlePNw(E6UM$dR}myBgQQ(tAd;k@w1$+=w<)GdgYQ#>vo>l>7bDJ MboFyt=akR{09AqB)&Kwi diff --git a/mods/farming/textures/farming_soil_wet.png b/mods/farming/textures/farming_soil_wet.png deleted file mode 100644 index 0b4487d8a2460c3d06a49560ca5c5905fba69f30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 677 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47zG1-LR^7dWWa>P5ny3}a5aQk zlzAD&I2c(N7(8_)M41?z)kK^$g=k&_1z9AS7;Myp6}cH@xEVEsScI4u6nU5>SQz9v8BG<0gupt1 zRs)eLH-jt(gNgvFtqQNLnozKXqA&x4u^hh=Ka(O4g9sx-u(`aRB&P;HqZAW^hk>lM zs-U?nueJzhxSgh{s(_IUzpav(z67Tv50eNVv$>LpFgt@N2LlHK13xPxC@dJEPBoO| zc2*a*m*WYkKbr#-k0=T93--^>2ncORO^Q697xMSp<(hy0etmua=>DBkhxYAWKC!1L z=-=Nzzu&!k`}+0E7tfzOzItWP>gkpLfP%k%e);tA!@F0{pFey2=+VQwH*Q?Jc>dJU z1KT#NTRwkg+w`@aM}T&`_H=O!k+^Jn*0t!cgNWZBPMTc0`OG>O8!?2L;U3OjqcUv+ABv;?~9#d{o(b^nay(07R%SGXNIn&nK znOvFwJ}Nf1EPC0^J6hQZUuDye%goDK+%3E|dFq1YmQz){p2r*YUS{8(#M)%2n9=H@ zmn6v&AfenM{N*640LzLG3TIy2d9bs`we7(TyUla%{dlG4ndTo^!uzW1_O!k{@#e$l z;x^diH(34tvgh~rmvwuu<@&2lSCIU~ZJK2JIP)RHaRQ}yRgy`n?5nmy2^F!kBLd>=TPO& zP{^rJ{_9TDx=y>6PW9nUv64)^pGw@tN!Ywev5iT&l}Pm1M$))O(XU3vs7CeQMbflI zwVXq^l|%5?LeslK$*DrUok69CLEX4O&#XY})IQ$BKHA2H|54R^4>PHk2cAvG|i(l)weUcl{2`LGoE@g!J{#-jWM;EFTj^5=FMpS^=9nN zV&unS=GI`yuwLH5TP}HPXVSNZh|j|KUfvn@8EQME~+b-Nr-PyhFyZL&B*;!J|XUxS{hpNzjy=7BT<#fYq}?m*m2V-%980)Q;K zB(|(j6zR9{xIQ`y%q#>3r%cWzEX|5I%Mms(A`!#ZTORQQjWnvqhy!qB(5^eSv}>H9 z8YIrNe+LI7Y);FWj{V};Zj?&t;uc GLK6Urr%G`E diff --git a/mods/farming/textures/farming_tool_diamondhoe.png b/mods/farming/textures/farming_tool_diamondhoe.png deleted file mode 100644 index 66f1042a425f5098f7001213ac9192150ce855e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF4e$wZ1=4|*GC7{Y)~W)+<)tQy z{DE6Gb-jJvMlvi}hqW?e*j3q&S!3+-1ZlnP@7M?DS zAsp9}9U7*@W(J6z{uCpzdecXSmZyP<42cHsOBxK$wK`RifU*#Rp3qg zhlWXO9tVhdyID>-dbhBUspaXmTMUO1%8DBd(%Kv{+(K6*DKf8UFk)nE5xd5~7Q(;~ XwUFcR0ow#Qpdk#Nu6{1-oD!M<)DJvd diff --git a/mods/farming/textures/farming_tool_steelhoe.png b/mods/farming/textures/farming_tool_steelhoe.png deleted file mode 100644 index d057af24c30b9a1bcfac890da03d4e3ff87e1fd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VW1=4%>?hUk*$?+7nRuwpN z=8TCV|KrDx|NsC0@#9AqJ+bfKzdw8S%-@uECU4IZplZgFAirP+hi5m^fE-It7sn8e z>&Xrchh8~obboZwoO0AkIfJo9)#57Sp#(wk27_yAP8n*(E0R*#S2S=kGPa0qV_^$n aV37F1F?GVB^bJ5m7(8A5T-G@yGywqiay`-j diff --git a/mods/farming/textures/farming_tool_stonehoe.png b/mods/farming/textures/farming_tool_stonehoe.png deleted file mode 100644 index 55d8123f8b9eaed4410989827adb5fade27d4651..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF4e$wZ1=4|*GC7{Y)~W(2DJc~d z74`M?xw*M!N&+r=Vutd(MMXsg1qIfcBL1ela~uMf0yQv}1o;IsI6S+N2IN?Ix;Tb# zTu*jjxVEW8quch2#gwB$X%>u!if$$`Bz{>;7#+*Z=EaM zw?66EcHjN$UFP>Vu3EMD;^DZZlbjwsdT{x8)Akkdd)7v7THv>8y4&_8*2j(=oHc9m z$z9o7wY5`$rZAQS`2{mLJiCzwlo8NZu>H-brP(K~|(phXOxu6{1-oD!M<;EG@u diff --git a/mods/farming/textures/farming_wheat_1.png b/mods/farming/textures/farming_wheat_1.png deleted file mode 100644 index c16ad94ba4e9989dd795c452559376ea2137d78b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=9Yr1Ue5HHSX6f+M=Q~ zYo{boh_NKdFPOpM*^M+HN8HoJF@)oKvP8xM1|=4W84^4a5|S(;3~VV3TOtB)Z38M{ N@O1TaS?83{1OQMF9ZdiL diff --git a/mods/farming/textures/farming_wheat_2.png b/mods/farming/textures/farming_wheat_2.png deleted file mode 100644 index baddb4c544c6ea55d23c5dec5462e351c0f80c54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ1=3wxO(*WOis%vDe8I1J zrB3l;b^H6RpMVmKB|(0{3=Yq3qyahVo-U3d9M_W<=yNa#vhn!vF!7w>VdLV_abQz! jW}J`^;*pRTP{6<-pT?xP*61c5Pz!^ntDnm{r-UW|z&Rvh diff --git a/mods/farming/textures/farming_wheat_3.png b/mods/farming/textures/farming_wheat_3.png deleted file mode 100644 index 36ebb1929de7851303f7b7da7a46fe831765608f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU1=7oRg-u%NdiX-lntjog zlXa)B_1J%|{C~fqJ5Y|XB*-tA!Qt7BG$6;x)5S4_<9hM}Mh^x-Mjjm=CZ07sjC?$2 z9N3hd873r@1SF&t7$gX!gm@&B2n3{Pr0E1ChzWS42qXmt1cU?xurVyGV&j}_c4jru OGzL#sKbLh*2~7aHK`<)- diff --git a/mods/farming/textures/farming_wheat_4.png b/mods/farming/textures/farming_wheat_4.png deleted file mode 100644 index 735ed7772e5ed4e8ecf29004ce2fc92fc3001247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeX1=8yeCePUzxb3x$}4MW-^nS{=7dR2o)#&6-Tm*+8s;xLd_unYEgOKA OF?hQAxvX9s(+5ED7=pW^j0RBMrzY^mK6y;kcfx zz^0S%ASuBkAtC7j!z70^W@heYh6$G+95`@J@4(R$7ZeUWIPqe^fpZT64k?^iG2y@q zg#{-J<`yTY8L2jYFgCPWYsLW_)yD%7EVQ;MLk?xjf`9ed6rv>PMO`bP0l+XkKd0|`D diff --git a/mods/farming/textures/farming_wheat_7.png b/mods/farming/textures/farming_wheat_7.png deleted file mode 100644 index cc26ca96990f96f8fe71d5c3eed9d0eea3bb7c2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VW1=42^r0?G1yl-9Ds>LRk zj^=EhYw_T6>gAKMhqp$qS!#Crc>12re#f@OT}v_e094Ib666=m;PC858j#cI>Eal| zaXqzTBQKMoi1Xix@0<#cx*IU@hS*8nQV|kjb-khBePQ`x+dQTzflFvXs>=mhV;2emCjG1i2d=>Yi4QG+X_?w&uF`J&|NjKx2-V2i> z8I~wss2>uhpfH0;Q;cQ6mTSUj*^G3scIec@IkN4fjwkQ5J3rKu+S3!)(;3JQS_PpA z-;0E(n_uCPBcg(a93^6ni1$PrHQeA-jcoLXQ_goZLEjMb50^^>=YLuCB>(^b07*qo IM6N<$f*<&P1^@s6 diff --git a/mods/farming/textures/farming_wheat_seed.png b/mods/farming/textures/farming_wheat_seed.png deleted file mode 100644 index a9031fba979d5fd323ce9f5200f6ede53b2e733f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ^~o&Uwme~4v(x#*or@>< z%7V@L&K@&PuV1Rg~;HfM?GGmNJaLK%Y3 kFmc!!9azVD)2D`kVexq;Szopr0Jyg)f&c&j From f1ddb91275fd298c36a3f2d7dae392422d48dacc Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 22 May 2016 22:43:37 +0200 Subject: [PATCH 035/383] update submodules --- mods/boats | 2 +- mods/default/aliases.lua | 1 + mods/farming | 2 +- mods/illuna | 2 +- mods/mobs_redo | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/mods/boats b/mods/boats index 045f1b9e..14ccac7c 160000 --- a/mods/boats +++ b/mods/boats @@ -1 +1 @@ -Subproject commit 045f1b9e678179da5362e5b52dd895c2f3ccc072 +Subproject commit 14ccac7c86ebb8102c827726867cb9ba7f806d1c diff --git a/mods/default/aliases.lua b/mods/default/aliases.lua index 23bc70dc..193433c1 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") diff --git a/mods/farming b/mods/farming index 0df8a782..ecdc28cb 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit 0df8a78219e8b030e36018116fea4d660288549e +Subproject commit ecdc28cbcb3766df0bf6707bd1489d978e58d31d diff --git a/mods/illuna b/mods/illuna index fd6ae0f4..fa46c028 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit fd6ae0f46b5d71eaad565225a53e3b084d567396 +Subproject commit fa46c028fa35215c18dd49b2865a372cd156897c diff --git a/mods/mobs_redo b/mods/mobs_redo index 67aa752c..1a53844f 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit 67aa752c4433c7172cb7ac86728c455d986678bf +Subproject commit 1a53844f610ed59a2804eabbcdff4576da340858 From 8ef03465d1bd0e046e5faa3ff06d0a5f54e4cca1 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 22 May 2016 23:05:42 +0200 Subject: [PATCH 036/383] update submodules --- mods/farming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming b/mods/farming index ecdc28cb..fd1982af 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit ecdc28cbcb3766df0bf6707bd1489d978e58d31d +Subproject commit fd1982af814fc79e774038afa905f59f3d020db3 From ad04e5ae0dd8dc416ddcb1ecff52b701ec3c7bb0 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 22 May 2016 23:33:14 +0200 Subject: [PATCH 037/383] update submodules --- mods/farming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming b/mods/farming index fd1982af..8b7b3908 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit fd1982af814fc79e774038afa905f59f3d020db3 +Subproject commit 8b7b3908f62eec2cd8a3ce849269a812f2828d52 From 79e4ea3bf256d32318f9b10e1958f0343bd2e041 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 23 May 2016 09:07:19 +0200 Subject: [PATCH 038/383] update submodules --- mods/farming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming b/mods/farming index 8b7b3908..f38f34e6 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit 8b7b3908f62eec2cd8a3ce849269a812f2828d52 +Subproject commit f38f34e6c95d6d065bc52ef806056059ba453fcc From c8fc4cfb368847dc8b61c4cb81dd7e7190b09df6 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 24 May 2016 12:01:34 +0200 Subject: [PATCH 039/383] update submodules --- mods/illuna | 2 +- mods/mobs_redo | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/illuna b/mods/illuna index fa46c028..b4c21890 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit fa46c028fa35215c18dd49b2865a372cd156897c +Subproject commit b4c21890c6953d2f7c2c2e555ab120cdb3cbe3e2 diff --git a/mods/mobs_redo b/mods/mobs_redo index 1a53844f..c6d4b957 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit 1a53844f610ed59a2804eabbcdff4576da340858 +Subproject commit c6d4b957686ca97748ba1145274fea4c0eef1759 From 92ee60e6c7cb955eb3410daa7e2728cc7b496eb9 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 25 May 2016 15:34:48 +0200 Subject: [PATCH 040/383] update submodule farming --- mods/farming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming b/mods/farming index f38f34e6..b471a2af 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit f38f34e6c95d6d065bc52ef806056059ba453fcc +Subproject commit b471a2af79a8be9433949655e008775b912ce0c5 From 82a31236be156168d6537ca0068351f0acfa3e53 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 25 May 2016 22:03:46 +0200 Subject: [PATCH 041/383] add worldedit to submodules --- .gitmodules | 3 +++ mods/worldedit | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/worldedit diff --git a/.gitmodules b/.gitmodules index 91d14c39..dec7bdf1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -25,3 +25,6 @@ [submodule "mods/farming"] path = mods/farming url = https://git.tchncs.de/Illuna-Minetest/farming.git +[submodule "mods/worldedit"] + path = mods/worldedit + url = https://github.com/Uberi/Minetest-WorldEdit diff --git a/mods/worldedit b/mods/worldedit new file mode 160000 index 00000000..61ab240c --- /dev/null +++ b/mods/worldedit @@ -0,0 +1 @@ +Subproject commit 61ab240ceac0ce20f19cbdccdecfd3028cf6893a From 907cb3be8cc28fcf743cf67a55a3a961ca94d883 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 25 May 2016 22:52:40 +0200 Subject: [PATCH 042/383] add 3d_armor to submodules --- .gitmodules | 3 +++ mods/3d_armor | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/3d_armor diff --git a/.gitmodules b/.gitmodules index dec7bdf1..64e2a2b9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -28,3 +28,6 @@ [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 diff --git a/mods/3d_armor b/mods/3d_armor new file mode 160000 index 00000000..3cf6887a --- /dev/null +++ b/mods/3d_armor @@ -0,0 +1 @@ +Subproject commit 3cf6887abddf02443dd29dc4f9e0ffcde9204c9a From 66c5683ccfc880aa28eb5cf3c4d3df184d773e22 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 25 May 2016 22:56:32 +0200 Subject: [PATCH 043/383] add bags and plantlife to submodules --- .gitmodules | 6 ++++++ mods/bags | 1 + mods/plantlife_modpack | 1 + 3 files changed, 8 insertions(+) create mode 160000 mods/bags create mode 160000 mods/plantlife_modpack diff --git a/.gitmodules b/.gitmodules index 64e2a2b9..318967ba 100644 --- a/.gitmodules +++ b/.gitmodules @@ -31,3 +31,9 @@ [submodule "mods/3d_armor"] path = mods/3d_armor url = https://github.com/stujones11/minetest-3d_armor +[submodule "mods/bags"] + path = mods/bags + url = https://github.com/cornernote/minetest-bags +[submodule "mods/plantlife_modpack"] + path = mods/plantlife_modpack + url = https://git.tchncs.de/Illuna-Minetest/plantlife_modpack.git diff --git a/mods/bags b/mods/bags new file mode 160000 index 00000000..f17d829b --- /dev/null +++ b/mods/bags @@ -0,0 +1 @@ +Subproject commit f17d829b66afda596d6eae450443b15d2fd95031 diff --git a/mods/plantlife_modpack b/mods/plantlife_modpack new file mode 160000 index 00000000..b7f394c5 --- /dev/null +++ b/mods/plantlife_modpack @@ -0,0 +1 @@ +Subproject commit b7f394c5fe2cbecaff6bbc012d42b497327850b3 From c181117afb8e79383affb0114d1a30c5c87f686c Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 25 May 2016 22:59:14 +0200 Subject: [PATCH 044/383] add darkage to submodules --- .gitmodules | 3 +++ mods/darkage | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/darkage diff --git a/.gitmodules b/.gitmodules index 318967ba..6fc3c237 100644 --- a/.gitmodules +++ b/.gitmodules @@ -37,3 +37,6 @@ [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 diff --git a/mods/darkage b/mods/darkage new file mode 160000 index 00000000..b5d42052 --- /dev/null +++ b/mods/darkage @@ -0,0 +1 @@ +Subproject commit b5d42052af5b413edc2bc9b82eb6cefe6a26d9ba From 881f4ac06693bc5ef1b6a3cc57fb70d3a7944b4a Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 25 May 2016 23:01:38 +0200 Subject: [PATCH 045/383] add hudbars to submodules --- .gitmodules | 3 +++ mods/hudbars | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/hudbars diff --git a/.gitmodules b/.gitmodules index 6fc3c237..36be2b58 100644 --- a/.gitmodules +++ b/.gitmodules @@ -40,3 +40,6 @@ [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 diff --git a/mods/hudbars b/mods/hudbars new file mode 160000 index 00000000..d2074e96 --- /dev/null +++ b/mods/hudbars @@ -0,0 +1 @@ +Subproject commit d2074e966b9671f9cadec44f2e1b0390af124370 From 82a9d81e19199995674a47a4507cf1f1eae95313 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 25 May 2016 23:03:30 +0200 Subject: [PATCH 046/383] add xdecor to submodules --- .gitmodules | 3 +++ mods/xdecor | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/xdecor diff --git a/.gitmodules b/.gitmodules index 36be2b58..384bc3e0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -43,3 +43,6 @@ [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 diff --git a/mods/xdecor b/mods/xdecor new file mode 160000 index 00000000..a01fe4d5 --- /dev/null +++ b/mods/xdecor @@ -0,0 +1 @@ +Subproject commit a01fe4d511e447749d711d570a5ea5fb7e19e2ea From 75aa611aa22171f8b86c8b8f6bdf79c164cbbee8 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 26 May 2016 12:10:29 +0200 Subject: [PATCH 047/383] update submodule farming --- mods/farming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming b/mods/farming index b471a2af..d9cb99aa 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit b471a2af79a8be9433949655e008775b912ce0c5 +Subproject commit d9cb99aa2c979c3d2711cb40e33128ea1fc2878a From c47d0269509a9984a4594408872a886fba21e250 Mon Sep 17 00:00:00 2001 From: Foz Date: Mon, 2 May 2016 22:36:29 -0400 Subject: [PATCH 048/383] cherry-pick from github.com/minetest/minetest_game> Tnt: Fix bug in dropped item counting --- mods/default/README.txt | 10 +++++----- .../default/textures/default_dry_grass_side.png | Bin 285 -> 890 bytes mods/default/textures/default_grass_side.png | Bin 771 -> 779 bytes mods/default/textures/default_snow_side.png | Bin 360 -> 376 bytes mods/tnt/init.lua | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/default/README.txt b/mods/default/README.txt index 15a7f5af..8e72ca5e 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -87,7 +87,6 @@ InfinityProject (WTFPL): Splizard (CC BY-SA 3.0): default_snow.png - default_snow_side.png default_pine_sapling.png Zeg9 (CC BY-SA 3.0): @@ -98,7 +97,7 @@ Zeg9 (CC BY-SA 3.0): default_gold_block.png paramat (CC BY-SA 3.0): - wieldhand.png copied from character.png by Jordach (CC BY-SA 3.0) + wieldhand.png -- Copied from character.png by Jordach (CC BY-SA 3.0) default_pinetree.png default_pinetree_top.png default_pinewood.png @@ -121,6 +120,7 @@ paramat (CC BY-SA 3.0): default_dry_grass_*.png default_grass.png default_grass_side.png + default_snow_side.png brunob.santos (CC BY-SA 4.0): default_desert_cobble.png @@ -182,6 +182,9 @@ Gambit (WTFPL): asl97 (WTFPL): default_ice.png +KevDoy (CC BY-SA 3.0) + heart.png + Glass breaking sounds (CC BY 3.0): 1: http://www.freesound.org/people/cmusounddesign/sounds/71947/ 2: http://www.freesound.org/people/Tomlija/sounds/97669/ @@ -221,6 +224,3 @@ Mito551 (sounds) (CC BY-SA): default_dirt_footstep.1.ogg default_dirt_footstep.2.ogg default_glass_footstep.ogg - -KevDoy (CC BY-SA 3.0) - heart.png diff --git a/mods/default/textures/default_dry_grass_side.png b/mods/default/textures/default_dry_grass_side.png index 27f4d9604f672ba30fb4eda036057c889c0b2072..ef375b7fc388c6a1a6d2ed45ca6de773680094e5 100644 GIT binary patch delta 852 zcmV-a1FQU<0{RA!85#xv001BJ|6u?C00v@9M??Vs0RI60puMM)k%=CE-~=8LCnx{A zM_vE`0|!Y&K~y-)O_M!r8+91QfA``0-}m{>XXo0=g|w~^3PU9%6d|ExKuBd^Kp=JM z1`|ugjtn~+QyExLg@nYwKqbV`h=s8WEhIEboVY%_cAWcgoIBewLzJk`^h(e0NWbTO zq@TW7UkX*=hcz761E8~iyNe&z&~=?or$bN;5JFHC1+&?VvMjMIi!4o0J;$fnY_hZc zFN&nFSS|?b4YD+0I+_HKkp3sz|`z{&Q@9+X0|aZy)vAx@dZbxO??n&WwUJw^Ek@~xUcZMSEav5$FbEls#yGA=Q52NLDVAlC=Q+cp zA@g$1w3whs3Ua5@p|#rL>}<};l@^A@BYw^;}|uts{oJR|Kit8 z;JhZGvwrVk`^T@}X}{`SwDjSZzi(dL60q^dcOPwKX+l_kZ}8q{KX34g{`~&aEz_|% z$#Q((=dDj3Z2b1^2V0V?aOeJ`4e9ZNkC{%U_%)xSmqR33!LSU*!x4U113-}!Oy?Zx zNtRO-1zDPK{l*Pc$Mu*_rc^Y6CiKf>-7pyp1_adrC-fNfVzNmFK)EQny>^@Nc#Jye z#Wb5u@{=5YAp`&wQ2}6iwm{X?%MWZ^i8#q}7Rv>395b8EP%D)RaU4??r_AOHidjLU z(ZF#%4ts}~j!jV%^m~1>(~PJVA%tLXJm6;Q7IKy*sG5r7dRUf)s0fmA!p`&8y!ZM|;m`@MHg^4&GX zXZuv&JyZM+PW3-BJ>bBspd+(=j?eQyvmog5^1z#GLLYAkf3P*;)y}9xoF3vp(-=#F z{DK)Ap4~_Tagw~leK~y-)O_M!uTtyUypEEOeX7^t9!!`;r zU;#?OuK-7(K;nl`P(eopTc(31QbfV8ph*GB%2IwsB$GH%kim|<>)rb`Gl$~h6;q8g z?|XF4dESxFzCO}-?~M@={(iot+;H(Uo(@tv1Ds0LPzybF`ct1};u(p8fjznE#yz-+r`=-H?e;S)M#R zJ^u3hPnOL(v3&IMSibt<9<~sgRixb{M1_a27?BWQ-2%~3K_S39RC0S0+2~WK~y-)O_R@V97Pa^zv}MknVpH({~}1F z7=bwO5=3huMR^i(;f%y_;e^C35(shN#4CV=I3!La4m?A^m=GljcH(%wJ3BqyT^!mr z^tHQ6UBB-uxqWX>ufIP*MEK{)igw3QO)SHCB#nx#gkhO*-ha^TR-7F6SZ`>z9C1)w zvuQa$4#YvJH!J{Sp9rgrv4Un0k*nfrQr-ZBK4I32gt0)8)u8MtYSiB63eZl~|{(DWcY5C==Kj$fC(x9~46#)Hdp?!kJIc>L|tncV&CJ$z>g%YTIRhQ*73IM593mLrWyPRh0G zp5s4OSZ@$hMsk9vBQpOyIgbS;TskP#7Fw_9N=DcqZaXIy30XOWx=nP$VXev_app2Se@ zr#C#VKYuOVW4OTN4UtTWg|lXO^L$|Xc1=!748_pt4S(^zHLPAmd{_K;Q=#rE7NcGT zS$CE+YB8@8Ty1E#tFkK}e6)-6Lg;h(>UlzQ@gasx3W}c?oHw*P#m;e^$x&Io9)sV(wp$Hf!eq){Zm8D!d(n3UX~rW4BA%0 i@?=C+ao(_bv*uqRVO01IoT|zI0000P+<%J diff --git a/mods/default/textures/default_snow_side.png b/mods/default/textures/default_snow_side.png index 3e98915131310783a3632d7622c61bdc0ca107b2..f13ec94041f30abf1c8953778008a790957ad3b8 100644 GIT binary patch delta 350 zcmV-k0ipir0{8-uBYyw}VoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_ z000McNliru-~|K#1|@(@+Qa|=0R>4!K~y-)eN)+ugfI+!M*Ndd0mBqBbhgvl6v9zK z!c_3~BQiK%SWA(7#MiSec_%{$>|X!?QU=DM$SI?uKGwQE0)LGPp*xk9#-Y4BxdrO% zeFT>63}ktgEw#Q(TamY^Y%36w)Cxj(W*CRR**peE3l>BhU7f7m;*>Jb?BCP4Y=!rk zJ=s>8lz|xJoigxz$lHQ74#l=?#VLlb6O;o=1TX!`&4Q8E{nyc;VW9?|i>-ALyHqh19 w*<;h&k$L59pS~r3Xek4&I_PKR?{M(CU*$QV;Ea2rG5`Po07*qoM6N<$f&@99rvLx| delta 334 zcmV-U0kQu00_XyeBYy!eNklM|AjkO|LrcZgE^ z&o9c62NX;6t1|i@*=6?M&{u8&gIB!re_boltw4!38FjuS9XrtyMn(o5AYUDbIe^$R zxzg~zO^~v^ibt`iACPa$00gcvD*qW78GAwOG?1x4%ml=YP?`-1s{ye91S0^HFTy|! gfE$1VjDk@B0GM6^Le-f=SO5S307*qoM6N<$f^Pq&sQ>@~ diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 49fd7010..1e5d5a50 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -45,7 +45,7 @@ local function eject_drops(drops, pos, radius) local count = item:get_count() while count > 0 do local take = math.max(1,math.min(radius * radius, - item:get_count(), + count, item:get_stack_max())) rand_pos(pos, drop_pos, radius) local dropitem = ItemStack(item) From 75a85b951e5f375b74ac1f4e5af061166d8acc45 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 5 May 2016 00:22:57 +0100 Subject: [PATCH 049/383] cherry-pick from github.com/minetest/minetest_game> Stairs/default: Make sandstone(brick) groups consistent Sandstone is crumbly = 1 cracky = 3 to be slowly diggable by hand Sandstonebrick(stair/slab) is cracky = 2 --- mods/default/nodes.lua | 2 +- mods/stairs/init.lua | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 0a04ad10..26ffa02a 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -246,7 +246,7 @@ minetest.register_node("default:desert_stonebrick", { minetest.register_node("default:sandstone", { description = "Sandstone", tiles = {"default_sandstone.png"}, - groups = {crumbly = 2, cracky = 3}, + groups = {crumbly = 1, cracky = 3}, sounds = default.node_sound_stone_defaults(), }) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index be00d34b..53a8088c 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -342,14 +342,14 @@ stairs.register_stair_and_slab("desert_stonebrick", "default:desert_stonebrick", default.node_sound_stone_defaults()) stairs.register_stair_and_slab("sandstone", "default:sandstone", - {crumbly = 2, cracky = 2}, + {crumbly = 1, cracky = 3}, {"default_sandstone.png"}, "Sandstone Stair", "Sandstone Slab", default.node_sound_stone_defaults()) stairs.register_stair_and_slab("sandstonebrick", "default:sandstonebrick", - {crumbly = 2, cracky = 2}, + {cracky = 2}, {"default_sandstone_brick.png"}, "Sandstone Brick Stair", "Sandstone Brick Slab", From 5e84246526fb4118bd37eba63be1a8dd30e82f4f Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Thu, 21 Apr 2016 21:25:51 +0100 Subject: [PATCH 050/383] cherry-pick from github.com/minetest/minetest_game> Creative: Add global variable creative.formspec_add This pull adds a new global variable called creative.formspec_add that will allow mods to add to the creative inventory screen without the need to fork the mod altogether. Simple solution that works already for inventory_plus' BACK button --- mods/creative/init.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/creative/init.lua b/mods/creative/init.lua index c842efd3..a2c8858d 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -98,6 +98,8 @@ local trash = minetest.create_detached_inventory("creative_trash", { }) trash:set_size("main", 1) +creative.formspec_add = "" + creative.set_creative_formspec = function(player, start_i) local player_name = player:get_player_name() local inv = player_inventory[player_name] @@ -128,6 +130,7 @@ creative.set_creative_formspec = function(player, start_i) "table[6.05,3.35;1.15,0.5;pagenum;#FFFF00," .. tostring(pagenum) .. ",#FFFFFF,/ " .. tostring(pagemax) .. "]" .. default.get_hotbar_bg(0,4.7) .. default.gui_bg .. default.gui_bg_img .. default.gui_slots + .. creative.formspec_add ) end From 77873ddb9e26fd1ac5090a9979a7df6e46787898 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Fri, 6 May 2016 15:14:38 +0100 Subject: [PATCH 051/383] cherry-pick from github.com/minetest/minetest_game> Creative: Fix '-' glitch in playername Fix the glitch when players use the '-' character in their username on a server, causing creative inventory to not pass page 2 --- mods/creative/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/creative/init.lua b/mods/creative/init.lua index a2c8858d..5ef8dcf0 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -194,8 +194,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) creative.set_creative_formspec(player, 0) else local formspec = player:get_inventory_formspec() - local start_i = formspec:match("list%[.-" .. player_name .. ";.-;(%d+)%]") - start_i = tonumber(start_i) or 0 + local start_i = player_inventory[player_name].start_i or 0 if fields.creative_prev then start_i = start_i - 3*8 @@ -212,6 +211,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end + player_inventory[player_name].start_i = start_i creative.set_creative_formspec(player, start_i) end end) From 32c5872bd1518bac955625bcc1f7b8cc4216c9f8 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sat, 7 May 2016 10:12:58 +0100 Subject: [PATCH 052/383] cherry-pick from github.com/minetest/minetest_game> Creative: Fix inventory crash after toggling creative mode in-game --- mods/creative/init.lua | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mods/creative/init.lua b/mods/creative/init.lua index 5ef8dcf0..bc4687f7 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -2,6 +2,7 @@ creative = {} local player_inventory = {} +local creative_mode = minetest.setting_getbool("creative_mode") -- Create detached creative inventory after loading all mods creative.init_creative_inventory = function(player) @@ -14,7 +15,7 @@ creative.init_creative_inventory = function(player) minetest.create_detached_inventory("creative_" .. player_name, { allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) - if minetest.setting_getbool("creative_mode") and not to_list == "main" then + if creative_mode and not to_list == "main" then return count else return 0 @@ -24,7 +25,7 @@ creative.init_creative_inventory = function(player) return 0 end, allow_take = function(inv, listname, index, stack, player) - if minetest.setting_getbool("creative_mode") then + if creative_mode then return -1 else return 0 @@ -86,7 +87,7 @@ local trash = minetest.create_detached_inventory("creative_trash", { -- Allow the stack to be placed and remove it in on_put() -- This allows the creative inventory to restore the stack allow_put = function(inv, listname, index, stack, player) - if minetest.setting_getbool("creative_mode") then + if creative_mode then return stack:get_count() else return 0 @@ -155,7 +156,7 @@ end minetest.register_on_joinplayer(function(player) -- If in creative mode, modify player's inventory forms - if not minetest.setting_getbool("creative_mode") then + if not creative_mode then return end creative.init_creative_inventory(player) @@ -163,7 +164,7 @@ minetest.register_on_joinplayer(function(player) end) minetest.register_on_player_receive_fields(function(player, formname, fields) - if formname ~= "" or not minetest.setting_getbool("creative_mode") then + if formname ~= "" or not creative_mode then return end @@ -216,7 +217,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end end) -if minetest.setting_getbool("creative_mode") then +if creative_mode then local digtime = 0.5 local caps = {times = {digtime, digtime, digtime}, uses = 0, maxlevel = 3} From 504961a0a2af78ccb6d0011ebb022bcd83b3b72b Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 8 May 2016 22:26:18 +0100 Subject: [PATCH 053/383] cherry-pick from github.com/minetest/minetest_game> Tnt: Avoid divide-by-zero errors in calc_velocity() --- mods/tnt/init.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 1e5d5a50..18bd9263 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -104,6 +104,11 @@ end local function calc_velocity(pos1, pos2, old_vel, power) + -- Avoid errors caused by a vector of zero length + if vector.equals(pos1, pos2) then + return old_vel + end + local vel = vector.direction(pos1, pos2) vel = vector.normalize(vel) vel = vector.multiply(vel, power) From 91bb144fef6a94907c308306112d2a08a8ff3032 Mon Sep 17 00:00:00 2001 From: red-001 Date: Thu, 19 May 2016 19:40:13 +0100 Subject: [PATCH 054/383] cherry-pick from github.com/minetest/minetest_game> Creative: Reset 'start_i' to 1 when the inventory filter is changed --- mods/creative/init.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/creative/init.lua b/mods/creative/init.lua index bc4687f7..0f5bd364 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -178,6 +178,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) elseif fields.creative_tabs then local tab = tonumber(fields.creative_tabs) inv.tab_id = tab + player_inventory[player_name].start_i = 1 if tab == 1 then creative.set_crafting_formspec(player) @@ -186,10 +187,12 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) creative.set_creative_formspec(player, 0) end elseif fields.creative_clear then + player_inventory[player_name].start_i = 1 inv.filter = "" creative.update_creative_inventory(player_name) creative.set_creative_formspec(player, 0) elseif fields.creative_search then + player_inventory[player_name].start_i = 1 inv.filter = fields.creative_filter:lower() creative.update_creative_inventory(player_name) creative.set_creative_formspec(player, 0) From 168d9a25919e8ee43044a806c58075065b061a84 Mon Sep 17 00:00:00 2001 From: Thomas--S Date: Thu, 19 May 2016 20:43:46 +0200 Subject: [PATCH 055/383] cherry-pick from github.com/minetest/minetest_game> Vessels: Smaller/improved textures, remove duplicated 'inv' textures Removed unnecessary inventory textures The drinking glass inventory texture now differs from the node texture to be more clearly a drinking glass Smaller textures to reduce size as nodes --- mods/vessels/README.txt | 5 +++++ mods/vessels/init.lua | 10 +++++----- .../vessels/textures/vessels_drinking_glass.png | Bin 188 -> 371 bytes .../textures/vessels_drinking_glass_inv.png | Bin 188 -> 313 bytes mods/vessels/textures/vessels_glass_bottle.png | Bin 200 -> 229 bytes .../textures/vessels_glass_bottle_inv.png | Bin 200 -> 0 bytes mods/vessels/textures/vessels_steel_bottle.png | Bin 257 -> 348 bytes .../textures/vessels_steel_bottle_inv.png | Bin 257 -> 0 bytes 8 files changed, 10 insertions(+), 5 deletions(-) delete mode 100644 mods/vessels/textures/vessels_glass_bottle_inv.png delete mode 100644 mods/vessels/textures/vessels_steel_bottle_inv.png diff --git a/mods/vessels/README.txt b/mods/vessels/README.txt index d5c3da84..c2a802f4 100644 --- a/mods/vessels/README.txt +++ b/mods/vessels/README.txt @@ -43,3 +43,8 @@ Authors of media files Unless specifically noted, Copyright (C) 2012 Vanessa Ezekowitz +The following textures were modified by Thomas-S (License is CC0): + vessels_drinking_glass.png + vessels_drinking_glass_inv.png (Paramat helped to improve this texture) + vessels_glass_bottle.png + vessels_steel_bottle.png diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua index 165efbd5..b36eea20 100644 --- a/mods/vessels/init.lua +++ b/mods/vessels/init.lua @@ -70,14 +70,14 @@ minetest.register_node("vessels:glass_bottle", { description = "Glass Bottle (empty)", drawtype = "plantlike", tiles = {"vessels_glass_bottle.png"}, - inventory_image = "vessels_glass_bottle_inv.png", + inventory_image = "vessels_glass_bottle.png", wield_image = "vessels_glass_bottle.png", paramtype = "light", is_ground_content = false, walkable = false, selection_box = { type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25} + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} }, groups = {vessel=1,dig_immediate=3,attached_node=1}, sounds = default.node_sound_glass_defaults(), @@ -103,7 +103,7 @@ minetest.register_node("vessels:drinking_glass", { walkable = false, selection_box = { type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25} + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} }, groups = {vessel=1,dig_immediate=3,attached_node=1}, sounds = default.node_sound_glass_defaults(), @@ -122,14 +122,14 @@ minetest.register_node("vessels:steel_bottle", { description = "Heavy Steel Bottle (empty)", drawtype = "plantlike", tiles = {"vessels_steel_bottle.png"}, - inventory_image = "vessels_steel_bottle_inv.png", + inventory_image = "vessels_steel_bottle.png", wield_image = "vessels_steel_bottle.png", paramtype = "light", is_ground_content = false, walkable = false, selection_box = { type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25} + fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} }, groups = {vessel=1,dig_immediate=3,attached_node=1}, sounds = default.node_sound_defaults(), diff --git a/mods/vessels/textures/vessels_drinking_glass.png b/mods/vessels/textures/vessels_drinking_glass.png index 4cff308c29f7618471f41ed3bd249344def22ed1..d5037b8579ee9b712e6a281ee22432f5697b74b2 100644 GIT binary patch delta 356 zcmV-q0h|830rLWo7=H)`0000V^Z#K0000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rb1rrfE3W!8F0{{R38FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0NY7KK~y-)?UJzy!Y~v?Z`4vGD1W7pp@X1{f;jpEet=)= z2Z*z7ieLp597HN2tx-#nxTL|S&5LsP9$aJ~a^g`Ac@mNGWCbB)XT!)gw=^{K<$xo1$$Exr* zfdD{2ZJ925@m*D^ zjaQ&$3*q?&eoe$=w#8x{eEvv-;oLaJ)Zg#5HQ@oYa$^KD+ulh40000|8-G$*l2rk&Wd@@jkv%n*=n1O*?7=#%aX3dcR z3bL1Y`ns||U=?8#5?FKe(R`qgWQl7;iF1B#Zfaf$gL6@8Vo7R>LV0FMhJw4NZ$Nk> zpEyv_LQfaR5R22v2@ qFRVPB&+PsFHdC!y*{udwm>E=2hTN delta 172 zcmdnVw1;tmL_G^L0|Ud`yN`l^lxToYh%1o3_2BiHD~~ttzjpBSz2~n#z5DRhzedmt zD8X0~^&i3WrL7Pl)U4zVeAWiuICgGDjI07#K@}{DK)Ap4~_Tagw~Fdh=fK^zCS34}n%m654<>}%W!f`!0L4mKpzu|(; z!ER=SH7`yEtYk@(XqI&{HZrhqknjm`Yi9BgIFgXiWGEsLC~7RJqR%SCFgKLlpr<+Y QG|(6ZPgg&ebxsLQ0OZ#!^#A|> delta 142 zcmaFLc!F_)3Ws`tPlzi61H(ie#p>04pYuKzopr0Q4Rzf&c&j diff --git a/mods/vessels/textures/vessels_glass_bottle_inv.png b/mods/vessels/textures/vessels_glass_bottle_inv.png deleted file mode 100644 index e9dc6837810f8133d91dcb462c1893769335a46e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b1=3sgoV|7H>G{j|_a3=? z?97d=ThAOkcxCn06CJs+m##mY*_gY!ue?aO{0UGgV@Z%-FoVOh8)-m}zo(012*>qg z2BvwOJOT%JQ#Y{a^EGT(r0%>_XhtGW*$OGPHYN$?MG*~-jjV?fk{FCFBt#ly6qW^Jujk`do|E#22WQ%mvv4FO#rZdMCTq8=H^K)}k^GX<;i&7IyQd1PlGfOfQ+&z5*!W;R- zfr^fJx;TbdoPImWHm^BApvAst`;wOK`T{1cDQ$MS?3wu$d%;c2OowsQ|yrk~sST(~4Q zU6Eyy3Zp})px`H){yNi)+t)VfDEB41urvrT-QITbyRB>B8B9HvHsJ%Yn`s|<=9*awpFWk bJ&b3}s_?n+=!bp?&_@iOu6{1-oD!McJ-(n)R<-0S z&_tG!AirRSXZJ44&0SayhG%*>^dt)xy zD>M84MXCRcKAMUZqHG7^qP3TbZ+zL5@?0-$rbO?ir)+v#IS*!>luuA#*$}^QH{-hV l%Dw3gXKsJmYZdNp&1kilr9fBZY7x*X22WQ%mvv4FO#pqXZNdNm diff --git a/mods/vessels/textures/vessels_steel_bottle_inv.png b/mods/vessels/textures/vessels_steel_bottle_inv.png deleted file mode 100644 index 834a3d5a062f37faa598e9c95bb3c59dd8da4fff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Uw}`DE0Ep^1ILda2QsHjnR4;s z#pTPFU%h(u#EBC(Zrs?vfB*dX^Ba;pA3b_>_wL=ZXU}fhv}w_zMYCqjnlNEPXJ_Z^ z(#Q-C)8h*&WmQYQ0!?Ho3GxeOcy{ly+}wrbKz^L3i(`ny<+bO``5FvFm@iD3e^0yM zf47oI6O-}0H|CPPGPCbrl={!;qp4US%61?wT6?MZ#+OYg&-KD)O7w1e%BHuK^I*nF x`2+=)4e<+iGp;+Y+?(ET=Juz(R^jf}j8= Date: Sat, 21 May 2016 08:45:55 -0500 Subject: [PATCH 056/383] cherry-pick from github.com/minetest/minetest_game> Doors: Fix uninitialized state variable --- mods/doors/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 90ddcc3d..302eb08f 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -140,6 +140,8 @@ function _doors.door_toggle(pos, clicker) -- fix up lvm-placed right-hinged doors, default closed if minetest.get_node(pos).name:sub(-2) == "_b" then state = 2 + else + state = 0 end else state = tonumber(state) From 7a1b975f8f351290858ddbf17c61a540cf9b5d33 Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 21 May 2016 03:32:50 +0100 Subject: [PATCH 057/383] cherry-pick from github.com/minetest/minetest_game> Vessels: Make shelf open on 2 sides not impossible 4 sides Make shelf facedir rotatable as is now required --- mods/vessels/init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua index b36eea20..025a5c7c 100644 --- a/mods/vessels/init.lua +++ b/mods/vessels/init.lua @@ -15,7 +15,9 @@ local vessels_shelf_formspec = minetest.register_node("vessels:shelf", { description = "Vessels shelf", - tiles = {"default_wood.png", "default_wood.png", "vessels_shelf.png"}, + tiles = {"default_wood.png", "default_wood.png", "default_wood.png", + "default_wood.png", "vessels_shelf.png", "vessels_shelf.png"}, + paramtype2 = "facedir", is_ground_content = false, groups = {choppy=3,oddly_breakable_by_hand=2,flammable=3}, sounds = default.node_sound_wood_defaults(), From b80af1bc95cf6086cab30c86c8aed4dc66446464 Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 21 May 2016 03:49:28 +0100 Subject: [PATCH 058/383] cherry-pick from github.com/minetest/minetest_game> Vessels: Improve code style --- mods/vessels/init.lua | 61 +++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua index 025a5c7c..e56cc284 100644 --- a/mods/vessels/init.lua +++ b/mods/vessels/init.lua @@ -2,24 +2,24 @@ -- See README.txt for licensing and other information. local vessels_shelf_formspec = - "size[8,7;]".. - default.gui_bg.. - default.gui_bg_img.. - default.gui_slots.. - "list[context;vessels;0,0.3;8,2;]".. - "list[current_player;main;0,2.85;8,1;]".. - "list[current_player;main;0,4.08;8,3;8]".. - "listring[context;vessels]".. - "listring[current_player;main]".. - default.get_hotbar_bg(0,2.85) + "size[8,7;]" .. + default.gui_bg .. + default.gui_bg_img .. + default.gui_slots .. + "list[context;vessels;0,0.3;8,2;]" .. + "list[current_player;main;0,2.85;8,1;]" .. + "list[current_player;main;0,4.08;8,3;8]" .. + "listring[context;vessels]" .. + "listring[current_player;main]" .. + default.get_hotbar_bg(0, 2.85) minetest.register_node("vessels:shelf", { - description = "Vessels shelf", + description = "Vessels Shelf", tiles = {"default_wood.png", "default_wood.png", "default_wood.png", "default_wood.png", "vessels_shelf.png", "vessels_shelf.png"}, paramtype2 = "facedir", is_ground_content = false, - groups = {choppy=3,oddly_breakable_by_hand=2,flammable=3}, + groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = default.node_sound_wood_defaults(), on_construct = function(pos) @@ -53,18 +53,18 @@ minetest.register_node("vessels:shelf", { on_blast = function(pos) local drops = {} default.get_inventory_drops(pos, "vessels", drops) - drops[#drops+1] = "vessels:shelf" + drops[#drops + 1] = "vessels:shelf" minetest.remove_node(pos) return drops end, }) minetest.register_craft({ - output = 'vessels:shelf', + output = "vessels:shelf", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:vessel', 'group:vessel', 'group:vessel'}, - {'group:wood', 'group:wood', 'group:wood'}, + {"group:wood", "group:wood", "group:wood"}, + {"group:vessel", "group:vessel", "group:vessel"}, + {"group:wood", "group:wood", "group:wood"}, } }) @@ -81,16 +81,16 @@ minetest.register_node("vessels:glass_bottle", { type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} }, - groups = {vessel=1,dig_immediate=3,attached_node=1}, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, sounds = default.node_sound_glass_defaults(), }) minetest.register_craft( { output = "vessels:glass_bottle 10", recipe = { - { "default:glass", "", "default:glass" }, - { "default:glass", "", "default:glass" }, - { "", "default:glass", "" } + {"default:glass", "", "default:glass"}, + {"default:glass", "", "default:glass"}, + {"", "default:glass", ""} } }) @@ -107,16 +107,16 @@ minetest.register_node("vessels:drinking_glass", { type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} }, - groups = {vessel=1,dig_immediate=3,attached_node=1}, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, sounds = default.node_sound_glass_defaults(), }) minetest.register_craft( { output = "vessels:drinking_glass 14", recipe = { - { "default:glass", "", "default:glass" }, - { "default:glass", "", "default:glass" }, - { "default:glass", "default:glass", "default:glass" } + {"default:glass", "", "default:glass"}, + {"default:glass", "", "default:glass"}, + {"default:glass", "default:glass", "default:glass"} } }) @@ -133,21 +133,21 @@ minetest.register_node("vessels:steel_bottle", { type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} }, - groups = {vessel=1,dig_immediate=3,attached_node=1}, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, sounds = default.node_sound_defaults(), }) minetest.register_craft( { output = "vessels:steel_bottle 5", recipe = { - { "default:steel_ingot", "", "default:steel_ingot" }, - { "default:steel_ingot", "", "default:steel_ingot" }, - { "", "default:steel_ingot", "" } + {"default:steel_ingot", "", "default:steel_ingot"}, + {"default:steel_ingot", "", "default:steel_ingot"}, + {"", "default:steel_ingot", ""} } }) --- Make sure we can recycle them +-- Glass and steel recycling minetest.register_craftitem("vessels:glass_fragments", { description = "Pile of Glass Fragments", @@ -183,4 +183,3 @@ minetest.register_craft( { output = "default:steel_ingot", recipe = "vessels:steel_bottle", }) - From 0da14dbb5609f9593a62d459f63c04e455113302 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sun, 6 Mar 2016 21:39:07 -0800 Subject: [PATCH 059/383] cherry-pick from github.com/minetest/minetest_game> Default: Convert saplings to use node timers Each sapling is given a single node timer that is between 2 and 4 days of game play time (40-80 minutes). If you walk out of the zone, and come back later, the tree will always grow to full if the timer has elapsed. Because trees.lua is all functions, it needs to be parsed before nodes.lua, since that references some of its functions. Hence, change the order of parsing here. Otherwise saplings would not grow to full. --- mods/default/init.lua | 2 +- mods/default/nodes.lua | 20 +++++++++ mods/default/trees.lua | 99 ++++++++++++++++++++++-------------------- 3 files changed, 73 insertions(+), 48 deletions(-) diff --git a/mods/default/init.lua b/mods/default/init.lua index 6f1b148b..b362fc75 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -36,6 +36,7 @@ default.gui_survival_form = "size[8,8.5]".. -- Load files dofile(minetest.get_modpath("default").."/functions.lua") +dofile(minetest.get_modpath("default").."/trees.lua") dofile(minetest.get_modpath("default").."/nodes.lua") dofile(minetest.get_modpath("default").."/furnace.lua") dofile(minetest.get_modpath("default").."/tools.lua") @@ -43,6 +44,5 @@ dofile(minetest.get_modpath("default").."/craftitems.lua") dofile(minetest.get_modpath("default").."/crafting.lua") dofile(minetest.get_modpath("default").."/mapgen.lua") dofile(minetest.get_modpath("default").."/player.lua") -dofile(minetest.get_modpath("default").."/trees.lua") dofile(minetest.get_modpath("default").."/aliases.lua") dofile(minetest.get_modpath("default").."/legacy.lua") diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 26ffa02a..6a3afda1 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -455,6 +455,10 @@ minetest.register_node("default:sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, + on_timer = default.grow_sapling, + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(2400,4800)) + end, selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} @@ -573,6 +577,10 @@ minetest.register_node("default:junglesapling", { paramtype = "light", sunlight_propagates = true, walkable = false, + on_timer = default.grow_sapling, + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(2400,4800)) + end, selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} @@ -634,6 +642,10 @@ minetest.register_node("default:pine_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, + on_timer = default.grow_sapling, + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(2400,4800)) + end, selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} @@ -695,6 +707,10 @@ minetest.register_node("default:acacia_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, + on_timer = default.grow_sapling, + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(2400,4800)) + end, selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} @@ -755,6 +771,10 @@ minetest.register_node("default:aspen_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, + on_timer = default.grow_sapling, + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(2400,4800)) + end, selection_box = { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} diff --git a/mods/default/trees.lua b/mods/default/trees.lua index de2452e4..1b062660 100644 --- a/mods/default/trees.lua +++ b/mods/default/trees.lua @@ -59,58 +59,63 @@ end -- Sapling ABM -minetest.register_abm({ - nodenames = {"default:sapling", "default:junglesapling", - "default:pine_sapling", "default:acacia_sapling", - "default:aspen_sapling"}, - interval = 10, - chance = 50, - action = function(pos, node) - if not default.can_grow(pos) then - return - end +function default.grow_sapling(pos) + if not default.can_grow(pos) then + -- try a bit later again + minetest.get_node_timer(pos):start(math.random(240, 600)) + return + end - local mapgen = minetest.get_mapgen_params().mgname - if node.name == "default:sapling" then - minetest.log("action", "A sapling grows into a tree at ".. - minetest.pos_to_string(pos)) - if mapgen == "v6" then - default.grow_tree(pos, random(1, 4) == 1) - else - default.grow_new_apple_tree(pos) - end - elseif node.name == "default:junglesapling" then - minetest.log("action", "A jungle sapling grows into a tree at ".. - minetest.pos_to_string(pos)) - if mapgen == "v6" then - default.grow_jungle_tree(pos) - else - default.grow_new_jungle_tree(pos) - end - elseif node.name == "default:pine_sapling" then - minetest.log("action", "A pine sapling grows into a tree at ".. - minetest.pos_to_string(pos)) - local snow = is_snow_nearby(pos) - if mapgen == "v6" then - default.grow_pine_tree(pos, snow) - elseif snow then - default.grow_new_snowy_pine_tree(pos) - else - default.grow_new_pine_tree(pos) - end - elseif node.name == "default:acacia_sapling" then - minetest.log("action", "An acacia sapling grows into a tree at ".. - minetest.pos_to_string(pos)) - default.grow_new_acacia_tree(pos) - elseif node.name == "default:aspen_sapling" then - minetest.log("action", "An aspen sapling grows into a tree at ".. - minetest.pos_to_string(pos)) - default.grow_new_aspen_tree(pos) + local mapgen = minetest.get_mapgen_params().mgname + local node = minetest.get_node(pos) + if node.name == "default:sapling" then + minetest.log("action", "A sapling grows into a tree at ".. + minetest.pos_to_string(pos)) + if mapgen == "v6" then + default.grow_tree(pos, random(1, 4) == 1) + else + default.grow_new_apple_tree(pos) end + elseif node.name == "default:junglesapling" then + minetest.log("action", "A jungle sapling grows into a tree at ".. + minetest.pos_to_string(pos)) + if mapgen == "v6" then + default.grow_jungle_tree(pos) + else + default.grow_new_jungle_tree(pos) + end + elseif node.name == "default:pine_sapling" then + minetest.log("action", "A pine sapling grows into a tree at ".. + minetest.pos_to_string(pos)) + local snow = is_snow_nearby(pos) + if mapgen == "v6" then + default.grow_pine_tree(pos, snow) + elseif snow then + default.grow_new_snowy_pine_tree(pos) + else + default.grow_new_pine_tree(pos) + end + elseif node.name == "default:acacia_sapling" then + minetest.log("action", "An acacia sapling grows into a tree at ".. + minetest.pos_to_string(pos)) + default.grow_new_acacia_tree(pos) + elseif node.name == "default:aspen_sapling" then + minetest.log("action", "An aspen sapling grows into a tree at ".. + minetest.pos_to_string(pos)) + default.grow_new_aspen_tree(pos) + end +end + +minetest.register_lbm({ + name = "default:convert_saplings_to_node_timer", + nodenames = {"default:sapling", "default:junglesapling", + "default:pine_sapling", "default:acacia_sapling", + "default:aspen_sapling"}, + action = function(pos) + minetest.get_node_timer(pos):start(math.random(1200, 2400)) end }) - -- -- Tree generation -- From 5bb740cac3c4e90ddfa208bf4479f57049c2e0f3 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 28 May 2016 22:58:57 +0200 Subject: [PATCH 060/383] update submodules --- mods/3d_armor | 2 +- mods/farming | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/3d_armor b/mods/3d_armor index 3cf6887a..ac414d3d 160000 --- a/mods/3d_armor +++ b/mods/3d_armor @@ -1 +1 @@ -Subproject commit 3cf6887abddf02443dd29dc4f9e0ffcde9204c9a +Subproject commit ac414d3df3bf34cc060f0eede40dc7a1e392f300 diff --git a/mods/farming b/mods/farming index d9cb99aa..a54fb834 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit d9cb99aa2c979c3d2711cb40e33128ea1fc2878a +Subproject commit a54fb83486ecaee464cf0f058112006f058b48d8 From 30241f62ad9498575b63712d4d78551ca006c9f4 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 31 May 2016 09:57:11 +0200 Subject: [PATCH 061/383] update submodules --- mods/mobs_redo | 2 +- mods/wine | 2 +- mods/xdecor | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/mobs_redo b/mods/mobs_redo index c6d4b957..bed18e11 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit c6d4b957686ca97748ba1145274fea4c0eef1759 +Subproject commit bed18e114fc6dd398a9466d71f3fbbdf1867fd34 diff --git a/mods/wine b/mods/wine index bfb7ba69..1653f977 160000 --- a/mods/wine +++ b/mods/wine @@ -1 +1 @@ -Subproject commit bfb7ba696df5dc7135687f9b5032ae279fa9dc6a +Subproject commit 1653f977f3a4388463e080d79347b22a40ec6b13 diff --git a/mods/xdecor b/mods/xdecor index a01fe4d5..530160f9 160000 --- a/mods/xdecor +++ b/mods/xdecor @@ -1 +1 @@ -Subproject commit a01fe4d511e447749d711d570a5ea5fb7e19e2ea +Subproject commit 530160f9fef02a7b6e06393dd608ee7402d949a5 From 6f9cf1e999f6ae01fce93760ddc712a4af71043b Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 31 May 2016 10:49:38 +0200 Subject: [PATCH 062/383] update submodules --- mods/xdecor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/xdecor b/mods/xdecor index 530160f9..225bc22f 160000 --- a/mods/xdecor +++ b/mods/xdecor @@ -1 +1 @@ -Subproject commit 530160f9fef02a7b6e06393dd608ee7402d949a5 +Subproject commit 225bc22fe075005724c7915c8194fe366cf791f4 From d2f63e50c56905d9b553a843a407ab4ac6e5cea4 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 31 May 2016 18:02:13 +0200 Subject: [PATCH 063/383] change pick_diamond speed and make it group 3 again --- mods/default/tools.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mods/default/tools.lua b/mods/default/tools.lua index 2e9b590f..26e3040a 100644 --- a/mods/default/tools.lua +++ b/mods/default/tools.lua @@ -88,8 +88,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.55, [3] = 0.35}, uses = 30, maxlevel= 2} + cracky = {times = {[1] = 2.25, [2] = 0.70, [3] = 0.55}, uses = 30, maxlevel= 3} }, damage_groups = {fleshy=5}, }, From 87551af24b2a6d52e8785649cc99bb1e5d63dde1 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 31 May 2016 18:12:02 +0200 Subject: [PATCH 064/383] add caverealms to submodules --- .gitmodules | 3 +++ mods/caverealms | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/caverealms diff --git a/.gitmodules b/.gitmodules index 384bc3e0..c9f114e6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -46,3 +46,6 @@ [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 diff --git a/mods/caverealms b/mods/caverealms new file mode 160000 index 00000000..2ceac65e --- /dev/null +++ b/mods/caverealms @@ -0,0 +1 @@ +Subproject commit 2ceac65e7667207516e4590f594eb8aaef41b389 From 40a736cc14bf8b26be575237f4f01f10bd0354b7 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 31 May 2016 18:17:11 +0200 Subject: [PATCH 065/383] update submodule caverealms --- mods/caverealms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/caverealms b/mods/caverealms index 2ceac65e..2a56a342 160000 --- a/mods/caverealms +++ b/mods/caverealms @@ -1 +1 @@ -Subproject commit 2ceac65e7667207516e4590f594eb8aaef41b389 +Subproject commit 2a56a342bb3d60eadbbd729644d5abcbce72c85e From e6ab3a5977cf2c8799071ffbf7e9169c4a3cc7d4 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 31 May 2016 19:12:39 +0200 Subject: [PATCH 066/383] update submodule xdecor --- mods/xdecor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/xdecor b/mods/xdecor index 225bc22f..e0f401ba 160000 --- a/mods/xdecor +++ b/mods/xdecor @@ -1 +1 @@ -Subproject commit 225bc22fe075005724c7915c8194fe366cf791f4 +Subproject commit e0f401bad71cc7ac8739251464902c921feba184 From 30e1476c5d150aa55340dfb2f50d1022a6d19c1e Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 1 Jun 2016 18:44:10 +0200 Subject: [PATCH 067/383] replace default crafting_guide in initial stuff --- mods/give_initial_stuff/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/give_initial_stuff/init.lua b/mods/give_initial_stuff/init.lua index 6d273fc2..2cb17686 100644 --- a/mods/give_initial_stuff/init.lua +++ b/mods/give_initial_stuff/init.lua @@ -6,7 +6,7 @@ minetest.register_on_newplayer(function(player) 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', 'craft_guide:sign_wall 1') + player:get_inventory():add_item('main', 'xdecor:crafting_guide 1') player:get_inventory():add_item('main', '') player:get_inventory():add_item('main', '') player:get_inventory():add_item('main', '') From 633be8f94ed882fda97bb4b57d049fca13a01584 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 4 Jun 2016 22:48:50 +0200 Subject: [PATCH 068/383] update submodule wine, darkage --- mods/darkage | 2 +- mods/wine | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/darkage b/mods/darkage index b5d42052..30f5a57a 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit b5d42052af5b413edc2bc9b82eb6cefe6a26d9ba +Subproject commit 30f5a57ac68859dfd123dab5b0576d53165e008f diff --git a/mods/wine b/mods/wine index 1653f977..4953c57d 160000 --- a/mods/wine +++ b/mods/wine @@ -1 +1 @@ -Subproject commit 1653f977f3a4388463e080d79347b22a40ec6b13 +Subproject commit 4953c57dc8df31fe68e8986bb84565431ebe4406 From f9b87f3300eb160b153c248ca80a7ff9195b5098 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 5 Jun 2016 19:04:44 +0200 Subject: [PATCH 069/383] update submdoule illuna and mobs_redo --- mods/illuna | 2 +- mods/mobs_redo | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/illuna b/mods/illuna index b4c21890..306d3d56 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit b4c21890c6953d2f7c2c2e555ab120cdb3cbe3e2 +Subproject commit 306d3d56767ad6c3f21bae1577a6f1b7ca202e24 diff --git a/mods/mobs_redo b/mods/mobs_redo index bed18e11..253351ef 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit bed18e114fc6dd398a9466d71f3fbbdf1867fd34 +Subproject commit 253351ef7f4a120aba7d0827b11eeb04eee4cb47 From 10d1f448b2d5b65af7646ce38de2b1f06dfbd788 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 8 Jun 2016 13:18:50 +0200 Subject: [PATCH 070/383] update submodule darkage, mobs_redo --- mods/darkage | 2 +- mods/mobs_redo | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/darkage b/mods/darkage index 30f5a57a..272e10fc 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit 30f5a57ac68859dfd123dab5b0576d53165e008f +Subproject commit 272e10fc3d59e1f5dc05ebc2ec1bd2b46f8d725b diff --git a/mods/mobs_redo b/mods/mobs_redo index 253351ef..d0fc69d4 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit 253351ef7f4a120aba7d0827b11eeb04eee4cb47 +Subproject commit d0fc69d4585aaa53a833619c43670964f56fe0bd From 72f68f9de0a08f3bb0e886b6699ebc09cec02950 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 8 Jun 2016 19:54:34 +0200 Subject: [PATCH 071/383] update submdoule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 306d3d56..0377f12e 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 306d3d56767ad6c3f21bae1577a6f1b7ca202e24 +Subproject commit 0377f12e3f8a43f4a9051f8cb0ec7e5d0f2df1e6 From 72e72d0bd374c7a44819670a23a568fac7359735 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 8 Jun 2016 20:02:26 +0200 Subject: [PATCH 072/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 0377f12e..3b3fc170 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 0377f12e3f8a43f4a9051f8cb0ec7e5d0f2df1e6 +Subproject commit 3b3fc170d917659d250608ff19aac24289114dc0 From f9861a86bbfd2113e18486cd907ad706402bfc70 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 9 Jun 2016 12:30:06 +0200 Subject: [PATCH 073/383] add wardrobe to submodules --- .gitmodules | 3 +++ mods/wardrobe | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/wardrobe diff --git a/.gitmodules b/.gitmodules index c9f114e6..be66310f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -49,3 +49,6 @@ [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 diff --git a/mods/wardrobe b/mods/wardrobe new file mode 160000 index 00000000..598113eb --- /dev/null +++ b/mods/wardrobe @@ -0,0 +1 @@ +Subproject commit 598113ebfe87b60b7367334fa2f0e4a73d8aedaa From 3f8d39113f04e341b5e2fa4b1ce53d49443179b9 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 9 Jun 2016 12:39:50 +0200 Subject: [PATCH 074/383] update submodule wardrobe --- mods/wardrobe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/wardrobe b/mods/wardrobe index 598113eb..f0e32308 160000 --- a/mods/wardrobe +++ b/mods/wardrobe @@ -1 +1 @@ -Subproject commit 598113ebfe87b60b7367334fa2f0e4a73d8aedaa +Subproject commit f0e32308d06726489670b76bd4d1b9605b17e250 From 7375b9a8faff6e521ad034311573f5f625f5b344 Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 10 Jun 2016 09:38:08 +0200 Subject: [PATCH 075/383] add ctravelnet to submodules --- .gitmodules | 3 +++ mods/ctravelnet | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/ctravelnet diff --git a/.gitmodules b/.gitmodules index be66310f..d3263f9f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -52,3 +52,6 @@ [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 diff --git a/mods/ctravelnet b/mods/ctravelnet new file mode 160000 index 00000000..8d16bba9 --- /dev/null +++ b/mods/ctravelnet @@ -0,0 +1 @@ +Subproject commit 8d16bba952dc03a3008e3d04eb3d26682111d9c5 From b87d427ac231f47686fe14fcb71ed05cd677b33e Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 10 Jun 2016 20:27:02 +0200 Subject: [PATCH 076/383] update submodule illuna, mobs_redo --- mods/illuna | 2 +- mods/mobs_redo | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/illuna b/mods/illuna index 3b3fc170..1c6d2049 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 3b3fc170d917659d250608ff19aac24289114dc0 +Subproject commit 1c6d2049ff929b53fdc0fc60d426841972b4f052 diff --git a/mods/mobs_redo b/mods/mobs_redo index d0fc69d4..54beb826 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit d0fc69d4585aaa53a833619c43670964f56fe0bd +Subproject commit 54beb82686c6bb470a4463d04963d8ed9c07757f From b9e4c394fdf34f9f19362adef879130e7587207d Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 10 Jun 2016 20:59:41 +0200 Subject: [PATCH 077/383] remove old bags mod --- .gitmodules | 2 +- mods/bags | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 160000 mods/bags diff --git a/.gitmodules b/.gitmodules index d3263f9f..8639438c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -33,7 +33,7 @@ url = https://github.com/stujones11/minetest-3d_armor [submodule "mods/bags"] path = mods/bags - url = https://github.com/cornernote/minetest-bags + url = https://git.tchncs.de/Illuna-Minetest/bags.git [submodule "mods/plantlife_modpack"] path = mods/plantlife_modpack url = https://git.tchncs.de/Illuna-Minetest/plantlife_modpack.git diff --git a/mods/bags b/mods/bags deleted file mode 160000 index f17d829b..00000000 --- a/mods/bags +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f17d829b66afda596d6eae450443b15d2fd95031 From ba5d33dc2e2c56c2c3ca012fce558a12730cc198 Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 10 Jun 2016 21:01:19 +0200 Subject: [PATCH 078/383] add forked bags mod to submodules --- .gitmodules | 6 +++--- mods/bags | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) create mode 160000 mods/bags diff --git a/.gitmodules b/.gitmodules index 8639438c..f6dd539c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -31,9 +31,6 @@ [submodule "mods/3d_armor"] path = mods/3d_armor url = https://github.com/stujones11/minetest-3d_armor -[submodule "mods/bags"] - path = mods/bags - url = https://git.tchncs.de/Illuna-Minetest/bags.git [submodule "mods/plantlife_modpack"] path = mods/plantlife_modpack url = https://git.tchncs.de/Illuna-Minetest/plantlife_modpack.git @@ -55,3 +52,6 @@ [submodule "mods/ctravelnet"] path = mods/ctravelnet url = https://git.tchncs.de/Illuna-Minetest/ctravelnet.git +[submodule "mods/bags"] + path = mods/bags + url = https://git.tchncs.de/Illuna-Minetest/bags.git diff --git a/mods/bags b/mods/bags new file mode 160000 index 00000000..f17d829b --- /dev/null +++ b/mods/bags @@ -0,0 +1 @@ +Subproject commit f17d829b66afda596d6eae450443b15d2fd95031 From b4e6b5ba3cb5070009afa1b9584fbc9c65d53449 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 14 Jun 2016 13:07:44 +0200 Subject: [PATCH 079/383] update submodule hudbars, mobs_monster, mobs_redo --- mods/hudbars | 2 +- mods/mobs_monster | 2 +- mods/mobs_redo | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/hudbars b/mods/hudbars index d2074e96..58a5fe3e 160000 --- a/mods/hudbars +++ b/mods/hudbars @@ -1 +1 @@ -Subproject commit d2074e966b9671f9cadec44f2e1b0390af124370 +Subproject commit 58a5fe3e2e90ca768f429f6313b476314f890806 diff --git a/mods/mobs_monster b/mods/mobs_monster index f83ecdfd..08152762 160000 --- a/mods/mobs_monster +++ b/mods/mobs_monster @@ -1 +1 @@ -Subproject commit f83ecdfdf94f6eb01f9d453341f3d332fb0cb951 +Subproject commit 081527629e6ab472937f8e97d4c646cb62b0a18f diff --git a/mods/mobs_redo b/mods/mobs_redo index 54beb826..db7e02af 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit 54beb82686c6bb470a4463d04963d8ed9c07757f +Subproject commit db7e02af1a8e674934ce6646516e25f5a2b88aca From d9449fcd56f53d28b8b4e98dda56cdc62723c27c Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 14 Jun 2016 13:17:51 +0200 Subject: [PATCH 080/383] update submodule mobs_animal --- mods/mobs_animal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_animal b/mods/mobs_animal index 4718d6ee..11b16633 160000 --- a/mods/mobs_animal +++ b/mods/mobs_animal @@ -1 +1 @@ -Subproject commit 4718d6ee1b141fb2e35c3dfe38e6b43a801317ac +Subproject commit 11b16633e54637b86ba44c442f2568ae2cf1e28e From ca1e88ed3d45dd433ee7c126b30fde28f228888a Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 15 Jun 2016 19:38:15 +0200 Subject: [PATCH 081/383] update submodule ctravelnet --- mods/ctravelnet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ctravelnet b/mods/ctravelnet index 8d16bba9..28d47391 160000 --- a/mods/ctravelnet +++ b/mods/ctravelnet @@ -1 +1 @@ -Subproject commit 8d16bba952dc03a3008e3d04eb3d26682111d9c5 +Subproject commit 28d4739144ec1f9c654656849eea5f26c9a81b76 From 1f191596898cdae9b85232128c166299a2745daa Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 15 Jun 2016 20:48:38 +0200 Subject: [PATCH 082/383] update submodule bags --- mods/bags | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/bags b/mods/bags index f17d829b..b073bcb7 160000 --- a/mods/bags +++ b/mods/bags @@ -1 +1 @@ -Subproject commit f17d829b66afda596d6eae450443b15d2fd95031 +Subproject commit b073bcb760328654e9d73e61bf950a56d8adbbb5 From 71a593ad885e961c9a64c9c357a15692f6775e08 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sat, 12 Mar 2016 20:19:37 -0800 Subject: [PATCH 083/383] cherry-pick from github.com/minetest/minetest_game> Fire: move fire node removal out of ABM. --- mods/fire/init.lua | 56 +++++++++++++++------------------------------- 1 file changed, 18 insertions(+), 38 deletions(-) diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 457f6b5e..832b7014 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -28,14 +28,24 @@ minetest.register_node("fire:basic_flame", { sunlight_propagates = true, 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 + minetest.remove_node(pos) + return + end + -- restart timer + return true + end, drop = "", on_construct = function(pos) - minetest.after(0, fire.on_flame_add_at, pos) + minetest.get_node_timer(pos):start(math.random(30, 60)) + minetest.after(0, fire.update_sounds_around, pos) end, on_destruct = function(pos) - minetest.after(0, fire.on_flame_remove_at, pos) + minetest.after(0, fire.update_sounds_around, pos) end, on_blast = function() @@ -169,32 +179,6 @@ function fire.update_sounds_around(pos) end --- Update fire sounds on flame node construct or destruct - -function fire.on_flame_add_at(pos) - fire.update_sounds_around(pos) -end - - -function fire.on_flame_remove_at(pos) - fire.update_sounds_around(pos) -end - - --- Return positions for flames around a burning node - -function fire.find_pos_for_flame_around(pos) - return minetest.find_node_near(pos, 1, {"air"}) -end - - --- Detect nearby extinguishing nodes - -function fire.flame_should_extinguish(pos) - return minetest.find_node_near(pos, 1, {"group:puts_out_fire"}) -end - - -- Extinguish all flames quickly with water, snow, ice minetest.register_abm({ @@ -239,31 +223,27 @@ else catch_up = false, action = function(p0, node, _, _) -- If there is water or stuff like that around node, don't ignite - if fire.flame_should_extinguish(p0) then + if minetest.find_node_near(p0, 1, {"group:puts_out_fire"}) then return end - local p = fire.find_pos_for_flame_around(p0) + local p = minetest.find_node_near(p0, 1, {"air"}) if p then minetest.set_node(p, {name = "fire:basic_flame"}) end end, }) - -- Remove basic flames and flammable nodes + -- Remove flammable nodes minetest.register_abm({ nodenames = {"fire:basic_flame"}, + neighbors = "group:flammable", interval = 5, - chance = 6, + chance = 18, catch_up = false, action = function(p0, node, _, _) - -- If there are no flammable nodes around flame, remove flame local p = minetest.find_node_near(p0, 1, {"group:flammable"}) - if not p then - minetest.remove_node(p0) - return - end - if math.random(1, 3) == 1 then + if p then -- remove flammable nodes around flame local node = minetest.get_node(p) local def = minetest.registered_nodes[node.name] From 37d3fe0cb10b23e4fe51ef1939f702c27ad7c2d4 Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 24 May 2016 05:29:30 +0100 Subject: [PATCH 084/383] cherry-pick from github.com/minetest/minetest_game> Default: Bookshelf has 2 openings instead of 4 --- mods/default/nodes.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 6a3afda1..42011923 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1588,7 +1588,9 @@ local bookshelf_formspec = minetest.register_node("default:bookshelf", { description = "Bookshelf", - tiles = {"default_wood.png", "default_wood.png", "default_bookshelf.png"}, + tiles = {"default_wood.png", "default_wood.png", "default_wood.png", + "default_wood.png", "default_bookshelf.png", "default_bookshelf.png"}, + paramtype2 = "facedir", is_ground_content = false, groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = default.node_sound_wood_defaults(), From b4b24687a3181d40a0a881fa8cf1821903cd677e Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sun, 29 May 2016 16:46:34 -0700 Subject: [PATCH 085/383] cherry-pick from github.com/minetest/minetest_game> Doors: Pass pointed_thing to on_rightclick() callback --- mods/doors/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 302eb08f..b1bf123c 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -254,7 +254,7 @@ function doors.register(name, def) local pdef = minetest.registered_nodes[node.name] if pdef and pdef.on_rightclick then return pdef.on_rightclick(pointed_thing.under, - node, placer, itemstack) + node, placer, itemstack, pointed_thing) end if pdef and pdef.buildable_to then From 97f0ff6c443ef5c69c21bfab79d2bb79ace42fb9 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 5 May 2016 00:55:56 +0100 Subject: [PATCH 086/383] cherry-pick from github.com/minetest/minetest_game> Fire: Ignite tnt, gunpowder, permanent flame above coalblock --- mods/fire/depends.txt | 1 + mods/fire/init.lua | 61 +++++++++++++++++++++++++++++++++++-------- 2 files changed, 51 insertions(+), 11 deletions(-) create mode 100644 mods/fire/depends.txt diff --git a/mods/fire/depends.txt b/mods/fire/depends.txt new file mode 100644 index 00000000..4ad96d51 --- /dev/null +++ b/mods/fire/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 832b7014..08b53a89 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -80,26 +80,51 @@ minetest.register_node("fire:permanent_flame", { end, }) + +-- Flint and steel + minetest.register_tool("fire:flint_and_steel", { description = "Flint and Steel", inventory_image = "fire_flint_steel.png", on_use = function(itemstack, user, pointed_thing) - local player_name = user:get_player_name() + itemstack:add_wear(1000) local pt = pointed_thing - - if pt.type == "node" and minetest.get_node(pt.above).name == "air" then - itemstack:add_wear(1000) + if pt.type == "node" then local node_under = minetest.get_node(pt.under).name - - if minetest.get_item_group(node_under, "flammable") >= 1 then - if not minetest.is_protected(pt.above, player_name) then - minetest.set_node(pt.above, {name = "fire:basic_flame"}) - else - minetest.chat_send_player(player_name, "This area is protected") + local is_coalblock = node_under == "default:coalblock" + local is_tnt = node_under == "tnt:tnt" + local is_gunpowder = node_under == "tnt:gunpowder" + if minetest.get_item_group(node_under, "flammable") >= 1 or + is_coalblock or is_tnt or is_gunpowder then + local flame_pos = pt.above + if is_coalblock then + flame_pos = {x = pt.under.x, y = pt.under.y + 1, z = pt.under.z} + elseif is_tnt or is_gunpowder then + flame_pos = pt.under + end + if minetest.get_node(flame_pos).name == "air" or + is_tnt or is_gunpowder then + local player_name = user:get_player_name() + if not minetest.is_protected(flame_pos, player_name) then + if is_coalblock then + minetest.set_node(flame_pos, + {name = "fire:permanent_flame"}) + elseif is_tnt then + minetest.set_node(flame_pos, + {name = "tnt:tnt_burning"}) + elseif is_gunpowder then + minetest.set_node(flame_pos, + {name = "tnt:gunpowder_burning"}) + else + minetest.set_node(flame_pos, + {name = "fire:basic_flame"}) + end + else + minetest.chat_send_player(player_name, "This area is protected") + end end end end - if not minetest.setting_getbool("creative_mode") then return itemstack end @@ -113,6 +138,20 @@ minetest.register_craft({ } }) + +-- Override coalblock to enable permanent flame above +-- Coalblock is non-flammable to avoid unwanted basic_flame nodes + +minetest.override_item("default:coalblock", { + after_destruct = function(pos, oldnode) + pos.y = pos.y + 1 + if minetest.get_node(pos).name == "fire:permanent_flame" then + minetest.remove_node(pos) + end + end, +}) + + -- Get sound area of position fire.D = 6 -- size of sound areas From 451e18751f21d04f830c2ad58308f5f31c492aa8 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sat, 28 May 2016 23:21:54 -0700 Subject: [PATCH 087/383] cherry-pick from github.com/minetest/minetest_game> Farming: allow LBM's for other mods as well. --- mods/farming | 1 - mods/farming/api.lua | 366 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 366 insertions(+), 1 deletion(-) delete mode 160000 mods/farming create mode 100644 mods/farming/api.lua diff --git a/mods/farming b/mods/farming deleted file mode 160000 index a54fb834..00000000 --- a/mods/farming +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a54fb83486ecaee464cf0f058112006f058b48d8 diff --git a/mods/farming/api.lua b/mods/farming/api.lua new file mode 100644 index 00000000..e25d5b91 --- /dev/null +++ b/mods/farming/api.lua @@ -0,0 +1,366 @@ + +-- Wear out hoes, place soil +-- TODO Ignore group:flower +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, wear out item 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 + itemstack:add_wear(65535/(uses-1)) + 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 + }) + -- 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 + end + if pt.type ~= "node" then + return + 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 + end + if not minetest.registered_nodes[above.name] then + return + end + + -- check if pointing at the top of the node + if pt.above.y ~= pt.under.y+1 then + return + end + + -- check if you can replace the node above the pointed node + if not minetest.registered_nodes[above.name].buildable_to then + return + end + + -- check if pointing at soil + if minetest.get_item_group(under.name, "soil") < 2 then + return + 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 + minetest.swap_node(pos, {name = def.next_plant}) + 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 + minetest.swap_node(pos, {name = def.next_plant}) + + -- 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 + + -- Register seed + local lbm_nodes = {mname .. ":seed_" .. pname} + local g = {seed = 1, snappy = 3, attached_node = 1} + 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", + 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({ + dug = {name = "default_grass_footstep", gain = 0.2}, + place = {name = "default_place_node", gain = 0.25}, + }), + + on_place = function(itemstack, placer, pointed_thing) + 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", + }) + + -- Register growing steps + for i = 1, def.steps do + local drop = { + items = { + {items = {mname .. ":" .. pname}, rarity = 9 - i}, + {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, + {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, + {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 2}, + } + } + local nodegroups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1} + nodegroups[pname] = i + + local next_plant = nil + local on_timer = nil + + if i < def.steps then + next_plant = mname .. ":" .. pname .. "_" .. (i + 1) + on_timer = farming.grow_plant + 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", + 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 = "farming:start_nodetimer_" .. mname .. "_" .. 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 From 0fe3efbfd19f3b9d745725dbf82f09655d6cb04c Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 22 Jun 2016 15:37:41 +0200 Subject: [PATCH 088/383] revert: Farming: allow LBM's for other mods as well. --- mods/farming | 1 + mods/farming/api.lua | 366 ------------------------------------------- 2 files changed, 1 insertion(+), 366 deletions(-) create mode 160000 mods/farming delete mode 100644 mods/farming/api.lua diff --git a/mods/farming b/mods/farming new file mode 160000 index 00000000..a54fb834 --- /dev/null +++ b/mods/farming @@ -0,0 +1 @@ +Subproject commit a54fb83486ecaee464cf0f058112006f058b48d8 diff --git a/mods/farming/api.lua b/mods/farming/api.lua deleted file mode 100644 index e25d5b91..00000000 --- a/mods/farming/api.lua +++ /dev/null @@ -1,366 +0,0 @@ - --- Wear out hoes, place soil --- TODO Ignore group:flower -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, wear out item 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 - itemstack:add_wear(65535/(uses-1)) - 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 - }) - -- 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 - end - if pt.type ~= "node" then - return - 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 - end - if not minetest.registered_nodes[above.name] then - return - end - - -- check if pointing at the top of the node - if pt.above.y ~= pt.under.y+1 then - return - end - - -- check if you can replace the node above the pointed node - if not minetest.registered_nodes[above.name].buildable_to then - return - end - - -- check if pointing at soil - if minetest.get_item_group(under.name, "soil") < 2 then - return - 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 - minetest.swap_node(pos, {name = def.next_plant}) - 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 - minetest.swap_node(pos, {name = def.next_plant}) - - -- 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 - - -- Register seed - local lbm_nodes = {mname .. ":seed_" .. pname} - local g = {seed = 1, snappy = 3, attached_node = 1} - 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", - 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({ - dug = {name = "default_grass_footstep", gain = 0.2}, - place = {name = "default_place_node", gain = 0.25}, - }), - - on_place = function(itemstack, placer, pointed_thing) - 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", - }) - - -- Register growing steps - for i = 1, def.steps do - local drop = { - items = { - {items = {mname .. ":" .. pname}, rarity = 9 - i}, - {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, - {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, - {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 2}, - } - } - local nodegroups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1} - nodegroups[pname] = i - - local next_plant = nil - local on_timer = nil - - if i < def.steps then - next_plant = mname .. ":" .. pname .. "_" .. (i + 1) - on_timer = farming.grow_plant - 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", - 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 = "farming:start_nodetimer_" .. mname .. "_" .. 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 From eff782c61f825a0ad56753c4953802e44c8a78b3 Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 5 Jun 2016 17:21:15 +0100 Subject: [PATCH 089/383] cherry-pick from github.com/minetest/minetest_game> Mapgen: Add biome fields for riverbed node and depth --- mods/default/mapgen.lua | 52 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index 016d58de..c84aa7b4 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -334,6 +334,8 @@ function default.register_biomes() depth_water_top = 10, --node_water = "", node_river_water = "default:ice", + node_riverbed = "default:gravel", + depth_riverbed = 2, y_min = -8, y_max = 31000, heat_point = 0, @@ -372,6 +374,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:gravel", + depth_riverbed = 2, y_min = 2, y_max = 31000, heat_point = 15, @@ -390,6 +394,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:gravel", + depth_riverbed = 2, y_min = -3, y_max = 1, heat_point = 15, @@ -408,6 +414,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:gravel", + depth_riverbed = 2, y_min = -112, y_max = -4, heat_point = 15, @@ -427,6 +435,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = 2, y_max = 31000, heat_point = 15, @@ -445,6 +455,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = -112, y_max = 1, heat_point = 15, @@ -465,6 +477,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = 6, y_max = 31000, heat_point = 40, @@ -483,6 +497,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = 5, y_max = 5, heat_point = 40, @@ -501,6 +517,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = -112, y_max = 4, heat_point = 40, @@ -520,6 +538,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = 6, y_max = 31000, heat_point = 40, @@ -538,6 +558,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = 5, y_max = 5, heat_point = 40, @@ -556,6 +578,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = -112, y_max = 4, heat_point = 40, @@ -575,6 +599,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = 6, y_max = 31000, heat_point = 60, @@ -593,6 +619,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = 5, y_max = 5, heat_point = 60, @@ -611,6 +639,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = -112, y_max = 4, heat_point = 60, @@ -630,6 +660,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = 1, y_max = 31000, heat_point = 60, @@ -648,6 +680,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = -3, y_max = 0, heat_point = 60, @@ -666,6 +700,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = -112, y_max = -4, heat_point = 60, @@ -686,6 +722,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = 5, y_max = 31000, heat_point = 85, @@ -704,6 +742,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = -112, y_max = 4, heat_point = 85, @@ -723,6 +763,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = 1, y_max = 31000, heat_point = 85, @@ -741,6 +783,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = -3, y_max = 0, heat_point = 85, @@ -759,6 +803,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = -112, y_max = -4, heat_point = 85, @@ -778,6 +824,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = 1, y_max = 31000, heat_point = 85, @@ -796,6 +844,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = -3, y_max = 0, heat_point = 85, @@ -814,6 +864,8 @@ function default.register_biomes() --depth_water_top = , --node_water = "", --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, y_min = -112, y_max = -4, heat_point = 85, From 4c3b8376abdc3349c0287061cc2d9b8fa86a440c Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Mon, 30 May 2016 12:03:55 -0700 Subject: [PATCH 090/383] cherry-pick from github.com/minetest/minetest_game> Stairs: Add mossy cobble slab and stair --- game_api.txt | 2 +- mods/default/functions.lua | 10 +++++-- mods/stairs/init.lua | 57 +++++++++++++++++++++++--------------- 3 files changed, 43 insertions(+), 26 deletions(-) diff --git a/game_api.txt b/game_api.txt index 634b7f29..93cf0527 100644 --- a/game_api.txt +++ b/game_api.txt @@ -343,7 +343,7 @@ delivered with Minetest Game, to keep them compatible with other mods. * Registers a stair. * `subname`: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_subname" - * `recipeitem`: Item used in the craft recipe, e.g. "default:cobble" + * `recipeitem`: Item used in the craft recipe, e.g. "default:cobble", may be `nil` * `groups`: see [Known damage and digging time defining groups] * `images`: see [Tile definition] * `description`: used for the description field in the stair's definition diff --git a/mods/default/functions.lua b/mods/default/functions.lua index c3d03a47..fc7c624a 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -455,12 +455,18 @@ minetest.register_abm({ -- minetest.register_abm({ - nodenames = {"default:cobble"}, + nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble"}, neighbors = {"group:water"}, interval = 16, chance = 200, catch_up = false, action = function(pos, node) - minetest.set_node(pos, {name = "default:mossycobble"}) + if node.name == "default:cobble" then + minetest.set_node(pos, {name = "default:mossycobble"}) + 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 + minetest.set_node(pos, {name = "stairs:stair_mossycobble", param2 = node.param2}) + end end }) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 53a8088c..5d53b08d 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -90,24 +90,26 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, }) end - minetest.register_craft({ - output = 'stairs:stair_' .. subname .. ' 6', - recipe = { - {recipeitem, "", ""}, - {recipeitem, recipeitem, ""}, - {recipeitem, recipeitem, recipeitem}, - }, - }) + if recipeitem then + minetest.register_craft({ + output = 'stairs:stair_' .. subname .. ' 6', + recipe = { + {recipeitem, "", ""}, + {recipeitem, recipeitem, ""}, + {recipeitem, recipeitem, recipeitem}, + }, + }) - -- Flipped recipe for the silly minecrafters - minetest.register_craft({ - output = 'stairs:stair_' .. subname .. ' 6', - recipe = { - {"", "", recipeitem}, - {"", recipeitem, recipeitem}, - {recipeitem, recipeitem, recipeitem}, - }, - }) + -- Flipped recipe for the silly minecrafters + minetest.register_craft({ + output = 'stairs:stair_' .. subname .. ' 6', + recipe = { + {"", "", recipeitem}, + {"", recipeitem, recipeitem}, + {recipeitem, recipeitem, recipeitem}, + }, + }) + end end @@ -221,12 +223,14 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, }) end - minetest.register_craft({ - output = 'stairs:slab_' .. subname .. ' 6', - recipe = { - {recipeitem, recipeitem, recipeitem}, - }, - }) + if recipeitem then + minetest.register_craft({ + output = 'stairs:slab_' .. subname .. ' 6', + recipe = { + {recipeitem, recipeitem, recipeitem}, + }, + }) + end end @@ -313,6 +317,13 @@ stairs.register_stair_and_slab("cobble", "default:cobble", "Cobblestone Slab", default.node_sound_stone_defaults()) +stairs.register_stair_and_slab("mossycobble", nil, + {cracky = 3}, + {"default_mossycobble.png"}, + "Mossy Cobblestone Stair", + "Mossy Cobblestone Slab", + default.node_sound_stone_defaults()) + stairs.register_stair_and_slab("stonebrick", "default:stonebrick", {cracky = 3}, {"default_stone_brick.png"}, From 77cdaacaac9b1f7bce9c451a1210421528d4bb75 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sun, 29 May 2016 13:45:18 -0700 Subject: [PATCH 091/383] cherry-pick from github.com/minetest/minetest_game> Default: Make brick and plank nodes rotatable --- mods/default/nodes.lua | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 42011923..f732a8b9 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -202,6 +202,8 @@ minetest.register_node("default:cobble", { minetest.register_node("default:stonebrick", { description = "Stone Brick", + paramtype2 = "facedir", + place_param2 = 0, tiles = {"default_stone_brick.png"}, is_ground_content = false, groups = {cracky = 2, stone = 1}, @@ -236,6 +238,8 @@ minetest.register_node("default:desert_cobble", { minetest.register_node("default:desert_stonebrick", { description = "Desert Stone Brick", + paramtype2 = "facedir", + place_param2 = 0, tiles = {"default_desert_stone_brick.png"}, is_ground_content = false, groups = {cracky = 2, stone = 1}, @@ -252,6 +256,8 @@ minetest.register_node("default:sandstone", { minetest.register_node("default:sandstonebrick", { description = "Sandstone Brick", + paramtype2 = "facedir", + place_param2 = 0, tiles = {"default_sandstone_brick.png"}, is_ground_content = false, groups = {cracky = 2}, @@ -268,6 +274,8 @@ minetest.register_node("default:obsidian", { minetest.register_node("default:obsidianbrick", { description = "Obsidian Brick", + paramtype2 = "facedir", + place_param2 = 0, tiles = {"default_obsidian_brick.png"}, is_ground_content = false, sounds = default.node_sound_stone_defaults(), @@ -439,6 +447,8 @@ minetest.register_node("default:tree", { minetest.register_node("default:wood", { description = "Wooden Planks", + paramtype2 = "facedir", + place_param2 = 0, tiles = {"default_wood.png"}, is_ground_content = false, groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, @@ -539,6 +549,8 @@ minetest.register_node("default:jungletree", { minetest.register_node("default:junglewood", { description = "Junglewood Planks", + paramtype2 = "facedir", + place_param2 = 0, tiles = {"default_junglewood.png"}, is_ground_content = false, groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, @@ -605,6 +617,8 @@ minetest.register_node("default:pine_tree", { minetest.register_node("default:pine_wood", { description = "Pine Wood Planks", + paramtype2 = "facedir", + place_param2 = 0, tiles = {"default_pine_wood.png"}, is_ground_content = false, groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, @@ -670,6 +684,8 @@ minetest.register_node("default:acacia_tree", { minetest.register_node("default:acacia_wood", { description = "Acacia Wood Planks", + paramtype2 = "facedir", + place_param2 = 0, tiles = {"default_acacia_wood.png"}, is_ground_content = false, groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, @@ -734,6 +750,8 @@ minetest.register_node("default:aspen_tree", { minetest.register_node("default:aspen_wood", { description = "Aspen Wood Planks", + paramtype2 = "facedir", + place_param2 = 0, tiles = {"default_aspen_wood.png"}, is_ground_content = false, groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, @@ -1818,6 +1836,8 @@ minetest.register_node("default:rail", { minetest.register_node("default:brick", { description = "Brick Block", + paramtype2 = "facedir", + place_param2 = 0, tiles = {"default_brick.png"}, is_ground_content = false, groups = {cracky = 3}, From a033f68bdcdf4cda6ec55f866796377ac9dfdccf Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sat, 12 Mar 2016 16:12:37 -0800 Subject: [PATCH 092/383] cherry-pick from github.com/minetest/minetest_game> Doors: Clean up nodedef usage --- mods/doors/init.lua | 91 ++++++++++++--------------------------------- 1 file changed, 23 insertions(+), 68 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index b1bf123c..a3ecd384 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -321,6 +321,15 @@ function doors.register(name, def) return itemstack end }) + def.inventory_image = nil + + if def.recipe then + minetest.register_craft({ + output = name, + recipe = def.recipe, + }) + end + def.recipe = nil local can_dig = function(pos, digger) if not def.protected then @@ -386,76 +395,22 @@ function doors.register(name, def) minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) end - minetest.register_node(":" .. name .. "_a", { - description = def.description, - visual = "mesh", - mesh = "door_a.obj", - tiles = def.tiles, - drawtype = "mesh", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - walkable = true, - is_ground_content = false, - buildable_to = false, - drop = def.drop, - groups = def.groups, - sounds = def.sounds, - door = def.door, - on_rightclick = def.on_rightclick, - after_dig_node = def.after_dig_node, - can_dig = def.can_dig, - on_rotate = def.on_rotate, - on_blast = def.on_blast, - on_destruct = def.on_destruct, - selection_box = { - type = "fixed", - fixed = { -1/2,-1/2,-1/2,1/2,3/2,-6/16} - }, - collision_box = { - type = "fixed", - fixed = { -1/2,-1/2,-1/2,1/2,3/2,-6/16} - }, - }) + def.drawtype = "mesh" + def.paramtype = "light" + def.paramtype2 = "facedir" + def.sunlight_propagates = true + def.use_texture_alpha = true + def.walkable = true + def.is_ground_content = false + def.buildable_to = false + def.selection_box = { type = "fixed", fixed = { -1/2,-1/2,-1/2,1/2,3/2,-6/16} } + def.collision_box = { type = "fixed", fixed = { -1/2,-1/2,-1/2,1/2,3/2,-6/16} } - minetest.register_node(":" .. name .. "_b", { - description = def.description, - visual = "mesh", - mesh = "door_b.obj", - tiles = def.tiles, - drawtype = "mesh", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - walkable = true, - is_ground_content = false, - buildable_to = false, - drop = def.drop, - groups = def.groups, - sounds = def.sounds, - door = def.door, - on_rightclick = def.on_rightclick, - after_dig_node = def.after_dig_node, - can_dig = def.can_dig, - on_rotate = def.on_rotate, - on_blast = def.on_blast, - on_destruct = def.on_destruct, - selection_box = { - type = "fixed", - fixed = { -1/2,-1/2,-1/2,1/2,3/2,-6/16} - }, - collision_box = { - type = "fixed", - fixed = { -1/2,-1/2,-1/2,1/2,3/2,-6/16} - }, - }) + def.mesh = "door_a.obj" + minetest.register_node(":" .. name .. "_a", def) - if def.recipe then - minetest.register_craft({ - output = name, - recipe = def.recipe, - }) - end + def.mesh = "door_b.obj" + minetest.register_node(":" .. name .. "_b", def) _doors.registered_doors[name .. "_a"] = true _doors.registered_doors[name .. "_b"] = true From 2de51ee96f7dfa68634f5d641cc3f62b9ff00915 Mon Sep 17 00:00:00 2001 From: Yutao Yuan Date: Fri, 17 Jun 2016 22:47:43 +0800 Subject: [PATCH 093/383] cherry-pick from github.com/minetest/minetest_game> Flowers: Fix misaligned waterlily texture --- mods/flowers/init.lua | 2 +- .../flowers/textures/flowers_waterlily_bottom.png | Bin 0 -> 327 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 mods/flowers/textures/flowers_waterlily_bottom.png diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index 2d8c93e4..2f3cfe1b 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -217,7 +217,7 @@ minetest.register_node("flowers:waterlily", { drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", - tiles = {"flowers_waterlily.png"}, + tiles = {"flowers_waterlily.png", "flowers_waterlily_bottom.png"}, inventory_image = "flowers_waterlily.png", wield_image = "flowers_waterlily.png", liquids_pointable = true, diff --git a/mods/flowers/textures/flowers_waterlily_bottom.png b/mods/flowers/textures/flowers_waterlily_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..3dbeaf400e77f91f7181a0b149453f1488646bf9 GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}RDe&2>;M1%GZ)zaQN|*huqj6A z3$45M`lc@5OyvjX&{EyY0W(=!06stX-3~FgbjfdGr~JgX+wb}uP>u35D#YwD?z9}`y^ zD_vqfwCvqI<5IW%VjSPfeh7wNJzrcO!jTZ)bE0IGr~^a9?RPOe-3cp~@cx;!f1bo6 W?$`EJrLTalWbkzLb6Mw<&;$Sw9)Sn| literal 0 HcmV?d00001 From b64202fbe904bcd3b164905bba4afe031512a05a Mon Sep 17 00:00:00 2001 From: Xunto Date: Mon, 20 Jun 2016 18:05:07 +0300 Subject: [PATCH 094/383] cherry-pick from github.com/minetest/minetest_game> Default: Fix character model uv-mapping --- mods/default/models/character.b3d | Bin 86830 -> 86830 bytes mods/default/models/character.blend | Bin 697616 -> 700448 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/default/models/character.b3d b/mods/default/models/character.b3d index 2699d65b46a8b9a01c060e440efc981617e64882..7558e6f849369c419c8d307f022811ed546bc9f2 100644 GIT binary patch literal 86830 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 XOIzrRcy5N_d+3Xs7_U|y)V=wCU({5p literal 86830 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 diff --git a/mods/default/models/character.blend b/mods/default/models/character.blend index b5c7fc3aff1410f5db3c1a610a086906631068b0..7324325a1197155471dcd0a5aba574d001115c1f 100644 GIT binary patch delta 71213 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 Date: Wed, 22 Jun 2016 22:49:19 +0200 Subject: [PATCH 095/383] Flowers: add mushroom group to mushrooms --- mods/flowers/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index 2f3cfe1b..b7dfbe45 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -135,7 +135,7 @@ minetest.register_node("flowers:mushroom_red", { sunlight_propagates = true, walkable = false, buildable_to = true, - groups = {snappy = 3, attached_node = 1}, + groups = {snappy = 3, attached_node = 1, mushroom = 1}, sounds = default.node_sound_leaves_defaults(), on_use = minetest.item_eat(-5), selection_box = { @@ -154,7 +154,7 @@ minetest.register_node("flowers:mushroom_brown", { sunlight_propagates = true, walkable = false, buildable_to = true, - groups = {snappy = 3, attached_node = 1}, + groups = {snappy = 3, attached_node = 1, mushroom = 1}, sounds = default.node_sound_leaves_defaults(), on_use = minetest.item_eat(1), selection_box = { From a3ecc88a45a93b9086d3c21743e268a31753978c Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 23 Jun 2016 19:08:01 +0200 Subject: [PATCH 096/383] add cottages to submodules --- .gitmodules | 3 +++ mods/cottages | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/cottages diff --git a/.gitmodules b/.gitmodules index f6dd539c..93d9e44d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -55,3 +55,6 @@ [submodule "mods/bags"] path = mods/bags url = https://git.tchncs.de/Illuna-Minetest/bags.git +[submodule "mods/cottages"] + path = mods/cottages + url = https://git.tchncs.de/Illuna-Minetest/cottages.git/ 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 From 92c0bcfa59696d0241b5ae23be630cc952c197a4 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 23 Jun 2016 19:14:14 +0200 Subject: [PATCH 097/383] update submodule mobs_redo, farming, boats, worldedit --- mods/boats | 2 +- mods/farming | 2 +- mods/mobs_redo | 2 +- mods/worldedit | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/boats b/mods/boats index 14ccac7c..a7534e93 160000 --- a/mods/boats +++ b/mods/boats @@ -1 +1 @@ -Subproject commit 14ccac7c86ebb8102c827726867cb9ba7f806d1c +Subproject commit a7534e938834c1a0322e49df796f613ca1f55880 diff --git a/mods/farming b/mods/farming index a54fb834..edb44ff9 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit a54fb83486ecaee464cf0f058112006f058b48d8 +Subproject commit edb44ff925034c42c44b00c54b3753979d0bb675 diff --git a/mods/mobs_redo b/mods/mobs_redo index db7e02af..80ba7db8 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit db7e02af1a8e674934ce6646516e25f5a2b88aca +Subproject commit 80ba7db8ba91d12c274a31eca8778338a120b8b5 diff --git a/mods/worldedit b/mods/worldedit index 61ab240c..b23e9292 160000 --- a/mods/worldedit +++ b/mods/worldedit @@ -1 +1 @@ -Subproject commit 61ab240ceac0ce20f19cbdccdecfd3028cf6893a +Subproject commit b23e92921c4e6f380767ca4be82608bb3de66483 From c882e3361894d2795c8cf72e3919c82a63a46b6e Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 23 Jun 2016 19:45:50 +0200 Subject: [PATCH 098/383] update submodule caverealms --- mods/caverealms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/caverealms b/mods/caverealms index 2a56a342..a76f218d 160000 --- a/mods/caverealms +++ b/mods/caverealms @@ -1 +1 @@ -Subproject commit 2a56a342bb3d60eadbbd729644d5abcbce72c85e +Subproject commit a76f218dba0eefdbd9834be6eb719af42f3c2c21 From e31d456de1942fd8f663b4f777082f1058c8037c Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 29 Jun 2016 09:51:41 +0200 Subject: [PATCH 099/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 1c6d2049..e4d52e94 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 1c6d2049ff929b53fdc0fc60d426841972b4f052 +Subproject commit e4d52e94482676dc359b293dc122de8787636bb2 From 18ea8f6e7ddd184bbcfcfa5ffb45381d9cb39cef Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 29 Jun 2016 09:59:24 +0200 Subject: [PATCH 100/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index e4d52e94..0ee41e0d 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit e4d52e94482676dc359b293dc122de8787636bb2 +Subproject commit 0ee41e0d8329787d8c0ae57d8d06ccecd5a6b402 From 3a42666e46a4f5ed5b317b5ecf1fb78559ef0ac3 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 13 Jul 2016 18:00:33 +0200 Subject: [PATCH 101/383] update submodule farming, worldedit --- mods/farming | 2 +- mods/worldedit | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/farming b/mods/farming index edb44ff9..f93811a8 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit edb44ff925034c42c44b00c54b3753979d0bb675 +Subproject commit f93811a8ab8345e453b962620d997c736b02a8ff diff --git a/mods/worldedit b/mods/worldedit index b23e9292..5afea424 160000 --- a/mods/worldedit +++ b/mods/worldedit @@ -1 +1 @@ -Subproject commit b23e92921c4e6f380767ca4be82608bb3de66483 +Subproject commit 5afea424ba4cf233fb2f7fe48072d4b11e7584da From 1e7ea09713ddabab41387c45f7bb10049b31a7ac Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 15 Jul 2016 19:06:35 +0200 Subject: [PATCH 102/383] default: flowing lava can cool down to basalt --- mods/default/functions.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index fc7c624a..ec39c7df 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -100,11 +100,16 @@ end -- Lavacooling -- +lavagen = { +"darkage:basalt", +"default:stone" +} + 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}) From 892ab3faaa6a03b50875103cbc564085bb0ce0f7 Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 15 Jul 2016 22:33:11 +0200 Subject: [PATCH 103/383] default: get darkage modpath to ensure basalt is available --- mods/default/functions.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index ec39c7df..6db8463b 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -101,10 +101,14 @@ end -- lavagen = { -"darkage:basalt", "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"}) From 2e67cbc1b980f5cbe1a36889cb38554910d3b44d Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 15 Jul 2016 22:58:03 +0200 Subject: [PATCH 104/383] add horses to submodules --- .gitmodules | 3 +++ mods/horses | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/horses diff --git a/.gitmodules b/.gitmodules index 93d9e44d..1bb07f71 100644 --- a/.gitmodules +++ b/.gitmodules @@ -58,3 +58,6 @@ [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 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 From 4ee09a274ba085c8366a25a1729aecb44287f75c Mon Sep 17 00:00:00 2001 From: paramat Date: Wed, 22 Jun 2016 01:41:26 +0100 Subject: [PATCH 105/383] merge upstream commit: Stairs: Stair recipe returns 8 stairs not 6 Make it consistent with the slab recipe which conserves volume --- mods/stairs/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 5d53b08d..5df301b9 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -92,7 +92,7 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, if recipeitem then minetest.register_craft({ - output = 'stairs:stair_' .. subname .. ' 6', + output = 'stairs:stair_' .. subname .. ' 8', recipe = { {recipeitem, "", ""}, {recipeitem, recipeitem, ""}, @@ -102,7 +102,7 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, -- Flipped recipe for the silly minecrafters minetest.register_craft({ - output = 'stairs:stair_' .. subname .. ' 6', + output = 'stairs:stair_' .. subname .. ' 8', recipe = { {"", "", recipeitem}, {"", recipeitem, recipeitem}, From 05332037107d406bf7578fa9e846d300aac11315 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 23 Jun 2016 04:37:19 +0100 Subject: [PATCH 106/383] merge upstream commit: Default: Add stone / desert stone / sandstone / obsidian blocks --- mods/default/README.txt | 4 ++ mods/default/crafting.lua | 36 ++++++++++++++++++ mods/default/nodes.lua | 36 ++++++++++++++++++ .../textures/default_desert_stone_block.png | Bin 0 -> 527 bytes .../textures/default_obsidian_block.png | Bin 0 -> 336 bytes .../textures/default_sandstone_block.png | Bin 0 -> 637 bytes mods/default/textures/default_stone_block.png | Bin 0 -> 498 bytes 7 files changed, 76 insertions(+) create mode 100644 mods/default/textures/default_desert_stone_block.png create mode 100644 mods/default/textures/default_obsidian_block.png create mode 100644 mods/default/textures/default_sandstone_block.png create mode 100644 mods/default/textures/default_stone_block.png diff --git a/mods/default/README.txt b/mods/default/README.txt index 8e72ca5e..9648f2ca 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -112,6 +112,10 @@ paramat (CC BY-SA 3.0): default_obsidian_brick.png default_stone_brick.png default_desert_stone_brick.png + default_sandstone_block.png + default_obsidian_block.png + default_stone_block.png + default_desert_stone_block.png default_river_water.png default_river_water_source_animated.png default_river_water_flowing_animated.png diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua index 998d86ba..0f10e7f9 100644 --- a/mods/default/crafting.lua +++ b/mods/default/crafting.lua @@ -499,6 +499,15 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = 'default:sandstone_block 9', + recipe = { + {'default:sandstone', 'default:sandstone', 'default:sandstone'}, + {'default:sandstone', 'default:sandstone', 'default:sandstone'}, + {'default:sandstone', 'default:sandstone', 'default:sandstone'}, + } +}) + minetest.register_craft({ output = 'default:clay', recipe = { @@ -627,6 +636,15 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = 'default:obsidian_block 9', + recipe = { + {'default:obsidian', 'default:obsidian', 'default:obsidian'}, + {'default:obsidian', 'default:obsidian', 'default:obsidian'}, + {'default:obsidian', 'default:obsidian', 'default:obsidian'}, + } +}) + minetest.register_craft({ output = 'default:stonebrick 4', recipe = { @@ -635,6 +653,15 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = 'default:stone_block 9', + recipe = { + {'default:stone', 'default:stone', 'default:stone'}, + {'default:stone', 'default:stone', 'default:stone'}, + {'default:stone', 'default:stone', 'default:stone'}, + } +}) + minetest.register_craft({ output = 'default:desert_stonebrick 4', recipe = { @@ -643,6 +670,15 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = 'default:desert_stone_block 9', + recipe = { + {'default:desert_stone', 'default:desert_stone', 'default:desert_stone'}, + {'default:desert_stone', 'default:desert_stone', 'default:desert_stone'}, + {'default:desert_stone', 'default:desert_stone', 'default:desert_stone'}, + } +}) + minetest.register_craft({ output = 'default:snowblock', recipe = { diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index f732a8b9..d624829f 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -19,17 +19,21 @@ Stone default:stone default:cobble default:stonebrick +default:stone_block default:mossycobble default:desert_stone default:desert_cobble default:desert_stonebrick +default:desert_stone_block default:sandstone default:sandstonebrick +default:sandstone_block default:obsidian default:obsidianbrick +default:obsidian_block Soft / Non-Stone ---------------- @@ -210,6 +214,14 @@ minetest.register_node("default:stonebrick", { sounds = default.node_sound_stone_defaults(), }) +minetest.register_node("default:stone_block", { + description = "Stone Block", + tiles = {"default_stone_block.png"}, + is_ground_content = false, + groups = {cracky = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), +}) + minetest.register_node("default:mossycobble", { description = "Mossy Cobblestone", tiles = {"default_mossycobble.png"}, @@ -246,6 +258,14 @@ minetest.register_node("default:desert_stonebrick", { sounds = default.node_sound_stone_defaults(), }) +minetest.register_node("default:desert_stone_block", { + description = "Desert Stone Block", + tiles = {"default_desert_stone_block.png"}, + is_ground_content = false, + groups = {cracky = 2, stone = 1}, + sounds = default.node_sound_stone_defaults(), +}) + minetest.register_node("default:sandstone", { description = "Sandstone", @@ -264,6 +284,14 @@ minetest.register_node("default:sandstonebrick", { sounds = default.node_sound_stone_defaults(), }) +minetest.register_node("default:sandstone_block", { + description = "Sandstone Block", + tiles = {"default_sandstone_block.png"}, + is_ground_content = false, + groups = {cracky = 2}, + sounds = default.node_sound_stone_defaults(), +}) + minetest.register_node("default:obsidian", { description = "Obsidian", @@ -282,6 +310,14 @@ minetest.register_node("default:obsidianbrick", { groups = {cracky = 1, level = 2}, }) +minetest.register_node("default:obsidian_block", { + description = "Obsidian Block", + tiles = {"default_obsidian_block.png"}, + is_ground_content = false, + sounds = default.node_sound_stone_defaults(), + groups = {cracky = 1, level = 2}, +}) + -- -- Soft / Non-Stone -- diff --git a/mods/default/textures/default_desert_stone_block.png b/mods/default/textures/default_desert_stone_block.png new file mode 100644 index 0000000000000000000000000000000000000000..ef7ba5bc64680852d603ccd62bf813759bdcac58 GIT binary patch literal 527 zcmV+q0`UEbP)3CL*bduZdF-WANM3-n@imbw%hclGxTbp2=<;7aiN1gPdhT3C05ByaN@)U* zTZn6|@H!~Nxpu31NH@R*8(j@&Gnk z9^UV2-vb~JfbE+acPlN7l#BeU!<_h?$yd4h-CViV-O401vphSp0~g>Veuw~!k^s6s z5=d-J{;AkjF0cc`0dTnA0Z1ve{lHp{548)T^+V-CLhAYm;7@x4(2p-Rms*OgRtbso z0N5BMmh@YrI5&VU#HA~Px`uJankcb+A4dSITrFglc!kxK3;VUHTo68tdutdA*FD_t z8Xo{0%WgK;3c#ss-4KP%)v0V3y~66o2WIej{~rc`b*_w*f;rxX$Z(f8SysM${J@9+ z{Jb>c8pgtEPWd+Ra`VS?voIi#czCWJ&ouxe=Wlnsv^?p@ars47NdU*P{RgY`0Eq@> RNOAxG002ovPDHLkV1o4;<52(r literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_obsidian_block.png b/mods/default/textures/default_obsidian_block.png new file mode 100644 index 0000000000000000000000000000000000000000..262cd37e0d58269035ccc4351f3f6f39b21c7d94 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#0h>6JA*YJ8!yTZ|drud~5RLP_6MeG|8wj+z+lz2*wWK+PGKv0J478q8Ba6CUNQ8JV+V&ii_&Jd?veepg(6 zeMN;cOZsn3pq&33>!0lJ%C0{=6P1xvcBuG8>iG<#XIVhp+$u0Qj)jZs3N|pT_MoK=HBt`1y(ez&SZL)mHAi z#7P@_#|kH7cP>mR2SO?(VDM*XJPZfhKhD!TG`?dfNgHdVP0<@^=lRH$$MFja)F24{ z2bJdJNzk}?$TSDTb$y`~QK?ni>Zk(b=BmjuTD>J5Wz5kT8 z=EMG*TQ8_|-)&P4sm8*(02ly)*y)W@=2qCd6LXOOFwbuQz%hD3oRjSzy*ue{@7%fX zAH2VTAZ;v(L5Nu*s$uiQjY*Jm=h{k&@UO8uZXENx-@b5T?{6hLtgZU6kf6i~0EW%e zFdUpalORbd`r9~ub?%&^CvBzbv6e(iFY5;(3DnM=Qx1LqAQ0VpsjYZ-8n@3eT{(F~ zl+ZYZD+(z|fdK$}H*;6q5=%32_FaCP4zRa85bY!lW(d zq)C$?(zZ2LW*j#Uwi{x&$=Boc{cXx6)>=z;t+DBLDK6IT5h=u#NHU+a`V4;l^?UjY X^zU=7P3joD00000NkvXXu0mjfs@EKb literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_stone_block.png b/mods/default/textures/default_stone_block.png new file mode 100644 index 0000000000000000000000000000000000000000..3b771e725e32c342a26dcee06ec7b7cb5800d974 GIT binary patch literal 498 zcmV#g1^`uEr&2!*^?ncFa=FU(+8&Qbo#$a30Tf!NBJLp~ zk!7uO0Qy@m0q8t0joG#hz_zYqj41c;A#M-C{ly9R_0ol z#sEkTDX}d}02G4vep}b7u3gv3zw&7Y@BJ8K3(V65Kq-~7$)YHlrzav}hpMW$^Z9V# z4TZp0L^Q@IV~p&`0)5|eU6y4#rFa0&1E9zY$=y7h$g;95+5PXVah~Hm|6twLmF1UZ zVZ@0{idR(?zibFW&dXBo_l$*u9-4+i0Kkt0fHAhtP17XvJpVeKg%H+SCQTtQ1BQ`; zmBtW}G{y)a!Z Date: Sun, 20 Sep 2015 16:31:29 +0200 Subject: [PATCH 107/383] merge upstream commit: Gitignore: Update to ignore additional ide/editors --- .gitignore | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 717f5fe0..ef02689c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,22 @@ -## Generic ignorable patterns and files -*~ -.*.swp -*bak* -tags -*.vim - ## Files related to minetest development cycle -*.patch +/*.patch +# GNU Patch reject file +*.rej + +## Editors and Development environments +*~ +*.swp +*.bak* +*.orig +# Vim +*.vim +# Kate +.*.kate-swp +.swp.* +# Eclipse (LDT) +.project +.settings/ +.buildpath +.metadata +# Idea IDE +.idea/* From d75ccebe8fd7f0667ad3672950a938b0dbfc91d9 Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 26 Jun 2016 03:11:42 +0100 Subject: [PATCH 108/383] merge upstream commit: Stairs: Register stone / desert stone / sandstone / obsidian blocks --- mods/stairs/init.lua | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 5df301b9..d438e4e7 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -331,6 +331,13 @@ stairs.register_stair_and_slab("stonebrick", "default:stonebrick", "Stone Brick Slab", default.node_sound_stone_defaults()) +stairs.register_stair_and_slab("stone_block", "default:stone_block", + {cracky = 2}, + {"default_stone_block.png"}, + "Stone Block Stair", + "Stone Block Slab", + default.node_sound_stone_defaults()) + stairs.register_stair_and_slab("desert_stone", "default:desert_stone", {cracky = 3}, {"default_desert_stone.png"}, @@ -352,13 +359,20 @@ stairs.register_stair_and_slab("desert_stonebrick", "default:desert_stonebrick", "Desert Stone Brick Slab", default.node_sound_stone_defaults()) +stairs.register_stair_and_slab("desert_stone_block", "default:desert_stone_block", + {cracky = 2}, + {"default_desert_stone_block.png"}, + "Desert Stone Block Stair", + "Desert Stone Block Slab", + default.node_sound_stone_defaults()) + stairs.register_stair_and_slab("sandstone", "default:sandstone", {crumbly = 1, cracky = 3}, {"default_sandstone.png"}, "Sandstone Stair", "Sandstone Slab", default.node_sound_stone_defaults()) - + stairs.register_stair_and_slab("sandstonebrick", "default:sandstonebrick", {cracky = 2}, {"default_sandstone_brick.png"}, @@ -366,6 +380,13 @@ stairs.register_stair_and_slab("sandstonebrick", "default:sandstonebrick", "Sandstone Brick Slab", default.node_sound_stone_defaults()) +stairs.register_stair_and_slab("sandstone_block", "default:sandstone_block", + {cracky = 2}, + {"default_sandstone_block.png"}, + "Sandstone Block Stair", + "Sandstone Block Slab", + default.node_sound_stone_defaults()) + stairs.register_stair_and_slab("obsidian", "default:obsidian", {cracky = 1, level = 2}, {"default_obsidian.png"}, @@ -380,6 +401,13 @@ stairs.register_stair_and_slab("obsidianbrick", "default:obsidianbrick", "Obsidian Brick Slab", default.node_sound_stone_defaults()) +stairs.register_stair_and_slab("obsidian_block", "default:obsidian_block", + {cracky = 1, level = 2}, + {"default_obsidian_block.png"}, + "Obsidian Block Stair", + "Obsidian Block Slab", + default.node_sound_stone_defaults()) + stairs.register_stair_and_slab("brick", "default:brick", {cracky = 3}, {"default_brick.png"}, From 9c288600dd7a7833777d23a766a9affffe834a30 Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 26 Jun 2016 03:57:30 +0100 Subject: [PATCH 109/383] merge upstream commit: Stairs: Code cleanup, fix various errors --- mods/stairs/init.lua | 394 ++++++++++++++++++++++++++----------------- 1 file changed, 236 insertions(+), 158 deletions(-) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index d438e4e7..81e2d111 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -259,8 +259,8 @@ end -- Stair/slab registration function. -- Nodes will be called stairs:{stair,slab}_ -function stairs.register_stair_and_slab(subname, recipeitem, groups, images, - desc_stair, desc_slab, sounds) +function stairs.register_stair_and_slab(subname, recipeitem, + groups, images, desc_stair, desc_slab, sounds) stairs.register_stair(subname, recipeitem, groups, images, desc_stair, sounds) stairs.register_slab(subname, recipeitem, groups, images, desc_slab, sounds) end @@ -268,184 +268,262 @@ end -- Register default stairs and slabs -stairs.register_stair_and_slab("wood", "default:wood", - {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, - {"default_wood.png"}, - "Wooden Stair", - "Wooden Slab", - default.node_sound_wood_defaults()) +stairs.register_stair_and_slab( + "wood", + "default:wood", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, + {"default_wood.png"}, + "Wooden Stair", + "Wooden Slab", + default.node_sound_wood_defaults() +) -stairs.register_stair_and_slab("junglewood", "default:junglewood", - {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, - {"default_junglewood.png"}, - "Junglewood Stair", - "Junglewood Slab", - default.node_sound_wood_defaults()) +stairs.register_stair_and_slab( + "junglewood", + "default:junglewood", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, + {"default_junglewood.png"}, + "Jungle Wood Stair", + "Jungle Wood Slab", + default.node_sound_wood_defaults() +) -stairs.register_stair_and_slab("pine_wood", "default:pine_wood", - {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, - {"default_pine_wood.png"}, - "Pine Wood Stair", - "Pine Wood Slab", - default.node_sound_wood_defaults()) +stairs.register_stair_and_slab( + "pine_wood", + "default:pine_wood", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, + {"default_pine_wood.png"}, + "Pine Wood Stair", + "Pine Wood Slab", + default.node_sound_wood_defaults() +) -stairs.register_stair_and_slab("acacia_wood", "default:acacia_wood", - {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, - {"default_acacia_wood.png"}, - "Acacia Wood Stair", - "Acacia Wood Slab", - default.node_sound_wood_defaults()) +stairs.register_stair_and_slab( + "acacia_wood", + "default:acacia_wood", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, + {"default_acacia_wood.png"}, + "Acacia Wood Stair", + "Acacia Wood Slab", + default.node_sound_wood_defaults() +) -stairs.register_stair_and_slab("aspen_wood", "default:aspen_wood", - {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, - {"default_aspen_wood.png"}, - "Aspen Wood Stair", - "Aspen Wood Slab", - default.node_sound_wood_defaults()) +stairs.register_stair_and_slab( + "aspen_wood", + "default:aspen_wood", + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, + {"default_aspen_wood.png"}, + "Aspen Wood Stair", + "Aspen Wood Slab", + default.node_sound_wood_defaults() +) -stairs.register_stair_and_slab("stone", "default:stone", - {cracky = 3}, - {"default_stone.png"}, - "Stone Stair", - "Stone Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "stone", + "default:stone", + {cracky = 3}, + {"default_stone.png"}, + "Stone Stair", + "Stone Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("cobble", "default:cobble", - {cracky = 3}, - {"default_cobble.png"}, - "Cobblestone Stair", - "Cobblestone Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "cobble", + "default:cobble", + {cracky = 3}, + {"default_cobble.png"}, + "Cobblestone Stair", + "Cobblestone Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("mossycobble", nil, - {cracky = 3}, - {"default_mossycobble.png"}, - "Mossy Cobblestone Stair", - "Mossy Cobblestone Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "mossycobble", + nil, + {cracky = 3}, + {"default_mossycobble.png"}, + "Mossy Cobblestone Stair", + "Mossy Cobblestone Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("stonebrick", "default:stonebrick", - {cracky = 3}, - {"default_stone_brick.png"}, - "Stone Brick Stair", - "Stone Brick Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "stonebrick", + "default:stonebrick", + {cracky = 2}, + {"default_stone_brick.png"}, + "Stone Brick Stair", + "Stone Brick Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("stone_block", "default:stone_block", - {cracky = 2}, - {"default_stone_block.png"}, - "Stone Block Stair", - "Stone Block Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "stone_block", + "default:stone_block", + {cracky = 2}, + {"default_stone_block.png"}, + "Stone Block Stair", + "Stone Block Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("desert_stone", "default:desert_stone", - {cracky = 3}, - {"default_desert_stone.png"}, - "Desertstone Stair", - "Desertstone Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "desert_stone", + "default:desert_stone", + {cracky = 3}, + {"default_desert_stone.png"}, + "Desert Stone Stair", + "Desert Stone Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("desert_cobble", "default:desert_cobble", - {cracky = 3}, - {"default_desert_cobble.png"}, - "Desert Cobblestone Stair", - "Desert Cobblestone Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "desert_cobble", + "default:desert_cobble", + {cracky = 3}, + {"default_desert_cobble.png"}, + "Desert Cobblestone Stair", + "Desert Cobblestone Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("desert_stonebrick", "default:desert_stonebrick", - {cracky = 3}, - {"default_desert_stone_brick.png"}, - "Desert Stone Brick Stair", - "Desert Stone Brick Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "desert_stonebrick", + "default:desert_stonebrick", + {cracky = 2}, + {"default_desert_stone_brick.png"}, + "Desert Stone Brick Stair", + "Desert Stone Brick Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("desert_stone_block", "default:desert_stone_block", - {cracky = 2}, - {"default_desert_stone_block.png"}, - "Desert Stone Block Stair", - "Desert Stone Block Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "desert_stone_block", + "default:desert_stone_block", + {cracky = 2}, + {"default_desert_stone_block.png"}, + "Desert Stone Block Stair", + "Desert Stone Block Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("sandstone", "default:sandstone", - {crumbly = 1, cracky = 3}, - {"default_sandstone.png"}, - "Sandstone Stair", - "Sandstone Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "sandstone", + "default:sandstone", + {crumbly = 1, cracky = 3}, + {"default_sandstone.png"}, + "Sandstone Stair", + "Sandstone Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("sandstonebrick", "default:sandstonebrick", - {cracky = 2}, - {"default_sandstone_brick.png"}, - "Sandstone Brick Stair", - "Sandstone Brick Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "sandstonebrick", + "default:sandstonebrick", + {cracky = 2}, + {"default_sandstone_brick.png"}, + "Sandstone Brick Stair", + "Sandstone Brick Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("sandstone_block", "default:sandstone_block", - {cracky = 2}, - {"default_sandstone_block.png"}, - "Sandstone Block Stair", - "Sandstone Block Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "sandstone_block", + "default:sandstone_block", + {cracky = 2}, + {"default_sandstone_block.png"}, + "Sandstone Block Stair", + "Sandstone Block Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("obsidian", "default:obsidian", - {cracky = 1, level = 2}, - {"default_obsidian.png"}, - "Obsidian Stair", - "Obsidian Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "obsidian", + "default:obsidian", + {cracky = 1, level = 2}, + {"default_obsidian.png"}, + "Obsidian Stair", + "Obsidian Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("obsidianbrick", "default:obsidianbrick", - {cracky = 1, level = 2}, - {"default_obsidian_brick.png"}, - "Obsidian Brick Stair", - "Obsidian Brick Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "obsidianbrick", + "default:obsidianbrick", + {cracky = 1, level = 2}, + {"default_obsidian_brick.png"}, + "Obsidian Brick Stair", + "Obsidian Brick Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("obsidian_block", "default:obsidian_block", - {cracky = 1, level = 2}, - {"default_obsidian_block.png"}, - "Obsidian Block Stair", - "Obsidian Block Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "obsidian_block", + "default:obsidian_block", + {cracky = 1, level = 2}, + {"default_obsidian_block.png"}, + "Obsidian Block Stair", + "Obsidian Block Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("brick", "default:brick", - {cracky = 3}, - {"default_brick.png"}, - "Brick Stair", - "Brick Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "brick", + "default:brick", + {cracky = 3}, + {"default_brick.png"}, + "Brick Stair", + "Brick Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("straw", "farming:straw", - {snappy = 3, flammable = 4}, - {"farming_straw.png"}, - "Straw Stair", - "Straw Slab", - default.node_sound_leaves_defaults()) +stairs.register_stair_and_slab( + "straw", + "farming:straw", + {snappy = 3, flammable = 4}, + {"farming_straw.png"}, + "Straw Stair", + "Straw Slab", + default.node_sound_leaves_defaults() +) -stairs.register_stair_and_slab("steelblock", "default:steelblock", - {cracky = 1, level = 2}, - {"default_steel_block.png"}, - "Steel Block Stair", - "Steel Block Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "steelblock", + "default:steelblock", + {cracky = 1, level = 2}, + {"default_steel_block.png"}, + "Steel Block Stair", + "Steel Block Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("copperblock", "default:copperblock", - {cracky = 1, level = 2}, - {"default_copper_block.png"}, - "Copper Block Stair", - "Copper Block Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "copperblock", + "default:copperblock", + {cracky = 1, level = 2}, + {"default_copper_block.png"}, + "Copper Block Stair", + "Copper Block Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("bronzeblock", "default:bronzeblock", - {cracky = 1, level = 2}, - {"default_bronze_block.png"}, - "Bronze Block Stair", - "Bronze Block Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "bronzeblock", + "default:bronzeblock", + {cracky = 1, level = 2}, + {"default_bronze_block.png"}, + "Bronze Block Stair", + "Bronze Block Slab", + default.node_sound_stone_defaults() +) -stairs.register_stair_and_slab("goldblock", "default:goldblock", - {cracky = 1}, - {"default_gold_block.png"}, - "Gold Block Stair", - "Gold Block Slab", - default.node_sound_stone_defaults()) +stairs.register_stair_and_slab( + "goldblock", + "default:goldblock", + {cracky = 1}, + {"default_gold_block.png"}, + "Gold Block Stair", + "Gold Block Slab", + default.node_sound_stone_defaults() +) From d239deccff18b695f3c36dfc3377762cc855fcc0 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sun, 22 May 2016 10:31:21 +0100 Subject: [PATCH 110/383] merge upstream commit: Default: Craft locked chest from chest plus steel ingot --- mods/default/crafting.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua index 0f10e7f9..11cdab76 100644 --- a/mods/default/crafting.lua +++ b/mods/default/crafting.lua @@ -365,6 +365,12 @@ minetest.register_craft({ } }) +minetest.register_craft( { + type = "shapeless", + output = "default:chest_locked", + recipe = {"default:chest", "default:steel_ingot"}, +}) + minetest.register_craft({ output = 'default:furnace', recipe = { From 22224c265d884435a401d66efec45c240a3a59f8 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Mon, 23 May 2016 08:02:48 +0100 Subject: [PATCH 111/383] merge upstream commit: Default: Enable crafting of mese crystal fragments into mese crystal --- mods/default/crafting.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua index 11cdab76..3bfce07c 100644 --- a/mods/default/crafting.lua +++ b/mods/default/crafting.lua @@ -610,6 +610,15 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = "default:mese_crystal", + recipe = { + {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, + {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, + {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, + } +}) + minetest.register_craft({ output = 'default:meselamp 1', recipe = { From 5452e8f05ed5facd188ad8dde5c3f2917c515765 Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 21 Jun 2016 22:53:09 +0100 Subject: [PATCH 112/383] merge upstream commit: Default: New aspen tree schematics --- mods/default/schematics/aspen_tree.mts | Bin 179 -> 176 bytes .../schematics/aspen_tree_from_sapling.mts | Bin 171 -> 175 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/default/schematics/aspen_tree.mts b/mods/default/schematics/aspen_tree.mts index 3bccd4b5722fa3ed955676592e74f64de4e1cd2f..724aae08d67834daea27dcfdcc9c2def13b435bd 100644 GIT binary patch delta 132 zcmdnYxPei^Hze4XfrWvUfscW;zTV!x9tiA#aH5E5a&p1~u7nonOGj6*COlKR?YK%p zD?w@YQI3>@XHuJPH^%eKj$R??cZFX(YiH-Tmq+dP+ufH_@0MT);W_d(LCBh$>)&JL kSO2dYUt#X7;t8v@ox!ql;k;-Lrc;MgMFLnD)QhZn0I*au5dZ)H delta 135 zcmV;20C@kf0kZ)VO;l4&00aO9015yFe}7+pe}8{pkr*{<fFKN8z1WV{qt8td zd6*c`_+yuq21?0-$P|!QY#LQb;_ZD4cUi-8(vxZ-eW0R89e2*4p3zHq@=$$6scs$2%umU58GKicbJSPAE diff --git a/mods/default/schematics/aspen_tree_from_sapling.mts b/mods/default/schematics/aspen_tree_from_sapling.mts index 6bf0f186595934f7e7118c0e5dfa6bb141543e4b..b7ca161903056454f78f4672000947d2ebf60035 100644 GIT binary patch delta 131 zcmZ3@xSmnMHze4XfrWvUfscW;zTV!x9tiA#aH5E5QgXrqu7nonOGj6*COlKR?YK%p zD?w@YQI3>@XHuJPH^%eKj$R??cZFX(YiH-Tmq+dP+ufH_@0MT);W_d(LCBh$>y_h? jdJFEU3|ef79Gz2HLw#ho3$RRSKdrHVgMs1rSu-909&|7c delta 127 zcmV-_0D%9m0jmKNO;l4&00aO9015yFe}7+pe}8{pkr*{%B{Du zvXQ9Mc(H`iECoU)G6d9$tl>fm-=B9jxsBcDF?9;2;1r5Nqx#A5jxX-GinsoQDM?Wy hRSGrs>CsFNYpz}M=F4x9Ips>DJD%L}8!X?2F9%7jI=BD; From c70196dfbdc12cc28a4651f998927f3a7715b47c Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 23 Jun 2016 03:06:57 +0100 Subject: [PATCH 113/383] merge upstream commit: Doors: Add dedicated sounds for glass doors --- mods/doors/README.txt | 4 +++- mods/doors/init.lua | 6 ++++++ mods/doors/sounds/doors_glass_door_close.ogg | Bin 0 -> 7289 bytes mods/doors/sounds/doors_glass_door_open.ogg | Bin 0 -> 7288 bytes 4 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 mods/doors/sounds/doors_glass_door_close.ogg create mode 100644 mods/doors/sounds/doors_glass_door_open.ogg diff --git a/mods/doors/README.txt b/mods/doors/README.txt index b1c1363e..6c036782 100644 --- a/mods/doors/README.txt +++ b/mods/doors/README.txt @@ -75,7 +75,9 @@ fencegate_open.ogg: fencegate_close.ogg: http://www.freesound.org/people/BarkersPinhead/sounds/274807/ - CC-BY-3.0 http://www.freesound.org/people/rivernile7/sounds/249573/ - CC-BY-3.0 -Steel door sounds (open & close (CC-BY-3.0) by HazMatt +Steel door sounds open & close (CC-BY-3.0) by HazMatt - http://www.freesound.org/people/HazMattt/sounds/187283/ doors_steel_door_open.ogg doors_steel_door_close.ogg +doors_glass_door_open.ogg, doors_glass_door_close.ogg: + https://www.freesound.org/people/SkeetMasterFunk69/sounds/235546/ (CC0 1.0) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index a3ecd384..8d3e8472 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -434,6 +434,7 @@ doors.register("door_steel", { inventory_image = "doors_item_steel.png", protected = true, groups = { snappy = 1, bendy = 2, cracky = 1, melty = 2, level = 2 }, + sounds = default.node_sound_stone_defaults(), sound_open = "doors_steel_door_open", sound_close = "doors_steel_door_close", recipe = { @@ -449,6 +450,8 @@ doors.register("door_glass", { inventory_image = "doors_item_glass.png", groups = { snappy=1, cracky=1, oddly_breakable_by_hand=3 }, sounds = default.node_sound_glass_defaults(), + sound_open = "doors_glass_door_open", + sound_close = "doors_glass_door_close", recipe = { {"default:glass", "default:glass"}, {"default:glass", "default:glass"}, @@ -462,6 +465,8 @@ doors.register("door_obsidian_glass", { inventory_image = "doors_item_obsidian_glass.png", groups = { snappy=1, cracky=1, oddly_breakable_by_hand=3 }, sounds = default.node_sound_glass_defaults(), + sound_open = "doors_glass_door_open", + sound_close = "doors_glass_door_close", recipe = { {"default:obsidian_glass", "default:obsidian_glass"}, {"default:obsidian_glass", "default:obsidian_glass"}, @@ -626,6 +631,7 @@ doors.register_trapdoor("doors:trapdoor_steel", { tile_front = "doors_trapdoor_steel.png", tile_side = "doors_trapdoor_steel_side.png", protected = true, + sounds = default.node_sound_stone_defaults(), sound_open = "doors_steel_door_open", sound_close = "doors_steel_door_close", groups = {snappy=1, bendy=2, cracky=1, melty=2, level=2, door=1}, diff --git a/mods/doors/sounds/doors_glass_door_close.ogg b/mods/doors/sounds/doors_glass_door_close.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b3c135598e8a7c7a56d54e05c3ed7ceb006004ca GIT binary patch literal 7289 zcmb_=c|4Te`~OYKQiP<*)(B;+jis^`qbw7}$kJGfA`^Wcwote4Lxt4RT_jR4?oO@1rdfGtT&|gnX z)q*0Ml)E=d=91yM7(j6ICb9>(_S&(3Ajs<3#xI@g6kGG3hpov4dPGD16Wa~e|NZ>A zX~T{xU^{qU@KQTP@Pzw%yV-H9!_DCu2apGlpurVwa9*y#=RN#`Jv}{w5NzXIn>Uo@ zQO0&$kRb%YP{K-^D{zUrZ98Sjy9@JC9f($GRIhB2ym729Q@a(0Gp%=zL$zP-O|pg9 z3REe3D}uS|d=9Y)X5SU~1`eoMxMx=&zXG5Vb>>qDiO3DE5COrKyDVlJ7gz!V6jcgP zciEI5vMzvaK-L_7>Qd$=Y>;8*&_B&KH?&o^jvfj^>bf-aBt!SfOH8p;B43cSp5KXZ6A(HIBL&h?BKg%LOrBj-ERN@tsqQD>|I` z+98E@CXbhNy__40fgm0rx6QOl%<_|b&$52c=l{2DObdq~=!&8{Y}4N%;FFcuZJdh{ zbrKLqNr@Osqq>dhw5xw2t|{R9ZOV=KWFtNptWAY~*a(3z1i6YGj=kI}&nHWA6Wf0* zuow=gS$T(!&^PjYlUIdN4|Bph>wyLb3gF{YI7t`RiZk5e5UoNbrx`Kc#$+o>rhbvxvX5;1rLL(ImaYE~Rq!C>VO?-?O*WF!;zpD#HM48URGExX;5 zzye8P9HRtaPin(0z+~?NspA-VQ-Zu{ihO&Dig~JjXAQeq4j!}IX**==H@xb1cGd6Y zkjKkakMSW7=X8%rhMzOb*?BnlzZ=K(7#=7l@ijmlG_ypinE)p^NnDUH6jO9KZpIA6 zBT?Z@%0BOO&(QRe(5$;RWjG=rFaS01#1wMECVwWq*gLO;9qiK5xMF%~sZUn1_y50f z7s!@D5I+P-w+2d?21>OCvc2LU4BrI7A;{QT>Nr8AHAU+L@NwW+&le}_gTXfTet!o6 zh_IhlqCRNt017~)>YEQ}S^h5@8(3}#B%f4EMmPpd?=~_+?)TJVN~4XzfR!l8Um>ZAr*D9|X;Y4?(9Z4_$aIREuPSrQty~*uY%o-7B^=4xreq^v3QSI8&p~H^RRL4Fyb5U) zHx&g&24DbFyt1?ujIRQ11cj*BV2rqRF&HC0iu4xt95k3CnNd69vq*g)j=2ez>lRQHYNpf(v8fkn?a#3I;8Lve4Ng zOTu7$R6(fcq)1k1bcL-25>UVjoqYdgi#q(mW37t4eNiLy}_LMgI=BukSx zU6>va2FM{VvSUJHxv6kqMzXMMVHVgX06CDeSUj4}fZ@s+EN@Q{`|Ob69p)0{;ReHE9bQ zbxAwZ!w8A3Dq8LeP!ca>2!9UFBApu)H}*xq7$jW=8*SJI+F)_u*06CyU^D)?7bN}@ zhW`Yl8`N{93!oC-w{|C9NzUi^_-ez)Rsb)?C*ul0TY=h(D#~Do3P7pxhDtpR^1g-b zC>4VN6sS?`bR+}FIVtK!X0V-CZE?U=aJ;Qx!0>|XF!&-_SzvF2EGAd6vQ7Y9AW}c) z1YE9lz*lI4G66!9h3{@CVY#tIh)WF+l*-Es-Q|(=bTHRdmJ(Fs;2;Ubz@G#E*rzZ1 zaOZ4N4n@JBsbH)B%^(3V^1-g;15rUEcK^jdE7C}!x*P^Shd~Ph)nH>U0=c)G8^Z>J z($6*pV$10&u;=)TfkFRA191P%K>TBht@bYs1dUw-{xQH`z+Tl~UD1CiFsAS?1_mtm zU){gg!WsLw0gM0y>9XT_ps*jcs5R3ecj1`qGoI64ZDzQ({nX<|_zh;5xHS+1&G5(I3~Ym-9gVVB_OJdL!DXHQ@dwh!aNf z=90vG?kW^tNAk%AvD2#7fw-lB3M!;3)8Xn11CVN)M&asiY9}l!txNDUYO`!7{8T2F+c*82!0J*G*I7 zHAd+?Vegw{37;y_#a;pbkKCM62JMER*Hj7xt15x&F!I)pZG+Fsx5)3sC0*&iQj&y> zHSdtd3CM1yU+hI*6DyLy2xMXed`fk$CnE16_rJpM)3$)j5r*J!dFUx*^v5>nz+pp} zj_?~k_yw;`(6(c37U!(^1cfxX{^Z(=Qi9AZtSD+hMtmaFcz8UoTF%2y&jt4fd0pjP z|6-t+?NAJfJ2v+G`O4;LZaHJz)uLxJo8*tV%X0(_p+CWOQkH9PVPfFWpMGc|9g3k`x)?d*X=0`?+XQxJZ-=>%P;gmFTI_F6HLqYyLRr)!N&K^c$Y^ z6p^YR_*&B$Ba4M#dfU?Cqqz%jl6-!ATl?@a=xy(dL$~eXw)gum zi1=DMg;Qs!CtfUJ%CGbVqu&P)2zpqD38m_M)2oiW*>$fgI+{Dex)RSw%^kl=-92-( z;^o%ot6?s_iFIpRUdT_KZNg5Dq@SeM`>v0zi``hZu*sC_bL<=TI+;+?m@Gs0c~bIC zZ*_8P46oolCFhR%QQAQ8yLY6f>-S>H{#xvP0syx3AL`!^OQ3l znj|f7?7#AA`EVg#wc+5PpaswveVpJwX^zxu?7b3b{8Ju4v~P6fPE%1YCE zc+ys_JpAk6)Xgd;Qx?O#_xo zEv;QQb*A$DzCHZ?QUCd({o|Q$pY$xuzB3wct+~$~YJ8I0Ah)&dazg8EC*t6PqvJOM zbtHewj=0ud7uS~`sxe;nZc^TRJa)BC#ad$8e>sLRK4|6GxDEQ!A+uEZ}(xzXAy=v~+)<%+Cn1xj;s~A<*rp}zltz;wL6f+aQ$&sFlBRPBr zRR}&sQJ%G9#8#@ojS*C~h^WZ#_y>V{B0nPfKWr-pADWNIbu z2oFQrhDkJ5${G7D1}snh)|bRPN@@n|jMmiMOL^d@b3L!sDnd7T%G3MW;qe4-XGzhM z5eYjJ;y(;Y+h4$djplB;DbVC|3@O;;vCZ^xJ>Ol;ErqY_heB%?gI&rDZ%+;|&o%Gp zbEsRkah*sV&|Ekoc>4Qd*qQJGK?`!;PNHE)c;u-T`dILXKgPz+?1~#|Xb`BArZ3bC zommomR%!pC^<&r9SFE42^EIQ2qx+Y73S3mzFg#F@twWMr%t-VrYF~aHuexW|oMux_Qtv z;ixlZIae=QQNq=3ZijQxLyxyl@v(R61!(0u*rEirgWInUb)LT?%9}T|9{E5n4;Q;& z0{L3==>Hg#nN~)p8^w&ea8>h+pyNJG?T9;4+8FWY%0k*tLg)&`bIjPf*m3CIFOwQr zur9A-LGtMdxLwtXnRXxteWBeR#<`E6+Mg^Y$Fi zX9lC44T?h*qytZW{@A|aLfx+}zypnC`R<&2PP*K+dV2EPNHJ=QT&9MsN(JFDeY;+S z-N3J8$z4bl`(Q$S&(1#cY|oMss-?fuhZm1pb_b6dXQ|d8k*f5$f%p3~-|zf6JS}A` z_D*V_N_*e7pL>$Ox9T2Uct9K(qbJ`A4cC_WRr;$7rAoNIY3Gpe>gof!(p2YsRz~x) zSf>z56*OLdgrL!RBb?c*s+PAtCw;M_XRO-^G3fYRWxwZL!g%6I zTSIi8-{;?n)^#-y)EIgU6nxg5fqbs|H2@7wO7(N6!WKUGS7 zqJ0luS3#%pV0**0Z=UX!-`(*TNsfv$$_VtLNiKwHXS^4M>_$)MgTFYBwu@$X^T{52 z#>$^rpFS^~ri@w~t$g?U{b_|Be;5DPoWLB!<;x{|e!8kSeyvug-Zq;d=*4LT zFEbjhW%g-apfx#!tn}u{rCwih!YmGZ9NPZl#g3H4dp6mxuGg*<`Af2r92xRw>q`ai z-T7SY@_kkDnc`+h%V4POS6}5e9)onD+}L`q?>lm@69ZW5Yib^2b=7sgiq{p+dWx_8 z^15+h;881n_Wa1v#=w=g1DEO(b8ZbETnT+r=`B$|tQYbl>$T2$*QuqINAIy`@cZ)q zAQ4WT8utr~L`-a7fEp%uaJMgAq@CX{9CR?v1cDyj)s#`(2{~F^Hhn=|N+||!+kMf+ z0>%cRo-5NMuO1fKhuTv@ezt#}pLuHBj1EZ6{4Lk_x$@T9t|Yf~SKlwT^Zc{hlW(sL z(7N7ggoZsEv|Z}dj}zaa74)oj_*0W%bteBpPl9WNl1p(3zfcGSrF^?WL`tzRq zo&@97L-+16vYj(tiX>^-zvY9X_@1*QbCf-V-t&zd7kQ?@%PU&+032{ISS@s$`#Y;au}@hBE8%HPiDsXP(fE&%T?_ zuAZzFfR32W7%D&u7iK$i#Gxw!afk%1=(XX@KC^DB#rSvBNxH#~mmz|oVuw0>S~}up z?cc=V*Phtwb==)&_c40*p5p}yabap)BXe4ruDK$euxE=uw0#z%(1V2OKB8=XSDCkx z{CT-thTfe>*T$BKe|~*;axQ->A|OOJ>yqh!@Muw#p>_)MkT$nWyA64l1@xx#5SON% zSYP7X@_CZIxgEJys(Bb+_9OM9a*4EAwAE_ZLj4r|k?2Rvj3#{Pg5u@e|GPv3X)o zRN#;CfbNhxPG7F3ebfz|h~kA@_>AFOp{L)g@O}jEcKGJwe6Ejfi|(DcIPHsmIG_2- z=H6S4@RkU(1%A4#L*s|xbh`EC?Mq(HG`}N^n;z@!-X6cpWr)!MUw`^G3JrZm+R@r( zyGv%%F0!<)vmFD?9QaM*g7`ZXo$QH%_wRH0&*nE#!rE+A)UXSYlIJB@bcB=x@Q&7Nw%;;6%VCoReZYNq9;$~YTKC8%OH3`d>yy+xZf`8BXrsxP&V;Rkq#agKGHg_)sJtR0ic>rB7 zfw?{yM$$(kLkG1~C5keRDUC?k9g;qz%tY+!RjX7;IyW(?g00FNj`TuC_Lxs;FWIhW zHN9L|Vph$qu%5gc@IN)-9~;8T=)TBZqu18VcQf&i5agb<_W?B?>qSxDk{S)h-Lo6} z+pJdJnM?fGv+P(Aa3uqowCU%F3>knnF194Tz9jPAkZCiSkA zi4VR$hm`S{D$qNw=-t17PJcstLv*c|)x^mtHY_C#kKL%(LC8{_X8Wb^sb!@QSi z;h57J6R*SfF)z5eoARA~_K8(tzNmCrxX4Btd3ZuMdtv~*oki7+UN~xDd&1%pqNXl@ z>v-&5(v<*@bj!EW^b=?!(dYfAWatL^8T(~RGovKJVEAEt)0c&?J>MUCyFI>HAGH)w zr+@yI<()lYB$&*NBY9s55qI94E6j}YAFOPZY4?x2U}|L0Wd6QRujy@snoi>nsC;cv N#BKh$-tEoM{{YSn#=8Ij literal 0 HcmV?d00001 diff --git a/mods/doors/sounds/doors_glass_door_open.ogg b/mods/doors/sounds/doors_glass_door_open.ogg new file mode 100644 index 0000000000000000000000000000000000000000..66e6812d1877340c2f12ddeae02eae1f7c0e1cb1 GIT binary patch literal 7288 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 JtvWFX`X7uryYB!1 literal 0 HcmV?d00001 From b3c83180ecab0960513a357b58432f0be44af5e3 Mon Sep 17 00:00:00 2001 From: HybridDog Date: Mon, 27 Jun 2016 14:02:44 +0200 Subject: [PATCH 114/383] merge upstream commit: Wool: Clean up code --- mods/wool/init.lua | 47 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/mods/wool/init.lua b/mods/wool/init.lua index f485e4fb..a36e4dd8 100644 --- a/mods/wool/init.lua +++ b/mods/wool/init.lua @@ -1,14 +1,8 @@ --- minetest/wool/init.lua - --- Backwards compatibility with jordach's 16-color wool mod -minetest.register_alias("wool:dark_blue", "wool:blue") -minetest.register_alias("wool:gold", "wool:yellow") - -local wool = {} -- This uses a trick: you can first define the recipes using all of the base -- colors, and then some recipes using more specific colors for a few non-base -- colors available. When crafting, the last recipes will be checked first. -wool.dyes = { + +local dyes = { {"white", "White", "basecolor_white"}, {"grey", "Grey", "basecolor_grey"}, {"black", "Black", "basecolor_black"}, @@ -26,25 +20,28 @@ wool.dyes = { {"dark_green", "Dark Green", "unicolor_dark_green"}, } -for _, row in ipairs(wool.dyes) do - local name = row[1] - local desc = row[2] - local craft_color_group = row[3] - -- Node Definition - minetest.register_node("wool:"..name, { - description = desc.." Wool", - tiles = {"wool_"..name..".png"}, +for i = 1, #dyes do + local name, desc, craft_color_group = unpack(dyes[i]) + + minetest.register_node("wool:" .. name, { + description = desc .. " Wool", + tiles = {"wool_" .. name .. ".png"}, is_ground_content = false, - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3,wool=1}, + groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, + flammable = 3, wool = 1}, sounds = default.node_sound_defaults(), }) - if craft_color_group then - -- Crafting from dye and white wool - minetest.register_craft({ - type = "shapeless", - output = 'wool:'..name, - recipe = {'group:dye,'..craft_color_group, 'group:wool'}, - }) - end + + minetest.register_craft{ + type = "shapeless", + output = "wool:" .. name, + recipe = {"group:dye," .. craft_color_group, "group:wool"}, + } end + +-- legacy + +-- Backwards compatibility with jordach's 16-color wool mod +minetest.register_alias("wool:dark_blue", "wool:blue") +minetest.register_alias("wool:gold", "wool:yellow") From 45d7eebf0196ac5d002867293f76c89dc45f3343 Mon Sep 17 00:00:00 2001 From: HybridDog Date: Mon, 27 Jun 2016 14:04:35 +0200 Subject: [PATCH 115/383] merge upstream commit: Wool: Use adv- and optipng to optimise texture files --- mods/wool/textures/wool_black.png | Bin 213 -> 209 bytes mods/wool/textures/wool_blue.png | Bin 269 -> 264 bytes mods/wool/textures/wool_cyan.png | Bin 305 -> 302 bytes mods/wool/textures/wool_dark_green.png | Bin 259 -> 254 bytes mods/wool/textures/wool_dark_grey.png | Bin 265 -> 260 bytes mods/wool/textures/wool_green.png | Bin 308 -> 304 bytes mods/wool/textures/wool_grey.png | Bin 315 -> 248 bytes mods/wool/textures/wool_magenta.png | Bin 301 -> 296 bytes mods/wool/textures/wool_orange.png | Bin 288 -> 284 bytes mods/wool/textures/wool_pink.png | Bin 221 -> 218 bytes mods/wool/textures/wool_red.png | Bin 292 -> 288 bytes mods/wool/textures/wool_violet.png | Bin 251 -> 244 bytes mods/wool/textures/wool_white.png | Bin 306 -> 243 bytes mods/wool/textures/wool_yellow.png | Bin 263 -> 255 bytes 14 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/wool/textures/wool_black.png b/mods/wool/textures/wool_black.png index a9e566bbdaf336094fa1ad82e3622037da18b129..700d439dca261455e623c41db9b409d1f6afc46c 100644 GIT binary patch delta 145 zcmV;C0B--)0nq`FNPl!mL_t&t9Rp1_V1Qh;wKpUq3015yANkvXXu0mjfm^VRD delta 149 zcmV;G0BZly0o4JJNPl=qL_t&t*By*83dArB1ea4jpvHC3*}cJrw89BoFVF+7acxME z@5c$tHp4K;UaiOxQTxWknZY{0@PNQos#Sd3A=HpSljGgeDeMfS)#223Ks2p(8Ym!8 zxEOCO&W``uNGcbaL9$T9r%TrW#-IA*6~tmg)VCX@1Qh<3C=Pao00000NkvXXu0mjf D>lQ{F diff --git a/mods/wool/textures/wool_blue.png b/mods/wool/textures/wool_blue.png index 035a8da4dadaa094755c729ea9fb5ce083bf80c6..a07498673388d51341283862496692fd99158fe1 100644 GIT binary patch delta 192 zcmV;x06+hY0*C^T7zqdi0000eEe}(XAv}MUNkl)r(3_0VDlymB5OvQ);u1Z5=w$&Nz@r$ zV{99z_&;ao?(5#aG!624?zm~)Q#Rt6tdHuLGp|s!zKn{ z28IQb7Z@|BGYB!X8ub;0XkHa(2rRAiP%KsUV=!D`&Y;X?%)r2Ap0+8ckU^OtBD&YO zL$P!cgR;kL-=Ge`D-4Qk#%vqe1lbr83>OG9L~;o;yeph4+5WDX|%`2{A+}whD!8zAFd-5o#y!ZyA+^00000NkvXXu0mjf8NN-e diff --git a/mods/wool/textures/wool_cyan.png b/mods/wool/textures/wool_cyan.png index 4e1e4a3cda41aa425869a22608daac5cdca1f7cd..395b6ac77404f2c244ee34a9dfe5d89f452acddf 100644 GIT binary patch delta 196 zcmV;#06YJ&0YOa$D)vIgf_#7qmIweeiQa{6M*%4CTjl&z z&(RY85R^Hq*w6LMEZ4w-E{ZM%JrfNLIu?pH_=A;#_l_+ykil#&>gjbH^Nw-gbzmb2d&Ibua+5}<%0000T1WMdT8&t#93kAgB9ODH@g)Od;6EEV=(CdR#<9zaW?`;np1d377JDutwL z0qbgNYdND4&52csS`$GPLd^s#)VC!vedYUl`T?uX2MG*WY0v-w002ovPDHLkV1n4b BR>S}R diff --git a/mods/wool/textures/wool_dark_green.png b/mods/wool/textures/wool_dark_green.png index 92c563188dceea896acf7b676a04dcfb71435e16..0e73999eae3a20fae94b07c477625f09178da6ea 100644 GIT binary patch delta 188 zcmV;t07L(S0{#Jz7zqdi0000eEe}(XAvS-KNklj5+SC4csKNN#3iGhJ~D-q53Mbn;p^Ge%>hh qzRLBO@ooHn<^d9MHK>dCV*UUta0Da%-yO{W0000TO9R@Q+|MfNaaV#^T2$)pV` zG34RO9k8~x7gjbnQbv+e24_0i6(q3@27H87kaf_g{{DvGgbUp+4t^uT!a+gdHX vI$T^@$x4(sP33%M5GLp)8~DPtVLrxx--je2OOtx~00000NkvXXu0mjfzQ9*H diff --git a/mods/wool/textures/wool_dark_grey.png b/mods/wool/textures/wool_dark_grey.png index 0624525478e3ac6aaa8b154890e90614575bd19d..7253696edc72e9024268b46c95b2e445f0400cf2 100644 GIT binary patch delta 191 zcmV;w06_nV0)zsP7zqdi0000eEe}(XAvu4QNkl8HP$#y*ab8o2Efn2d@uF} zbBEqHsw?^e-488doUO1fntf^mH3&W+Q{U{&cUDNR<>v$L4XqLf4wmpZW^w}An!PL2 tYVUw=@*M0W^B>StL@lc8V_D#~z8_#81d>RdQ_lbZ002ovPDHLkV1nV`P__U7 delta 196 zcmV;#06YJL0*L~U7zqRe0002(-QrS_Avu4VNkl<~SySR84}pt(xPg)v3J zg<;!-EetNAE{Y81j6H$HlI^MtMd6XgLg4~73`|>CT?D)t+!)+gS21P+l=d)m z2!&5%5HOxU>c*FB15H6`^Dmb6S@GfZYN+~t0P1J00008bmVS_#o}O8P>IKX;9U)G=g2 zE)6jNmVp^)f~o9kdcLLplzLneRg$OrY?b7i0Om(g(d~BMP9$uVK002ovPDHLkV1g?-Tk-$^ delta 199 zcmV;&0671!0<;2H~l4NKHu7I_?bwF)wqsy??;Pz?|vlz^T zEJ2=HOl$1{g&9E29LuR$A~Hp2iuCHmYPWnJT|b=H2OfWt`a}Q#002ovPDHLkV1n-G BVLAW+ diff --git a/mods/wool/textures/wool_grey.png b/mods/wool/textures/wool_grey.png index ff38bf7c41b013146c55f74b703cfcc76112e732..2f4c338078ddaf11ab3cef8682fc247d803ffe32 100644 GIT binary patch delta 231 zcmVeX3;7z*f}WH^ zltV`^1sn>iml#jjjDW>4i&w&JJdeTmU<6Dw>&$7boWY?t1YlN5pDigq<;&Cr47U}} z!}i@%E}xIFZZ^EJ7y!CQ&;xmT&A%$n7#R#12G5#P#Z|dKAEk(|4mCjEF`378Gl6I$af{I%~dnF#vnx$ zN$4Ud=jBCIr65Zo(9F^A8~|$@Ga{B(YlsUyZYTrHuz>=ekfix}qH<*Z->`18Z};B+ z=mMavty#C>+g|PpFp$eLc_w}&A)Owz^dxpkc@_7ac^Of^m$!q&Ji4hK2eek_v0}?e x)yBvw4^Rq50whx8Ob$r|Y=PZgSe?E%KR z$w-3QM}6&tjUjRxC~!6S6S(}~a9EiTb3|f_;`>rE#M-Dfx;hAMU!mGNwKXffLi_d> vd#A$5IkBB|H-j7DLPTX*A&mCyobvkvc`gQ@Sdap+00000NkvXXu0mjfS`1XN delta 198 zcmV;%06G7t0<8j&Z-1#tL_t&-(+!MC4g?_#1D%~68s`6Rog@cKma9-`9r|8l@^Nbm zl)86eK*+!fV4~`T2tXgegyBl-1$n1>oC99Mzd8nSxJrMJl0c4CFcZu(3A0r0j{y?+ z^1F`eTAEN$c74>_j_VlAr-3*jh22d4!SXe=tOgHE7Q7e9vOl&_b#!KYeYr^QB&})b z71Fmg-#Y|GG$(e3nWk1LwFIwJmNR*~dQSQM0eLP4pD&kNS^xk507*qoM6N<$g2qEu A+yDRo diff --git a/mods/wool/textures/wool_orange.png b/mods/wool/textures/wool_orange.png index 64f34c003fe5fa79046572672cfbfbebcf3e5182..a059f3646f4043897ef1315584cf8e3e9cdb540f 100644 GIT binary patch delta 187 zcmV;s07UunOsZNGxiTO0E)CTA3v3Ex*%Vd}4GTr=$ZA~f?}sCVHui7wC$hz7hcMBkbdzd!ys1;jKKR)hcm002ovPDHLkV1oI)Q0V{w delta 191 zcmV;w06_no0-yqrX@8ELeiNS<9t2FTD^ zPat?~HK~5_AMZhxH*+}CWn5hxPj3I^sSlmIB8(w4g51#UF~==y{Lvg!wMrO~mM&xC z4$-2<-gn#N!bc~r=>E-IVQ8A^ZJQ< tOX1{NxK6s8!HsYsqA5F)afW@LQuLJBlqWeZ{u%+xFm&Tu{Bt&RxB&vy?O}V>#cj!T|9;EsGl6mMaCf6TX_Uz x9NT_Q7Z}l;I0Z9Rm=cT$9>mKV`A+>lZa-ka26}phLe2mH002ovPDHLkV1mdDQs)2w diff --git a/mods/wool/textures/wool_violet.png b/mods/wool/textures/wool_violet.png index a41a9f4714c472e19ab185a434f4346238cfcddf..d7d67831e227ae0a7ea47e76175c4898945d9233 100644 GIT binary patch delta 181 zcmV;m080P+0rUZo7zqdi0000eEe}(XAv1rANkly!tO4!)E|0&T9E0nj&jDyN#6Gp zwLfY9r38EK_Kn&bZd0t0JQD{v>t)edk&k>|+NFA@b_4km>c$ft=1j*-x>IFoPB9_x jdi0VI0o#q})V=Tn;}-*}!+E9>B6bNNBzPADRXvmlTqLr0QGi}$`M zo+Vb!joyU|m?{eYg{~q$S_;_JcQbj{B8>HUJK+VdjA8|i%p~%L1ir14qrCx#WCkcP qaF1o|qg5T@>SL!_18XGN*cm^6%O2@&awhNq0000b>*?OS@Azh%aw;=u%%J$B9? zQ*t8?1DjTPCgi%>tTtWWilTGMr>}LW4yYou3d%~gwHlc2=g3MQneIC=m@&lah}Wi@ ccHDRT{_7{)9#3m&y8r+H07*qoM6N<$f`eIVn*aa+ delta 290 zcmV+-0p0%d0kQ&+8Gi!+001a04^sdD076hqR7Kp}-1GDE;o;%l-rmp8&+qT=&CSiy z($e7I;N#=t$jHdl)YSF$_1W3k@$vEN>+8eA!`9Z;zrVk;v$MOqyXEEOGriAW00021 zNkl;+nqg>w{Xie%I6x3sr?8hI=TS>JynS!ZjG$MC%~uGM?8+lEe+ZUx*0`>w8gXF4X* o^RR}r@}?Cms^pVKHN3Cy4+_Tv?*Z*r(f|Me07*qoM6N<$f-59c3;+NC delta 194 zcmV;z06qWz0fz#R7zqRe0002(-QrS_Avu4TNklw=l`}~*3o0;pI?Q31 zshpC;pwQtEAlmWw?+@o wLv|;KE3INER4P{j+G@n$qCCaOmEnvv0Q<)vmRNr24gdfE07*qoM6N<$f=JFzi2wiq From fbbe79df873efd7d7dc565e8fc76a61db6de4a4a Mon Sep 17 00:00:00 2001 From: Thomas--S Date: Thu, 30 Jun 2016 19:08:55 +0200 Subject: [PATCH 116/383] merge upstream commit: Doors: Remove use_texture_alpha from door definition --- mods/doors/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 8d3e8472..343a7772 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -399,7 +399,6 @@ function doors.register(name, def) def.paramtype = "light" def.paramtype2 = "facedir" def.sunlight_propagates = true - def.use_texture_alpha = true def.walkable = true def.is_ground_content = false def.buildable_to = false From e6bda9c43923fc47bd39439c390f35a5f045ab7f Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 30 Jun 2016 22:16:46 +0100 Subject: [PATCH 117/383] merge upstream commit: Flowers: Make waterlily floodable --- mods/flowers/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index b7dfbe45..669c5882 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -224,6 +224,7 @@ minetest.register_node("flowers:waterlily", { walkable = false, buildable_to = true, sunlight_propagates = true, + floodable = true, groups = {snappy = 3, flower = 1}, sounds = default.node_sound_leaves_defaults(), node_placement_prediction = "", From 38ed7b998b65ba5bf12fa7a3f78008491f07eed5 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sun, 3 Jul 2016 17:40:43 +0100 Subject: [PATCH 118/383] merge upstream commit: Tidy sethome code, add global functions, round coords to 1 decimal --- mods/sethome/init.lua | 115 ++++++++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 50 deletions(-) diff --git a/mods/sethome/init.lua b/mods/sethome/init.lua index 590086b4..4246f7a5 100644 --- a/mods/sethome/init.lua +++ b/mods/sethome/init.lua @@ -1,65 +1,80 @@ + +sethome = {} + local homes_file = minetest.get_worldpath() .. "/homes" local homepos = {} local function loadhomes() - local input = io.open(homes_file, "r") - if input then - repeat - local x = input:read("*n") - if x == nil then - break - end - local y = input:read("*n") - local z = input:read("*n") - local name = input:read("*l") - homepos[name:sub(2)] = {x = x, y = y, z = z} - until input:read(0) == nil - io.close(input) - else - homepos = {} - end + local input, err = io.open(homes_file, "r") + if not input then + return minetest.log("info", "Could not load player homes file: " .. err) + end + + -- Iterate over all stored positions in the format "x y z player" for each line + for pos, name in input:read("*a"):gmatch("(%S+ %S+ %S+)%s([%w_-]+)[\r\n]") do + homepos[name] = minetest.string_to_pos(pos) + end + input:close() end loadhomes() +sethome.set = function(name, pos) + local player = minetest.get_player_by_name(name) + if not player or not pos then + return false + end + + local data = {} + local output, err = io.open(homes_file, "w") + if output then + homepos[name] = pos + for i, v in pairs(homepos) do + table.insert(data, string.format("%.1f %.1f %.1f %s\n", v.x, v.y, v.z, i)) + end + output:write(table.concat(data)) + io.close(output) + return true + end + minetest.log("action", "Unable to write to player homes file: " .. err) + return false +end + +sethome.get = function(name) + return homepos[name] +end + +sethome.go = function(name) + local player = minetest.get_player_by_name(name) + if player and homepos[name] then + player:setpos(homepos[name]) + return true + end + return false +end + minetest.register_privilege("home", "Can use /sethome and /home") -local changed = false - minetest.register_chatcommand("home", { - description = "Teleport you to your home point", - privs = {home=true}, - func = function(name) - local player = minetest.get_player_by_name(name) - if player == nil then - -- just a check to prevent the server crashing - return false - end - if homepos[player:get_player_name()] then - player:setpos(homepos[player:get_player_name()]) - minetest.chat_send_player(name, "Teleported to home!") - else - minetest.chat_send_player(name, "Set a home using /sethome") - end - end, + description = "Teleport you to your home point", + privs = {home = true}, + func = function(name) + if sethome.go(name) then + return true, "Teleported to home!" + end + return false, "Set a home using /sethome" + end, }) minetest.register_chatcommand("sethome", { - description = "Set your home point", - privs = {home=true}, - func = function(name) - local player = minetest.get_player_by_name(name) - local pos = player:getpos() - homepos[player:get_player_name()] = pos - minetest.chat_send_player(name, "Home set!") - changed = true - if changed then - local output = io.open(homes_file, "w") - for i, v in pairs(homepos) do - output:write(v.x.." "..v.y.." "..v.z.." "..i.."\n") - end - io.close(output) - changed = false - end - end, + description = "Set your home point", + privs = {home = true}, + func = function(name) + name = name or "" -- fallback to blank name if nil + local player = minetest.get_player_by_name(name) + if player and sethome.set(name, player:getpos()) then + return true, "Home set!" + end + return false, "Player not found!" + end, }) From cf77ef435afc80b81838a5a2c0fbb8969e8ca6a6 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Fri, 1 Jul 2016 17:45:24 +0200 Subject: [PATCH 119/383] merge upstream commit: Bucket: Correct liquid placing in protected areas --- mods/bucket/init.lua | 51 +++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index 89730de7..2d2690fe 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -52,54 +52,57 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name stack_max = 1, liquids_pointable = true, groups = groups, + on_place = function(itemstack, user, pointed_thing) -- Must be pointing to node if pointed_thing.type ~= "node" then return end - + local node = minetest.get_node_or_nil(pointed_thing.under) - local ndef - if node then - ndef = minetest.registered_nodes[node.name] + if not node then + return end + local ndef = minetest.registered_nodes[node.name] + if not ndef then + return + end + -- Call on_rightclick if the pointed node defines it - if ndef and ndef.on_rightclick and + if ndef.on_rightclick and user and not user:get_player_control().sneak then return ndef.on_rightclick( pointed_thing.under, node, user, - itemstack) or itemstack + itemstack) end - local place_liquid = function(pos, node, source, flowing) - if check_protection(pos, - user and user:get_player_name() or "", - "place "..source) then - return - end - minetest.add_node(pos, {name=source}) - end + local lpos -- Check if pointing to a buildable node - if ndef and ndef.buildable_to then + if ndef.buildable_to then -- buildable; replace the node - place_liquid(pointed_thing.under, node, - source, flowing) + lpos = pointed_thing.under else -- not buildable to; place the liquid above -- check if the node above can be replaced - local node = minetest.get_node_or_nil(pointed_thing.above) - if node and minetest.registered_nodes[node.name].buildable_to then - place_liquid(pointed_thing.above, - node, source, - flowing) - else + lpos = pointed_thing.above + local node = minetest.get_node_or_nil(lpos) + if not node + or not minetest.registered_nodes[node.name].buildable_to then -- do not remove the bucket with the liquid return end end - return {name="bucket:bucket_empty"} + + if check_protection(lpos, user + and user:get_player_name() + or "", "place "..source) then + return + end + + minetest.set_node(lpos, {name = source}) + return ItemStack("bucket:bucket_empty") end }) end From 8b03f29585a88a0ecf10dca5a2dfcc7842a6aa79 Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 2 Jul 2016 04:10:29 +0100 Subject: [PATCH 120/383] merge upstream commit: Default/mapgen: Clean up ore registrations --- mods/default/mapgen.lua | 92 +++++++++++++++++++++-------------------- 1 file changed, 48 insertions(+), 44 deletions(-) diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index c84aa7b4..7e803205 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -42,12 +42,12 @@ minetest.register_alias("mapgen_stair_sandstonebrick", "stairs:stair_sandstonebr -- Register ores -- --- All mapgens except singlenode --- Blob ore first to avoid other ores inside blobs - function default.register_ores() + -- Blob ores + -- These first to avoid other ores in blobs -- Clay + -- This first to avoid clay in sand blobs minetest.register_ore({ ore_type = "blob", @@ -78,7 +78,7 @@ function default.register_ores() clust_scarcity = 16 * 16 * 16, clust_size = 5, y_min = -31, - y_max = 4, + y_max = 0, noise_threshold = 0.0, noise_params = { offset = 0.5, @@ -95,7 +95,7 @@ function default.register_ores() minetest.register_ore({ ore_type = "blob", ore = "default:dirt", - wherein = {"default:stone", "default:sandstone"}, + wherein = {"default:stone"}, clust_scarcity = 16 * 16 * 16, clust_size = 5, y_min = -31, @@ -132,6 +132,8 @@ function default.register_ores() }, }) + -- Scatter ores + -- Coal minetest.register_ore({ @@ -166,7 +168,7 @@ function default.register_ores() clust_num_ores = 3, clust_size = 2, y_min = -15, - y_max = 2, + y_max = 0, }) minetest.register_ore({ @@ -202,39 +204,28 @@ function default.register_ores() y_max = -64, }) - --Mese + -- Copper minetest.register_ore({ ore_type = "scatter", - ore = "default:stone_with_mese", + ore = "default:stone_with_copper", wherein = "default:stone", - clust_scarcity = 18 * 18 * 18, - clust_num_ores = 3, - clust_size = 2, - y_min = -255, - y_max = -64, + clust_scarcity = 12 * 12 * 12, + clust_num_ores = 4, + clust_size = 3, + y_min = -63, + y_max = -16, }) minetest.register_ore({ ore_type = "scatter", - ore = "default:stone_with_mese", + ore = "default:stone_with_copper", wherein = "default:stone", - clust_scarcity = 14 * 14 * 14, + clust_scarcity = 9 * 9 * 9, clust_num_ores = 5, clust_size = 3, y_min = -31000, - y_max = -256, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:mese", - wherein = "default:stone", - clust_scarcity = 36 * 36 * 36, - clust_num_ores = 3, - clust_size = 2, - y_min = -31000, - y_max = -1024, + y_max = -64, }) -- Gold @@ -261,6 +252,30 @@ function default.register_ores() y_max = -256, }) + -- Mese crystal + + minetest.register_ore({ + ore_type = "scatter", + ore = "default:stone_with_mese", + wherein = "default:stone", + clust_scarcity = 18 * 18 * 18, + clust_num_ores = 3, + clust_size = 2, + y_min = -255, + y_max = -64, + }) + + minetest.register_ore({ + ore_type = "scatter", + ore = "default:stone_with_mese", + wherein = "default:stone", + clust_scarcity = 14 * 14 * 14, + clust_num_ores = 5, + clust_size = 3, + y_min = -31000, + y_max = -256, + }) + -- Diamond minetest.register_ore({ @@ -285,28 +300,17 @@ function default.register_ores() y_max = -256, }) - -- Copper + -- Mese block minetest.register_ore({ ore_type = "scatter", - ore = "default:stone_with_copper", + ore = "default:mese", wherein = "default:stone", - clust_scarcity = 12 * 12 * 12, - clust_num_ores = 4, - clust_size = 3, - y_min = -63, - y_max = -16, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_copper", - wherein = "default:stone", - clust_scarcity = 9 * 9 * 9, - clust_num_ores = 5, - clust_size = 3, + clust_scarcity = 36 * 36 * 36, + clust_num_ores = 3, + clust_size = 2, y_min = -31000, - y_max = -64, + y_max = -1024, }) end From cb5727b50c42b37b40cc5528c2cb1f0e22f6ad20 Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 3 Jul 2016 07:33:48 +0100 Subject: [PATCH 121/383] merge upstream commit: Default/mapgen: Add ores above y = 1024 --- mods/default/mapgen.lua | 77 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index 7e803205..dc359a0b 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -136,6 +136,17 @@ function default.register_ores() -- Coal + minetest.register_ore({ + ore_type = "scatter", + ore = "default:stone_with_coal", + wherein = "default:stone", + clust_scarcity = 8 * 8 * 8, + clust_num_ores = 9, + clust_size = 3, + y_min = 1025, + y_max = 31000, + }) + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_coal", @@ -160,6 +171,17 @@ function default.register_ores() -- Iron + minetest.register_ore({ + ore_type = "scatter", + ore = "default:stone_with_iron", + wherein = "default:stone", + clust_scarcity = 9 * 9 * 9, + clust_num_ores = 12, + clust_size = 3, + y_min = 1025, + y_max = 31000, + }) + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_iron", @@ -206,6 +228,17 @@ function default.register_ores() -- Copper + minetest.register_ore({ + ore_type = "scatter", + ore = "default:stone_with_copper", + wherein = "default:stone", + clust_scarcity = 9 * 9 * 9, + clust_num_ores = 5, + clust_size = 3, + y_min = 1025, + y_max = 31000, + }) + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_copper", @@ -230,6 +263,17 @@ function default.register_ores() -- Gold + minetest.register_ore({ + ore_type = "scatter", + ore = "default:stone_with_gold", + wherein = "default:stone", + clust_scarcity = 13 * 13 * 13, + clust_num_ores = 5, + clust_size = 3, + y_min = 1025, + y_max = 31000, + }) + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_gold", @@ -254,6 +298,17 @@ function default.register_ores() -- Mese crystal + minetest.register_ore({ + ore_type = "scatter", + ore = "default:stone_with_mese", + wherein = "default:stone", + clust_scarcity = 14 * 14 * 14, + clust_num_ores = 5, + clust_size = 3, + y_min = 1025, + y_max = 31000, + }) + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_mese", @@ -278,6 +333,17 @@ function default.register_ores() -- Diamond + minetest.register_ore({ + ore_type = "scatter", + ore = "default:stone_with_diamond", + wherein = "default:stone", + clust_scarcity = 15 * 15 * 15, + clust_num_ores = 4, + clust_size = 3, + y_min = 1025, + y_max = 31000, + }) + minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_diamond", @@ -302,6 +368,17 @@ function default.register_ores() -- Mese block + minetest.register_ore({ + ore_type = "scatter", + ore = "default:mese", + wherein = "default:stone", + clust_scarcity = 36 * 36 * 36, + clust_num_ores = 3, + clust_size = 2, + y_min = 1025, + y_max = 31000, + }) + minetest.register_ore({ ore_type = "scatter", ore = "default:mese", From 814f356208494e993ce142caa964fbe81ddb53e1 Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 3 Jul 2016 08:52:53 +0100 Subject: [PATCH 122/383] merge upstream commit: Default/mapgen: Simplify iron ore registrations --- mods/default/mapgen.lua | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index dc359a0b..89ded047 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -182,28 +182,6 @@ function default.register_ores() y_max = 31000, }) - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_iron", - wherein = "default:stone", - clust_scarcity = 12 * 12 * 12, - clust_num_ores = 3, - clust_size = 2, - y_min = -15, - y_max = 0, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "default:stone_with_iron", - wherein = "default:stone", - clust_scarcity = 9 * 9 * 9, - clust_num_ores = 5, - clust_size = 3, - y_min = -63, - y_max = -16, - }) - minetest.register_ore({ ore_type = "scatter", ore = "default:stone_with_iron", @@ -212,7 +190,7 @@ function default.register_ores() clust_num_ores = 5, clust_size = 3, y_min = -31000, - y_max = -64, + y_max = 0, }) minetest.register_ore({ From f626cb94bc812e779c4c90d85dbc516a04efa232 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Mon, 4 Jul 2016 09:12:37 +0100 Subject: [PATCH 123/383] merge upstream commit: Game_api.txt: Add API information for sethome functions --- game_api.txt | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/game_api.txt b/game_api.txt index 93cf0527..6ef7ce2b 100644 --- a/game_api.txt +++ b/game_api.txt @@ -333,6 +333,30 @@ To use it, add the `on_screwdriver` function to the node definition. * use `on_rotate = screwdriver.disallow` to always disallow rotation * use `on_rotate = screwdriver.rotate_simple` to allow only face rotation + +Sethome API +----------- + +The sethome API adds three global functions to allow mods to read a players home position, +set a players home position and teleport a player to home position. + +`sethome.get(name)` + + * `name` Player who's home position you wish to get + * return value: false if no player home coords exist, position table if true + +`sethome.set(name, pos)` + + * `name` Player who's home position you wish to set + * `pos` Position table containing coords of home position + * return value: false if unable to set and save new home position, otherwise true + +`sethome.go(name)` + + * `name` Player you wish to teleport to their home position + * return value: false if player cannot be sent home, otherwise true + + Stairs API ---------- From f6535a974c1a162c97a688294f9884b19beac98a Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Mon, 4 Jul 2016 11:59:07 +0100 Subject: [PATCH 124/383] merge upstream commit: Game_api.txt: Add position table reference --- game_api.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/game_api.txt b/game_api.txt index 6ef7ce2b..0cdd3012 100644 --- a/game_api.txt +++ b/game_api.txt @@ -12,6 +12,7 @@ Please note: * [XYZ] refers to a section the Minetest API * [#ABC] refers to a section in this document + * [pos] refers to a position table `{x = -5, y = 0, z = 200}` Bucket API ---------- From c80473afe69a95bdd6410cf6a3e115cb6fcbd170 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Mon, 27 Jun 2016 16:45:40 +0200 Subject: [PATCH 125/383] merge upstream commit: TNT: When disabled leave some useful functionality enabled --- mods/tnt/init.lua | 72 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 55 insertions(+), 17 deletions(-) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 18bd9263..42dc427e 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -1,5 +1,13 @@ tnt = {} +<<<<<<< HEAD core.register_privilege("trusted_player", "special grantings, used for tnt for example") +======= +-- Default to enabled when in singleplayer +local enable_tnt = minetest.setting_getbool("enable_tnt") +if enable_tnt == nil + enable_tnt = minetest.is_singleplayer() +end +>>>>>>> 497e6f6... TNT: When disabled leave some useful functionality enabled -- loss probabilities array (one in X will be lost) local loss_prob = {} @@ -488,28 +496,30 @@ minetest.register_node("tnt:gunpowder_burning", { end, }) -minetest.register_abm({ - nodenames = {"group:tnt", "tnt:gunpowder"}, - neighbors = {"fire:basic_flame", "default:lava_source", "default:lava_flowing"}, - interval = 4, - chance = 1, - action = tnt.burn, -}) - minetest.register_craft({ output = "tnt:gunpowder", type = "shapeless", recipe = {"default:coal_lump", "default:gravel"} }) -minetest.register_craft({ - output = "tnt:tnt", - recipe = { - {"", "group:wood", ""}, - {"group:wood", "tnt:gunpowder", "group:wood"}, - {"", "group:wood", ""} - } -}) +if enable_tnt then + minetest.register_craft({ + output = "tnt:tnt", + recipe = { + {"", "group:wood", ""}, + {"group:wood", "tnt:gunpowder", "group:wood"}, + {"", "group:wood", ""} + } + }) + + minetest.register_abm({ + nodenames = {"group:tnt", "tnt:gunpowder"}, + neighbors = {"fire:basic_flame", "default:lava_source", "default:lava_flowing"}, + interval = 4, + chance = 1, + action = tnt.burn, + }) +end function tnt.register_tnt(def) local name = "" @@ -526,6 +536,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 +<<<<<<< HEAD minetest.register_node(":" .. name, { description = def.description, tiles = {tnt_top, tnt_bottom, tnt_side}, @@ -552,6 +563,34 @@ function tnt.register_tnt(def) -- } --}, }) +======= + if enable_tnt then + minetest.register_node(":" .. name, { + description = def.description, + tiles = {tnt_top, tnt_bottom, tnt_side}, + is_ground_content = false, + groups = {dig_immediate = 2, mesecon = 2, tnt = 1}, + sounds = default.node_sound_wood_defaults(), + on_punch = function(pos, node, puncher) + if puncher:get_wielded_item():get_name() == "default:torch" then + minetest.set_node(pos, {name = name .. "_burning"}) + end + end, + on_blast = function(pos, intensity) + minetest.after(0.1, function() + tnt.boom(pos, def) + end) + end, + mesecons = {effector = + {action_on = + function(pos) + tnt.boom(pos, def) + end + } + }, + }) + end +>>>>>>> 497e6f6... TNT: When disabled leave some useful functionality enabled minetest.register_node(":" .. name .. "_burning", { tiles = { @@ -588,4 +627,3 @@ tnt.register_tnt({ description = "TNT", radius = radius, }) - From 6bafa462830d6df9fb98aff287a710f0b95031df Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 16 Jul 2016 13:59:46 +0200 Subject: [PATCH 126/383] Revert "merge upstream commit: TNT: When disabled leave some useful functionality enabled" This reverts commit c80473afe69a95bdd6410cf6a3e115cb6fcbd170. --- mods/tnt/init.lua | 72 +++++++++++------------------------------------ 1 file changed, 17 insertions(+), 55 deletions(-) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 42dc427e..18bd9263 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -1,13 +1,5 @@ tnt = {} -<<<<<<< HEAD core.register_privilege("trusted_player", "special grantings, used for tnt for example") -======= --- Default to enabled when in singleplayer -local enable_tnt = minetest.setting_getbool("enable_tnt") -if enable_tnt == nil - enable_tnt = minetest.is_singleplayer() -end ->>>>>>> 497e6f6... TNT: When disabled leave some useful functionality enabled -- loss probabilities array (one in X will be lost) local loss_prob = {} @@ -496,30 +488,28 @@ minetest.register_node("tnt:gunpowder_burning", { end, }) +minetest.register_abm({ + nodenames = {"group:tnt", "tnt:gunpowder"}, + neighbors = {"fire:basic_flame", "default:lava_source", "default:lava_flowing"}, + interval = 4, + chance = 1, + action = tnt.burn, +}) + minetest.register_craft({ output = "tnt:gunpowder", type = "shapeless", recipe = {"default:coal_lump", "default:gravel"} }) -if enable_tnt then - minetest.register_craft({ - output = "tnt:tnt", - recipe = { - {"", "group:wood", ""}, - {"group:wood", "tnt:gunpowder", "group:wood"}, - {"", "group:wood", ""} - } - }) - - minetest.register_abm({ - nodenames = {"group:tnt", "tnt:gunpowder"}, - neighbors = {"fire:basic_flame", "default:lava_source", "default:lava_flowing"}, - interval = 4, - chance = 1, - action = tnt.burn, - }) -end +minetest.register_craft({ + output = "tnt:tnt", + recipe = { + {"", "group:wood", ""}, + {"group:wood", "tnt:gunpowder", "group:wood"}, + {"", "group:wood", ""} + } +}) function tnt.register_tnt(def) local name = "" @@ -536,7 +526,6 @@ 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 -<<<<<<< HEAD minetest.register_node(":" .. name, { description = def.description, tiles = {tnt_top, tnt_bottom, tnt_side}, @@ -563,34 +552,6 @@ function tnt.register_tnt(def) -- } --}, }) -======= - if enable_tnt then - minetest.register_node(":" .. name, { - description = def.description, - tiles = {tnt_top, tnt_bottom, tnt_side}, - is_ground_content = false, - groups = {dig_immediate = 2, mesecon = 2, tnt = 1}, - sounds = default.node_sound_wood_defaults(), - on_punch = function(pos, node, puncher) - if puncher:get_wielded_item():get_name() == "default:torch" then - minetest.set_node(pos, {name = name .. "_burning"}) - end - end, - on_blast = function(pos, intensity) - minetest.after(0.1, function() - tnt.boom(pos, def) - end) - end, - mesecons = {effector = - {action_on = - function(pos) - tnt.boom(pos, def) - end - } - }, - }) - end ->>>>>>> 497e6f6... TNT: When disabled leave some useful functionality enabled minetest.register_node(":" .. name .. "_burning", { tiles = { @@ -627,3 +588,4 @@ tnt.register_tnt({ description = "TNT", radius = radius, }) + From 7a1505b32da6c45838bb0ba6654ab7ef305560d6 Mon Sep 17 00:00:00 2001 From: paramat Date: Wed, 6 Jul 2016 17:14:39 +0100 Subject: [PATCH 127/383] merge upstream commit: Default, flowers: Use 'get_mapgen_setting()' --- mods/default/mapgen.lua | 6 +++--- mods/flowers/mapgen.lua | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index 89ded047..7d0b0fd4 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -1523,12 +1523,12 @@ end -- Mods using singlenode mapgen can call these functions to enable -- the use of minetest.generate_ores or minetest.generate_decorations -local mg_params = minetest.get_mapgen_params() -if mg_params.mgname == "v6" then +local mg_name = minetest.get_mapgen_setting("mg_name") +if mg_name == "v6" then default.register_ores() default.register_mgv6_decorations() minetest.register_on_generated(default.generate_nyancats) -elseif mg_params.mgname ~= "singlenode" then +elseif mg_name ~= "singlenode" then default.register_biomes() default.register_ores() default.register_decorations() diff --git a/mods/flowers/mapgen.lua b/mods/flowers/mapgen.lua index 59ce97a3..162b11db 100644 --- a/mods/flowers/mapgen.lua +++ b/mods/flowers/mapgen.lua @@ -165,9 +165,9 @@ end -- Mods using singlenode mapgen can call these functions to enable -- the use of minetest.generate_ores or minetest.generate_decorations -local mg_params = minetest.get_mapgen_params() -if mg_params.mgname == "v6" then +local mg_name = minetest.get_mapgen_setting("mg_name") +if mg_name == "v6" then flowers.register_mgv6_decorations() -elseif mg_params.mgname ~= "singlenode" then +elseif mg_name ~= "singlenode" then flowers.register_decorations() end From 6336ffb4765fc612ad432f50b2eb38d7e5ab22af Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 7 Jul 2016 17:25:42 +0100 Subject: [PATCH 128/383] merge upstream commit: Doors / default: Remove 'hot', 'bendy' and 'melty' groups from nodes --- mods/default/nodes.lua | 6 +++--- mods/doors/init.lua | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index d624829f..298d6787 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1360,7 +1360,7 @@ minetest.register_node("default:lava_source", { liquid_renewable = false, damage_per_second = 4 * 2, post_effect_color = {a = 191, r = 255, g = 64, b = 0}, - groups = {lava = 3, liquid = 2, hot = 3, igniter = 1}, + groups = {lava = 3, liquid = 2, igniter = 1}, }) minetest.register_node("default:lava_flowing", { @@ -1406,7 +1406,7 @@ minetest.register_node("default:lava_flowing", { liquid_renewable = false, damage_per_second = 4 * 2, post_effect_color = {a = 191, r = 255, g = 64, b = 0}, - groups = {lava = 3, liquid = 2, hot = 3, igniter = 1, + groups = {lava = 3, liquid = 2, igniter = 1, not_in_creative_inventory = 1}, }) @@ -1865,7 +1865,7 @@ minetest.register_node("default:rail", { -- but how to specify the dimensions for curved and sideways rails? fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2}, }, - groups = {bendy = 2, dig_immediate = 2, attached_node = 1, + groups = {dig_immediate = 2, attached_node = 1, connect_to_raillike = minetest.raillike_group("rail")}, }) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 343a7772..913f7cf2 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -432,7 +432,7 @@ doors.register("door_steel", { description = "Steel Door", inventory_image = "doors_item_steel.png", protected = true, - groups = { snappy = 1, bendy = 2, cracky = 1, melty = 2, level = 2 }, + groups = { snappy = 1, cracky = 1, level = 2 }, sounds = default.node_sound_stone_defaults(), sound_open = "doors_steel_door_open", sound_close = "doors_steel_door_close", @@ -633,7 +633,7 @@ doors.register_trapdoor("doors:trapdoor_steel", { sounds = default.node_sound_stone_defaults(), sound_open = "doors_steel_door_open", sound_close = "doors_steel_door_close", - groups = {snappy=1, bendy=2, cracky=1, melty=2, level=2, door=1}, + groups = {snappy=1, cracky=1, level=2, door=1}, }) minetest.register_craft({ From d2552744b99c1f8f91f0f0b8144be0206e6c00ab Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 7 Jul 2016 17:48:02 +0100 Subject: [PATCH 129/383] merge upstream commit: Doors: Code cleanup --- mods/doors/init.lua | 120 ++++++++++++++++++++++++-------------------- 1 file changed, 66 insertions(+), 54 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 913f7cf2..f21381fe 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -1,4 +1,3 @@ - --[[ Copyright (C) 2012 PilzAdam @@ -105,28 +104,28 @@ minetest.register_node("doors:hidden", { -- table used to aid door opening/closing local transform = { { - { v = "_a", param2 = 3 }, - { v = "_a", param2 = 0 }, - { v = "_a", param2 = 1 }, - { v = "_a", param2 = 2 }, + {v = "_a", param2 = 3}, + {v = "_a", param2 = 0}, + {v = "_a", param2 = 1}, + {v = "_a", param2 = 2}, }, { - { v = "_b", param2 = 1 }, - { v = "_b", param2 = 2 }, - { v = "_b", param2 = 3 }, - { v = "_b", param2 = 0 }, + {v = "_b", param2 = 1}, + {v = "_b", param2 = 2}, + {v = "_b", param2 = 3}, + {v = "_b", param2 = 0}, }, { - { v = "_b", param2 = 1 }, - { v = "_b", param2 = 2 }, - { v = "_b", param2 = 3 }, - { v = "_b", param2 = 0 }, + {v = "_b", param2 = 1}, + {v = "_b", param2 = 2}, + {v = "_b", param2 = 3}, + {v = "_b", param2 = 0}, }, { - { v = "_a", param2 = 3 }, - { v = "_a", param2 = 0 }, - { v = "_a", param2 = 1 }, - { v = "_a", param2 = 2 }, + {v = "_a", param2 = 3}, + {v = "_a", param2 = 0}, + {v = "_a", param2 = 1}, + {v = "_a", param2 = 2}, }, } @@ -166,9 +165,11 @@ function _doors.door_toggle(pos, clicker) local dir = minetest.get_node(pos).param2 if state % 2 == 0 then - minetest.sound_play(def.door.sounds[1], {pos = pos, gain = 0.3, max_hear_distance = 10}) + minetest.sound_play(def.door.sounds[1], + {pos = pos, gain = 0.3, max_hear_distance = 10}) else - minetest.sound_play(def.door.sounds[2], {pos = pos, gain = 0.3, max_hear_distance = 10}) + minetest.sound_play(def.door.sounds[2], + {pos = pos, gain = 0.3, max_hear_distance = 10}) end minetest.swap_node(pos, { @@ -181,21 +182,25 @@ function _doors.door_toggle(pos, clicker) end -local function on_place_node(place_to, newnode, placer, oldnode, itemstack, pointed_thing) +local function on_place_node(place_to, newnode, + placer, oldnode, itemstack, pointed_thing) -- Run script hook local _, callback for _, callback in ipairs(core.registered_on_placenodes) do -- Deepcopy pos, node and pointed_thing because callback can modify them local place_to_copy = {x = place_to.x, y = place_to.y, z = place_to.z} - local newnode_copy = {name = newnode.name, param1 = newnode.param1, param2 = newnode.param2} - local oldnode_copy = {name = oldnode.name, param1 = oldnode.param1, param2 = oldnode.param2} + local newnode_copy = + {name = newnode.name, param1 = newnode.param1, param2 = newnode.param2} + local oldnode_copy = + {name = oldnode.name, param1 = oldnode.param1, param2 = oldnode.param2} local pointed_thing_copy = { type = pointed_thing.type, above = vector.new(pointed_thing.above), under = vector.new(pointed_thing.under), ref = pointed_thing.ref, } - callback(place_to_copy, newnode_copy, placer, oldnode_copy, itemstack, pointed_thing_copy) + callback(place_to_copy, newnode_copy, placer, + oldnode_copy, itemstack, pointed_thing_copy) end end @@ -214,8 +219,8 @@ function doors.register(name, def) local h = meta:get_int("right") + 1 local p2 = node.param2 local replace = { - { { type = "a", state = 0 }, { type = "a", state = 3 } }, - { { type = "b", state = 1 }, { type = "b", state = 2 } } + {{type = "a", state = 0}, {type = "a", state = 3}}, + {{type = "b", state = 1}, {type = "b", state = 2}} } local new = replace[l][h] -- retain infotext and doors_owner fields @@ -268,8 +273,9 @@ function doors.register(name, def) end end - local above = { x = pos.x, y = pos.y + 1, z = pos.z } - if not minetest.registered_nodes[minetest.get_node(above).name].buildable_to then + local above = {x = pos.x, y = pos.y + 1, z = pos.z} + if not minetest.registered_nodes[ + minetest.get_node(above).name].buildable_to then return itemstack end @@ -281,10 +287,10 @@ function doors.register(name, def) local dir = minetest.dir_to_facedir(placer:get_look_dir()) local ref = { - { x = -1, y = 0, z = 0 }, - { x = 0, y = 0, z = 1 }, - { x = 1, y = 0, z = 0 }, - { x = 0, y = 0, z = -1 }, + {x = -1, y = 0, z = 0}, + {x = 0, y = 0, z = 1}, + {x = 1, y = 0, z = 0}, + {x = 0, y = 0, z = -1}, } local aside = { @@ -316,7 +322,8 @@ function doors.register(name, def) itemstack:take_item() end - on_place_node(pos, minetest.get_node(pos), placer, node, itemstack, pointed_thing) + on_place_node(pos, minetest.get_node(pos), + placer, node, itemstack, pointed_thing) return itemstack end @@ -402,8 +409,8 @@ function doors.register(name, def) def.walkable = true def.is_ground_content = false def.buildable_to = false - def.selection_box = { type = "fixed", fixed = { -1/2,-1/2,-1/2,1/2,3/2,-6/16} } - def.collision_box = { type = "fixed", fixed = { -1/2,-1/2,-1/2,1/2,3/2,-6/16} } + def.selection_box = {type = "fixed", fixed = {-1/2,-1/2,-1/2,1/2,3/2,-6/16}} + def.collision_box = {type = "fixed", fixed = {-1/2,-1/2,-1/2,1/2,3/2,-6/16}} def.mesh = "door_a.obj" minetest.register_node(":" .. name .. "_a", def) @@ -419,7 +426,7 @@ doors.register("door_wood", { tiles = {{ name = "doors_door_wood.png", backface_culling = true }}, description = "Wooden Door", inventory_image = "doors_item_wood.png", - groups = { snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2 }, + groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, recipe = { {"group:wood", "group:wood"}, {"group:wood", "group:wood"}, @@ -428,11 +435,11 @@ doors.register("door_wood", { }) doors.register("door_steel", { - tiles = {{ name = "doors_door_steel.png", backface_culling = true }}, + tiles = {{name = "doors_door_steel.png", backface_culling = true}}, description = "Steel Door", inventory_image = "doors_item_steel.png", protected = true, - groups = { snappy = 1, cracky = 1, level = 2 }, + groups = {snappy = 1, cracky = 1, level = 2}, sounds = default.node_sound_stone_defaults(), sound_open = "doors_steel_door_open", sound_close = "doors_steel_door_close", @@ -444,10 +451,10 @@ doors.register("door_steel", { }) doors.register("door_glass", { - tiles = { "doors_door_glass.png"}, + tiles = {"doors_door_glass.png"}, description = "Glass Door", inventory_image = "doors_item_glass.png", - groups = { snappy=1, cracky=1, oddly_breakable_by_hand=3 }, + groups = {snappy=1, cracky=1, oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), sound_open = "doors_glass_door_open", sound_close = "doors_glass_door_close", @@ -459,10 +466,10 @@ doors.register("door_glass", { }) doors.register("door_obsidian_glass", { - tiles = { "doors_door_obsidian_glass.png" }, + tiles = {"doors_door_obsidian_glass.png"}, description = "Obsidian Glass Door", inventory_image = "doors_item_obsidian_glass.png", - groups = { snappy=1, cracky=1, oddly_breakable_by_hand=3 }, + groups = {snappy=1, cracky=1, oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), sound_open = "doors_glass_door_open", sound_close = "doors_glass_door_close", @@ -514,11 +521,15 @@ function _doors.trapdoor_toggle(pos, clicker) local def = minetest.registered_nodes[node.name] if string.sub(node.name, -5) == "_open" then - minetest.sound_play(def.sound_close, {pos = pos, gain = 0.3, max_hear_distance = 10}) - minetest.swap_node(pos, {name = string.sub(node.name, 1, string.len(node.name) - 5), param1 = node.param1, param2 = node.param2}) + minetest.sound_play(def.sound_close, + {pos = pos, gain = 0.3, max_hear_distance = 10}) + minetest.swap_node(pos, {name = string.sub(node.name, 1, + string.len(node.name) - 5), param1 = node.param1, param2 = node.param2}) else - minetest.sound_play(def.sound_open, {pos = pos, gain = 0.3, max_hear_distance = 10}) - minetest.swap_node(pos, {name = node.name .. "_open", param1 = node.param1, param2 = node.param2}) + minetest.sound_play(def.sound_open, + {pos = pos, gain = 0.3, max_hear_distance = 10}) + minetest.swap_node(pos, {name = node.name .. "_open", + param1 = node.param1, param2 = node.param2}) end end @@ -527,7 +538,8 @@ function doors.register_trapdoor(name, def) local name_opened = name.."_open" local function check_player_priv(pos, player) - if not def.protected or minetest.check_player_privs(player, "protection_bypass") then + if not def.protected or + minetest.check_player_privs(player, "protection_bypass") then return true end local meta = minetest.get_meta(pos) @@ -560,8 +572,8 @@ function doors.register_trapdoor(name, def) else def.on_blast = function(pos, intensity) minetest.remove_node(pos) - minetest.remove_node({ x = pos.x, y = pos.y + 1, z = pos.z}) - return { name } + minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) + return {name} end end @@ -588,8 +600,8 @@ function doors.register_trapdoor(name, def) type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5} } - def_closed.tiles = { def.tile_front, def.tile_front, def.tile_side, def.tile_side, - def.tile_side, def.tile_side } + def_closed.tiles = {def.tile_front, def.tile_front, def.tile_side, def.tile_side, + def.tile_side, def.tile_side} def_opened.node_box = { type = "fixed", @@ -599,10 +611,10 @@ function doors.register_trapdoor(name, def) type = "fixed", fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5} } - def_opened.tiles = { def.tile_side, def.tile_side, + def_opened.tiles = {def.tile_side, def.tile_side, def.tile_side .. '^[transform3', def.tile_side .. '^[transform1', - def.tile_front, def.tile_front } + def.tile_front, def.tile_front} def_opened.drop = name_closed def_opened.groups.not_in_creative_inventory = 1 @@ -660,13 +672,13 @@ function doors.register_fencegate(name, def) local fence = { description = def.description, drawtype = "mesh", - tiles = { def.texture }, + tiles = {def.texture}, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, is_ground_content = false, drop = name .. "_closed", - connect_sides = { "left", "right" }, + connect_sides = {"left", "right"}, groups = def.groups, sounds = def.sounds, on_rightclick = function(pos, clicker) From 95b2def30cfde6df42fde53d065f99ab006a5d24 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 5 Jul 2016 19:30:33 +0200 Subject: [PATCH 130/383] merge upstream commit: Bucket: Prevent crashing when placing liquid against a buildable node into an unknown node --- mods/bucket/init.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index 2d2690fe..521a4463 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -88,10 +88,11 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name -- check if the node above can be replaced lpos = pointed_thing.above local node = minetest.get_node_or_nil(lpos) - if not node - or not minetest.registered_nodes[node.name].buildable_to then + local above_ndef = node and minetest.registered_nodes[node.name] + + if not above_ndef or not above_ndef.buildable_to then -- do not remove the bucket with the liquid - return + return itemstack end end From 62d8261e42d7fb77cf2b2a0310dcc6e6ffcca525 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 5 Jul 2016 19:36:36 +0200 Subject: [PATCH 131/383] merge upstream commit: Bucket: Allow liquid placed against unknown nodes instead of aborting abnormally --- mods/bucket/init.lua | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index 521a4463..ad5e309c 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -60,16 +60,10 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name end local node = minetest.get_node_or_nil(pointed_thing.under) - if not node then - return - end - local ndef = minetest.registered_nodes[node.name] - if not ndef then - return - end + local ndef = node and minetest.registered_nodes[node.name] -- Call on_rightclick if the pointed node defines it - if ndef.on_rightclick and + if ndef and ndef.on_rightclick and user and not user:get_player_control().sneak then return ndef.on_rightclick( pointed_thing.under, @@ -80,7 +74,7 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name local lpos -- Check if pointing to a buildable node - if ndef.buildable_to then + if ndef and ndef.buildable_to then -- buildable; replace the node lpos = pointed_thing.under else From 2052664a3010960f0b4616f05255ab62adbd3b87 Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 1 Jul 2016 22:43:02 +0200 Subject: [PATCH 132/383] merge upstream commit: Always return the leftover ItemStack for on_place and on_rightclick --- mods/beds/api.lua | 3 +- mods/boats | 1 - mods/boats/init.lua | 336 +++++++++++++++++++++++++++++++++++++ mods/default/nodes.lua | 3 +- mods/doors/init.lua | 9 +- mods/farming | 1 - mods/farming/api.lua | 366 +++++++++++++++++++++++++++++++++++++++++ mods/flowers/init.lua | 2 +- 8 files changed, 713 insertions(+), 8 deletions(-) delete mode 160000 mods/boats create mode 100644 mods/boats/init.lua delete mode 160000 mods/farming create mode 100644 mods/farming/api.lua diff --git a/mods/beds/api.lua b/mods/beds/api.lua index 53d4e488..d640a311 100644 --- a/mods/beds/api.lua +++ b/mods/beds/api.lua @@ -91,8 +91,9 @@ function beds.register_bed(name, def) destruct_bed(pos, 1) end, - on_rightclick = function(pos, node, clicker) + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) beds.on_rightclick(pos, clicker) + return itemstack end, on_rotate = function(pos, node, user, mode, new_param2) diff --git a/mods/boats b/mods/boats deleted file mode 160000 index a7534e93..00000000 --- a/mods/boats +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a7534e938834c1a0322e49df796f613ca1f55880 diff --git a/mods/boats/init.lua b/mods/boats/init.lua new file mode 100644 index 00000000..136e09f4 --- /dev/null +++ b/mods/boats/init.lua @@ -0,0 +1,336 @@ +handlers = {} + +minetest.register_on_leaveplayer(function(player) + handlers[player:get_player_name()] = nil +end) + +-- +-- Helper functions +-- + +local function is_water(pos) + + return minetest.get_item_group(minetest.get_node(pos).name, "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 square = math.sqrt + +local function get_v(v) + + return square(v.x *v.x + v.z *v.z) +end + +-- +-- Boat entity +-- + +local boat = { + physical = true, + --collisionbox = {-0.5, -0.4, -0.5, 0.5, 0.3, 0.5}, -- rowboat + collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5}, -- boat + visual = "mesh", + --mesh = "rowboat.x", + mesh = "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 + + handlers[name] = nil + self.driver = nil + + clicker:set_detach() + + default.player_attached[name] = false + default.player_set_animation(clicker, "stand" , 30) + + local pos = clicker:getpos() + + minetest.after(0.1, function() + clicker:setpos({x=pos.x, y=pos.y+0.2, z=pos.z}) + end) + + elseif not self.driver then + + if handlers[name] and handlers[name].driver then + handlers[name].driver = nil + end + + handlers[name] = self.object:get_luaentity() + 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) + + self.object:setyaw(clicker:get_look_yaw() - math.pi / 2) + end +end + +function boat.on_activate(self, staticdata, dtime_s) + + if (mobs and mobs.entity and mobs.entity == false) + or not self then + self.object:remove() + return + end + + self.object:set_armor_groups({immortal = 1}) + self.v = 0 + self.v2 = self.v + self.last_v = self.v + self.count = 0 +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 + local name = puncher:get_player_name() + puncher:set_detach() + self.driver = nil + handlers[name] = nil + default.player_attached[name] = false + end + + if not self.driver then + + self.removed = true + + if not minetest.setting_getbool("creative_mode") then + + local inv = puncher:get_inventory() + + if inv:room_for_item("main", "boats:boat") then + inv:add_item("main", "boats:boat") + else + minetest.add_item(self.object:getpos(), "boats:boat") + end + end + + self.object:remove() + end +end + +function boat.on_step(self, dtime) + + -- after 10 seconds remove boat and drop as item if not boarded + self.count = self.count + dtime + + if self.count > 10 then + minetest.add_item(self.object:getpos(), "boats:boat") + self.object:remove() + return + end + + self.v = get_v(self.object:getvelocity()) * get_sign(self.v) + + if self.driver then + + self.count = 0 + + 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.08) -- 0.03 changed to speed up turning + else + self.object:setyaw(yaw + (1 + dtime) * 0.08) -- 0.03 + end + + elseif ctrl.right then + + if self.v < 0 then + self.object:setyaw(yaw + (1 + dtime) * 0.08) -- 0.03 + else + self.object:setyaw(yaw - (1 + dtime) * 0.08) -- 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() + local new_velo = {x = 0, y = 0, z = 0} + local new_acce = {x = 0, y = 0, z = 0} + + p.y = p.y - 0.5 + + 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 = 0, z = 0} -- y was 1 + 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) + + -- if boat comes to sudden stop then it has crashed, destroy boat and drop 3x wood + if self.v2 - self.v >= 3 then + + if self.driver then +--print ("Crash! with driver", self.v2 - self.v) + self.driver:set_detach() + default.player_attached[self.driver:get_player_name()] = false + default.player_set_animation(self.driver, "stand" , 30) + else +--print ("Crash! no driver") + end + + minetest.add_item(self.object:getpos(), "default:wood 3") + + self.object:remove() + + return + end + + self.v2 = self.v + +end + +minetest.register_entity("boats:boat", boat) + +minetest.register_craftitem("boats:boat", { + description = "Boat", + --inventory_image = "rowboat_inventory.png", + inventory_image = "boats_inventory.png", + --wield_image = "rowboat_wield.png", + wield_image = "boats_wield.png", + wield_scale = {x = 2, y = 2, z = 1}, + liquids_pointable = true, + + on_place = function(itemstack, placer, pointed_thing) + + if pointed_thing.type ~= "node" + or not is_water(pointed_thing.under) then + return + end + + pointed_thing.under.y = pointed_thing.under.y + 0.5 + + minetest.add_entity(pointed_thing.under, "boats:boat") + + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + + return itemstack + end, +}) + +minetest.register_craft({ + output = "boats:boat", + recipe = { + {"", "", ""}, + {"group:wood", "", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, + }, +}) + +minetest.register_alias("ds_rowboat:ds_rowboat", "boats:boat") + +print ("[MOD] Boats loaded") diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 298d6787..958e35fd 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1614,7 +1614,7 @@ minetest.register_node("default:chest_locked", { " takes " .. stack:get_name() .. " from locked chest at " .. minetest.pos_to_string(pos)) end, - on_rightclick = function(pos, node, clicker) + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) local meta = minetest.get_meta(pos) if has_locked_chest_privilege(meta, clicker) then minetest.show_formspec( @@ -1623,6 +1623,7 @@ minetest.register_node("default:chest_locked", { get_locked_chest_formspec(pos) ) end + return itemstack end, on_blast = function() end, }) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index f21381fe..1c20e0b4 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -373,8 +373,9 @@ function doors.register(name, def) sounds = { def.sound_close, def.sound_open }, } - def.on_rightclick = function(pos, node, clicker) + def.on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) _doors.door_toggle(pos, clicker) + return itemstack end def.after_dig_node = function(pos, node, meta, digger) minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) @@ -547,8 +548,9 @@ function doors.register_trapdoor(name, def) return meta:get_string("doors_owner") == pn end - def.on_rightclick = function(pos, node, clicker) + def.on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) _doors.trapdoor_toggle(pos, clicker) + return itemstack end -- Common trapdoor configuration @@ -681,12 +683,13 @@ function doors.register_fencegate(name, def) connect_sides = {"left", "right"}, groups = def.groups, sounds = def.sounds, - on_rightclick = function(pos, clicker) + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) local node = minetest.get_node(pos) local node_def = minetest.registered_nodes[node.name] minetest.swap_node(pos, {name = node_def.gate, param2 = node.param2}) minetest.sound_play(node_def.sound, {pos = pos, gain = 0.3, max_hear_distance = 8}) + return itemstack end, selection_box = { type = "fixed", diff --git a/mods/farming b/mods/farming deleted file mode 160000 index f93811a8..00000000 --- a/mods/farming +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f93811a8ab8345e453b962620d997c736b02a8ff diff --git a/mods/farming/api.lua b/mods/farming/api.lua new file mode 100644 index 00000000..69c6769b --- /dev/null +++ b/mods/farming/api.lua @@ -0,0 +1,366 @@ + +-- Wear out hoes, place soil +-- TODO Ignore group:flower +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, wear out item 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 + itemstack:add_wear(65535/(uses-1)) + 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 + }) + -- 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 + minetest.swap_node(pos, {name = def.next_plant}) + 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 + minetest.swap_node(pos, {name = def.next_plant}) + + -- 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 + + -- Register seed + local lbm_nodes = {mname .. ":seed_" .. pname} + local g = {seed = 1, snappy = 3, attached_node = 1} + 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", + 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({ + dug = {name = "default_grass_footstep", gain = 0.2}, + place = {name = "default_place_node", gain = 0.25}, + }), + + on_place = function(itemstack, placer, pointed_thing) + 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", + }) + + -- Register growing steps + for i = 1, def.steps do + local drop = { + items = { + {items = {mname .. ":" .. pname}, rarity = 9 - i}, + {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, + {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, + {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 2}, + } + } + local nodegroups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1} + nodegroups[pname] = i + + local next_plant = nil + local on_timer = nil + + if i < def.steps then + next_plant = mname .. ":" .. pname .. "_" .. (i + 1) + on_timer = farming.grow_plant + 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", + 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/flowers/init.lua b/mods/flowers/init.lua index 669c5882..c80375d9 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -251,8 +251,8 @@ minetest.register_node("flowers:waterlily", { end if not minetest.setting_getbool("creative_mode") then itemstack:take_item() - return itemstack end end + return itemstack end }) From 0c122236ef0c38d8479518d87113349017690dd3 Mon Sep 17 00:00:00 2001 From: Tim Date: Sat, 2 Jul 2016 02:30:45 +0200 Subject: [PATCH 133/383] Doors: Remove unnecessary node lookups --- mods/doors/init.lua | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 1c20e0b4..ae41f2dd 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -16,7 +16,8 @@ _doors.registered_trapdoors = {} -- returns an object to a door object or nil function doors.get(pos) - if _doors.registered_doors[minetest.get_node(pos).name] then + local node_name = minetest.get_node(pos).name + if _doors.registered_doors[node_name] then -- A normal upright door return { pos = pos, @@ -40,7 +41,7 @@ function doors.get(pos) return state %2 == 1 end } - elseif _doors.registered_trapdoors[minetest.get_node(pos).name] then + elseif _doors.registered_trapdoors[node_name] then -- A trapdoor return { pos = pos, @@ -60,8 +61,7 @@ function doors.get(pos) return _doors.trapdoor_toggle(self.pos, player) end, state = function(self) - local name = minetest.get_node(pos).name - return name:sub(-5) == "_open" + return node_name:sub(-5) == "_open" end } else @@ -129,15 +129,15 @@ local transform = { }, } -function _doors.door_toggle(pos, clicker) +function _doors.door_toggle(pos, node, clicker) local meta = minetest.get_meta(pos) - local def = minetest.registered_nodes[minetest.get_node(pos).name] + local def = minetest.registered_nodes[node.name] local name = def.door.name local state = meta:get_string("state") if state == "" then -- fix up lvm-placed right-hinged doors, default closed - if minetest.get_node(pos).name:sub(-2) == "_b" then + if node.name:sub(-2) == "_b" then state = 2 else state = 0 @@ -163,7 +163,7 @@ function _doors.door_toggle(pos, clicker) state = state + 1 end - local dir = minetest.get_node(pos).param2 + local dir = node.param2 if state % 2 == 0 then minetest.sound_play(def.door.sounds[1], {pos = pos, gain = 0.3, max_hear_distance = 10}) @@ -374,7 +374,7 @@ function doors.register(name, def) } def.on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - _doors.door_toggle(pos, clicker) + _doors.door_toggle(pos, node, clicker) return itemstack end def.after_dig_node = function(pos, node, meta, digger) @@ -507,7 +507,7 @@ end ----trapdoor---- -function _doors.trapdoor_toggle(pos, clicker) +function _doors.trapdoor_toggle(pos, node, clicker) if clicker and not minetest.check_player_privs(clicker, "protection_bypass") then local meta = minetest.get_meta(pos) local owner = meta:get_string("doors_owner") @@ -518,7 +518,6 @@ function _doors.trapdoor_toggle(pos, clicker) end end - local node = minetest.get_node(pos) local def = minetest.registered_nodes[node.name] if string.sub(node.name, -5) == "_open" then @@ -549,7 +548,7 @@ function doors.register_trapdoor(name, def) end def.on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - _doors.trapdoor_toggle(pos, clicker) + _doors.trapdoor_toggle(pos, node, clicker) return itemstack end @@ -684,7 +683,6 @@ function doors.register_fencegate(name, def) groups = def.groups, sounds = def.sounds, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - local node = minetest.get_node(pos) local node_def = minetest.registered_nodes[node.name] minetest.swap_node(pos, {name = node_def.gate, param2 = node.param2}) minetest.sound_play(node_def.sound, {pos = pos, gain = 0.3, From 980347343a14b88bd86afc1666114aece809a8b7 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 16 Jul 2016 14:12:57 +0200 Subject: [PATCH 134/383] merge upstream commit: Doors: Remove unnecessary node lookups --- mods/boats/README.txt | 20 + mods/boats/depends.txt | 2 + mods/boats/models/boat.obj | 358 ++++++++ mods/boats/models/rowboat.x | 760 +++++++++++++++++ mods/boats/textures/boats_inventory.png | Bin 0 -> 851 bytes mods/boats/textures/boats_wield.png | Bin 0 -> 546 bytes mods/boats/textures/rowboat_inventory.png | Bin 0 -> 444 bytes mods/boats/textures/rowboat_wield.png | Bin 0 -> 366 bytes mods/farming/README.txt | 150 ++++ mods/farming/banana.lua | 70 ++ mods/farming/barley.lua | 96 +++ mods/farming/beanpole.lua | 194 +++++ mods/farming/blueberry.lua | 65 ++ mods/farming/carrot.lua | 103 +++ mods/farming/cocoa.lua | 172 ++++ mods/farming/coffee.lua | 130 +++ mods/farming/compatibility.lua | 78 ++ mods/farming/corn.lua | 114 +++ mods/farming/cotton.lua | 114 +++ mods/farming/cucumber.lua | 53 ++ mods/farming/depends.txt | 2 + mods/farming/description.txt | 1 + mods/farming/donut.lua | 45 + mods/farming/grapes.lua | 201 +++++ mods/farming/grass.lua | 42 + mods/farming/hoes.lua | 151 ++++ mods/farming/init.lua | 797 ++++++++++++++++++ mods/farming/init.lua_orig | 192 +++++ mods/farming/license.txt | 14 + mods/farming/mapgen.lua | 65 ++ mods/farming/melon.lua | 80 ++ mods/farming/mod.conf | 1 + mods/farming/oranges.lua | 58 ++ mods/farming/potato.lua | 85 ++ mods/farming/pumpkin.lua | 346 ++++++++ mods/farming/raspberry.lua | 74 ++ mods/farming/rhubarb.lua | 70 ++ mods/farming/screenshot.png | Bin 0 -> 42499 bytes mods/farming/soil.lua | 64 ++ mods/farming/statistics.lua | 174 ++++ mods/farming/strawberry.lua | 133 +++ mods/farming/sugar.lua | 14 + .../farming/textures/farming_baked_potato.png | Bin 0 -> 321 bytes mods/farming/textures/farming_banana.png | Bin 0 -> 515 bytes .../textures/farming_banana_leaves.png | Bin 0 -> 621 bytes .../textures/farming_banana_sapling.png | Bin 0 -> 647 bytes mods/farming/textures/farming_barley.png | Bin 0 -> 230 bytes mods/farming/textures/farming_barley_1.png | Bin 0 -> 140 bytes mods/farming/textures/farming_barley_2.png | Bin 0 -> 151 bytes mods/farming/textures/farming_barley_3.png | Bin 0 -> 209 bytes mods/farming/textures/farming_barley_4.png | Bin 0 -> 229 bytes mods/farming/textures/farming_barley_5.png | Bin 0 -> 246 bytes mods/farming/textures/farming_barley_6.png | Bin 0 -> 271 bytes mods/farming/textures/farming_barley_7.png | Bin 0 -> 277 bytes mods/farming/textures/farming_barley_seed.png | Bin 0 -> 145 bytes mods/farming/textures/farming_beanbush.png | Bin 0 -> 227 bytes mods/farming/textures/farming_beanpole.png | Bin 0 -> 323 bytes mods/farming/textures/farming_beanpole_1.png | Bin 0 -> 242 bytes mods/farming/textures/farming_beanpole_2.png | Bin 0 -> 264 bytes mods/farming/textures/farming_beanpole_3.png | Bin 0 -> 297 bytes mods/farming/textures/farming_beanpole_4.png | Bin 0 -> 355 bytes mods/farming/textures/farming_beanpole_5.png | Bin 0 -> 353 bytes mods/farming/textures/farming_beans.png | Bin 0 -> 193 bytes mods/farming/textures/farming_blueberries.png | Bin 0 -> 164 bytes mods/farming/textures/farming_blueberry_1.png | Bin 0 -> 114 bytes mods/farming/textures/farming_blueberry_2.png | Bin 0 -> 223 bytes mods/farming/textures/farming_blueberry_3.png | Bin 0 -> 231 bytes mods/farming/textures/farming_blueberry_4.png | Bin 0 -> 317 bytes .../textures/farming_blueberry_muffin.png | Bin 0 -> 236 bytes .../textures/farming_bottle_ethanol.png | Bin 0 -> 221 bytes mods/farming/textures/farming_bread.png | Bin 0 -> 552 bytes mods/farming/textures/farming_carrot.png | Bin 0 -> 220 bytes mods/farming/textures/farming_carrot_1.png | Bin 0 -> 108 bytes mods/farming/textures/farming_carrot_2.png | Bin 0 -> 111 bytes mods/farming/textures/farming_carrot_3.png | Bin 0 -> 113 bytes mods/farming/textures/farming_carrot_4.png | Bin 0 -> 119 bytes mods/farming/textures/farming_carrot_5.png | Bin 0 -> 123 bytes mods/farming/textures/farming_carrot_6.png | Bin 0 -> 129 bytes mods/farming/textures/farming_carrot_7.png | Bin 0 -> 144 bytes mods/farming/textures/farming_carrot_8.png | Bin 0 -> 160 bytes mods/farming/textures/farming_carrot_gold.png | Bin 0 -> 207 bytes .../textures/farming_chocolate_dark.png | Bin 0 -> 194 bytes mods/farming/textures/farming_cocoa_1.png | Bin 0 -> 230 bytes mods/farming/textures/farming_cocoa_2.png | Bin 0 -> 244 bytes mods/farming/textures/farming_cocoa_3.png | Bin 0 -> 253 bytes mods/farming/textures/farming_cocoa_beans.png | Bin 0 -> 187 bytes mods/farming/textures/farming_coffee_1.png | Bin 0 -> 135 bytes mods/farming/textures/farming_coffee_2.png | Bin 0 -> 145 bytes mods/farming/textures/farming_coffee_3.png | Bin 0 -> 171 bytes mods/farming/textures/farming_coffee_4.png | Bin 0 -> 192 bytes mods/farming/textures/farming_coffee_5.png | Bin 0 -> 192 bytes .../farming/textures/farming_coffee_beans.png | Bin 0 -> 204 bytes mods/farming/textures/farming_coffee_cup.png | Bin 0 -> 164 bytes .../textures/farming_coffee_cup_hot.png | Bin 0 -> 183 bytes mods/farming/textures/farming_cookie.png | Bin 0 -> 566 bytes mods/farming/textures/farming_corn.png | Bin 0 -> 197 bytes mods/farming/textures/farming_corn_1.png | Bin 0 -> 107 bytes mods/farming/textures/farming_corn_2.png | Bin 0 -> 121 bytes mods/farming/textures/farming_corn_3.png | Bin 0 -> 142 bytes mods/farming/textures/farming_corn_4.png | Bin 0 -> 154 bytes mods/farming/textures/farming_corn_5.png | Bin 0 -> 161 bytes mods/farming/textures/farming_corn_6.png | Bin 0 -> 268 bytes mods/farming/textures/farming_corn_7.png | Bin 0 -> 275 bytes mods/farming/textures/farming_corn_8.png | Bin 0 -> 311 bytes mods/farming/textures/farming_corn_cob.png | Bin 0 -> 182 bytes mods/farming/textures/farming_cotton.png | Bin 0 -> 166 bytes mods/farming/textures/farming_cotton_1.png | Bin 0 -> 110 bytes mods/farming/textures/farming_cotton_2.png | Bin 0 -> 120 bytes mods/farming/textures/farming_cotton_3.png | Bin 0 -> 144 bytes mods/farming/textures/farming_cotton_4.png | Bin 0 -> 150 bytes mods/farming/textures/farming_cotton_5.png | Bin 0 -> 159 bytes mods/farming/textures/farming_cotton_6.png | Bin 0 -> 164 bytes mods/farming/textures/farming_cotton_7.png | Bin 0 -> 170 bytes mods/farming/textures/farming_cotton_8.png | Bin 0 -> 196 bytes mods/farming/textures/farming_cotton_seed.png | Bin 0 -> 150 bytes mods/farming/textures/farming_cucumber.png | Bin 0 -> 185 bytes mods/farming/textures/farming_cucumber_1.png | Bin 0 -> 119 bytes mods/farming/textures/farming_cucumber_2.png | Bin 0 -> 145 bytes mods/farming/textures/farming_cucumber_3.png | Bin 0 -> 217 bytes mods/farming/textures/farming_cucumber_4.png | Bin 0 -> 275 bytes .../textures/farming_desert_sand_soil.png | Bin 0 -> 637 bytes .../textures/farming_desert_sand_soil_wet.png | Bin 0 -> 590 bytes .../farming_desert_sand_soil_wet_side.png | Bin 0 -> 601 bytes mods/farming/textures/farming_donut.png | Bin 0 -> 258 bytes mods/farming/textures/farming_donut_apple.png | Bin 0 -> 252 bytes .../textures/farming_donut_chocolate.png | Bin 0 -> 256 bytes mods/farming/textures/farming_flour.png | Bin 0 -> 159 bytes mods/farming/textures/farming_grapebush.png | Bin 0 -> 144 bytes mods/farming/textures/farming_grapes.png | Bin 0 -> 175 bytes mods/farming/textures/farming_grapes_1.png | Bin 0 -> 255 bytes mods/farming/textures/farming_grapes_2.png | Bin 0 -> 290 bytes mods/farming/textures/farming_grapes_3.png | Bin 0 -> 307 bytes mods/farming/textures/farming_grapes_4.png | Bin 0 -> 330 bytes mods/farming/textures/farming_grapes_5.png | Bin 0 -> 338 bytes mods/farming/textures/farming_grapes_6.png | Bin 0 -> 347 bytes mods/farming/textures/farming_grapes_7.png | Bin 0 -> 358 bytes mods/farming/textures/farming_grapes_8.png | Bin 0 -> 350 bytes mods/farming/textures/farming_melon_1.png | Bin 0 -> 138 bytes mods/farming/textures/farming_melon_2.png | Bin 0 -> 161 bytes mods/farming/textures/farming_melon_3.png | Bin 0 -> 177 bytes mods/farming/textures/farming_melon_4.png | Bin 0 -> 181 bytes mods/farming/textures/farming_melon_5.png | Bin 0 -> 196 bytes mods/farming/textures/farming_melon_6.png | Bin 0 -> 219 bytes mods/farming/textures/farming_melon_7.png | Bin 0 -> 247 bytes mods/farming/textures/farming_melon_side.png | Bin 0 -> 270 bytes mods/farming/textures/farming_melon_slice.png | Bin 0 -> 227 bytes mods/farming/textures/farming_melon_top.png | Bin 0 -> 272 bytes mods/farming/textures/farming_orange.png | Bin 0 -> 544 bytes mods/farming/textures/farming_orange_1.png | Bin 0 -> 108 bytes mods/farming/textures/farming_orange_2.png | Bin 0 -> 193 bytes mods/farming/textures/farming_orange_3.png | Bin 0 -> 451 bytes mods/farming/textures/farming_orange_4.png | Bin 0 -> 460 bytes mods/farming/textures/farming_orange_seed.png | Bin 0 -> 281 bytes mods/farming/textures/farming_potato.png | Bin 0 -> 252 bytes mods/farming/textures/farming_potato_1.png | Bin 0 -> 132 bytes mods/farming/textures/farming_potato_2.png | Bin 0 -> 187 bytes mods/farming/textures/farming_potato_3.png | Bin 0 -> 237 bytes mods/farming/textures/farming_potato_4.png | Bin 0 -> 283 bytes mods/farming/textures/farming_potato_seed.png | Bin 0 -> 221 bytes mods/farming/textures/farming_pumpkin_1.png | Bin 0 -> 159 bytes mods/farming/textures/farming_pumpkin_2.png | Bin 0 -> 182 bytes mods/farming/textures/farming_pumpkin_3.png | Bin 0 -> 199 bytes mods/farming/textures/farming_pumpkin_4.png | Bin 0 -> 230 bytes mods/farming/textures/farming_pumpkin_5.png | Bin 0 -> 259 bytes mods/farming/textures/farming_pumpkin_6.png | Bin 0 -> 263 bytes mods/farming/textures/farming_pumpkin_7.png | Bin 0 -> 271 bytes mods/farming/textures/farming_pumpkin_8.png | Bin 0 -> 275 bytes .../textures/farming_pumpkin_bread.png | Bin 0 -> 200 bytes .../textures/farming_pumpkin_dough.png | Bin 0 -> 193 bytes .../textures/farming_pumpkin_face_off.png | Bin 0 -> 259 bytes .../textures/farming_pumpkin_face_on.png | Bin 0 -> 269 bytes .../farming/textures/farming_pumpkin_seed.png | Bin 0 -> 312 bytes .../farming/textures/farming_pumpkin_side.png | Bin 0 -> 231 bytes .../textures/farming_pumpkin_slice.png | Bin 0 -> 204 bytes mods/farming/textures/farming_pumpkin_top.png | Bin 0 -> 272 bytes mods/farming/textures/farming_raspberries.png | Bin 0 -> 230 bytes mods/farming/textures/farming_raspberry_1.png | Bin 0 -> 100 bytes mods/farming/textures/farming_raspberry_2.png | Bin 0 -> 223 bytes mods/farming/textures/farming_raspberry_3.png | Bin 0 -> 231 bytes mods/farming/textures/farming_raspberry_4.png | Bin 0 -> 239 bytes .../textures/farming_raspberry_seed.png | Bin 0 -> 212 bytes .../textures/farming_raspberry_smoothie.png | Bin 0 -> 231 bytes mods/farming/textures/farming_rhubarb.png | Bin 0 -> 165 bytes mods/farming/textures/farming_rhubarb_1.png | Bin 0 -> 119 bytes mods/farming/textures/farming_rhubarb_2.png | Bin 0 -> 152 bytes mods/farming/textures/farming_rhubarb_3.png | Bin 0 -> 167 bytes mods/farming/textures/farming_rhubarb_pie.png | Bin 0 -> 198 bytes .../farming/textures/farming_rhubarb_seed.png | Bin 0 -> 219 bytes .../textures/farming_scarecrow_front.png | Bin 0 -> 634 bytes .../farming_scarecrow_front_light.png | Bin 0 -> 641 bytes .../textures/farming_scarecrow_side.png | Bin 0 -> 613 bytes .../textures/farming_scarecrow_top.png | Bin 0 -> 639 bytes mods/farming/textures/farming_soil.png | Bin 0 -> 706 bytes mods/farming/textures/farming_soil_wet.png | Bin 0 -> 677 bytes .../textures/farming_soil_wet_side.png | Bin 0 -> 96 bytes mods/farming/textures/farming_straw.png | Bin 0 -> 892 bytes mods/farming/textures/farming_strawberry.png | Bin 0 -> 382 bytes .../farming/textures/farming_strawberry_1.png | Bin 0 -> 116 bytes .../farming/textures/farming_strawberry_2.png | Bin 0 -> 137 bytes .../farming/textures/farming_strawberry_3.png | Bin 0 -> 157 bytes .../farming/textures/farming_strawberry_4.png | Bin 0 -> 209 bytes .../farming/textures/farming_strawberry_5.png | Bin 0 -> 234 bytes .../farming/textures/farming_strawberry_6.png | Bin 0 -> 240 bytes .../farming/textures/farming_strawberry_7.png | Bin 0 -> 258 bytes .../farming/textures/farming_strawberry_8.png | Bin 0 -> 258 bytes mods/farming/textures/farming_sugar.png | Bin 0 -> 142 bytes mods/farming/textures/farming_tomato.png | Bin 0 -> 488 bytes mods/farming/textures/farming_tomato_1.png | Bin 0 -> 207 bytes mods/farming/textures/farming_tomato_2.png | Bin 0 -> 223 bytes mods/farming/textures/farming_tomato_3.png | Bin 0 -> 250 bytes mods/farming/textures/farming_tomato_4.png | Bin 0 -> 269 bytes mods/farming/textures/farming_tomato_5.png | Bin 0 -> 320 bytes mods/farming/textures/farming_tomato_6.png | Bin 0 -> 490 bytes mods/farming/textures/farming_tomato_7.png | Bin 0 -> 570 bytes mods/farming/textures/farming_tomato_8.png | Bin 0 -> 510 bytes mods/farming/textures/farming_tomato_seed.png | Bin 0 -> 221 bytes .../textures/farming_tool_bronzehoe.png | Bin 0 -> 258 bytes .../textures/farming_tool_diamondhoe.png | Bin 0 -> 244 bytes .../farming/textures/farming_tool_mesehoe.png | Bin 0 -> 230 bytes .../textures/farming_tool_steelhoe.png | Bin 0 -> 230 bytes .../textures/farming_tool_stonehoe.png | Bin 0 -> 263 bytes .../farming/textures/farming_tool_woodhoe.png | Bin 0 -> 222 bytes mods/farming/textures/farming_trellis.png | Bin 0 -> 227 bytes mods/farming/textures/farming_wheat.png | Bin 0 -> 241 bytes mods/farming/textures/farming_wheat_1.png | Bin 0 -> 120 bytes mods/farming/textures/farming_wheat_2.png | Bin 0 -> 142 bytes mods/farming/textures/farming_wheat_3.png | Bin 0 -> 172 bytes mods/farming/textures/farming_wheat_4.png | Bin 0 -> 191 bytes mods/farming/textures/farming_wheat_5.png | Bin 0 -> 218 bytes mods/farming/textures/farming_wheat_6.png | Bin 0 -> 234 bytes mods/farming/textures/farming_wheat_7.png | Bin 0 -> 253 bytes mods/farming/textures/farming_wheat_8.png | Bin 0 -> 310 bytes mods/farming/textures/farming_wheat_seed.png | Bin 0 -> 141 bytes .../farming/textures/vessels_drinking_cup.png | Bin 0 -> 200 bytes mods/farming/todo.md | 12 + mods/farming/tomato.lua | 86 ++ mods/farming/wheat.lua | 152 ++++ 237 files changed, 5338 insertions(+) create mode 100644 mods/boats/README.txt create mode 100644 mods/boats/depends.txt create mode 100644 mods/boats/models/boat.obj create mode 100644 mods/boats/models/rowboat.x create mode 100644 mods/boats/textures/boats_inventory.png create mode 100644 mods/boats/textures/boats_wield.png create mode 100644 mods/boats/textures/rowboat_inventory.png create mode 100644 mods/boats/textures/rowboat_wield.png create mode 100644 mods/farming/README.txt create mode 100644 mods/farming/banana.lua create mode 100644 mods/farming/barley.lua create mode 100644 mods/farming/beanpole.lua create mode 100644 mods/farming/blueberry.lua create mode 100644 mods/farming/carrot.lua create mode 100644 mods/farming/cocoa.lua create mode 100644 mods/farming/coffee.lua create mode 100644 mods/farming/compatibility.lua create mode 100644 mods/farming/corn.lua create mode 100644 mods/farming/cotton.lua create mode 100644 mods/farming/cucumber.lua create mode 100644 mods/farming/depends.txt create mode 100644 mods/farming/description.txt create mode 100644 mods/farming/donut.lua create mode 100644 mods/farming/grapes.lua create mode 100644 mods/farming/grass.lua create mode 100644 mods/farming/hoes.lua create mode 100644 mods/farming/init.lua create mode 100644 mods/farming/init.lua_orig create mode 100644 mods/farming/license.txt create mode 100644 mods/farming/mapgen.lua create mode 100644 mods/farming/melon.lua create mode 100644 mods/farming/mod.conf create mode 100644 mods/farming/oranges.lua create mode 100644 mods/farming/potato.lua create mode 100644 mods/farming/pumpkin.lua create mode 100644 mods/farming/raspberry.lua create mode 100644 mods/farming/rhubarb.lua create mode 100644 mods/farming/screenshot.png create mode 100644 mods/farming/soil.lua create mode 100644 mods/farming/statistics.lua create mode 100644 mods/farming/strawberry.lua create mode 100644 mods/farming/sugar.lua create mode 100644 mods/farming/textures/farming_baked_potato.png create mode 100644 mods/farming/textures/farming_banana.png create mode 100644 mods/farming/textures/farming_banana_leaves.png create mode 100644 mods/farming/textures/farming_banana_sapling.png create mode 100644 mods/farming/textures/farming_barley.png create mode 100644 mods/farming/textures/farming_barley_1.png create mode 100644 mods/farming/textures/farming_barley_2.png create mode 100644 mods/farming/textures/farming_barley_3.png create mode 100644 mods/farming/textures/farming_barley_4.png create mode 100644 mods/farming/textures/farming_barley_5.png create mode 100644 mods/farming/textures/farming_barley_6.png create mode 100644 mods/farming/textures/farming_barley_7.png create mode 100644 mods/farming/textures/farming_barley_seed.png create mode 100644 mods/farming/textures/farming_beanbush.png create mode 100644 mods/farming/textures/farming_beanpole.png create mode 100644 mods/farming/textures/farming_beanpole_1.png create mode 100644 mods/farming/textures/farming_beanpole_2.png create mode 100644 mods/farming/textures/farming_beanpole_3.png create mode 100644 mods/farming/textures/farming_beanpole_4.png create mode 100644 mods/farming/textures/farming_beanpole_5.png create mode 100644 mods/farming/textures/farming_beans.png create mode 100644 mods/farming/textures/farming_blueberries.png create mode 100644 mods/farming/textures/farming_blueberry_1.png create mode 100644 mods/farming/textures/farming_blueberry_2.png create mode 100644 mods/farming/textures/farming_blueberry_3.png create mode 100644 mods/farming/textures/farming_blueberry_4.png create mode 100644 mods/farming/textures/farming_blueberry_muffin.png create mode 100644 mods/farming/textures/farming_bottle_ethanol.png create mode 100644 mods/farming/textures/farming_bread.png create mode 100644 mods/farming/textures/farming_carrot.png create mode 100644 mods/farming/textures/farming_carrot_1.png create mode 100644 mods/farming/textures/farming_carrot_2.png create mode 100644 mods/farming/textures/farming_carrot_3.png create mode 100644 mods/farming/textures/farming_carrot_4.png create mode 100644 mods/farming/textures/farming_carrot_5.png create mode 100644 mods/farming/textures/farming_carrot_6.png create mode 100644 mods/farming/textures/farming_carrot_7.png create mode 100644 mods/farming/textures/farming_carrot_8.png create mode 100644 mods/farming/textures/farming_carrot_gold.png create mode 100644 mods/farming/textures/farming_chocolate_dark.png create mode 100644 mods/farming/textures/farming_cocoa_1.png create mode 100644 mods/farming/textures/farming_cocoa_2.png create mode 100644 mods/farming/textures/farming_cocoa_3.png create mode 100644 mods/farming/textures/farming_cocoa_beans.png create mode 100644 mods/farming/textures/farming_coffee_1.png create mode 100644 mods/farming/textures/farming_coffee_2.png create mode 100644 mods/farming/textures/farming_coffee_3.png create mode 100644 mods/farming/textures/farming_coffee_4.png create mode 100644 mods/farming/textures/farming_coffee_5.png create mode 100644 mods/farming/textures/farming_coffee_beans.png create mode 100644 mods/farming/textures/farming_coffee_cup.png create mode 100644 mods/farming/textures/farming_coffee_cup_hot.png create mode 100644 mods/farming/textures/farming_cookie.png create mode 100644 mods/farming/textures/farming_corn.png create mode 100644 mods/farming/textures/farming_corn_1.png create mode 100644 mods/farming/textures/farming_corn_2.png create mode 100644 mods/farming/textures/farming_corn_3.png create mode 100644 mods/farming/textures/farming_corn_4.png create mode 100644 mods/farming/textures/farming_corn_5.png create mode 100644 mods/farming/textures/farming_corn_6.png create mode 100644 mods/farming/textures/farming_corn_7.png create mode 100644 mods/farming/textures/farming_corn_8.png create mode 100644 mods/farming/textures/farming_corn_cob.png create mode 100644 mods/farming/textures/farming_cotton.png create mode 100644 mods/farming/textures/farming_cotton_1.png create mode 100644 mods/farming/textures/farming_cotton_2.png create mode 100644 mods/farming/textures/farming_cotton_3.png create mode 100644 mods/farming/textures/farming_cotton_4.png create mode 100644 mods/farming/textures/farming_cotton_5.png create mode 100644 mods/farming/textures/farming_cotton_6.png create mode 100644 mods/farming/textures/farming_cotton_7.png create mode 100644 mods/farming/textures/farming_cotton_8.png create mode 100644 mods/farming/textures/farming_cotton_seed.png create mode 100644 mods/farming/textures/farming_cucumber.png create mode 100644 mods/farming/textures/farming_cucumber_1.png create mode 100644 mods/farming/textures/farming_cucumber_2.png create mode 100644 mods/farming/textures/farming_cucumber_3.png create mode 100644 mods/farming/textures/farming_cucumber_4.png create mode 100644 mods/farming/textures/farming_desert_sand_soil.png create mode 100644 mods/farming/textures/farming_desert_sand_soil_wet.png create mode 100644 mods/farming/textures/farming_desert_sand_soil_wet_side.png create mode 100644 mods/farming/textures/farming_donut.png create mode 100644 mods/farming/textures/farming_donut_apple.png create mode 100644 mods/farming/textures/farming_donut_chocolate.png create mode 100644 mods/farming/textures/farming_flour.png create mode 100644 mods/farming/textures/farming_grapebush.png create mode 100644 mods/farming/textures/farming_grapes.png create mode 100644 mods/farming/textures/farming_grapes_1.png create mode 100644 mods/farming/textures/farming_grapes_2.png create mode 100644 mods/farming/textures/farming_grapes_3.png create mode 100644 mods/farming/textures/farming_grapes_4.png create mode 100644 mods/farming/textures/farming_grapes_5.png create mode 100644 mods/farming/textures/farming_grapes_6.png create mode 100644 mods/farming/textures/farming_grapes_7.png create mode 100644 mods/farming/textures/farming_grapes_8.png create mode 100644 mods/farming/textures/farming_melon_1.png create mode 100644 mods/farming/textures/farming_melon_2.png create mode 100644 mods/farming/textures/farming_melon_3.png create mode 100644 mods/farming/textures/farming_melon_4.png create mode 100644 mods/farming/textures/farming_melon_5.png create mode 100644 mods/farming/textures/farming_melon_6.png create mode 100644 mods/farming/textures/farming_melon_7.png create mode 100644 mods/farming/textures/farming_melon_side.png create mode 100644 mods/farming/textures/farming_melon_slice.png create mode 100644 mods/farming/textures/farming_melon_top.png create mode 100644 mods/farming/textures/farming_orange.png create mode 100644 mods/farming/textures/farming_orange_1.png create mode 100644 mods/farming/textures/farming_orange_2.png create mode 100644 mods/farming/textures/farming_orange_3.png create mode 100644 mods/farming/textures/farming_orange_4.png create mode 100644 mods/farming/textures/farming_orange_seed.png create mode 100644 mods/farming/textures/farming_potato.png create mode 100644 mods/farming/textures/farming_potato_1.png create mode 100644 mods/farming/textures/farming_potato_2.png create mode 100644 mods/farming/textures/farming_potato_3.png create mode 100644 mods/farming/textures/farming_potato_4.png create mode 100644 mods/farming/textures/farming_potato_seed.png create mode 100644 mods/farming/textures/farming_pumpkin_1.png create mode 100644 mods/farming/textures/farming_pumpkin_2.png create mode 100644 mods/farming/textures/farming_pumpkin_3.png create mode 100644 mods/farming/textures/farming_pumpkin_4.png create mode 100644 mods/farming/textures/farming_pumpkin_5.png create mode 100644 mods/farming/textures/farming_pumpkin_6.png create mode 100644 mods/farming/textures/farming_pumpkin_7.png create mode 100644 mods/farming/textures/farming_pumpkin_8.png create mode 100644 mods/farming/textures/farming_pumpkin_bread.png create mode 100644 mods/farming/textures/farming_pumpkin_dough.png create mode 100644 mods/farming/textures/farming_pumpkin_face_off.png create mode 100644 mods/farming/textures/farming_pumpkin_face_on.png create mode 100644 mods/farming/textures/farming_pumpkin_seed.png create mode 100644 mods/farming/textures/farming_pumpkin_side.png create mode 100644 mods/farming/textures/farming_pumpkin_slice.png create mode 100644 mods/farming/textures/farming_pumpkin_top.png create mode 100644 mods/farming/textures/farming_raspberries.png create mode 100644 mods/farming/textures/farming_raspberry_1.png create mode 100644 mods/farming/textures/farming_raspberry_2.png create mode 100644 mods/farming/textures/farming_raspberry_3.png create mode 100644 mods/farming/textures/farming_raspberry_4.png create mode 100644 mods/farming/textures/farming_raspberry_seed.png create mode 100644 mods/farming/textures/farming_raspberry_smoothie.png create mode 100644 mods/farming/textures/farming_rhubarb.png create mode 100644 mods/farming/textures/farming_rhubarb_1.png create mode 100644 mods/farming/textures/farming_rhubarb_2.png create mode 100644 mods/farming/textures/farming_rhubarb_3.png create mode 100644 mods/farming/textures/farming_rhubarb_pie.png create mode 100644 mods/farming/textures/farming_rhubarb_seed.png create mode 100644 mods/farming/textures/farming_scarecrow_front.png create mode 100644 mods/farming/textures/farming_scarecrow_front_light.png create mode 100644 mods/farming/textures/farming_scarecrow_side.png create mode 100644 mods/farming/textures/farming_scarecrow_top.png create mode 100644 mods/farming/textures/farming_soil.png create mode 100644 mods/farming/textures/farming_soil_wet.png create mode 100644 mods/farming/textures/farming_soil_wet_side.png create mode 100644 mods/farming/textures/farming_straw.png create mode 100644 mods/farming/textures/farming_strawberry.png create mode 100644 mods/farming/textures/farming_strawberry_1.png create mode 100644 mods/farming/textures/farming_strawberry_2.png create mode 100644 mods/farming/textures/farming_strawberry_3.png create mode 100644 mods/farming/textures/farming_strawberry_4.png create mode 100644 mods/farming/textures/farming_strawberry_5.png create mode 100644 mods/farming/textures/farming_strawberry_6.png create mode 100644 mods/farming/textures/farming_strawberry_7.png create mode 100644 mods/farming/textures/farming_strawberry_8.png create mode 100644 mods/farming/textures/farming_sugar.png create mode 100644 mods/farming/textures/farming_tomato.png create mode 100644 mods/farming/textures/farming_tomato_1.png create mode 100644 mods/farming/textures/farming_tomato_2.png create mode 100644 mods/farming/textures/farming_tomato_3.png create mode 100644 mods/farming/textures/farming_tomato_4.png create mode 100644 mods/farming/textures/farming_tomato_5.png create mode 100644 mods/farming/textures/farming_tomato_6.png create mode 100644 mods/farming/textures/farming_tomato_7.png create mode 100644 mods/farming/textures/farming_tomato_8.png create mode 100644 mods/farming/textures/farming_tomato_seed.png create mode 100644 mods/farming/textures/farming_tool_bronzehoe.png create mode 100644 mods/farming/textures/farming_tool_diamondhoe.png create mode 100644 mods/farming/textures/farming_tool_mesehoe.png create mode 100644 mods/farming/textures/farming_tool_steelhoe.png create mode 100644 mods/farming/textures/farming_tool_stonehoe.png create mode 100644 mods/farming/textures/farming_tool_woodhoe.png create mode 100644 mods/farming/textures/farming_trellis.png create mode 100644 mods/farming/textures/farming_wheat.png create mode 100644 mods/farming/textures/farming_wheat_1.png create mode 100644 mods/farming/textures/farming_wheat_2.png create mode 100644 mods/farming/textures/farming_wheat_3.png create mode 100644 mods/farming/textures/farming_wheat_4.png create mode 100644 mods/farming/textures/farming_wheat_5.png create mode 100644 mods/farming/textures/farming_wheat_6.png create mode 100644 mods/farming/textures/farming_wheat_7.png create mode 100644 mods/farming/textures/farming_wheat_8.png create mode 100644 mods/farming/textures/farming_wheat_seed.png create mode 100644 mods/farming/textures/vessels_drinking_cup.png create mode 100644 mods/farming/todo.md create mode 100644 mods/farming/tomato.lua create mode 100644 mods/farming/wheat.lua diff --git a/mods/boats/README.txt b/mods/boats/README.txt new file mode 100644 index 00000000..3fa40f25 --- /dev/null +++ b/mods/boats/README.txt @@ -0,0 +1,20 @@ +Minetest 0.4 mod: boats +======================= +by PilzAdam, slightly modified for NeXt +changed by TenPlus1 to add some new features + - boat is destroyed when crashing (drops 3 wood) + - boat turns faster + - used model from ds_rowboat mod + +License of source code: +----------------------- +WTFPL + +License of media (textures and sounds): +--------------------------------------- +WTFPL + +Authors of media files: +----------------------- +textures: Zeg9 +model: thetoon and Zeg9, modified by PavelS(SokolovPavel) diff --git a/mods/boats/depends.txt b/mods/boats/depends.txt new file mode 100644 index 00000000..7c506cfb --- /dev/null +++ b/mods/boats/depends.txt @@ -0,0 +1,2 @@ +default +mobs? \ No newline at end of file diff --git a/mods/boats/models/boat.obj b/mods/boats/models/boat.obj new file mode 100644 index 00000000..0f21e47f --- /dev/null +++ b/mods/boats/models/boat.obj @@ -0,0 +1,358 @@ +# 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/models/rowboat.x b/mods/boats/models/rowboat.x new file mode 100644 index 00000000..73a61df3 --- /dev/null +++ b/mods/boats/models/rowboat.x @@ -0,0 +1,760 @@ +xof 0303txt 0032 + +Frame Root { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000,-0.000000, 1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Frame Cube_000 { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Mesh { // Cube_000 mesh + 240; + 6.000000; 3.999999; 2.376923;, + 5.999998;-8.000001; 2.376923;, + 5.999998;-8.000001; 4.376923;, + 6.000001; 3.999999; 4.376923;, + -2.000000; 8.000000; 2.376923;, + 2.000000; 8.000000; 2.376923;, + 2.000001; 8.000000; 4.376923;, + -1.999999; 8.000000; 4.376923;, + -6.000000; 4.000000; 4.376923;, + -6.000001;-8.000000; 4.376923;, + -6.000001;-7.999999; 2.376923;, + -6.000000; 4.000000; 2.376923;, + -3.999999; 6.000001; 2.376923;, + -1.999999; 6.000000; 2.376923;, + -2.000001;-8.000002; 2.376923;, + -4.000001;-8.000000; 2.376923;, + -2.000000; 4.000000;-1.623077;, + -2.000001;-7.999999;-1.623077;, + 1.999999;-8.000001;-1.623077;, + 2.000000; 4.000000;-1.623077;, + -2.000000; 4.000000; 0.376923;, + 2.000000; 3.999999; 0.376923;, + 1.999999;-8.000001; 0.376923;, + -2.000001;-8.000000; 0.376923;, + -2.000000; 4.000000;-1.623077;, + 2.000000; 4.000000;-1.623077;, + 2.000000; 3.999999; 0.376923;, + -2.000000; 4.000000; 0.376923;, + 2.000000; 4.000000;-1.623077;, + 1.999999;-8.000001;-1.623077;, + 1.999999;-8.000001; 0.376923;, + 2.000000; 3.999999; 0.376923;, + 1.999999;-8.000001;-1.623077;, + -2.000001;-7.999999;-1.623077;, + -2.000001;-8.000000; 0.376923;, + 1.999999;-8.000001; 0.376923;, + -2.000000; 4.000000; 0.376923;, + -2.000001;-8.000000; 0.376923;, + -2.000001;-7.999999;-1.623077;, + -2.000000; 4.000000;-1.623077;, + -4.000001;-8.000000; 0.376923;, + -4.000001;-10.000000; 0.376923;, + 4.000000;-10.000000; 0.376923;, + 3.999999;-8.000000; 0.376923;, + -4.000000;-7.999999; 4.376923;, + 4.000000;-8.000001; 4.376923;, + 3.999999;-10.000001; 4.376923;, + -4.000001;-10.000000; 4.376923;, + -4.000001;-8.000000; 0.376923;, + 3.999999;-8.000000; 0.376923;, + 4.000000;-8.000001; 4.376923;, + -4.000000;-7.999999; 4.376923;, + 3.999999;-8.000000; 0.376923;, + 4.000000;-10.000000; 0.376923;, + 3.999999;-10.000001; 4.376923;, + 4.000000;-8.000001; 4.376923;, + 4.000000;-10.000000; 0.376923;, + -4.000001;-10.000000; 0.376923;, + -4.000001;-10.000000; 4.376923;, + 3.999999;-10.000001; 4.376923;, + -4.000000;-7.999999; 4.376923;, + -4.000001;-10.000000; 4.376923;, + -4.000001;-10.000000; 0.376923;, + -4.000001;-8.000000; 0.376923;, + 4.000000; 4.000000; 2.376923;, + 3.999999;-8.000001; 2.376923;, + 5.999998;-8.000001; 2.376923;, + 6.000000; 3.999999; 2.376923;, + 4.000001; 4.000000; 4.376923;, + 6.000001; 3.999999; 4.376923;, + 5.999998;-8.000001; 4.376923;, + 4.000000;-8.000001; 4.376923;, + 4.000000; 4.000000; 2.376923;, + 6.000000; 3.999999; 2.376923;, + 6.000001; 3.999999; 4.376923;, + 4.000001; 4.000000; 4.376923;, + 5.999998;-8.000001; 2.376923;, + 3.999999;-8.000001; 2.376923;, + 4.000000;-8.000001; 4.376923;, + 5.999998;-8.000001; 4.376923;, + 4.000001; 4.000000; 4.376923;, + 4.000000;-8.000001; 4.376923;, + 3.999999;-8.000001; 2.376923;, + 4.000000; 4.000000; 2.376923;, + 2.000000; 6.000000; 0.376923;, + 1.999999;-8.000001; 0.376923;, + 3.999999;-8.000000; 0.376923;, + 4.000000; 6.000000; 0.376923;, + 2.000001; 6.000000; 2.376923;, + 4.000001; 5.999999; 2.376923;, + 3.999999;-8.000001; 2.376923;, + 1.999999;-8.000000; 2.376923;, + 2.000000; 6.000000; 0.376923;, + 4.000000; 6.000000; 0.376923;, + 4.000001; 5.999999; 2.376923;, + 2.000001; 6.000000; 2.376923;, + 4.000000; 6.000000; 0.376923;, + 3.999999;-8.000000; 0.376923;, + 3.999999;-8.000001; 2.376923;, + 4.000001; 5.999999; 2.376923;, + 3.999999;-8.000000; 0.376923;, + 1.999999;-8.000001; 0.376923;, + 1.999999;-8.000000; 2.376923;, + 3.999999;-8.000001; 2.376923;, + 2.000001; 6.000000; 2.376923;, + 1.999999;-8.000000; 2.376923;, + 1.999999;-8.000001; 0.376923;, + 2.000000; 6.000000; 0.376923;, + 2.000001; 6.000000; 2.376923;, + 2.000000; 4.000000; 2.376923;, + 4.000000; 4.000000; 2.376923;, + 4.000001; 5.999999; 2.376923;, + 2.000001; 6.000000; 4.376923;, + 4.000001; 5.999999; 4.376923;, + 4.000001; 4.000000; 4.376923;, + 2.000000; 4.000000; 4.376923;, + 2.000001; 6.000000; 2.376923;, + 4.000001; 5.999999; 2.376923;, + 4.000001; 5.999999; 4.376923;, + 2.000001; 6.000000; 4.376923;, + 4.000001; 5.999999; 2.376923;, + 4.000000; 4.000000; 2.376923;, + 4.000001; 4.000000; 4.376923;, + 4.000001; 5.999999; 4.376923;, + 4.000000; 4.000000; 2.376923;, + 2.000000; 4.000000; 2.376923;, + 2.000000; 4.000000; 4.376923;, + 4.000001; 4.000000; 4.376923;, + 2.000001; 6.000000; 4.376923;, + 2.000000; 4.000000; 4.376923;, + 2.000000; 4.000000; 2.376923;, + 2.000001; 6.000000; 2.376923;, + -3.999999; 6.000001; 2.376923;, + -4.000000; 4.000000; 2.376923;, + -2.000000; 4.000000; 2.376923;, + -1.999999; 6.000000; 2.376923;, + -3.999999; 6.000001; 4.376923;, + -1.999999; 6.000000; 4.376923;, + -2.000000; 4.000000; 4.376923;, + -4.000000; 3.999999; 4.376923;, + -3.999999; 6.000001; 2.376923;, + -1.999999; 6.000000; 2.376923;, + -1.999999; 6.000000; 4.376923;, + -3.999999; 6.000001; 4.376923;, + -1.999999; 6.000000; 2.376923;, + -2.000000; 4.000000; 2.376923;, + -2.000000; 4.000000; 4.376923;, + -1.999999; 6.000000; 4.376923;, + -2.000000; 4.000000; 2.376923;, + -4.000000; 4.000000; 2.376923;, + -4.000000; 3.999999; 4.376923;, + -2.000000; 4.000000; 4.376923;, + -3.999999; 6.000001; 4.376923;, + -4.000000; 3.999999; 4.376923;, + -4.000000; 4.000000; 2.376923;, + -3.999999; 6.000001; 2.376923;, + -2.000000; 8.000000; 2.376923;, + -1.999999; 6.000000; 2.376923;, + 2.000001; 6.000000; 2.376923;, + 2.000000; 8.000000; 2.376923;, + -1.999999; 8.000000; 4.376923;, + 2.000001; 8.000000; 4.376923;, + 2.000001; 6.000000; 4.376923;, + -1.999999; 6.000000; 4.376923;, + 2.000000; 8.000000; 2.376923;, + 2.000001; 6.000000; 2.376923;, + 2.000001; 6.000000; 4.376923;, + 2.000001; 8.000000; 4.376923;, + 2.000001; 6.000000; 2.376923;, + -1.999999; 6.000000; 2.376923;, + -1.999999; 6.000000; 4.376923;, + 2.000001; 6.000000; 4.376923;, + -1.999999; 8.000000; 4.376923;, + -1.999999; 6.000000; 4.376923;, + -1.999999; 6.000000; 2.376923;, + -2.000000; 8.000000; 2.376923;, + -2.000000; 6.000000; 0.376923;, + -2.000000; 4.000000; 0.376923;, + 2.000000; 3.999999; 0.376923;, + 2.000000; 6.000000; 0.376923;, + -1.999999; 6.000000; 2.376923;, + 2.000001; 6.000000; 2.376923;, + 2.000000; 4.000000; 2.376923;, + -2.000000; 4.000000; 2.376923;, + -2.000000; 6.000000; 0.376923;, + 2.000000; 6.000000; 0.376923;, + 2.000001; 6.000000; 2.376923;, + -1.999999; 6.000000; 2.376923;, + 2.000000; 6.000000; 0.376923;, + 2.000000; 3.999999; 0.376923;, + 2.000000; 4.000000; 2.376923;, + 2.000001; 6.000000; 2.376923;, + 2.000000; 3.999999; 0.376923;, + -2.000000; 4.000000; 0.376923;, + -2.000000; 4.000000; 2.376923;, + 2.000000; 4.000000; 2.376923;, + -1.999999; 6.000000; 2.376923;, + -2.000000; 4.000000; 2.376923;, + -2.000000; 4.000000; 0.376923;, + -2.000000; 6.000000; 0.376923;, + -6.000000; 4.000000; 2.376923;, + -6.000001;-7.999999; 2.376923;, + -4.000001;-8.000000; 2.376923;, + -4.000000; 4.000000; 2.376923;, + -6.000000; 4.000000; 4.376923;, + -4.000000; 3.999999; 4.376923;, + -4.000000;-7.999999; 4.376923;, + -6.000001;-8.000000; 4.376923;, + -6.000000; 4.000000; 2.376923;, + -4.000000; 4.000000; 2.376923;, + -4.000000; 3.999999; 4.376923;, + -6.000000; 4.000000; 4.376923;, + -4.000000; 4.000000; 2.376923;, + -4.000001;-8.000000; 2.376923;, + -4.000000;-7.999999; 4.376923;, + -4.000000; 3.999999; 4.376923;, + -4.000001;-8.000000; 2.376923;, + -6.000001;-7.999999; 2.376923;, + -6.000001;-8.000000; 4.376923;, + -4.000000;-7.999999; 4.376923;, + -4.000000; 6.000001; 0.376923;, + -4.000001;-8.000000; 0.376923;, + -2.000001;-8.000000; 0.376923;, + -2.000000; 6.000000; 0.376923;, + -4.000000; 6.000001; 0.376923;, + -2.000000; 6.000000; 0.376923;, + -1.999999; 6.000000; 2.376923;, + -3.999999; 6.000001; 2.376923;, + -2.000000; 6.000000; 0.376923;, + -2.000001;-8.000000; 0.376923;, + -2.000001;-8.000002; 2.376923;, + -1.999999; 6.000000; 2.376923;, + -2.000001;-8.000000; 0.376923;, + -4.000001;-8.000000; 0.376923;, + -4.000001;-8.000000; 2.376923;, + -2.000001;-8.000002; 2.376923;, + -3.999999; 6.000001; 2.376923;, + -4.000001;-8.000000; 2.376923;, + -4.000001;-8.000000; 0.376923;, + -4.000000; 6.000001; 0.376923;; + 60; + 4;0,1,2,3;, + 4;4,5,6,7;, + 4;8,9,10,11;, + 4;12,13,14,15;, + 4;16,17,18,19;, + 4;20,21,22,23;, + 4;24,25,26,27;, + 4;28,29,30,31;, + 4;32,33,34,35;, + 4;36,37,38,39;, + 4;40,41,42,43;, + 4;44,45,46,47;, + 4;48,49,50,51;, + 4;52,53,54,55;, + 4;56,57,58,59;, + 4;60,61,62,63;, + 4;64,65,66,67;, + 4;68,69,70,71;, + 4;72,73,74,75;, + 4;76,77,78,79;, + 4;80,81,82,83;, + 4;84,85,86,87;, + 4;88,89,90,91;, + 4;92,93,94,95;, + 4;96,97,98,99;, + 4;100,101,102,103;, + 4;104,105,106,107;, + 4;108,109,110,111;, + 4;112,113,114,115;, + 4;116,117,118,119;, + 4;120,121,122,123;, + 4;124,125,126,127;, + 4;128,129,130,131;, + 4;132,133,134,135;, + 4;136,137,138,139;, + 4;140,141,142,143;, + 4;144,145,146,147;, + 4;148,149,150,151;, + 4;152,153,154,155;, + 4;156,157,158,159;, + 4;160,161,162,163;, + 4;164,165,166,167;, + 4;168,169,170,171;, + 4;172,173,174,175;, + 4;176,177,178,179;, + 4;180,181,182,183;, + 4;184,185,186,187;, + 4;188,189,190,191;, + 4;192,193,194,195;, + 4;196,197,198,199;, + 4;200,201,202,203;, + 4;204,205,206,207;, + 4;208,209,210,211;, + 4;212,213,214,215;, + 4;216,217,218,219;, + 4;220,221,222,223;, + 4;224,225,226,227;, + 4;228,229,230,231;, + 4;232,233,234,235;, + 4;236,237,238,239;; + MeshNormals { // Cube_000 normals + 60; + -1.000000; 0.000000; 0.000000;, + 0.000000;-1.000000;-0.000000;, + 1.000000;-0.000000; 0.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000000;-1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 1.000000;-0.000000;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000000;-1.000000;-0.000000;, + -1.000000; 0.000000;-0.000000;, + 0.000000; 1.000000; 0.000000;, + 1.000000;-0.000000;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000000;-1.000000;-0.000000;, + 0.000000; 1.000000; 0.000000;, + 1.000000;-0.000000;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000000;-1.000000;-0.000001;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 1.000000;-0.000000;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000000;-1.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 1.000000;-0.000001;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000001;-1.000000; 0.000000;, + -1.000000; 0.000001;-0.000000;, + -0.000000; 1.000000; 0.000000;, + 1.000000;-0.000000;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -1.000000;-0.000000; 0.000000;, + -0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000;-1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000;-0.000000;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000000;-1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 0.000000; 0.000000; 1.000000;, + -0.000000;-1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000001; 1.000000; 0.000001;, + 1.000000;-0.000000;-0.000000;; + 60; + 4;0,0,0,0;, + 4;1,1,1,1;, + 4;2,2,2,2;, + 4;3,3,3,3;, + 4;4,4,4,4;, + 4;5,5,5,5;, + 4;6,6,6,6;, + 4;7,7,7,7;, + 4;8,8,8,8;, + 4;9,9,9,9;, + 4;10,10,10,10;, + 4;11,11,11,11;, + 4;12,12,12,12;, + 4;13,13,13,13;, + 4;14,14,14,14;, + 4;15,15,15,15;, + 4;16,16,16,16;, + 4;17,17,17,17;, + 4;18,18,18,18;, + 4;19,19,19,19;, + 4;20,20,20,20;, + 4;21,21,21,21;, + 4;22,22,22,22;, + 4;23,23,23,23;, + 4;24,24,24,24;, + 4;25,25,25,25;, + 4;26,26,26,26;, + 4;27,27,27,27;, + 4;28,28,28,28;, + 4;29,29,29,29;, + 4;30,30,30,30;, + 4;31,31,31,31;, + 4;32,32,32,32;, + 4;33,33,33,33;, + 4;34,34,34,34;, + 4;35,35,35,35;, + 4;36,36,36,36;, + 4;37,37,37,37;, + 4;38,38,38,38;, + 4;39,39,39,39;, + 4;40,40,40,40;, + 4;41,41,41,41;, + 4;42,42,42,42;, + 4;43,43,43,43;, + 4;44,44,44,44;, + 4;45,45,45,45;, + 4;46,46,46,46;, + 4;47,47,47,47;, + 4;48,48,48,48;, + 4;49,49,49,49;, + 4;50,50,50,50;, + 4;51,51,51,51;, + 4;52,52,52,52;, + 4;53,53,53,53;, + 4;54,54,54,54;, + 4;55,55,55,55;, + 4;56,56,56,56;, + 4;57,57,57,57;, + 4;58,58,58,58;, + 4;59,59,59,59;; + } // End of Cube_000 normals + MeshTextureCoords { // Cube_000 UV coordinates + 240; + 6.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 6.000000; 0.000000;, + 2.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 2.000000; 0.000000;, + 6.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 6.000000; 0.000000;, + 7.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 5.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 5.000000;-1.000000;, + 6.000000;-1.000000;, + 6.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 2.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 2.000000; 0.000000;, + 6.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 6.000000; 0.000000;, + 3.000000; 0.999999;, + 0.000000; 1.000000;, + 0.000000; 0.000001;, + 3.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000001; 1.000000;, + 0.000000;-4.000000;, + 1.000000;-4.000000;, + 1.000000;-3.000000;, + 0.999999; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-3.000000;, + 4.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 4.000000;-1.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 1.000000;-1.000000;, + 5.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-0.999999;, + 5.000000;-1.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 1.000000;-1.000000;, + 5.375000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 5.375000; 0.000000;, + 5.375000; 0.000000;, + 5.375000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;, + 6.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 6.000000; 0.000000;, + 7.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 1.000000;-1.000000;, + 1.000000;-1.000000;, + 0.999999; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 2.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000001;, + 2.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 1.000000;-1.000000;, + 1.000000;-1.000000;, + 0.999999; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 2.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 2.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 2.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000001;, + 2.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;, + 7.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 6.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 6.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;; + } // End of Cube_000 UV coordinates + MeshMaterialList { // Cube_000 material list + 1; + 60; + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0;; + Material Material { + 0.640000; 0.640000; 0.640000; 1.000000;; + 96.078431; + 0.500000; 0.500000; 0.500000;; + 0.000000; 0.000000; 0.000000;; + TextureFilename {"default_wood.png";} + } + } // End of Cube_000 material list + } // End of Cube_000 mesh + } // End of Cube_000 +} // End of Root diff --git a/mods/boats/textures/boats_inventory.png b/mods/boats/textures/boats_inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d082e31625c099490403a56906e922e2ea9e72 GIT binary patch literal 851 zcmV-Z1FZasP)>bI*)Nhm3B#3M=*L}JA!9HRz@*?WkF_AHc>+{j&Vqga7ao&Fo0-9c3?qe zR6TE8K~_mQd16INLponkKt(}5WKJ!rg-)P-N|<*>n|VftYCWQVN|tp)lXF9CR4=E3 zOr(KKj&DGUY(02gHk*4$o_j}wXFGsoI(Az!X;LqbaYBP;IB-`nU`i^CZ9s@>J9}X` zfn+vxTQz)OGkIP!b6GQIP%D~uM3QnrjBPxHXgYjiIcifdYEmsuJRy~ILX>krh-o=* zRxVvgDOf}&RYE14TQCv;002C6QchCF4C!)z#F_%)z?4wzjROrk zg#{I`ySuwv-~76p?lSrRYdN5Rg6?&ebLY%6bI z-nq};QSUzDun5`WTPSq6&@T6!4T~zlRFQC4DK5=Fe3b*&Ya)cAoQkrdfMie}9i0xe zz~?6l6eFw~7^$inDe-2?0((6T_%UzsiV=4?0YXMn^bDJenO^0@Ux!aE$C4=nlr4i( z(PP4u1SpW_7tagT{`IYM^0Q2Yu*Js)!RYZ%-d*VW}xw7 zaApN-Y~D;pq@3fvR?>;w(8Xe_NsBv}aFJ|=eSC6WN`O!7e>1udibU2qhRMiIzEB)* zz?%b_L?gY|lx( dAMEQD2kZ(bZYdv#XGG|aNV@)bxN++y^OPh8>jBr72S2Jx@ zEq`V`bXzl5Ml)+vF{gq~lypUiY(0~3JcMdHePla>X*qgeIeTF;sDn>~YCw8oK3YX8 zrGQMLeMpvbK#FcWQA99aNi0-BCX#bOh-W%uPB2P9FlkXKY*si?Jt3KPNPu87y7d!z z00001bW%=J06^y0W&i*IG)Y83R5;7+kXv?xAQVLd0)l9aK=G|HzG95cYyNX9w)v3N zA++~>xdBdTSqmSkCILNo9`d~K_;lU?lIGZh zQFU*qD3P!_$ZW(2`cRN^UHThnhBcH6gwu5h7)qtBnMH~{9t1b9 k#*!tWkz&lBcYo-<03BBywb>I+MgRZ+07*qoM6N<$f=^K0k^lez literal 0 HcmV?d00001 diff --git a/mods/boats/textures/rowboat_inventory.png b/mods/boats/textures/rowboat_inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..086bb92bc2b3f0a03463ff5474bf52dc75dbf760 GIT binary patch literal 444 zcmV;t0YmEoM$eeXDFv@CZ%pQsBka|C;0FH z0004WQchCt0yp^kFpwRvR;Xp=b(b#6;Q4sa+@-*C32f*(whM~ z^cFGSx~^-zkVMmO)jcK;-!6Pz7q7Ln8guAz0ECK&?yZZjYsq2>pwDTdobFV4xQ8xg zmRm%pyG{Xg3KJ?K>f3~wmp&YgNi>Kk)8%2?buqJ=sVC4U8=yxaUBttLnZ?XCrhCo- z=tT~&ZM!aJ7IXIiP-hzSsxobf3iGwpOnuOurvQ3WHM$mGEcaH8YTz6+{V@PKmDy@s zW6%|7(7T>#01+5eWMiVx^jD*1(A#1vZRg2u&`0Q=%)RrmcNReZ0=jZ%b?(dteFjwS m$jZt9eQheUBI#R6Kh!S(O%kS6$54g<0000_d0O^ z0004WQchCx0a0`j|pSFVVN&3wMU!9HvY%GLX zmVbrsM_lpRqSlM8lUuih;C>y^W8^x{1g;@ch%uBolZ1#E341__Qt5Lh3<)Mk$$)Bh%h_y<*;TPB{d5VK zrQyPd0Y4@}7gIut1I3)h=kcxrp+p=K;%kCZ28ES7L8L<>YGZJH1ZF#8Yf!V_ufW^t zs4!m=w+q;OOq>a4FK!UpkgMafdl9!*#(TTzssD 5 then + return + end + local tmp = {x=(maxp.x-minp.x)/2+minp.x, y=(maxp.y-minp.y)/2+minp.y, z=(maxp.z-minp.z)/2+minp.z} + local pos = minetest.find_node_near(tmp, maxp.x-minp.x, {"default:dirt_with_grass"}) + if pos ~= nil then + farming.generate_tree({x=pos.x, y=pos.y+1, z=pos.z}, "default:tree", "farming:banana_leaves", {"default:dirt", "default:dirt_with_grass"}, {["farming:banana"]=10}) + end +end) + +minetest.register_node("farming:banana", { + description = "Banana", + tiles = {"farming_banana.png"}, + inventory_image = "farming_banana.png", + wield_image = "farming_banana.png", + drawtype = "torchlike", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + groups = {fleshy=3,dig_immediate=3,flammable=2,leafdecay=3,leafdecay_drop=1}, + sounds = default.node_sound_defaults(), + + on_use = minetest.item_eat(6), +}) diff --git a/mods/farming/barley.lua b/mods/farming/barley.lua new file mode 100644 index 00000000..d69b0bad --- /dev/null +++ b/mods/farming/barley.lua @@ -0,0 +1,96 @@ + +-- barley seeds +minetest.register_node("farming:seed_barley", { + description = "Barley Seed", + tiles = {"farming_barley_seed.png"}, + inventory_image = "farming_barley_seed.png", + wield_image = "farming_barley_seed.png", + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:barley_1") + end, +}) + +-- harvested barley +minetest.register_craftitem("farming:barley", { + description = "barley", + inventory_image = "farming_barley.png", +}) + +-- flour +minetest.register_craft({ + type = "shapeless", + output = "farming:flour", + recipe = {"farming:barley", "farming:barley", "farming:barley", "farming:barley"} +}) + +-- barley definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_barley_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:barley_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_barley_2.png"} +minetest.register_node("farming:barley_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_barley_3.png"} +minetest.register_node("farming:barley_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_barley_4.png"} +minetest.register_node("farming:barley_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_barley_5.png"} +crop_def.drop = { + items = { + {items = {'farming:barley'}, rarity = 2}, + {items = {'farming:seed_barley'}, rarity = 2}, + } +} +minetest.register_node("farming:barley_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_barley_6.png"} +crop_def.drop = { + items = { + {items = {'farming:barley'}, rarity = 2}, + {items = {'farming:seed_barley'}, rarity = 1}, + } +} +minetest.register_node("farming:barley_6", table.copy(crop_def)) + +-- stage 7 (final) +crop_def.tiles = {"farming_barley_7.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:barley'}, rarity = 1}, + {items = {'farming:barley'}, rarity = 3}, + {items = {'farming:seed_barley'}, rarity = 1}, + {items = {'farming:seed_barley'}, rarity = 3}, + } +} +minetest.register_node("farming:barley_7", table.copy(crop_def)) diff --git a/mods/farming/beanpole.lua b/mods/farming/beanpole.lua new file mode 100644 index 00000000..cda736f9 --- /dev/null +++ b/mods/farming/beanpole.lua @@ -0,0 +1,194 @@ +--[[ + All textures by + (C) Auke Kok + CC-BY-SA-3.0 +]] + +-- beans +minetest.register_craftitem("farming:beans", { + description = "Green Beans", + inventory_image = "farming_beans.png", + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + + if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then + return + end + + local nodename = minetest.get_node(pointed_thing.under).name + + if nodename == "farming:beanpole" then + minetest.set_node(pointed_thing.under, {name = "farming:beanpole_1"}) + + minetest.sound_play("default_place_node", {pos = pointed_thing.above, gain = 1.0}) + else + return + end + + if not minetest.setting_getbool("creative_mode") then + + itemstack:take_item() + + -- check for refill + if itemstack:get_count() == 0 then + + minetest.after(0.20, + farming.refill_plant, + placer, + "farming:beans", + placer:get_wield_index() + ) + end + end + + return itemstack + end +}) + +-- beans can be used for green dye +minetest.register_craft({ + output = "dye:green", + recipe = { + {'farming:beans'}, + } +}) + +-- beanpole +minetest.register_node("farming:beanpole", { + description = "Bean Pole (place on soil before planting beans)", + drawtype = "plantlike", + tiles = {"farming_beanpole.png"}, + inventory_image = "farming_beanpole.png", + visual_scale = 1.45, + paramtype = "light", + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = "farming:beanpole", + selection_box = farming.select, + groups = {snappy = 3, flammable = 2, attached_node = 1}, + sounds = default.node_sound_leaves_defaults(), + + on_place = function(itemstack, placer, pointed_thing) + + if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then + return + end + + local nodename = minetest.get_node(pointed_thing.under).name + + if minetest.get_item_group(nodename, "soil") < 2 then + return + end + + local top = { + x = pointed_thing.above.x, + y = pointed_thing.above.y + 1, + z = pointed_thing.above.z + } + + nodename = minetest.get_node(top).name + + if nodename ~= "air" then + return + end + + minetest.set_node(pointed_thing.above, {name = "farming:beanpole"}) + + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + + return itemstack + end +}) + +minetest.register_craft({ + output = "farming:beanpole", + recipe = { + {'', '', ''}, + {'default:stick', '', 'default:stick'}, + {'default:stick', '', 'default:stick'}, + } +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:beanpole", + burntime = 10, +}) + +-- green bean definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_beanpole_1.png"}, + visual_scale = 1.45, + paramtype = "light", + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = { + items = { + {items = {'farming:beanpole'}, rarity = 1}, + } + }, + selection_box = farming.select, + groups = { + snappy = 3, flammable = 3, not_in_creative_inventory = 1, + attached_node = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:beanpole_1", table.copy(crop_def)) + +-- stage2 +crop_def.tiles = {"farming_beanpole_2.png"} +minetest.register_node("farming:beanpole_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_beanpole_3.png"} +minetest.register_node("farming:beanpole_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_beanpole_4.png"} +minetest.register_node("farming:beanpole_4", table.copy(crop_def)) + +-- stage 5 (final) +crop_def.tiles = {"farming_beanpole_5.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:beanpole'}, rarity = 1}, + {items = {'farming:beans 3'}, rarity = 1}, + {items = {'farming:beans 2'}, rarity = 2}, + {items = {'farming:beans 2'}, rarity = 3}, + } +} +minetest.register_node("farming:beanpole_5", table.copy(crop_def)) + +-- wild green bean bush (this is what you find on the map) +minetest.register_node("farming:beanbush", { + drawtype = "plantlike", + tiles = {"farming_beanbush.png"}, + paramtype = "light", + waving = 1, + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = { + items = { + {items = {'farming:beans 1'}, rarity = 1}, + {items = {'farming:beans 1'}, rarity = 2}, + {items = {'farming:beans 1'}, rarity = 3}, + } + }, + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory=1 + }, + sounds = default.node_sound_leaves_defaults(), +}) diff --git a/mods/farming/blueberry.lua b/mods/farming/blueberry.lua new file mode 100644 index 00000000..6a29ba97 --- /dev/null +++ b/mods/farming/blueberry.lua @@ -0,0 +1,65 @@ + +-- blueberries +minetest.register_craftitem("farming:blueberries", { + description = "Blueberries", + inventory_image = "farming_blueberries.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:blueberry_1") + end, + on_use = minetest.item_eat(1), +}) + +-- blueberry muffin (thanks to sosogirl123 @ deviantart.com for muffin image) + +minetest.register_craftitem("farming:muffin_blueberry", { + description = "Blueberry Muffin", + inventory_image = "farming_blueberry_muffin.png", + on_use = minetest.item_eat(2), +}) + +minetest.register_craft({ + output = "farming:muffin_blueberry 2", + recipe = { + {"farming:blueberries", "farming:bread", "farming:blueberries"}, + } +}) + +-- blueberry definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_blueberry_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:blueberry_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_blueberry_2.png"} +minetest.register_node("farming:blueberry_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_blueberry_3.png"} +minetest.register_node("farming:blueberry_3", table.copy(crop_def)) + +-- stage 4 (final) +crop_def.tiles = {"farming_blueberry_4.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:blueberries 2'}, rarity = 1}, + {items = {'farming:blueberries'}, rarity = 2}, + {items = {'farming:blueberries'}, rarity = 3}, + } +} +minetest.register_node("farming:blueberry_4", table.copy(crop_def)) diff --git a/mods/farming/carrot.lua b/mods/farming/carrot.lua new file mode 100644 index 00000000..90c1b918 --- /dev/null +++ b/mods/farming/carrot.lua @@ -0,0 +1,103 @@ + +--[[ + Original textures from PixelBox texture pack + https://forum.minetest.net/viewtopic.php?id=4990 +]] + +minetest.register_craftitem("farming:carrot_seed", { + description = "Carrot Seeds", + inventory_image = "farming_carrot_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:carrot_1") + end +}) + +-- carrot +minetest.register_craftitem("farming:carrot", { + description = "Carrot", + inventory_image = "farming_carrot.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:carrot_1") + end, + on_use = minetest.item_eat(4), +}) + +-- golden carrot +minetest.register_craftitem("farming:carrot_gold", { + description = "Golden Carrot", + inventory_image = "farming_carrot_gold.png", + on_use = minetest.item_eat(6), +}) + +minetest.register_craft({ + output = "farming:carrot_gold", + recipe = { + {"", "default:gold_lump", ""}, + {"default:gold_lump", "farming:carrot", "default:gold_lump"}, + {"", "default:gold_lump", ""}, + } +}) + +-- carrot definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_carrot_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + + +-- stage 1 +minetest.register_node("farming:carrot_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_carrot_2.png"} +minetest.register_node("farming:carrot_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_carrot_3.png"} +minetest.register_node("farming:carrot_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_carrot_4.png"} +minetest.register_node("farming:carrot_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_carrot_5.png"} +minetest.register_node("farming:carrot_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_carrot_6.png"} +minetest.register_node("farming:carrot_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_carrot_7.png"} +crop_def.drop = { + items = { + {items = {'farming:carrot'}, rarity = 1}, + {items = {'farming:carrot_seed'}, rarity = 1}, + {items = {'farming:carrot 2'}, rarity = 3}, + } +} +minetest.register_node("farming:carrot_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"farming_carrot_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:carrot 2'}, rarity = 1}, + {items = {'farming:carrot_seed'}, rarity = 1}, + {items = {'farming:carrot 3'}, rarity = 2}, + } +} +minetest.register_node("farming:carrot_8", table.copy(crop_def)) diff --git a/mods/farming/cocoa.lua b/mods/farming/cocoa.lua new file mode 100644 index 00000000..a11a6110 --- /dev/null +++ b/mods/farming/cocoa.lua @@ -0,0 +1,172 @@ + +-- place cocoa +function place_cocoa(itemstack, placer, pointed_thing, plantname) + + local pt = pointed_thing + + -- check if pointing at a node + if not pt or pt.type ~= "node" then + return + end + + local under = minetest.get_node(pt.under) + + -- return if any of the nodes are not registered + if not minetest.registered_nodes[under.name] then + return + end + + -- check if pointing at jungletree + if under.name ~= "default:jungletree" + or minetest.get_node(pt.above).name ~= "air" then + return + end + + -- add the node and remove 1 item from the itemstack + minetest.set_node(pt.above, {name = plantname}) + + minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}) + + if not minetest.setting_getbool("creative_mode") then + + itemstack:take_item() + + -- check for refill + if itemstack:get_count() == 0 then + + minetest.after(0.20, + farming.refill_plant, + placer, + "farming:cocoa_beans", + placer:get_wield_index() + ) + end + end + + return itemstack +end + +-- cocoa beans +minetest.register_craftitem("farming:cocoa_beans", { + description = "Cocoa Beans", + inventory_image = "farming_cocoa_beans.png", + on_place = function(itemstack, placer, pointed_thing) + return place_cocoa(itemstack, placer, pointed_thing, "farming:cocoa_1") + end, +}) + +minetest.register_craft( { + output = "dye:brown 2", + recipe = { + { "farming:cocoa_beans" }, + } +}) + +-- chocolate cookie +minetest.register_craftitem("farming:cookie", { + description = "Cookie", + inventory_image = "farming_cookie.png", + on_use = minetest.item_eat(2), +}) + +minetest.register_craft( { + output = "farming:cookie 8", + recipe = { + { "farming:wheat", "farming:cocoa_beans", "farming:wheat" }, + } +}) + +-- bar of dark chocolate (thanks to Ice Pandora for her deviantart.com chocolate tutorial) +minetest.register_craftitem("farming:chocolate_dark", { + description = "Bar of Dark Chocolate", + inventory_image = "farming_chocolate_dark.png", + on_use = minetest.item_eat(3), +}) + +minetest.register_craft( { + output = "farming:chocolate_dark", + recipe = { + { "farming:cocoa_beans", "farming:cocoa_beans", "farming:cocoa_beans" }, + } +}) + +-- cocoa definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_cocoa_1.png"}, + paramtype = "light", + walkable = true, + drop = { + items = { + {items = {'farming:cocoa_beans 1'}, rarity = 2}, + } + }, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + }, + groups = { + snappy = 3, flammable = 2, plant = 1, growing = 1, + not_in_creative_inventory=1, leafdecay = 1, leafdecay_drop = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:cocoa_1", table.copy(crop_def)) + +-- stage2 +crop_def.tiles = {"farming_cocoa_2.png"} +crop_def.drop = { + items = { + {items = {'farming:cocoa_beans 1'}, rarity = 1}, + } +} +minetest.register_node("farming:cocoa_2", table.copy(crop_def)) + +-- stage 3 (final) +crop_def.tiles = {"farming_cocoa_3.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:cocoa_beans 2'}, rarity = 1}, + {items = {'farming:cocoa_beans 1'}, rarity = 2}, + } +} +minetest.register_node("farming:cocoa_3", table.copy(crop_def)) + +-- add random cocoa pods to jungle tree trunks +minetest.register_abm({ + nodenames = {"default:jungletree"}, + neighbors = {"default:jungleleaves", "moretrees:jungletree_leaves_green"}, + interval = 8, + chance = 80, + catch_up = false, + action = function(pos, node) + + local dir = math.random(1, 50) + + if dir == 1 then + pos.x = pos.x + 1 + elseif dir == 2 then + pos.x = pos.x - 1 + elseif dir == 3 then + pos.z = pos.z + 1 + elseif dir == 4 then + pos.z = pos.z -1 + else return + end + + local nodename = minetest.get_node(pos).name + + if nodename == "air" + and minetest.get_node_light(pos) > 12 then + + --print ("Cocoa Pod added at " .. minetest.pos_to_string(pos)) + + minetest.set_node(pos, { + name = "farming:cocoa_" .. tostring(math.random(1, 3)) + }) + end + end, +}) diff --git a/mods/farming/coffee.lua b/mods/farming/coffee.lua new file mode 100644 index 00000000..c9854e6e --- /dev/null +++ b/mods/farming/coffee.lua @@ -0,0 +1,130 @@ + +-- coffee +minetest.register_craftitem("farming:coffee_beans", { + description = "Coffee Beans", + inventory_image = "farming_coffee_beans.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:coffee_1") + end, +}) + + +-- drinking cup +minetest.register_node("farming:drinking_cup", { + description = "Drinking Cup (empty)", + drawtype = "plantlike", + tiles = {"vessels_drinking_cup.png"}, + inventory_image = "vessels_drinking_cup.png", + wield_image = "vessels_drinking_cup.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_craft( { + output = "farming:drinking_cup 5", + recipe = { + { "default:glass", "", "default:glass" }, + {"", "default:glass",""}, + } +}) + +-- cold cup of coffee +minetest.register_node("farming:coffee_cup", { + description = "Cold Cup of Coffee", + drawtype = "plantlike", + tiles = {"farming_coffee_cup.png"}, + inventory_image = "farming_coffee_cup.png", + wield_image = "farming_coffee_cup.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, + on_use = minetest.item_eat(2, "farming:drinking_cup"), + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_craft( { + output = "farming:coffee_cup", + recipe = { + {"farming:drinking_cup", "farming:coffee_beans","bucket:bucket_water"}, + }, + replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}} +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 5, + output = "farming:coffee_cup_hot", + recipe = "farming:coffee_cup" +}) + +-- hot cup of coffee +minetest.register_node("farming:coffee_cup_hot", { + description = "Hot Cup of Coffee", + drawtype = "plantlike", + tiles = {"farming_coffee_cup_hot.png"}, + inventory_image = "farming_coffee_cup_hot.png", + wield_image = "farming_coffee_cup_hot.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, + on_use = minetest.item_eat(3, "farming:drinking_cup"), + sounds = default.node_sound_glass_defaults(), +}) + +-- coffee definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_coffee_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:coffee_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_coffee_2.png"} +minetest.register_node("farming:coffee_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_coffee_3.png"} +minetest.register_node("farming:coffee_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_coffee_4.png"} +minetest.register_node("farming:coffee_4", table.copy(crop_def)) + +-- stage 5 (final) +crop_def.tiles = {"farming_coffee_5.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:coffee_beans 2'}, rarity = 1}, + {items = {'farming:coffee_beans 2'}, rarity = 2}, + {items = {'farming:coffee_beans 2'}, rarity = 3}, + } +} +minetest.register_node("farming:coffee_5", table.copy(crop_def)) diff --git a/mods/farming/compatibility.lua b/mods/farming/compatibility.lua new file mode 100644 index 00000000..07a53404 --- /dev/null +++ b/mods/farming/compatibility.lua @@ -0,0 +1,78 @@ +-- Banana +minetest.register_alias("farming_plus:banana_sapling", "farming:banana_sapling") +minetest.register_alias("farming_plus:banana_leaves", "farming:banana_leaves") +minetest.register_alias("farming_plus:banana", "farming:banana") + +-- Carrot +minetest.register_alias("farming_plus:carrot_seed", "farming:carrot_seed") +minetest.register_alias("farming_plus:carrot_1", "farming:carrot_1") +minetest.register_alias("farming_plus:carrot_2", "farming:carrot_4") +minetest.register_alias("farming_plus:carrot_3", "farming:carrot_6") +minetest.register_alias("farming_plus:carrot", "farming:carrot_8") +minetest.register_alias("farming_plus:carrot_item", "farming:carrot") + +-- Cocoa +minetest.register_alias("farming_plus:cocoa_sapling", "farming:cocoa_beans") +minetest.register_alias("farming_plus:cocoa_leaves", "default:leaves") +minetest.register_alias("farming_plus:cocoa", "default:apple") +minetest.register_alias("farming_plus:cocoa_bean", "farming:cocoa_beans") + +-- Orange +minetest.register_alias("farming_plus:orange_1", "farming:orange_1") +minetest.register_alias("farming_plus:orange_2", "farming:orange_2") +minetest.register_alias("farming_plus:orange_3", "farming:orange_3") +minetest.register_alias("farming_plus:orange", "farming:orange_4") +minetest.register_alias("farming_plus:orange_8", "farming:orange") +minetest.register_alias("farming_plus:orange_item", "farming:orange_item") +minetest.register_alias("farming_plus:orange_seed", "farming:orange_seed") +minetest.register_alias("farming:orange", "farming:orange_4") + +-- Potato +minetest.register_alias("farming_plus:potato_item", "farming:potato") +minetest.register_alias("farming_plus:potato_1", "farming:potato_1") +minetest.register_alias("farming_plus:potato_2", "farming:potato_2") +minetest.register_alias("farming_plus:potato", "farming:potato_3") +minetest.register_alias("farming_plus:potato_seed", "farming:potato_seed") + +-- Pumpkin +minetest.register_alias("farming:pumpkin_seed", "farming:pumpkin_slice") +minetest.register_alias("farming:pumpkin_face", "farming:pumpkin") +minetest.register_alias("farming:pumpkin_face_light", "farming:jackolantern") +minetest.register_alias("farming:big_pumpkin", "farming:pumpkin") +minetest.register_alias("farming:big_pumpkin_side", "air") +minetest.register_alias("farming:big_pumpkin_corner", "air") +minetest.register_alias("farming:big_pumpkin_top", "air") +minetest.register_alias("farming:pumpkin_flour", "farming:pumpkin_dough") + +-- Rhubarb +minetest.register_alias("farming_plus:rhubarb_seed", "farming:rhubarb_seed") +minetest.register_alias("farming_plus:rhubarb_1", "farming:rhubarb_1") +minetest.register_alias("farming_plus:rhubarb_2", "farming:rhubarb_2") +minetest.register_alias("farming_plus:rhubarb", "farming:rhubarb_3") +minetest.register_alias("farming_plus:rhubarb_item", "farming:rhubarb") + +-- Strawberry +minetest.register_alias("farming_plus:strawberry_item", "farming:strawberry_item") +minetest.register_alias("farming_plus:strawberry_seed", "farming:strawberry_seed") +minetest.register_alias("farming_plus:strawberry_1", "farming:strawberry_1") +minetest.register_alias("farming_plus:strawberry_2", "farming:strawberry_2") +minetest.register_alias("farming_plus:strawberry_3", "farming:strawberry_3") +minetest.register_alias("farming_plus:strawberry", "farming:strawberry_3") +minetest.register_alias("farming:strawberry", "farming:strawberry_item") +minetest.register_alias("farming_plus:strawberry", "farming:strawberry_3") + +-- Raspberry +--minetest.register_alias("farming_plus:raspberry_seed", "farming:raspberry_seed") +--minetest.register_alias("farming_plus:raspberrys", "farming:raspberrys") +--minetest.register_alias("farming_plus:raspberry_seed", "farming:raspberry_seed") + +-- Tomato +minetest.register_alias("farming_plus:tomato_seed", "farming:tomato_seed") +minetest.register_alias("farming_plus:tomato_item", "farming:tomato") +minetest.register_alias("farming_plus:tomato_1", "farming:tomato_2") +minetest.register_alias("farming_plus:tomato_2", "farming:tomato_4") +minetest.register_alias("farming_plus:tomato_3", "farming:tomato_6") +minetest.register_alias("farming_plus:tomato", "farming:tomato_8") + +-- Weed +minetest.register_alias("farming:weed", "default:grass_2") diff --git a/mods/farming/corn.lua b/mods/farming/corn.lua new file mode 100644 index 00000000..43707575 --- /dev/null +++ b/mods/farming/corn.lua @@ -0,0 +1,114 @@ + +--[[ + Original textures from GeMinecraft + http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/wip-mods/1440575-1-2-5-generation-minecraft-beta-1-2-farming-and +]] + +-- corn +minetest.register_craftitem("farming:corn", { + description = "Corn", + inventory_image = "farming_corn.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:corn_1") + end, + on_use = minetest.item_eat(3), +}) + +-- corn on the cob (texture by TenPlus1) +minetest.register_craftitem("farming:corn_cob", { + description = "Corn on the Cob", + inventory_image = "farming_corn_cob.png", + on_use = minetest.item_eat(5), +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 10, + output = "farming:corn_cob", + recipe = "farming:corn" +}) + +-- ethanol (thanks to JKMurray for this idea) +minetest.register_craftitem("farming:bottle_ethanol", { + description = "Bottle of Ethanol", + inventory_image = "farming_bottle_ethanol.png", +}) + +minetest.register_craft( { + output = "farming:bottle_ethanol", + recipe = { + { "vessels:glass_bottle", "farming:corn", "farming:corn"}, + { "farming:corn", "farming:corn", "farming:corn"}, + } +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:bottle_ethanol", + burntime = 240, + replacements = {{ "farming:bottle_ethanol", "vessels:glass_bottle"}} +}) + +-- corn definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_corn_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:corn_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_corn_2.png"} +minetest.register_node("farming:corn_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_corn_3.png"} +minetest.register_node("farming:corn_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_corn_4.png"} +minetest.register_node("farming:corn_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_corn_5.png"} +minetest.register_node("farming:corn_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_corn_6.png"} +crop_def.visual_scale = 1.45 +minetest.register_node("farming:corn_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_corn_7.png"} +crop_def.drop = { + items = { + {items = {'farming:corn'}, rarity = 1}, + {items = {'farming:corn'}, rarity = 2}, + {items = {'farming:corn'}, rarity = 3}, + } +} +minetest.register_node("farming:corn_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"farming_corn_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:corn 2'}, rarity = 1}, + {items = {'farming:corn 2'}, rarity = 2}, + {items = {'farming:corn 2'}, rarity = 2}, + } +} +minetest.register_node("farming:corn_8", table.copy(crop_def)) diff --git a/mods/farming/cotton.lua b/mods/farming/cotton.lua new file mode 100644 index 00000000..2ddf88e2 --- /dev/null +++ b/mods/farming/cotton.lua @@ -0,0 +1,114 @@ + +-- cotton seeds +minetest.register_node("farming:seed_cotton", { + description = "Cotton Seed", + tiles = {"farming_cotton_seed.png"}, + inventory_image = "farming_cotton_seed.png", + wield_image = "farming_cotton_seed.png", + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:cotton_1") + end, +}) + +-- cotton / string + +minetest.register_craftitem("farming:cotton", { + description = "Cotton", + inventory_image = "farming_cotton.png", +}) + +minetest.register_alias("farming:string", "farming:cotton") + +-- cotton to wool +minetest.register_craft({ + output = "wool:white", + recipe = { + {"farming:string", "farming:string"}, + {"farming:string", "farming:string"}, + } +}) + +-- cotton definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_cotton_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:cotton_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_cotton_2.png"} +minetest.register_node("farming:cotton_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_cotton_3.png"} +minetest.register_node("farming:cotton_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_cotton_4.png"} +minetest.register_node("farming:cotton_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_cotton_5.png"} +crop_def.drop = { + items = { + {items = {"farming:seed_cotton"}, rarity = 1}, + } +} +minetest.register_node("farming:cotton_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_cotton_6.png"} +crop_def.drop = { + items = { + {items = {"farming:cotton"}, rarity = 1}, + {items = {"farming:cotton"}, rarity = 2}, + } +} +minetest.register_node("farming:cotton_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_cotton_7.png"} +crop_def.drop = { + items = { + {items = {"farming:cotton"}, rarity = 1}, + {items = {"farming:cotton"}, rarity = 2}, + {items = {"farming:seed_cotton"}, rarity = 1}, + {items = {"farming:seed_cotton"}, rarity = 2}, + } +} +minetest.register_node("farming:cotton_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"farming_cotton_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"farming:string"}, rarity = 1}, + {items = {"farming:string"}, rarity = 2}, + {items = {"farming:string"}, rarity = 3}, + {items = {"farming:seed_cotton"}, rarity = 1}, + {items = {"farming:seed_cotton"}, rarity = 2}, + {items = {"farming:seed_cotton"}, rarity = 3}, + } +} +minetest.register_node("farming:cotton_8", table.copy(crop_def)) diff --git a/mods/farming/cucumber.lua b/mods/farming/cucumber.lua new file mode 100644 index 00000000..22e367bc --- /dev/null +++ b/mods/farming/cucumber.lua @@ -0,0 +1,53 @@ + +--[[ + Original textures from DocFarming mod + https://forum.minetest.net/viewtopic.php?id=3948 +]] + +-- cucumber +minetest.register_craftitem("farming:cucumber", { + description = "Cucumber", + inventory_image = "farming_cucumber.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:cucumber_1") + end, + on_use = minetest.item_eat(4), +}) + +-- cucumber definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_cucumber_1.png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:cucumber_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_cucumber_2.png"} +minetest.register_node("farming:cucumber_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_cucumber_3.png"} +minetest.register_node("farming:cucumber_3", table.copy(crop_def)) + +-- stage 4 (final) +crop_def.tiles = {"farming_cucumber_4.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:cucumber'}, rarity = 1}, + {items = {'farming:cucumber 2'}, rarity = 2}, + } +} +minetest.register_node("farming:cucumber_4", table.copy(crop_def)) diff --git a/mods/farming/depends.txt b/mods/farming/depends.txt new file mode 100644 index 00000000..be420a35 --- /dev/null +++ b/mods/farming/depends.txt @@ -0,0 +1,2 @@ +default +wool \ No newline at end of file diff --git a/mods/farming/description.txt b/mods/farming/description.txt new file mode 100644 index 00000000..58bdc810 --- /dev/null +++ b/mods/farming/description.txt @@ -0,0 +1 @@ +Adds many plants and food to Minetest \ No newline at end of file diff --git a/mods/farming/donut.lua b/mods/farming/donut.lua new file mode 100644 index 00000000..1b49848b --- /dev/null +++ b/mods/farming/donut.lua @@ -0,0 +1,45 @@ +-- Donut (thanks to Bockwurst for making the donut images) +minetest.register_craftitem("farming:donut", { + description = "Donut", + inventory_image = "farming_donut.png", + on_use = minetest.item_eat(4), +}) + +minetest.register_craft({ + output = "farming:donut 3", + recipe = { + {'', 'farming:wheat', ''}, + {'farming:wheat', '', 'farming:wheat'}, + {'', 'farming:wheat', ''}, + } +}) + +-- Chocolate Donut +minetest.register_craftitem("farming:donut_chocolate", { + description = "Chocolate Donut", + inventory_image = "farming_donut_chocolate.png", + on_use = minetest.item_eat(6), +}) + +minetest.register_craft({ + output = "farming:donut_chocolate", + recipe = { + {'farming:cocoa_beans'}, + {'farming:donut'}, + } +}) + +-- Apple Donut +minetest.register_craftitem("farming:donut_apple", { + description = "Apple Donut", + inventory_image = "farming_donut_apple.png", + on_use = minetest.item_eat(6), +}) + +minetest.register_craft({ + output = "farming:donut_apple", + recipe = { + {'default:apple'}, + {'farming:donut'}, + } +}) \ No newline at end of file diff --git a/mods/farming/grapes.lua b/mods/farming/grapes.lua new file mode 100644 index 00000000..9c93016b --- /dev/null +++ b/mods/farming/grapes.lua @@ -0,0 +1,201 @@ + +-- grapes +minetest.register_craftitem("farming:grapes", { + description = "Grapes", + inventory_image = "farming_grapes.png", + on_use = minetest.item_eat(2), + + on_place = function(itemstack, placer, pointed_thing) + + if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then + return + end + + local nodename = minetest.get_node(pointed_thing.under).name + + if nodename == "farming:trellis" then + minetest.set_node(pointed_thing.under, {name = "farming:grapes_1"}) + + minetest.sound_play("default_place_node", {pos = pointed_thing.above, gain = 1.0}) + else + return + end + + if not minetest.setting_getbool("creative_mode") then + + itemstack:take_item() + + -- check for refill + if itemstack:get_count() == 0 then + + minetest.after(0.20, + farming.refill_plant, + placer, + "farming:grapes", + placer:get_wield_index() + ) + end + end + + return itemstack + end +}) + +-- grapes can be used for violet dye +minetest.register_craft({ + output = "dye:violet", + recipe = { + {'farming:grapes'}, + } +}) + +-- trellis +minetest.register_node("farming:trellis", { + description = "Trellis (place on soil before planting grapes)", + drawtype = "plantlike", + tiles = {"farming_trellis.png"}, + inventory_image = "farming_trellis.png", + visual_scale = 1.45, + paramtype = "light", + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = "farming:trellis", + selection_box = farming.select, + groups = {snappy = 3, flammable = 2, attached_node = 1}, + sounds = default.node_sound_leaves_defaults(), + + on_place = function(itemstack, placer, pointed_thing) + + if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then + return + end + + local nodename = minetest.get_node(pointed_thing.under).name + + if minetest.get_item_group(nodename, "soil") < 2 then + return + end + + local top = { + x = pointed_thing.above.x, + y = pointed_thing.above.y + 1, + z = pointed_thing.above.z + } + + nodename = minetest.get_node(top).name + + if nodename ~= "air" then + return + end + + minetest.set_node(pointed_thing.above, {name = "farming:trellis"}) + + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + + return itemstack + end +}) + +minetest.register_craft({ + output = "farming:trellis", + recipe = { + {'default:stick', 'default:stick', 'default:stick'}, + {'default:stick', 'default:stick', 'default:stick'}, + {'default:stick', 'default:stick', 'default:stick'}, + } +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:trellis", + burntime = 15, +}) + +-- grapes definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_grapes_1.png"}, + visual_scale = 1.45, + paramtype = "light", + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = { + items = { + {items = {'farming:trellis'}, rarity = 1}, + } + }, + selection_box = farming.select, + groups = { + snappy = 3, flammable = 3, not_in_creative_inventory = 1, + attached_node = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:grapes_1", table.copy(crop_def)) + +-- stage2 +crop_def.tiles = {"farming_grapes_2.png"} +minetest.register_node("farming:grapes_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_grapes_3.png"} +minetest.register_node("farming:grapes_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_grapes_4.png"} +minetest.register_node("farming:grapes_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_grapes_5.png"} +minetest.register_node("farming:grapes_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_grapes_6.png"} +minetest.register_node("farming:grapes_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_grapes_7.png"} +minetest.register_node("farming:grapes_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"farming_grapes_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:trellis'}, rarity = 1}, + {items = {'farming:grapes 3'}, rarity = 1}, + {items = {'farming:grapes 1'}, rarity = 2}, + {items = {'farming:grapes 1'}, rarity = 3}, + } +} +minetest.register_node("farming:grapes_8", table.copy(crop_def)) + +-- wild grape vine (this is what you find on the map) +minetest.register_node("farming:grapebush", { + drawtype = "plantlike", + tiles = {"farming_grapebush.png"}, + paramtype = "light", + waving = 1, + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = { + items = { + {items = {'farming:grapes 1'}, rarity = 1}, + {items = {'farming:grapes 1'}, rarity = 2}, + {items = {'farming:grapes 1'}, rarity = 3}, + } + }, + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory=1 + }, + sounds = default.node_sound_leaves_defaults(), +}) diff --git a/mods/farming/grass.lua b/mods/farming/grass.lua new file mode 100644 index 00000000..aacb220f --- /dev/null +++ b/mods/farming/grass.lua @@ -0,0 +1,42 @@ + +for i = 3, 5 do + + -- Override default grass and have it drop Wheat Seeds + + minetest.override_item("default:grass_" .. i, { + drop = { + max_items = 1, + items = { + {items = {'farming:seed_wheat'}, rarity = 5}, + {items = {'default:grass_1'}}, + } + }, + }) + + -- Override default dry grass and have it drop Barley Seeds + if minetest.registered_nodes["default:dry_grass_1"] then + + minetest.override_item("default:dry_grass_" .. i, { + drop = { + max_items = 1, + items = { + {items = {'farming:seed_barley'}, rarity = 6}, + {items = {'default:dry_grass_1'}}, + } + }, + }) + end + +end + +-- Override default Jungle Grass and have it drop Cotton Seeds + +minetest.override_item("default:junglegrass", { + drop = { + max_items = 1, + items = { + {items = {'farming:seed_cotton'}, rarity = 8}, + {items = {'default:junglegrass'}}, + } + }, +}) diff --git a/mods/farming/hoes.lua b/mods/farming/hoes.lua new file mode 100644 index 00000000..ef27d420 --- /dev/null +++ b/mods/farming/hoes.lua @@ -0,0 +1,151 @@ + +-- Hoe registration function + +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 + }) + + -- 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", ""} + } + }) + end +end + +-- Turns dirt with group soil=1 into soil + +function farming.hoe_on_use(itemstack, user, pointed_thing, uses) + + local pt = pointed_thing + + -- check if pointing at a node + if not pt or pt.type ~= "node" then + return + end + + local under = minetest.get_node(pt.under) + local upos = pointed_thing.under + + if minetest.is_protected(upos, user:get_player_name()) then + minetest.record_protection_violation(upos, user:get_player_name()) + return + end + + 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] + or 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 dirt + if minetest.get_item_group(under.name, "soil") ~= 1 then + return + end + + -- turn the node into soil, wear out item and play sound + minetest.set_node(pt.under, {name = "farming:soil"}) + + minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5}) + + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535/(uses-1)) + end + + return itemstack +end + +-- Define Hoes + +farming.register_hoe(":farming:hoe_wood", { + description = "Wooden Hoe", + inventory_image = "farming_tool_woodhoe.png", + max_uses = 30, + material = "group:wood" +}) + +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 new file mode 100644 index 00000000..2d92e094 --- /dev/null +++ b/mods/farming/init.lua @@ -0,0 +1,797 @@ +--[[ + Minetest Farming Redo Mod 1.22 (31st March 2016) + by TenPlus1 + NEW growing routine by prestidigitator + auto-refill by crabman77 +]] + +farming = {} +farming.mod = "redo" +farming.path = minetest.get_modpath("farming") +farming.hoe_on_use = default.hoe_on_use +farming.select = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5} +} + +farming.DEBUG = false +-- farming.DEBUG = {} -- Uncomment to turn on profiling code/functions + +local DEBUG_abm_runs = 0 +local DEBUG_abm_time = 0 +local DEBUG_timer_runs = 0 +local DEBUG_timer_time = 0 + +if farming.DEBUG then + + function farming.DEBUG.reset_times() + DEBUG_abm_runs = 0 + DEBUG_abm_time = 0 + DEBUG_timer_runs = 0 + DEBUG_timer_time = 0 + end + + function farming.DEBUG.report_times() + + local abm_n = DEBUG_abm_runs + local abm_dt = DEBUG_abm_time + local abm_avg = (abm_n > 0 and abm_dt / abm_n) or 0 + local timer_n = DEBUG_timer_runs + local timer_dt = DEBUG_timer_time + local timer_avg = (timer_n > 0 and timer_dt / timer_n) or 0 + local dt = abm_dt + timer_dt + + print("ABM ran for "..abm_dt.."µs over "..abm_n.." runs: "..abm_avg.."µs/run") + print("Timer ran for "..timer_dt.."µs over "..timer_n.." runs: "..timer_avg.."µs/run") + print("Total farming time: "..dt.."µs") + end +end + +local statistics = dofile(farming.path.."/statistics.lua") + +dofile(farming.path.."/soil.lua") +dofile(farming.path.."/banana.lua") +dofile(farming.path.."/hoes.lua") +dofile(farming.path.."/grass.lua") +dofile(farming.path.."/wheat.lua") +dofile(farming.path.."/cotton.lua") +dofile(farming.path.."/carrot.lua") +dofile(farming.path.."/potato.lua") +dofile(farming.path.."/tomato.lua") +dofile(farming.path.."/cucumber.lua") +dofile(farming.path.."/corn.lua") +dofile(farming.path.."/coffee.lua") +dofile(farming.path.."/melon.lua") +dofile(farming.path.."/sugar.lua") +dofile(farming.path.."/pumpkin.lua") +dofile(farming.path.."/cocoa.lua") +dofile(farming.path.."/raspberry.lua") +dofile(farming.path.."/strawberry.lua") +dofile(farming.path.."/blueberry.lua") +dofile(farming.path.."/rhubarb.lua") +dofile(farming.path.."/beanpole.lua") +dofile(farming.path.."/grapes.lua") +dofile(farming.path.."/barley.lua") +dofile(farming.path.."/oranges.lua") +dofile(farming.path.."/donut.lua") +dofile(farming.path.."/mapgen.lua") +dofile(farming.path.."/compatibility.lua") -- Farming Plus compatibility + +-- Utility Functions + +local time_speed = tonumber(minetest.setting_get("time_speed")) or 72 +local SECS_PER_CYCLE = (time_speed > 0 and 24 * 60 * 60 / time_speed) or 0 + +local function clamp(x, min, max) + return (x < min and min) or (x > max and max) or x +end + +local function in_range(x, min, max) + return min <= x and x <= max +end + +--- Tests the amount of day or night time between two times. + -- + -- @param t_game + -- The current time, as reported by mintest.get_gametime(). + -- @param t_day + -- The current time, as reported by mintest.get_timeofday(). + -- @param dt + -- The amount of elapsed time. + -- @param count_day + -- If true, count elapsed day time. Otherwise, count elapsed night time. + -- @return + -- The amount of day or night time that has elapsed. + +local function day_or_night_time(t_game, t_day, dt, count_day) + + local t1_day = t_day - dt / SECS_PER_CYCLE + local t1_c, t2_c -- t1_c < t2_c and t2_c always in [0, 1) + + if count_day then + + if t_day < 0.25 then + t1_c = t1_day + 0.75 -- Relative to sunup, yesterday + t2_c = t_day + 0.75 + else + t1_c = t1_day - 0.25 -- Relative to sunup, today + t2_c = t_day - 0.25 + end + else + if t_day < 0.75 then + t1_c = t1_day + 0.25 -- Relative to sundown, yesterday + t2_c = t_day + 0.25 + else + t1_c = t1_day - 0.75 -- Relative to sundown, today + t2_c = t_day - 0.75 + end + end + + local dt_c = clamp(t2_c, 0, 0.5) - clamp(t1_c, 0, 0.5) -- this cycle + + if t1_c < -0.5 then + local nc = math.floor(-t1_c) + t1_c = t1_c + nc + dt_c = dt_c + 0.5 * nc + clamp(-t1_c - 0.5, 0, 0.5) + end + + return dt_c * SECS_PER_CYCLE +end + +--- Tests the amount of elapsed day time. + -- + -- @param dt + -- The amount of elapsed time. + -- @return + -- The amount of day time that has elapsed. + -- +local function day_time(dt) + return day_or_night_time(minetest.get_gametime(), minetest.get_timeofday(), dt, true) +end + +--- Tests the amount of elapsed night time. + -- + -- @param dt + -- The amount of elapsed time. + -- @return + -- The amount of night time that has elapsed. + -- +local function night_time(time_game, time_day, dt, count_day) + return day_or_night_time(minetest.get_gametime(), minetest.get_timeofday(), dt, false) +end + + +-- Growth Logic + +local STAGE_LENGTH_AVG = 160.0 +local STAGE_LENGTH_DEV = STAGE_LENGTH_AVG / 6 +local MIN_LIGHT = 13 +local MAX_LIGHT = 1000 + +--- Determines plant name and stage from node. + -- + -- Separates node name on the last underscore (_). + -- + -- @param node + -- Node or position table, or node name. + -- @return + -- List (plant_name, stage), or nothing (nil) if node isn't loaded + +local function plant_name_stage(node) + + local name + + if type(node) == 'table' then + + if node.name then + name = node.name + elseif node.x and node.y and node.z then + node = minetest.get_node_or_nil(node) + name = node and node.name + end + else + name = tostring(node) + end + + if not name or name == "ignore" then + return nil + end + + local sep_pos = name:find("_[^_]+$") + + if sep_pos and sep_pos > 1 then + + local stage = tonumber(name:sub(sep_pos + 1)) + + if stage and stage >= 0 then + return name:sub(1, sep_pos - 1), stage + end + end + + return name, 0 +end + +-- Map from node name to +-- { plant_name = ..., name = ..., stage = n, stages_left = { node_name, ... } } + +local plant_stages = {} + +farming.plant_stages = plant_stages + +--- Registers the stages of growth of a (possible plant) node. + -- + -- @param node + -- Node or position table, or node name. + -- @return + -- The (possibly zero) number of stages of growth the plant will go through + -- before being fully grown, or nil if not a plant. + +local register_plant_node + +-- Recursive helper +local function reg_plant_stages(plant_name, stage, force_last) + + local node_name = plant_name and plant_name .. "_" .. stage + local node_def = node_name and minetest.registered_nodes[node_name] + + if not node_def then + return nil + end + + local stages = plant_stages[node_name] + + if stages then + return stages + end + + if minetest.get_item_group(node_name, "growing") > 0 then + + local ns = reg_plant_stages(plant_name, stage + 1, true) + local stages_left = (ns and { ns.name, unpack(ns.stages_left) }) or {} + + stages = { + plant_name = plant_name, + name = node_name, + stage = stage, + stages_left = stages_left + } + + if #stages_left > 0 then + + local old_constr = node_def.on_construct + local old_destr = node_def.on_destruct + + minetest.override_item(node_name, + { + on_construct = function(pos) + + if old_constr then + old_constr(pos) + end + + farming.handle_growth(pos) + end, + + on_destruct = function(pos) + + minetest.get_node_timer(pos):stop() + + if old_destr then + old_destr(pos) + end + end, + + on_timer = function(pos, elapsed) + return farming.plant_growth_timer(pos, elapsed, node_name) + end, + }) + end + + elseif force_last then + + stages = { + plant_name = plant_name, + name = node_name, + stage = stage, + stages_left = {} + } + else + return nil + end + + plant_stages[node_name] = stages + + return stages +end + +register_plant_node = function(node) + + local plant_name, stage = plant_name_stage(node) + + if plant_name then + + local stages = reg_plant_stages(plant_name, stage, false) + return stages and #stages.stages_left + else + return nil + end +end + +local function set_growing(pos, stages_left) + + if not stages_left then + return + end + + local timer = minetest.get_node_timer(pos) + + if stages_left > 0 then + + if not timer:is_started() then + + local stage_length = statistics.normal(STAGE_LENGTH_AVG, STAGE_LENGTH_DEV) + + stage_length = clamp(stage_length, 0.5 * STAGE_LENGTH_AVG, 3.0 * STAGE_LENGTH_AVG) + + timer:set(stage_length, -0.5 * math.random() * STAGE_LENGTH_AVG) + end + + elseif timer:is_started() then + timer:stop() + end +end + +-- https://git.tchncs.de/Illuna-Minetest/farming_plus/blob/master/init.lua#L54 + +function farming.generate_tree(pos, trunk, leaves, underground, replacements) + pos.y = pos.y-1 + local nodename = minetest.get_node(pos).name + local ret = true + for _,name in ipairs(underground) do + if nodename == name then + ret = false + break + end + end + pos.y = pos.y+1 + if not minetest.get_node_light(pos) then + return + end + if ret or minetest.get_node_light(pos) < 8 then + return + end + + node = {name = ""} + for dy=1,4 do + pos.y = pos.y+dy + if minetest.get_node(pos).name ~= "air" then + return + end + pos.y = pos.y-dy + end + node.name = trunk + for dy=0,4 do + pos.y = pos.y+dy + minetest.set_node(pos, node) + pos.y = pos.y-dy + end + + if not replacements then + replacements = {} + end + + node.name = leaves + pos.y = pos.y+3 + for dx=-2,2 do + for dz=-2,2 do + for dy=0,3 do + pos.x = pos.x+dx + pos.y = pos.y+dy + pos.z = pos.z+dz + + if dx == 0 and dz == 0 and dy==3 then + if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then + minetest.set_node(pos, node) + for name,rarity in pairs(replacements) do + if math.random(1, rarity) == 1 then + minetest.set_node(pos, {name=name}) + end + end + end + elseif dx == 0 and dz == 0 and dy==4 then + if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then + minetest.set_node(pos, node) + for name,rarity in pairs(replacements) do + if math.random(1, rarity) == 1 then + minetest.set_node(pos, {name=name}) + end + end + end + elseif math.abs(dx) ~= 2 and math.abs(dz) ~= 2 then + if minetest.get_node(pos).name == "air" then + minetest.set_node(pos, node) + for name,rarity in pairs(replacements) do + if math.random(1, rarity) == 1 then + minetest.set_node(pos, {name=name}) + end + end + end + else + if math.abs(dx) ~= 2 or math.abs(dz) ~= 2 then + if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then + minetest.set_node(pos, node) + for name,rarity in pairs(replacements) do + if math.random(1, rarity) == 1 then + minetest.set_node(pos, {name=name}) + end + end + end + end + end + + pos.x = pos.x-dx + pos.y = pos.y-dy + pos.z = pos.z-dz + end + end + end +end + +-- Detects a plant type node at the given position, starting +-- or stopping the plant growth timer as appopriate + +-- @param pos +-- The node's position. +-- @param node +-- The cached node table if available, or nil. + +function farming.handle_growth(pos, node) + + if not pos then + return + end + + local stages_left = register_plant_node(node or pos) + + if stages_left then + set_growing(pos, stages_left) + end +end + +minetest.after(0, function() + + for _, node_def in pairs(minetest.registered_nodes) do + register_plant_node(node_def) + end +end) + +local abm_func = farming.handle_growth + +if farming.DEBUG then + + local normal_abm_func = abm_func + + abm_func = function(...) + + local t0 = minetest.get_us_time() + local r = { normal_abm_func(...) } + local t1 = minetest.get_us_time() + + DEBUG_abm_runs = DEBUG_abm_runs + 1 + DEBUG_abm_time = DEBUG_abm_time + (t1 - t0) + + return unpack(r) + end +end + +-- Just in case a growing type or added node is missed (also catches existing +-- nodes added to map before timers were incorporated). + +minetest.register_abm({ + nodenames = { "group:growing" }, + interval = 300, + chance = 1, + action = abm_func +}) + +-- Plant timer function. +-- Grows plants under the right conditions. + +function farming.plant_growth_timer(pos, elapsed, node_name) + + local stages = plant_stages[node_name] + + if not stages then + return false + end + + local max_growth = #stages.stages_left + + if max_growth <= 0 then + return false + end + + if stages.plant_name == "farming:cocoa" then + + if not minetest.find_node_near(pos, 1, + {"default:jungletree", "moretrees:jungletree_leaves_green"}) then + + return true + end + else + local under = minetest.get_node_or_nil({ x = pos.x, y = pos.y - 1, z = pos.z }) + + if not under or under.name ~= "farming:soil_wet" then + return true + end + end + + local growth + local light_pos = {x = pos.x, y = pos.y, z = pos.z} + local lambda = elapsed / STAGE_LENGTH_AVG + + if lambda < 0.1 then + return true + end + + if max_growth == 1 or lambda < 2.0 then + + local light = (minetest.get_node_light(light_pos) or 0) + --print ("light level:", light) + + if not in_range(light, MIN_LIGHT, MAX_LIGHT) then + return true + end + + growth = 1 + else + local night_light = (minetest.get_node_light(light_pos, 0) or 0) + local day_light = (minetest.get_node_light(light_pos, 0.5) or 0) + local night_growth = in_range(night_light, MIN_LIGHT, MAX_LIGHT) + local day_growth = in_range(day_light, MIN_LIGHT, MAX_LIGHT) + + if not night_growth then + + if not day_growth then + return true + end + + lambda = day_time(elapsed) / STAGE_LENGTH_AVG + + elseif not day_growth then + + lambda = night_time(elapsed) / STAGE_LENGTH_AVG + end + + growth = statistics.poisson(lambda, max_growth) + + if growth < 1 then + return true + end + end + + if minetest.registered_nodes[stages.stages_left[growth]] then + minetest.swap_node(pos, {name = stages.stages_left[growth]}) + else + return true + end + + return growth ~= max_growth +end + +if farming.DEBUG then + + local timer_func = farming.plant_growth_timer; + + farming.plant_growth_timer = function(pos, elapsed, node_name) + + local t0 = minetest.get_us_time() + local r = { timer_func(pos, elapsed, node_name) } + local t1 = minetest.get_us_time() + + DEBUG_timer_runs = DEBUG_timer_runs + 1 + DEBUG_timer_time = DEBUG_timer_time + (t1 - t0) + + return unpack(r) + end +end + +-- refill placed plant by crabman (26/08/2015) +local can_refill_plant = { + ["farming:blueberry_1"] = "farming:blueberries", + ["farming:carrot_1"] = "farming:carrot", + ["farming:coffee_1"] = "farming:coffee_beans", + ["farming:corn_1"] = "farming:corn", + ["farming:cotton_1"] = "farming:seed_cotton", + ["farming:cucumber_1"] = "farming:cucumber", + ["farming:melon_1"] = "farming:melon_slice", + ["farming:potato_1"] = "farming:potato", + ["farming:pumpkin_1"] = "farming:pumpkin_slice", + ["farming:raspberry_1"] = "farming:raspberries", + ["farming:rhubarb_1"] = "farming:rhubarb", + ["farming:tomato_1"] = "farming:tomato", + ["farming:wheat_1"] = "farming:seed_wheat", + ["farming:grapes_1"] = "farming:grapes", + ["farming:beans_1"] = "farming:beans", + ["farming:rhubarb_1"] = "farming:rhubarb", + ["farming:cocoa_1"] = "farming:cocoa_beans", + ["farming:orange_1"] = "farming:orange_item", +} + +function farming.refill_plant(player, plantname, index) + + local inv = player:get_inventory() + local old_stack = inv:get_stack("main", index) + + if old_stack:get_name() ~= "" then + return + end + + for i, stack in pairs(inv:get_list("main")) do + + if stack:get_name() == plantname and i ~= index then + + inv:set_stack("main", index, stack) + stack:clear() + inv:set_stack("main", i, stack) + --minetest.log("action", "farming: refilled stack("..plantname..") of " .. player:get_player_name() ) + return + end + end +end + +-- Place Seeds on Soil + +function farming.place_seed(itemstack, placer, pointed_thing, plantname) + + local pt = pointed_thing + + -- check if pointing at a node + if not pt or pt.type ~= "node" then + return + end + + local under = minetest.get_node(pt.under) + local above = minetest.get_node(pt.above) + + -- check if pointing at the top of the node + if pt.above.y ~= pt.under.y + 1 then + return + end + + -- return if any of the nodes is not registered + if not minetest.registered_nodes[under.name] + or not minetest.registered_nodes[above.name] then + return + end + + -- can I replace above node, and am I pointing at soil + if not minetest.registered_nodes[above.name].buildable_to + or minetest.get_item_group(under.name, "soil") < 2 + -- avoid multiple seed placement bug + or minetest.get_item_group(above.name, "plant") ~= 0 then + return + end + + -- if not protected then add node and remove 1 item from the itemstack + if not minetest.is_protected(pt.above, placer:get_player_name()) then + + minetest.set_node(pt.above, {name = plantname, param2 = 1}) + + minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}) + + if not minetest.setting_getbool("creative_mode") then + + itemstack:take_item() + + -- check for refill + if itemstack:get_count() == 0 + and can_refill_plant[plantname] then + + minetest.after(0.10, + farming.refill_plant, + placer, + can_refill_plant[plantname], + placer:get_wield_index() + ) + end + end + + return itemstack + end +end + +-- Function to register plants (for compatibility) + +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 + + -- Register seed + 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 = {seed = 1, snappy = 3, attached_node = 1}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, mname .. ":"..pname.."_1") + end, + }) + + -- Register harvest + minetest.register_craftitem(":" .. mname .. ":" .. pname, { + description = pname:gsub("^%l", string.upper), + inventory_image = mname .. "_" .. pname .. ".png", + }) + + -- Register growing steps + for i = 1, def.steps do + + local drop = { + items = { + {items = {mname .. ":" .. pname}, rarity = 9 - i}, + {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, + {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, + {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 2}, + } + } + + local g = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, growing = 1} + + -- Last step doesn't need growing=1 so Abm never has to check these + if i == def.steps then + g = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1} + end + + local node_name = mname .. ":" .. pname .. "_" .. i + + minetest.register_node(node_name, { + drawtype = "plantlike", + waving = 1, + tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + drop = drop, + selection_box = farming.select, + groups = g, + sounds = default.node_sound_leaves_defaults(), + }) + + register_plant_node(node_name) + end + + -- Return info + local r = {seed = mname .. ":seed_" .. pname, harvest = mname .. ":" .. pname} + return r +end + +--[[ Cotton (example, is already registered in cotton.lua) +farming.register_plant("farming:cotton", { + description = "Cotton2 seed", + inventory_image = "farming_cotton_seed.png", + steps = 8, +})]] diff --git a/mods/farming/init.lua_orig b/mods/farming/init.lua_orig new file mode 100644 index 00000000..aee9976f --- /dev/null +++ b/mods/farming/init.lua_orig @@ -0,0 +1,192 @@ +--[[ + Minetest Farming Redo Mod 1.14 (11th May 2015) + by TenPlus1 +]] + +farming = {} +farming.mod = "redo" +farming.path = minetest.get_modpath("farming") +farming.hoe_on_use = default.hoe_on_use + +dofile(farming.path.."/soil.lua") +dofile(farming.path.."/hoes.lua") +dofile(farming.path.."/grass.lua") +dofile(farming.path.."/wheat.lua") +dofile(farming.path.."/cotton.lua") +dofile(farming.path.."/carrot.lua") +dofile(farming.path.."/potato.lua") +dofile(farming.path.."/tomato.lua") +dofile(farming.path.."/cucumber.lua") +dofile(farming.path.."/corn.lua") +dofile(farming.path.."/coffee.lua") +dofile(farming.path.."/melon.lua") +dofile(farming.path.."/sugar.lua") +dofile(farming.path.."/pumpkin.lua") +dofile(farming.path.."/cocoa.lua") +dofile(farming.path.."/raspberry.lua") +dofile(farming.path.."/blueberry.lua") +dofile(farming.path.."/rhubarb.lua") +dofile(farming.path.."/beanpole.lua") +dofile(farming.path.."/donut.lua") +dofile(farming.path.."/mapgen.lua") +dofile(farming.path.."/compatibility.lua") -- Farming Plus compatibility + +-- Place Seeds on Soil + +function farming.place_seed(itemstack, placer, pointed_thing, plantname) + local pt = pointed_thing + + -- check if pointing at a node + if not pt and pt.type ~= "node" then + return + end + + local under = minetest.get_node(pt.under) + local above = minetest.get_node(pt.above) + + -- check if pointing at the top of the node + if pt.above.y ~= pt.under.y+1 then + return + end + + -- return if any of the nodes is not registered + if not minetest.registered_nodes[under.name] + or not minetest.registered_nodes[above.name] then + return + end + + -- can I replace above node, and am I pointing at soil + if not minetest.registered_nodes[above.name].buildable_to + or minetest.get_item_group(under.name, "soil") < 2 + or minetest.get_item_group(above.name, "plant") ~= 0 then -- ADDED this line for multiple seed placement bug + return + end + + -- add the node and remove 1 item from the itemstack + if not minetest.is_protected(pt.above, placer:get_player_name()) then + minetest.add_node(pt.above, {name=plantname}) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end +end + +-- Single ABM Handles Growing of All Plants + +minetest.register_abm({ + nodenames = {"group:growing"}, + neighbors = {"farming:soil_wet", "default:jungletree"}, + interval = 80, + chance = 2, + + action = function(pos, node) + + -- split plant name (e.g. farming:wheat_1) + local plant = node.name:split("_")[1].."_" + local numb = node.name:split("_")[2] + + -- fully grown ? + if not minetest.registered_nodes[plant..(numb + 1)] then return end + + -- cocoa pod on jungle tree ? + if plant ~= "farming:cocoa_" then + + -- growing on wet soil ? + if minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name ~= "farming:soil_wet" then return end + end + + -- enough light ? + if minetest.get_node_light(pos) < 13 then return end + + -- grow + minetest.set_node(pos, {name=plant..(numb + 1)}) + + end +}) + +-- Function to register plants (for compatibility) + +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 + + -- Register seed + 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 = {seed = 1, snappy = 3, attached_node = 1}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, mname .. ":"..pname.."_1") + end + }) + + -- Register harvest + minetest.register_craftitem(":" .. mname .. ":" .. pname, { + description = pname:gsub("^%l", string.upper), + inventory_image = mname .. "_" .. pname .. ".png", + }) + + -- Register growing steps + for i=1,def.steps do + local drop = { + items = { + {items = {mname .. ":" .. pname}, rarity = 9 - i}, + {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, + {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, + {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 2}, + } + } + + local g = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, growing = 1} + -- Last step doesn't need growing=1 so Abm never has to check these + if i == def.steps then + g = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1} + end + + minetest.register_node(mname .. ":" .. pname .. "_" .. i, { + drawtype = "plantlike", + waving = 1, + tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = drop, + selection_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, + groups = g, + sounds = default.node_sound_leaves_defaults(), + }) + end + + -- Return info + local r = {seed = mname .. ":seed_" .. pname, harvest = mname .. ":" .. pname} + return r +end + +--[[ Cotton (example, is already registered in cotton.lua) +farming.register_plant("farming:cotton", { + description = "Cotton seed", + inventory_image = "farming_cotton_seed.png", + steps = 8, +}) +--]] diff --git a/mods/farming/license.txt b/mods/farming/license.txt new file mode 100644 index 00000000..5d30c149 --- /dev/null +++ b/mods/farming/license.txt @@ -0,0 +1,14 @@ + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. \ No newline at end of file diff --git a/mods/farming/mapgen.lua b/mods/farming/mapgen.lua new file mode 100644 index 00000000..1cb46ca2 --- /dev/null +++ b/mods/farming/mapgen.lua @@ -0,0 +1,65 @@ +-- decoration function +local function register_plant(name, min, max, spawnby, num) + minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.006, + spread = {x = 100, y = 100, z = 100}, + seed = 329, + octaves = 3, + persist = 0.6 + }, + y_min = min, + y_max = max, + decoration = "farming:" .. name, + spawn_by = spawnby, + num_spawn_by = num, + }) +end + +function farming.register_mgv6_decorations() + register_plant("potato_3", 15, 40, "", -1) + register_plant("tomato_7", 5, 20, "", -1) + register_plant("carrot_8", 1, 30, "group:water", 1) + register_plant("cucumber_4", 1, 20, "group:water", 1) + register_plant("corn_7", 12, 22, "", -1) + register_plant("corn_8", 10, 20, "", -1) + register_plant("coffee_5", 20, 45, "", -1) + register_plant("melon_8", 1, 20, "group:water", 1) + register_plant("pumpkin_8", 1, 20, "group:water", 1) + register_plant("raspberry_4", 3, 10, "", -1) + register_plant("rhubarb_3", 3, 15, "", -1) + register_plant("blueberry_4", 3, 10, "", -1) + register_plant("beanbush", 18, 35, "", -1) + register_plant("grapebush", 25, 45, "", -1) + register_plant("strawberry_4", 3, 10, "", -1) +end + +-- v7 maps have a beach so plants growing near water is limited to 6 high +function farming.register_mgv7_decorations() + register_plant("potato_3", 15, 40, "", -1) + register_plant("tomato_7", 5, 20, "", -1) + register_plant("carrot_8", 1, 6, "", -1) + register_plant("cucumber_4", 1, 6, "", -1) + register_plant("corn_7", 12, 22, "", -1) + register_plant("corn_8", 10, 20, "", -1) + register_plant("coffee_5", 20, 45, "", -1) + register_plant("melon_8", 1, 6, "", -1) + register_plant("pumpkin_8", 1, 6, "", -1) + register_plant("raspberry_4", 3, 10, "", -1) + register_plant("rhubarb_3", 3, 15, "", -1) + register_plant("blueberry_4", 3, 10, "", -1) + register_plant("beanbush", 18, 35, "", -1) + register_plant("grapebush", 25, 45, "", -1) + register_plant("strawberry_4", 3, 10, "", -1) +end + +-- detect mapgen +if minetest.get_mapgen_params().mgname == "v6" then + farming.register_mgv6_decorations() +else + farming.register_mgv7_decorations() +end diff --git a/mods/farming/melon.lua b/mods/farming/melon.lua new file mode 100644 index 00000000..fb59e7bf --- /dev/null +++ b/mods/farming/melon.lua @@ -0,0 +1,80 @@ + +-- melon +minetest.register_craftitem("farming:melon_slice", { + description = "Melon Slice", + inventory_image = "farming_melon_slice.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:melon_1") + end, + on_use = minetest.item_eat(2), +}) + +minetest.register_craft({ + output = "farming:melon_8", + recipe = { + {"farming:melon_slice", "farming:melon_slice", "farming:melon_slice"}, + {"farming:melon_slice", "farming:melon_slice", "farming:melon_slice"}, + {"farming:melon_slice", "farming:melon_slice", "farming:melon_slice"}, + } +}) + +minetest.register_craft({ + output = "farming:melon_slice 9", + recipe = { + {"", "farming:melon_8", ""}, + } +}) + +-- melon definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_melon_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:melon_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_melon_2.png"} +minetest.register_node("farming:melon_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_melon_3.png"} +minetest.register_node("farming:melon_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_melon_4.png"} +minetest.register_node("farming:melon_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_melon_5.png"} +minetest.register_node("farming:melon_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_melon_6.png"} +minetest.register_node("farming:melon_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_melon_7.png"} +minetest.register_node("farming:melon_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.drawtype = "nodebox" +crop_def.description = "Melon" +crop_def.tiles = {"farming_melon_top.png", "farming_melon_top.png", "farming_melon_side.png"} +crop_def.selection_box = {-.5, -.5, -.5, .5, .5, .5} +crop_def.walkable = true +crop_def.groups = {snappy = 3, oddly_breakable_by_hand = 1, flammable = 2, plant = 1} +crop_def.drop = "farming:melon_slice 9" +minetest.register_node("farming:melon_8", table.copy(crop_def)) diff --git a/mods/farming/mod.conf b/mods/farming/mod.conf new file mode 100644 index 00000000..80ab8b0b --- /dev/null +++ b/mods/farming/mod.conf @@ -0,0 +1 @@ +name = farming \ No newline at end of file diff --git a/mods/farming/oranges.lua b/mods/farming/oranges.lua new file mode 100644 index 00000000..88e39afa --- /dev/null +++ b/mods/farming/oranges.lua @@ -0,0 +1,58 @@ +minetest.register_craftitem("farming:orange_seed", { + description = "Orange Seeds", + inventory_image = "farming_orange_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:orange_1") + end +}) + +minetest.register_craftitem("farming:orange_item", { + description = "Orange", + inventory_image = "farming_orange.png", + on_use = minetest.item_eat(4), + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:orange_1") + end +}) + +-- orange definition +local crop_def = { + paramtype = "plantlike", + walkable = false, + paramtype = "light", + sunlight_propagates = true, + buildable_to = true, + drawtype = "plantlike", + drop = "", + tiles = {"farming_orange_1.png"}, + selection_box = farming.select, + groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1,growing=1}, + sounds = default.node_sound_leaves_defaults(), +} + +-- stage 1 +minetest.register_node("farming:orange_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_orange_2.png"} +minetest.register_node("farming:orange_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_orange_3.png"} +minetest.register_node("farming:orange_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_orange_4.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + { items = {'farming:orange_seed'} }, + { items = {'farming:orange_seed'}, rarity = 2}, + { items = {'farming:orange_seed'}, rarity = 5}, + { items = {'farming:orange_item'} }, + { items = {'farming:orange_item'}, rarity = 2 }, + { items = {'farming:orange_item'}, rarity = 5 }, + } +} + +minetest.register_node("farming:orange_4", table.copy(crop_def)) diff --git a/mods/farming/potato.lua b/mods/farming/potato.lua new file mode 100644 index 00000000..fa95442c --- /dev/null +++ b/mods/farming/potato.lua @@ -0,0 +1,85 @@ + +--[[ + Original textures from DocFarming mod + https://forum.minetest.net/viewtopic.php?id=3948 +]] + +minetest.register_craftitem("farming:potato_seed", { + description = "Potato Seeds", + inventory_image = "farming_potato_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:potato_1") + end +}) + +-- potato +minetest.register_craftitem("farming:potato", { + description = "Potato", + inventory_image = "farming_potato.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:potato_1") + end, + on_use = minetest.item_eat(1), +}) + +-- baked potato +minetest.register_craftitem("farming:baked_potato", { + description = "Baked Potato", + inventory_image = "farming_baked_potato.png", + on_use = minetest.item_eat(6), +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 10, + output = "farming:baked_potato", + recipe = "farming:potato" +}) + +-- potato definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_potato_1.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:potato_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_potato_2.png"} +minetest.register_node("farming:potato_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_potato_3.png"} +crop_def.drop = { + items = { + {items = {'farming:potato'}, rarity = 1}, + {items = {'farming:potato_seed'}, rarity = 1}, + {items = {'farming:potato'}, rarity = 3}, + } +} +minetest.register_node("farming:potato_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_potato_4.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:potato 2'}, rarity = 1}, + {items = {'farming:potato_seed 2'}, rarity = 1}, + {items = {'farming:potato 3'}, rarity = 2}, + } +} +minetest.register_node("farming:potato_4", table.copy(crop_def)) diff --git a/mods/farming/pumpkin.lua b/mods/farming/pumpkin.lua new file mode 100644 index 00000000..67ecb9c5 --- /dev/null +++ b/mods/farming/pumpkin.lua @@ -0,0 +1,346 @@ + +--[[ + Big thanks to PainterlyPack.net for allowing me to use these textures +]] + +minetest.register_craftitem("farming:pumpkin_seed", { + description = "Pumpkin Seed", + inventory_image = "farming_pumpkin_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1") + end +}) + +-- pumpkin +minetest.register_node("farming:pumpkin", { + description = "Pumpkin", + tiles = { + "farming_pumpkin_top.png", + "farming_pumpkin_top.png", + "farming_pumpkin_side.png" + }, + groups = { + choppy = 1, oddly_breakable_by_hand = 1, + flammable = 2, plant = 1 + }, + drop = { + items = { + {items = {'farming:pumpkin_slice 9'}, rarity = 1}, + } + }, + sounds = default.node_sound_wood_defaults(), +}) + +-- pumpkin slice +minetest.register_craftitem("farming:pumpkin_slice", { + description = "Pumpkin Slice", + inventory_image = "farming_pumpkin_slice.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1") + end, + on_use = minetest.item_eat(2), +}) + +minetest.register_craft({ + output = "farming:pumpkin", + recipe = { + {"farming:pumpkin_slice", "farming:pumpkin_slice", "farming:pumpkin_slice"}, + {"farming:pumpkin_slice", "farming:pumpkin_slice", "farming:pumpkin_slice"}, + {"farming:pumpkin_slice", "farming:pumpkin_slice", "farming:pumpkin_slice"}, + } +}) + +minetest.register_craft({ + output = "farming:pumpkin_slice 9", + recipe = { + {"", "farming:pumpkin", ""}, + } +}) + +-- jack 'o lantern +minetest.register_node("farming:jackolantern", { + description = "Jack 'O Lantern", + tiles = { + "farming_pumpkin_top.png", + "farming_pumpkin_top.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_face_off.png" + }, + paramtype2 = "facedir", + groups = {choppy = 1, oddly_breakable_by_hand = 1, flammable = 2}, + sounds = default.node_sound_wood_defaults(), + on_punch = function(pos, node, puncher) + node.name = "farming:jackolantern_on" + minetest.swap_node(pos, node) + end, +}) + +minetest.register_node("farming:jackolantern_on", { + description = "Jack 'O Lantern", + tiles = { + "farming_pumpkin_top.png", + "farming_pumpkin_top.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_face_on.png" + }, + light_source = default.LIGHT_MAX - 1, + paramtype2 = "facedir", + groups = {choppy = 1, oddly_breakable_by_hand = 1, flammable = 2}, + sounds = default.node_sound_wood_defaults(), + drop = "farming:jackolantern", + on_punch = function(pos, node, puncher) + node.name = "farming:jackolantern" + minetest.swap_node(pos, node) + end, +}) + +minetest.register_craft({ + output = "farming:jackolantern", + recipe = { + {"", "", ""}, + {"", "default:torch", ""}, + {"", "farming:pumpkin", ""}, + } +}) + +-- scarecrow +local box1 = { + {-1, -8, -1, 1, 8, 1}, +} + +local box2 = { + {-1, -8, -1, 1, 8, 1}, + {-12, -8, -1, 12, -7, 1}, + {-5, -2, -5, 5, 8, 5} +} + +for j,list in ipairs(box1) do + for i,int in ipairs(list) do + list[i] = int/16 + end + box1[j] = list +end + +for j,list in ipairs(box2) do + for i,int in ipairs(list) do + list[i] = int/16 + end + box2[j] = list +end + +minetest.register_node("farming:scarecrow", { + description = "Scarecrow", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + tiles = {"farming_scarecrow_top.png", "farming_scarecrow_top.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_front.png"}, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = box2 + }, + selection_box = { + type = "fixed", + fixed = { + {-12/16, -1.5, -0.5, 12/16, 0.5, 0.5} + } + }, + groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2}, + + after_place_node = function(pos, placer) + local node = minetest.get_node(pos) + local param2 = node.param2 + pos.y = pos.y+1 + if minetest.get_node(pos).name ~= "air" then + pos.y = pos.y-1 + minetest.remove_node(pos) + minetest.after(0.1, function(placer) + local inv = placer:get_inventory() + local index = placer:get_wield_index() + inv:set_stack("main", index, ItemStack("farming:scarecrow")) + end, placer) + return + end + minetest.set_node(pos, node) + pos.y = pos.y-1 + node.name = "farming:scarecrow_bottom" + minetest.set_node(pos, node) + end, + + after_destruct = function(pos, oldnode) + pos.y = pos.y-1 + if minetest.get_node(pos).name == "farming:scarecrow_bottom" then + minetest.remove_node(pos) + end + end +}) + +minetest.register_node("farming:scarecrow_bottom", { + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + tiles = {"default_wood.png"}, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = box1 + }, + groups = {not_in_creative_inventory=1}, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0} + } + } +}) + +minetest.register_craft({ + output = "farming:scarecrow", + recipe = { + {"", "farming:pumpkin_face", "",}, + {"default:stick", "default:stick", "default:stick",}, + {"", "default:stick", "",} + } +}) + +minetest.register_node("farming:scarecrow_light", { + description = "Scarecrow With light", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + light_source = LIGHT_MAX-2, + tiles = {"farming_scarecrow_top.png", "farming_scarecrow_top.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_front_light.png"}, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = box2 + }, + selection_box = { + type = "fixed", + fixed = { + {-12/16, -1.5, -0.5, 12/16, 0.5, 0.5} + } + }, + groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2}, + + after_place_node = function(pos, placer) + local node = minetest.get_node(pos) + local param2 = node.param2 + pos.y = pos.y+1 + if minetest.get_node(pos).name ~= "air" then + pos.y = pos.y-1 + minetest.remove_node(pos) + minetest.after(0.1, function(placer) + local inv = placer:get_inventory() + local index = placer:get_wield_index() + inv:set_stack("main", index, ItemStack("farming:scarecrow_light")) + end, placer) + return + end + minetest.set_node(pos, node) + pos.y = pos.y-1 + node.name = "farming:scarecrow_bottom" + minetest.set_node(pos, node) + end, + + after_destruct = function(pos, oldnode) + pos.y = pos.y-1 + if minetest.get_node(pos).name == "farming:scarecrow_bottom" then + minetest.remove_node(pos) + end + end +}) + +minetest.register_craft({ + output = "farming:scarecrow_light", + recipe = { + {"", "farming:pumpkin_face_light", "",}, + {"default:stick", "default:stick", "default:stick",}, + {"", "default:stick", "",} + } +}) + +-- pumpkin bread +minetest.register_craftitem("farming:pumpkin_bread", { + description = ("Pumpkin Bread"), + inventory_image = "farming_pumpkin_bread.png", + on_use = minetest.item_eat(8) +}) + +minetest.register_craftitem("farming:pumpkin_dough", { + description = "Pumpkin Dough", + inventory_image = "farming_pumpkin_dough.png", +}) + +minetest.register_craft({ + output = "farming:pumpkin_dough", + type = "shapeless", + recipe = {"farming:flour", "farming:pumpkin_slice", "farming:pumpkin_slice"} +}) + +minetest.register_craft({ + type = "cooking", + output = "farming:pumpkin_bread", + recipe = "farming:pumpkin_dough", + cooktime = 10 +}) + +-- pumpkin definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_pumpkin_1.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:pumpkin_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_pumpkin_2.png"} +minetest.register_node("farming:pumpkin_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_pumpkin_3.png"} +minetest.register_node("farming:pumpkin_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_pumpkin_4.png"} +minetest.register_node("farming:pumpkin_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_pumpkin_5.png"} +minetest.register_node("farming:pumpkin_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_pumpkin_6.png"} +minetest.register_node("farming:pumpkin_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_pumpkin_7.png"} +minetest.register_node("farming:pumpkin_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"farming_pumpkin_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:pumpkin_slice 9'}, rarity = 1}, + {items = {'farming:pumpkin_slice 4'}, rarity = 1}, + } +} +minetest.register_node("farming:pumpkin_8", table.copy(crop_def)) diff --git a/mods/farming/raspberry.lua b/mods/farming/raspberry.lua new file mode 100644 index 00000000..686ea5a7 --- /dev/null +++ b/mods/farming/raspberry.lua @@ -0,0 +1,74 @@ +minetest.register_craftitem("farming:raspberry_seed", { + description = "Raspberry Seeds", + inventory_image = "farming_raspberry_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:raspberry_1") + end +}) + +-- raspberries +minetest.register_craftitem("farming:raspberries", { + description = "Raspberries", + inventory_image = "farming_raspberries.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:raspberry_1") + end, + on_use = minetest.item_eat(1), +}) + +-- raspberry smoothie +minetest.register_craftitem("farming:smoothie_raspberry", { + description = "Raspberry Smoothie", + inventory_image = "farming_raspberry_smoothie.png", + on_use = minetest.item_eat(2, "vessels:drinking_glass"), +}) + +minetest.register_craft({ + output = "farming:smoothie_raspberry", + recipe = { + {"default:snow"}, + {"farming:raspberries"}, + {"vessels:drinking_glass"}, + } +}) + +-- raspberries definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_raspberry_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:raspberry_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_raspberry_2.png"} +minetest.register_node("farming:raspberry_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_raspberry_3.png"} +minetest.register_node("farming:raspberry_3", table.copy(crop_def)) + +-- stage 4 (final) +crop_def.tiles = {"farming_raspberry_4.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:raspberries 2'}, rarity = 1}, + {items = {'farming:raspberries'}, rarity = 2}, + {items = {'farming:raspberries'}, rarity = 3}, + {items = {'farming:raspberry_seed 4'}, rarity = 1}, + } +} +minetest.register_node("farming:raspberry_4", table.copy(crop_def)) diff --git a/mods/farming/rhubarb.lua b/mods/farming/rhubarb.lua new file mode 100644 index 00000000..aaf50866 --- /dev/null +++ b/mods/farming/rhubarb.lua @@ -0,0 +1,70 @@ +minetest.register_craftitem("farming:rhubarb_seed", { + description = "Rhubarb Seeds", + inventory_image = "farming_rhubarb_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:rhubarb_1") + end +}) + +-- rhubarb +minetest.register_craftitem("farming:rhubarb", { + description = "Rhubarb", + inventory_image = "farming_rhubarb.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:rhubarb_1") + end, + on_use = minetest.item_eat(1), +}) + +-- rhubarb pie +minetest.register_craftitem("farming:rhubarb_pie", { + description = "Rhubarb Pie", + inventory_image = "farming_rhubarb_pie.png", + on_use = minetest.item_eat(6), +}) + +minetest.register_craft({ + output = "farming:rhubarb_pie", + recipe = { + {"", "farming:sugar", ""}, + {"farming:rhubarb", "farming:rhubarb", "farming:rhubarb"}, + {"farming:wheat", "farming:wheat", "farming:wheat"}, + } +}) + +-- rhubarb definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_rhubarb_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:rhubarb_1", table.copy(crop_def)) + +-- stage2 +crop_def.tiles = {"farming_rhubarb_2.png"} +minetest.register_node("farming:rhubarb_2", table.copy(crop_def)) + +-- stage 3 (final) +crop_def.tiles = {"farming_rhubarb_3.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:rhubarb 2'}, rarity = 1}, + {items = {'farming:rhubarb'}, rarity = 2}, + {items = {'farming:rhubarb_seed 2'}, rarity = 2}, + {items = {'farming:rhubarb'}, rarity = 3}, + } +} +minetest.register_node("farming:rhubarb_3", table.copy(crop_def)) diff --git a/mods/farming/screenshot.png b/mods/farming/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..aba30f016aae3e97daa01c0793c2b8468a921880 GIT binary patch literal 42499 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νDV(0f4oRX)Eyy2k1#kox* zD59mAbUdP3l}P_d>7@sn%Lm#J{0axr;zb2)SvT)6ZXK}*DnCh%G@SBFzkYD(4eIC& z{0CzcAiM+YaAm((KuC-I4TcTT%fGKU*M~ER0kB}uxM595tVCY+DPjWjMQ$F*phajq7)aVenvEUF8val6nAQltVcTk+qV0XU0V=$D>nfKudeg5-1 z089p{2QCG=^*vmY4j^T4TD1HPtPh59rGYbQwSPWny?3ki}_oDz^#F$sIuDclk$z}W0R4>TrjsN%Y{{8!Ra45ve z%RXD4QdC;(P+>o8V_;dg*z6fD{iQ{EX}a_;wPJtp(0}X>!~2{2AiAZc8}ldx&3Mxt zrjLMS`wpq=5@hK4FzgQxf`uePiG{G;uPHXugUjz(=>ppccDo+7gXYrUlz6rfS*MH9 zh@K)3i^TE#+gYn^r7D6FOU24AzfbE{PZQZcJ&IH>84PHWR@6k4f>dy@EJB=fJt6fu z(yNhw#FVkXp{3||9JYjQceXV8M>;am>-8$|B?m7;6p>mSG_b&7iG zS;hNn!6d|ZhflsmSQg5+(9lWW9@E5FxgXL}oD?8I;BPM>Tt7XD6=GLv?!4;CwrV!+ zUI^DlTc{-wk?L3P=L|a|Na1M$t0VC9BOO#pI z5$aBJGLS%a=DA{IGw#w7sspiZLL*@`(88BL01)1c`-AcQ&Gg}pmb$&a0|>LnflDf} zZOjzt6xNun00@h6utD+p`dSWzJRQ{O`|D;1Zv1-@qK!(;)~Unic#6HE6I?F65R0ZK zB}%O#;aL`;m|hVQfVf69U>Jrdn>2 zIU)l%1=tk#JLV@O3s0vQoJz{>#*+XXij27UT3}U~L$d;rihkFSq>^~uXs+-CRTy=z zLwF_Vrc4$d4|juptRk$8?+~eWH+;;-_xJa>#_H(){?5mR$5A8R-$MVZ`!prL&(nH`-!X>icyg@^ExbRs>nEq$mx5HBxDw%(}1E1BqVVV zMd^a3sL>=t6u2sc0Rx*&hq!t=YfqyaK1oRp8v!*FkMjAJw#H-p(K7`FhQc_-S!e7h zTG}BDL3-lRjG-~R@)TjTl(K^neh}2Fy~JZCIs^kG^gV%Kpg;^z`Q;J(;NLY@#!RPo z0oh>qkhB~NgFyYen}<0g)M*P%7UdUC$>)eiSv*%5zCXVch8eXIib2Hg0t%3N zw*3r;?3#6A4-F0ygwcG$MogDj7)hbp5i0~438(z-u0Lp}hqMVZ?8o!@P+PBQ9Q6l? z)$QalCXZ0AZp℞1^eq+rXb`F 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 0 and v) or -v +end + +erf_inv = function(x) + + if x == 0 then return 0; end + + if x <= -1 or x >= 1 then return nil; end + + local y = math.log(1 - x * x) + local u = C + 0.5 * y + local v = math.sqrt(math.sqrt(u * u - D * y) - u) + + return (x > 0 and v) or -v +end + +local function std_normal(u) + return ROOT_2 * erf_inv(2.0 * u - 1.0) +end + +local poisson +local cdf_table = {} + +local function generate_cdf(lambda_index, lambda) + + local max = math.ceil(4 * lambda) + local pdf = math.exp(-lambda) + local cdf = pdf + local t = { [0] = pdf } + + for i = 1, max - 1 do + pdf = pdf * lambda / i + cdf = cdf + pdf + t[i] = cdf + end + + return t +end + +for li = 1, 100 do + cdf_table[li] = generate_cdf(li, 0.25 * li) +end + +poisson = function(lambda, max) + + if max < 2 then + return (math.random() < math.exp(-lambda) and 0) or 1 + elseif lambda >= 2 * max then + return max + end + + local u = math.random() + local lambda_index = math.floor(4 * lambda + 0.5) + local cdfs = cdf_table[lambda_index] + + if cdfs then + + lambda = 0.25 * lambda_index + + if u < cdfs[0] then return 0; end + if max > #cdfs then max = #cdfs + 1 else max = math.floor(max); end + if u >= cdfs[max - 1] then return max; end + + if max > 4 then -- Binary search + + local s = 0 + + while s + 1 < max do + + local m = math.floor(0.5 * (s + max)) + + if u < cdfs[m] then max = m; else s = m; end + end + else + for i = 1, max - 1 do + if u < cdfs[i] then return i; end + end + end + + return max + else + local x = lambda + math.sqrt(lambda) * std_normal(u) + + return (x < 0.5 and 0) or (x >= max - 0.5 and max) or math.floor(x + 0.5) + end +end + +-- Error function. +statistics.erf = erf + +-- Inverse error function. +statistics.erf_inv = erf_inv + +--- Standard normal distribution function (mean 0, standard deviation 1). + -- + -- @return + -- Any real number (actually between -3.0 and 3.0). + +statistics.std_normal = function() + + local u = math.random() + + if u < 0.001 then + return -3.0 + elseif u > 0.999 then + return 3.0 + end + + return std_normal(u) +end + +--- Standard normal distribution function (mean 0, standard deviation 1). + -- + -- @param mu + -- The distribution mean. + -- @param sigma + -- The distribution standard deviation. + -- @return + -- Any real number (actually between -3*sigma and 3*sigma). + +statistics.normal = function(mu, sigma) + + local u = math.random() + + if u < 0.001 then + return mu - 3.0 * sigma + elseif u > 0.999 then + return mu + 3.0 * sigma + end + + return mu + sigma * std_normal(u) +end + +--- Poisson distribution function. + -- + -- @param lambda + -- The distribution mean and variance. + -- @param max + -- The distribution maximum. + -- @return + -- An integer between 0 and max (both inclusive). + +statistics.poisson = function(lambda, max) + + lambda, max = tonumber(lambda), tonumber(max) + + if not lambda or not max or lambda <= 0 or max < 1 then return 0; end + + return poisson(lambda, max) +end + +return statistics diff --git a/mods/farming/strawberry.lua b/mods/farming/strawberry.lua new file mode 100644 index 00000000..919a8e8f --- /dev/null +++ b/mods/farming/strawberry.lua @@ -0,0 +1,133 @@ +-- [ strawberrys from github.com/tenplus1/farming ] +-- +-- Strawberry (can also be planted as seed) +minetest.register_craftitem("farming:strawberry_item", { + description = "Strawberry", + inventory_image = "farming_strawberry.png", + wield_image = "farming_strawberry.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:strawberry_1") + end, + on_use = minetest.item_eat(1), +}) + +-- added by illuna +minetest.register_craftitem("farming:strawberry_seed", { + description = "Strawberry Seeds", + inventory_image = "farming_strawberry_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:strawberry_1") + end, +}) + +-- Define Strawberry Bush growth stages +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_strawberry_1.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5} + }, + groups = { + snappy = 3, flammable =2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults(), +} + +--stage 1 +minetest.register_node("farming:strawberry_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_strawberry_2.png"} +minetest.register_node("farming:strawberry_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_strawberry_3.png"} +minetest.register_node("farming:strawberry_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_strawberry_4.png"} +minetest.register_node("farming:strawberry_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_strawberry_5.png"} +minetest.register_node("farming:strawberry_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_strawberry_6.png"} +crop_def.drop = { + items = { + {items = {"farming:strawberry 1"},rarity = 2}, + {items = {"farming:strawberry 2"},rarity = 3}, + } +} +minetest.register_node("farming:strawberry_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_strawberry_7.png"} +crop_def.drop = { + items = { + {items = {"farming:strawberry 1"},rarity = 1}, + {items = {"farming:strawberry_item 2"},rarity = 3}, + } +} +minetest.register_node("farming:strawberry_7", table.copy(crop_def)) + +-- stage 8 +crop_def.tiles = {"farming_strawberry_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"farming:strawberry 2"},rarity = 1}, + {items = {"farming:strawberry_item 3"},rarity = 3}, + } +} +minetest.register_node("farming:strawberry_8", table.copy(crop_def)) + +-- growing routine if farming redo isn't present +if not farming or not farming.mod or farming.mod ~= "redo" then + +minetest.register_abm({ + nodenames = { + "farming:strawberry_1", "farming:strawberry_2", "farming:strawberry_3", + "farming:strawberry_4", "farming:strawberry_5", "farming:strawberry_6", + "farming:strawberry_7" + }, + neighbors = {"farming:soil_wet"}, + interval = 9, + chance = 20, + catch_up = false, + action = function(pos, node) + + -- are we on wet soil? + pos.y = pos.y - 1 + if minetest.get_item_group(minetest.get_node(pos).name, "soil") < 3 then + return + end + pos.y = pos.y + 1 + + -- do we have enough light? + local light = minetest.get_node_light(pos) + + if not light + or light < 13 then + return + end + + -- grow to next stage + local num = node.name:split("_")[2] + + node.name = "farming:strawberry_" .. tonumber(num + 1) + + minetest.swap_node(pos, node) + end +}) + +end -- END IF diff --git a/mods/farming/sugar.lua b/mods/farming/sugar.lua new file mode 100644 index 00000000..efc92efd --- /dev/null +++ b/mods/farming/sugar.lua @@ -0,0 +1,14 @@ + +--= Sugar + +minetest.register_craftitem("farming:sugar", { + description = "Sugar", + inventory_image = "farming_sugar.png", +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 3, + output = "farming:sugar 2", + recipe = "default:papyrus", +}) \ No newline at end of file diff --git a/mods/farming/textures/farming_baked_potato.png b/mods/farming/textures/farming_baked_potato.png new file mode 100644 index 0000000000000000000000000000000000000000..425c4ae333ad4629fac7095108ebc6fc043656af GIT binary patch literal 321 zcmV-H0lxl;P)o#s5c-QvbhvnFBV6pi5vjf;1dI z?giEi!nbb4{=axJ{BQP$7!J}rD~$oW?Hg+$ z27qjX8C2uJ@PA4I!~X+4I5fflNC7Bh8+;i4cZD(hZwX-dU+>NEe`YGg)&)5X_@i!9 z9mD@^O%TP4^BMk6OM=iKgK9k)h>LfS29T3MPMw|%!6YZy?r?_x`PO7;Bo_bxNuTQ` TQlETq00000NkvXXu0mjfmmPPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00007bV*G`2iyoB z5CbCwPWwFo00DzZL_t(I%cYXdD@0Kkho5urU}hsb*(eKkV`D2j zd;i8PZIot3N!h3=+fjG0n1#r3XE=bYbj-rn;FDJ4$pY-<&l z({ONckmdatic^587CLtf2!@US0g5G@4Dn!NfY+Nup@ZR`4vyAG{si!tDhiDSz~p!w z`Fw@BIq}=+%ZJAdHV*|rf0sr&p5i=t!tL%DPdhUe!^v$QrYccnrnKh*@YFZ+VnO=+ zf`%52+|D!~o;T_=ANP01sOAl}o#Q!uOE8>bzRd%G*KeSB{YHs4w`9v?UPvo@jVqTY z6J5cbkK%gIku(g__gNOETFU=ID4-KQO~|1>jn1ZCA{To?sj{h772ZFqv4lX=+hxLt z0f^$mKUD7T(s(i9=qiHV-63o0o2b)#JYKGmipTg4^C4Qxdk_lf#iayLtv8e^8-W{3 z2mrFwic$YzWs$xi747o+4e=`zLjk>XU`dtX*{CRY?+bQ;r%1TN|Ahbm002ovPDHLk FV1iwP-J}2j literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_banana_leaves.png b/mods/farming/textures/farming_banana_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..cf8eecbf1251e08347e964853dabed27c627c9c1 GIT binary patch literal 621 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`K2;$RB|(Yh3I#>^X_+~x3MG{V zsS2qTnQ06R6}KLHtv%uMIEaBcSy@jwxR~46+t`>{!C<4wMiVaw5_$Qs7kmC(Bm$SelvY3H^?+6GpPSxg<1`4v5c>21s-{Fww*V5f^YV91b zkZVMVV`)i7ei6gUb!R+)LR=+4A?N&p%A(Blj1q=5{Aa9yqI_V{qSVBa%=|oslFZyx z2Gj5SoIn{)kW6rXT1k0gQ7S`h!GDl)Zjhi$W^r;(B2Z}&!}bGP`hmh6AmQ-DqP)z! zbcO@c&)R`v>=6B>MaiiQU;j71hADH-&&^HED`EI{X4-zB7#m1gNM=b+D#MC*m(+nG zKRjI=Lo9mNPBP3sY#`7&-$#gJp{C+&Ly0c#s4Xck?Jw4Un`9r5EFh7qq;iyF$$`=g z|B0Km@&#=QFO`4y6A-l97jbT=B~E zd_O;bN8SH~H@zqHXF6rhKLz3xYk)|@-0-_^MPE{EQuf?NCdwPs1JIq_M( zT6xN}Dk&pf9Jf8hUt7<1gZRASkVVs7fs)D#-Al Ze$|J$Odc;*=K#Zi!PC{xWt~$(697ur;#U9w literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_banana_sapling.png b/mods/farming/textures/farming_banana_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..821c64ff374ad182b4b0bb87d4a4f7a44b450430 GIT binary patch literal 647 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`K2;$RB|(Yh3I#>^X_+~x3MG{V zsS2qTnQ06R6}KLHtv%uMIEaBcSy@jwxR~46+t`>{!C<4wMiVaw5_$Qs7kmC(Bm$SelvY3H^?+6GpPSxg<1`4v5c>21s-{FwwmonjgZoD2W ziU&OF--5C#{5LXFM$T`2DvM4h>ql94%{~0TwC?8m~C^fMpGe1wEBr`Xa z!Sp*nCs2kHBomyUR#Ki=l*$lW@E@d{8zktGS)81c2vl0cu>HW6exNW1NH{#PC@(WF zo#BA=vv!~uJ4AnJQF1E7*Z+aL#|S@MTYn?|&dS>`lg!Z}QV+jMQ$iTEsS=XHB!xDhR)^ zGb6E7kSje>`SAbd%MuT`zJ@&gw^+LCovDcanR_daZFs2Aq<`l0!Gv|If6Z@fY&>`} z;_v>(SGsJ>SEDuT5?uP-)RVvd|FdTg&ujiUi6us1|NnozZqJryrq;H8|3AYydunD2 z+HwT&SeVTH`2X^C9v|Ms~&PkjBq)CXzl$1*t??jF*;>6opb0}L+)Pgg&ebxsLQ0A8N` Am;e9( literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley.png b/mods/farming/textures/farming_barley.png new file mode 100644 index 0000000000000000000000000000000000000000..ca929e0e0cfa7852ad952325191cf22bb215e6eb GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vt8QkVR*;faoT6uuoM(kr zO1XY$gGy9`ZbXA|RHshnEYsXsE)CP{)=ai+K4N`gbKt`>eM`@`MFO=mmIV0)GdMiE zkp|=>db&7tSePLZmF-$ zXkB{w_sm^~RA+u?6=jw_w&a#zK gim|o1v@x(Tuxw?xnXsmG6;KU>r>mdKI;Vst0HOCHn*aa+ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley_2.png b/mods/farming/textures/farming_barley_2.png new file mode 100644 index 0000000000000000000000000000000000000000..96610c2f9f4e98fa44990ef6d947acffe15fc04c GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aH3Ty9nYpI%TF&BQ*eqX@bbU` tfkOw_QWy#qoST`LnRg30FKA|DW-#bt7Ex>w{sq*<;OXk;vd$@?2>^5&Ctd&m literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley_3.png b/mods/farming/textures/farming_barley_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ef14b5b321603ee5d643ab99f571187ab1f8985a GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs{@c>!@v~Ez?;R)P|IZ5 z#LGIFFSL%|x|@?>nP6f!ul;;MyH&hdi&=HHaWb6XV!6wZa$#mWP#0rKkY6x^!?PP{ zK#q^6i(`ny<+DA3d<_O1&fLLfZF%?pZ|U3U@|g3<;!54j#`?S8c&Es{)8`er{%on( z$*2F7clNJb#I;dn!&O7Ao>RwuZ!xkE_B$2h{*=wxlQG1&$~_EdE`z75pUXO@geCxA C(Lojf literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley_4.png b/mods/farming/textures/farming_barley_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f7c90544fff9159878eef2d06988e7ffad86f9b4 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs{;cAn*#$+AcJZ=19J|G zXcY%XFE7JlZCka&oc;91V{HGd>)EEBd(gaO?w+Ox z%Px0@)J-_>YT3=BCq&(DI=`Qo*X3T^dTNpIl*O*nm%?2wcl!w3W)tK+@c1m-%p+Va a1&j;+F=gf&UE2?|i^0>?&t;ucLK6V)PEErA literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley_5.png b/mods/farming/textures/farming_barley_5.png new file mode 100644 index 0000000000000000000000000000000000000000..68c0d683934b8b164bb092a1bbf61e83d453b49b GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs{;drh%|$|4uhH@gT6h3 zsTYG+DsxaCS9CRZYCCsEFGIm}o{GhSWy=|wHZyb|WSDx1p?UhH*+A`#B|(0{3=Yq3 zqyagFo-U3d5|`)pIEo!n;BXGsW?E$M-Tv)@x2IAgKOFMs_)z+YWwZQ)>*v1Q`N6o$ zFM8qzUz!}?^t*>W5IQwj;($Zl9o(Z r6DH)tmv=Yr|a zayO=|{uSMpJDG21lg^7PrRTqS%gHJ}{Jg{EQ}gGVtOE-0HBL7-F7HFLCz(d%UNvHN`jx>Nu3N;S8}{Yop`!|-@qsL?g3~S5 Rw*y_p;OXk;vd$@?2>`@0V5tBA literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley_7.png b/mods/farming/textures/farming_barley_7.png new file mode 100644 index 0000000000000000000000000000000000000000..1c636afbea800b2748fade6f1718ddffc5b375f5 GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs{;cA8y|y+EQ7Q2S>qlrZtl-D_1cz?qI#JIq>0`zGL6|m4MnAOM?7@862M7 zNCR>vc)B=-NL+U9jTB;0b-o$zCufKIhy-Ad!ofgNPTR&d?y8r9L>$kV2uPIKJ zuXW7((YNx0^&JkwocX&xx8*$TVO<=-X8UmJEFSrTk^Q#}oMQy0 zWlGVl0vCOQwc##YSB{GsURuafxoRQLmgwnm4pz;-8Eu|0Znv7icEgTe~DWM4fHVR=7 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley_seed.png b/mods/farming/textures/farming_barley_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..2f00a20af9e02653dff065ad6897fc40a3cb7ddd GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ%`eK$=rqflXjL-9wrzv^ zgq=at_QsgAU-=7Ez*rLG7tG-B>_!@pqvh%17{YNqIpF})q(mO~5HqfX;s&D`EDwC9 pB?!!9I?|=kwwf`9lX)TogWzmtuh%D{b^>)Vc)I$ztaD0e0svrzE2sbf literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_beanbush.png b/mods/farming/textures/farming_beanbush.png new file mode 100644 index 0000000000000000000000000000000000000000..637e7162d46a9bf193f8b400c076ad7156a2958a GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeXEjDCq&)JYRO?Yba4#fxUPEIkc-Jtz~y58 z?Y`O{dcG z;=kW33gm8XwEOwXJJr+dU2pBCO~;osEtB4(%-+3yQB07poMuJwDS^qE=1Yz-&i={R YZovOR;>fG%KeyY002ovPDHLkV1gyTi>&|v literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_beanpole_1.png b/mods/farming/textures/farming_beanpole_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ef2bd5abe14f6a13a035f901d2ecc7d749335014 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvi2$Dv*Te#b93PQ3ACZ<=iL`0L zISWJzmWh^c5IdzH7YbCvSQ6wH%;50sMjDXQ;pyTSqH(@;;z8bK0|A!r=hS`*WgKW^ z3(#7?GTnjm<$qQtmD`IwJ|3RtW_7m8e^>u%+k*^$SQoflC{AJ9@L#Oypm@~7ScX0B z6P$0cak@`p+w=4P7v>1rBf?x9ItSM0Fa)!zeXHw}mgd`VuYB)Trk>e9V$MgX+zqeF nJ32cltS)7B(we|7^&5;%AK3h5RvMlKx{1Nl)z4*}Q$iB}1btSk literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_beanpole_2.png b/mods/farming/textures/farming_beanpole_2.png new file mode 100644 index 0000000000000000000000000000000000000000..34143e470fa2e7762acddb6d6ec296fe18ef0f3b GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvi2$Dv*Te#b93PQ3ACZ<=iL`0L zISWJzmWh^c5IdzH7YbCvSQ6wH%;50sMjDVa&(p;*MB{wxL_@yA3Oug82UC5cOP8O# zVET%4Ps;Wpp?CJ87gzDcPkqJMss6xTdXc|juP8Hv9rJ>wghSfg4Ik`T54MK;wB8YA z@K?Cxj^qMcWT|5sV*baT(%Nj-0tJp9l*>z23d9tM_gJVym?I+_Dr%HZkh K=d#Wzp$PyKw_sTS literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_beanpole_3.png b/mods/farming/textures/farming_beanpole_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d693f17090f63db73650a55b8691dac267d39b5a GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvi2$Dv*Te#b93PQ3ACZ<=iL`0L zISWJzmWh^c5IdzH7YbCvSQ6wH%;50sMjDW_-_yl0MB{wx#Jzln40u}RUQyGwenJ4$$`Ixl}+Uz z3=-Pb%1_RH$Z_1uS$SSoxSF&|hxnX~K*w1uX(G7?YXfIWOxa(S&TDjDa>r`UqHc%K z37j5F%ul|TX>l{YlI||kG^w%CLh`De+(VG;L^B|S6B st5l*^=(wKmXxfyNe(uB!^}PqVlPtueObpeefL>wnboFyt=akR{0Ota4WdHyG literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_beanpole_4.png b/mods/farming/textures/farming_beanpole_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c779b254c52345ce2dea0642ce8e5243a98b19a0 GIT binary patch literal 355 zcmV-p0i6DcP)g)3qH~!@pMDPF=b)wCZL!P*y-lNS)l1Qq*s88!Ho^lN41K z$D5z-z4wa`;C~FL>3>SE(8Aq;%{^p8?5I_HkWiv1;nbf`R+}tk8-C7NNWI9`6E@%Q zt3&BwS$X}*+WA?A`cdI?Ru@g#a>F+3=;80Kooc?zSj4|mZTmka@E@i)#-dq3x002ovPDHLkV1l^F BlU4u# literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_beanpole_5.png b/mods/farming/textures/farming_beanpole_5.png new file mode 100644 index 0000000000000000000000000000000000000000..910f8a07d54f862539b2877ce6a389c4120c7bcd GIT binary patch literal 353 zcmV-n0iOPeP)00DGTPE!Ct=GbNc008kxL_t(2 z&s~wRPQx$|h8_2gI9m$pZb~b}hLAe28G@x|J0e$g-y%!)Ac0V~sOpf%#X^X?^tSt? z`~CS&slU=nR!*~Q0?_HXx*!%?(T77QfduG`zN;rAV-^k*&{r=;_T6XmKJH~GUcdHU zfZ@&h)g%I+VJ*Q?Z?TkLiKhsaP(@$GB1l!Z9gTKE1FbSU$08vl@Uamh&4WU<8W>at zi53jPuFeS`8FV_PmzLi=vfK_>`y+$Jnev#i7}&2?nHifkHsuw~J%gf8Yju`KBDOgZ zFW|`op>sF?pu`r_efi!N2FVdQ&MBb@0Np=DHvj+t literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_blueberries.png b/mods/farming/textures/farming_blueberries.png new file mode 100644 index 0000000000000000000000000000000000000000..b0c493195c4b46e5196221e5f0c49b7cf16adbe7 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRRD?FGDuXi$VD)y%x2Nu z%@EKjnzcu)@s{-NqaT5?j3q&S!3+-1ZlnP@=AJH&Asp9}6ArM=;90=a@1mh>BdEnV zmC3VVrUK^%Edl=7S_bwuf;x{FmmEk^Xnkl9TX4I9fuU*%*L>$Uk3)b)FnGH9xvX$ZR|6JHC@W!tw1D8g70 zk;uyklJvl*vMMOe^MMi?9N`j})P-6!J10MrZdH|!oHc%CVr>mdK II;Vst03L!ESpWb4 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_blueberry_2.png b/mods/farming/textures/farming_blueberry_2.png new file mode 100644 index 0000000000000000000000000000000000000000..308a0caf006a7d617319c7cc98453d7a36d8e55b GIT binary patch literal 223 zcmV<503iQ~P)h@_o(N*kEDlq_MDpfx^<_@_uNhOZC!QT2eMpOHmS^?`&TPXZ(4@sY%cA zl0Ne_9U^u^NIGpFGEo8&0@ojGm;88dLFHYfOeTPFrK;OW-U$p&5#YGGh@MlB^Cmfb zWPd}r$K`-w?vG&d7cJ`L!QKv;LafsNG$q1uSqDGCEqex*5DA=q}lDyOs9=l?9XkQhdkU? zdA_gnC*U(5xxYq^mnc9Hh={sk^>o1k?oN@typvRADj-)A^*RU@C?k)O65!6x8m>ZQ z%K4CDF4_M8w$t0Gaoj2sR}(q@zBeSTvO3K#t7hf60d-Vp|FQ~fYG49Q0!V>s?P^~) hprJiz53o6Y;uowDqLJPOy4wH%002ovPDHLkV1k`AU_Af; literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_blueberry_4.png b/mods/farming/textures/farming_blueberry_4.png new file mode 100644 index 0000000000000000000000000000000000000000..75fb69a0ee637f2bcfd309bd8b3c1e8ddd049559 GIT binary patch literal 317 zcmV-D0mA-?P)EJl!N5h5>1s;&t8sh>gb_^9sCPZ`kin0Dz*7 zDZR4II2tjpz||JtBIgz8MDBuRn-O_s!MaJP45*ugVG3mevAdCQoPeBAJp>9-8H;l! zQmZXES#*^9BVnoSk)Cc6H%=5f_dRfav)|-i)G^;*J|h5FYH&IQW;5V;=SDgURafPeRJjAo%Jt|_3c=7)EcOTu_VYZn8D%MjWi&q*we)^gyVX0 zLPCOwh)4nhlUrwBpPPVpMD^FSUbh7flh3Vj)-LBT@OWcc{Orlh%e_2@W~KLBn`61= zgu<3*J(p$$PZp6>c{V4qluhNRhVACX$=z9ifz~s4y85}Sb4q9e08e;RLI3~& literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_bottle_ethanol.png b/mods/farming/textures/farming_bottle_ethanol.png new file mode 100644 index 0000000000000000000000000000000000000000..84e6162de837acf5f930477d9c6ee8877d35229f GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(a1=3pm&!lD{!JP~7dHDYce{k<=MVsk>iBic20p~P(_^K!~ zL-&a;Uf5VD?|otpPlZcMA+>7ELAOQ!1V-uzL|CcCh_)FWLgFA5 zvGq6Vd;H>Y0oE!)wHkBqy+!A!ARXomGs`e9Xf@i*8K_)@%P~Y?81p&P(>O+m7DkwDL%_&g^5`h%3o&rPg)&T*D zfd!Q3AWZGv+0-xTSF`}9;ILR6D0nC;%7ltCacc)*OqlWP_J*oE1%*!D!(v#{5HzB% q18(j#gjsK&T=V!_d-W}!f8i%XZ^E3%vu4Er0000q|v6C`4u zBWO{^JvUCuu9bUvs=Rxrz`imq|5*azOT{kLtKID~d@|dYO{aVtP&;EukY6x^!?PP{ zKu)-)i(`ny<*9w1LJbN$EQ;L@90&jJ58E>3X!p}QRxf8A*(smcHg&7U`53cKXHUjZ zvkU1$t0Xrz{HTsEKh1Hmd|{#5b!ok07w7xUU)Fr^Q%^7FbpH4sbD3S;nLJmoom2<3 Og2B_(&t;ucLK6UaE=pej literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_1.png b/mods/farming/textures/farming_carrot_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bbeae7e8a3ca2915c4b76dba28933e95a6ebdc0b GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uId~D{<8$amx`^jo6-jq zWGo5t3ubV5b|VeQ5%hF%4B@z*oUlMBgCR+cosEGdjNx!I_xT$@Nd`|>KbLh*2~7Z+ CK^ZXs literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_2.png b/mods/farming/textures/farming_carrot_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b24ecc05049160fe0965788b1c5b767530ae92b5 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|t{xl${<8$amx^gVx%C?; z$XF8O7tG-B>_!@pBjV}e7{YNqIbnf}34@_>M?z5o0|QqaqYL-egkwN?22WQ%mvv4F FO#mQi8odAj literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_3.png b/mods/farming/textures/farming_carrot_3.png new file mode 100644 index 0000000000000000000000000000000000000000..840050570f0fb4f23654553e1a90026f3defe895 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|u1cH&{<8$amx}2yUyKI| zGL{7S1v5B2yO9Ruh%YY?E4sHEZY|a0#z`0y85}S Ib4q9e00lT2M*si- literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_4.png b/mods/farming/textures/farming_carrot_4.png new file mode 100644 index 0000000000000000000000000000000000000000..32ee26245c9e8c2a2821d3fae65a911b4abdedbb GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0YzoQ^0?gK=@Lz`)+;~ zKt5whkY6x^!?PP{K#ruRi(?4K_2h&FECnVEoXeOUnu-}ao*rOe5MRM$=KRjmdKI;Vst0KR`6IRF3v literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_5.png b/mods/farming/textures/farming_carrot_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcd9c1e3baf7dcc4ce9c88dbf3dcfe4ca6dc1bd GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0YzoQ^0?gK=@Lz`)+;~ zKt5whkY6x^!?PP{K#r`Zi(?4K_2dKv;Q|u|&Sl09O~s5IPZ?As_zf5sR2i6=nXX@q Q04ikgboFyt=akR{0P;>7g#Z8m literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_6.png b/mods/farming/textures/farming_carrot_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a17c6b2bbff968e6e4946726acf6442f54f92bcf GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0YzoQ^0?gK=@Lz`)+;~ zKt5whkY6x^!?PP{K#sDfi(?4K_2dKvUI~VcuFMk>te90S#2Gl1*%b~}FsM8`z`)?- Wz;T{J7 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_7.png b/mods/farming/textures/farming_carrot_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d26eee7cce6a0d6cc021517a73d615b470958d6b GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZWnj>>DC4$k<#z8BaOo59 zpCu5!R4n1wn;$?0j3q&S!3+-1ZlnP@nw~C>Asp9}6Be*07&inkG79Wt%ywdG5tZQz nJ($H1c=*5@hO0+Z7*rTaYMHGL_B2cdYGUwo^>bP0l+XkK-Pb3p literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_8.png b/mods/farming/textures/farming_carrot_8.png new file mode 100644 index 0000000000000000000000000000000000000000..00b6d92885e473fd0ca76295b14c1294559d9765 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=1E}+;*+p?wtZIeFFQ+ zwESlYgfA7lRIhfo%kar;Upb}x)j&mzB|(0{3=Yq3qyag)o-U3d9M_W*7APf{Hw18U z3hZNyc4TasI)^RvU>ZZ<;RA0Nt{zcgNIjFqD#Wl#j%9yxW zDB~{3;k9e!cJCDMpCu5!RBZ7g_k;VSE?+i&|32&Y?@M18c|is-mIV0)GdMiEkp|@W zdb&7$25|E$vl_U=5cVDjCxgN1oEBVV>8g9xwSQID##Z-53fc)I$ztaD0e0stTJ BMu`9b literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_chocolate_dark.png b/mods/farming/textures/farming_chocolate_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..03243b274bcacd462e39b4042b2c364fbdee6007 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6O!VDyj#A@{cDgFST5LZP826GvPRAZ)e6NU~K z##)8j+CVABk|4ie28U-i(tw;qPZ!4!j_bbt7X=R}a5xt-mohgCU*MhcH(je^>$7&7 zzGjClAx5&ITmDqb6!CLv38-&bpa04@nCo<{Lh#iW{1zQeOZ{1Fx}F|A&~=OF_qJD| p->yC>5L#nhvwUaqw%^Tf<8Ry-Qj|ClUjej?!PC{xWt~$(69D9SLB9Y1 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cocoa_1.png b/mods/farming/textures/farming_cocoa_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f887a1fb1b758229c763a7f60d4bd15436877b8e GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;VYl>^Oil2&hvcBVF6_gTe~DWM4f?R-~> literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cocoa_2.png b/mods/farming/textures/farming_cocoa_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f0d393532509e2d9c2aae1735feff65735cafe99 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;VYl>;Uil2&hvi__tq4k{% zN9QqIn9J~J6T_Wt3_njWd_O7ozo$iOpB-Kg)XrEE9`#i+@Rf5OstdO^*N$;BSKlD_7nqT#Gab8NqXM3P_#*!evU5E&^1fZW1~Xy1dW!13K|+5 f8yU0s^cWa6ALXe3yedx!Xg-6dtDnm{r-UW|E!{Vd literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_coffee_1.png b/mods/farming/textures/farming_coffee_1.png new file mode 100644 index 0000000000000000000000000000000000000000..97c207a313610e5e4e8316d762ab75d8e8236aad GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXJ?3guI(Qc@;KxK?2L4Lsu4$p3+0Xb5hE{-7_*OL<#=xekX-jG?q!^f)8 de3ik2fkAvRqo}92{sN#X22WQ%mvv4FO#q!(BT@hW literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_coffee_2.png b/mods/farming/textures/farming_coffee_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a659f851fd94fe9e9025d2ef700b41bb19714e01 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXJ?4B(Nhlrx)a6Llym z`9fObi<*XaRb5~EjM74dfyx+5g8YIR9G=}s19DV6T^vI=t|uofkmG1EjCjbytkLYt ocL&V_ils_RF7~fa)1MUHx3vIVCg!0Fnal#7TQD| zib^@3TJ)&2{ZmK7QinM}X~vQuzhDN3XE)M-96L`J#}JO|$q5R48xBgc1+eYTWNbOO zP=IgQ=}V#tLVPk@0j4sqQUi{jQ{ziuTg~Lm6rmuxO0CtGAx~8>m!CkB O7(8A5T-G@yGywoQ%rRa7 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_coffee_4.png b/mods/farming/textures/farming_coffee_4.png new file mode 100644 index 0000000000000000000000000000000000000000..37a609f66d24cd61f8aed53098d2f0eb4a19578f GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXJ?4&jlhRxq1tYqQWM z>QGe5`P8CErR|?Oaz20h1ysgZ666=m;PC858jut0>Eal|aXmS~fr%|(mZ6}U5L0po zr-Nh;TY%W^Oh?8UiVG$9u7yln$1t&AV*tbI#PlZt`pqlS%FPNHj9o;J2s>=4Smng& l(PDelcLBqqHeMG-23`lwI{$O`*n!3~c)I$ztaD0e0suJ!Ix7GG literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_coffee_5.png b/mods/farming/textures/farming_coffee_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e624fbebe1129c5c884a7c3abd76d86350e62e8c GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXJ?^y6M^&LC5*U^dm( zW}!{u>7=4ZrR|?OmWRFS2P$JM3GxeOaCmkj4af=hba4#fxSpKgz{D3YOH)v75?AsH zO$W&wz5ub^(T2Z?7p4WwY)Hf7ON6Hxp?`) zua9p(eS7-h+sAI6D}q2Zj3q&S!3+-1ZlnP@R-P`7Asp9}6BY<;Sh}=zsValy8-=(^ zh6#y0EUa%%@Te*{ByLdQ;_6z?Bx<~an`>GFZ<3~dc|rmM!;xOD{YKWQEkIKkJYD@< J);T3K0RRauGzb6y literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_coffee_cup_hot.png b/mods/farming/textures/farming_coffee_cup_hot.png new file mode 100644 index 0000000000000000000000000000000000000000..f4fae904142e3ac14ccd50da6311f4074b9a2e9e GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUO)Ovtu@TDh5pRl>xp?`) zua9p(eS7-h+sAI6D}q2Zj3q&S!3+-1ZlnP@zMd|QAsp9}6C4=W#n{*d&K{d^fK4oc zk+YF8K!MSfS7yV~rL9XFpWJZV^NB&>umlI!jfs+84h@GAJViuA{8_cq3dBWp8Y9Bu c_)H`jZvW$TpwF8eK4VnkVej4iHHIL|Z{@0du{7%sg@=)F1|2u;yki%fWHt zfSZ)#AZ*{LgV+NMJMkx2kCZSdl?6nyM(3RHfD8~YU9-C{p(YLhHQE?~hz$nF-e3nH zkB4oXW1dKHge0oep@A|{XUGBonUfml9FmwF?Y0280KhEAEffi+N9&xdRfoG1%f5<~ ziSBjeP*%GP{ntgzU3FwQ#NkH$rs{;6}Zn*(S7C2{?1z5*?m2&qR z4($ShzF1}V4hj94C|N^@wKwSWx_#sLgxHWcvcvU6`~Yja46a=ygM+Q6ecH9(!sQNa16E5n*d qPfvj(=?Nl2DG4mxoK6}R3=H$q`CGmUMxOz5*r z?Xl13bDgm%Zjp@19iSSp z?RU?c>{>bBYubjSmC7G^fyx+5g8YIR9G=}s19EgdT^vI=t|uobh>AG8WMkKGc3!}E yC}ERF1DE7M5$OXNj60Gvnnl%)PG~s8!0=-~OVCWWTg!nO89ZJ6T-G@yGywoEeJ!Z~ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_corn_5.png b/mods/farming/textures/farming_corn_5.png new file mode 100644 index 0000000000000000000000000000000000000000..7b6fb02b707ae653e7b29c5b384271e3e94dd93f GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXK7E;o#9HBD}Hi0?7W zndDwI&$Dhp$kdH-Pt4_R0+lhA1o;IsI6S+N2IQD{x;Tb#Tu)9oz%Qd9BHeTF#sr3` z8ymU|HdvWBMoKXzteW7+tEJ2k93#gNyoSNpl0lo9p}dQYy)kBP0#HALr>mdKI;Vst E0Bim&3jhEB literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_corn_6.png b/mods/farming/textures/farming_corn_6.png new file mode 100644 index 0000000000000000000000000000000000000000..313697b90653b62819b4df7606ac80e65157911d GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy#sNMduHAMEG?QgK%MC)BO`==v z;@d5wJB?F%>=OGdGA4OtPj)Su>{dS4y>ms#v<*qKHpNZfme@0)dJ0fGV@Z%-FoVOh z8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-JcqUD@w(3UlgNWwtGQ2NVkO zba4!^IGvmz!McUP=g*YY4;~~WJV-sVys6i*L2|v|nwp9ymNOf;Dn4XBPf1KT`rfU~ zFO6wm!twPC5?pUu4s~`1cog-wskpEzvc|NCENE9@SkuY4r?JYY2xvNkr>mdKI;Vst E0JTIseMktGlFuaxD`!yE1MZqJlm&sj)#`cJ#(O5#*!evUYh7ML)4Ealo zaXvXgBE&&Hw&A5SFVdQ&MBb@0HPvQCjbBd literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_corn_8.png b/mods/farming/textures/farming_corn_8.png new file mode 100644 index 0000000000000000000000000000000000000000..77e442b09977c3945e4b2cd3aec4cbe34a897e6d GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy#sNMdu8%LS&`y>y$}(Las^eZ^ zU{PxsP-Pm{YLeJto!Dm)JR>M;vU|~F*Zk?8`&%+=7yETBk95DqEeX`lSQ6wH%;50s zMjD8d z^N5Wh^?P>0zf+r-`=@bT-ol5$D=qIum}J7} z`#h|Rc0GF7E>|PmdWZAEe~-_>zmENVvcrGTC04#yKXMNM9m3%0>gTe~DWM4f`<8Ex literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_corn_cob.png b/mods/farming/textures/farming_corn_cob.png new file mode 100644 index 0000000000000000000000000000000000000000..a2fd9da7d09358e8ac76ea460d817656b5031c12 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUO)OxLiBVE6RA1gEdT=Vk zskyAT*T~%7pSjar_Y6=CV@Z%-FoVOh8)-m}kEe@c2*>s0ga!sijkziu3vc>}DwJep zFwF?eOJZAg(>rDXlWJN5TlG$FDVGCBC3Ox=d&DE?QCMckU_2?dM{(II3uhLIR-OxQ bS{WIpvT*hl)xgG#>vCLxQk&%%X!6lKsg3aS3j3^P6N1~t zT7lw>B|(0{3=Yq3qyafno-U3d6^zLXSPYCdFr0Mfa%j5C=_!@pqwneB7{YNqd4UMW0SP{XHb$ow$z^Sx4T37?j~qC$fI-YC mC8cFmP*}r-9yd1!AqL+pCe=^OGu(k%89ZJ6T-G@yGywoue<@V} literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_4.png b/mods/farming/textures/farming_cotton_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f314b07b7e1968592fb8bf3f9fb592f4a6467010 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=7hmI;G_XzVTY!9oC1Y zup|P77)yfuf*Bm1-ADs+Og&v3LpZJ{EAVbOAi-zQ#?;oq5F)ymnOS)P%j(3i1g4Y5 q%sbf$~F!A+hX*qB)6klZKoY&;i1vH7l)78&qol`;+0Mzd* A1ONa4 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_6.png b/mods/farming/textures/farming_cotton_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f4bd4fb346ec9ee2a71696d9337723d2be7de8dd GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^3h)VW^~o%3Ot#4jH=kbW9_ejT z5o;-L`KAjf%UBZR7tG-B>_!@pn!GVY2Kz8F^Aq7W=<|h7su7+0_ z%;(jgy1^6crYhviImc{Ej=$HGy^A(l>lC<3yg$co;R#@=OgfrXJV)k$6JL*(mP0PX<{vDId%2_RfQB-7 My85}Sb4q9e07KF(tpET3 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_8.png b/mods/farming/textures/farming_cotton_8.png new file mode 100644 index 0000000000000000000000000000000000000000..f835ba5b3f6f2c4d0e6c3f730be01e599dab7b6e GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ1=1BEstJygSFT*~H50Ya z6g2nMH80Iv29#hd3GxeOaCmkj4akZ0ba4#fxSrd&k+;Es=fIpT2I&tPJ~#^SGX#C- zlbP^;{Q{w$icL9n8i96(^{U|s@{S!nx`{Fen{H}v4KbMfXl0lD=7OY*ggmJ~bxxfl+I4L|LH_AoGby85}Sb4q9e09F4!`v3p{ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_seed.png b/mods/farming/textures/farming_cotton_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d5b8ab714e2f074b8136aac0d8dab88c0acc2a GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b^~o&sbXJcEvo6REsH=<@ zI$@IslwvFi@(X5gcy=QV$T9VFaSW+oOg_LkL)2l3Fmv-nh7LuY0}32s=^+P}PGejn t#^aEscx$0U1mmeR5eCVl4VN|87&b3ts&D#O@cf4Ux*d*m>!qJ?|+p;0iq>WL5F(thzheea+CfA~;T#88w zQaJ)zopr0F+lb?f?J) literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cucumber_1.png b/mods/farming/textures/farming_cucumber_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e008fd12aef55c66f70a05c7d444c0ad69eca6d5 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`cAhSdAr-fh6C_v{Cx{5}-sv;? z!@u{?hxr<}1CrGePVcx!&=f9@W zfh6n0^>eSTXlsc}{J}4zev9EKE5}iVvkJ@;W81DzRq&jV`@fOli2F5$Ny;yzCNQNm z?{x;uhBhM ztpmcH2lO@;Mu!w7fENmcKVfppLLlVSJ8P#?b7PU|5&=+-7MJ7%T9d8jG6{Xerfm_k z><&QdSnTc7ff3MNWjhGSN00006VoOIv0RI600RN!9r;`8x0t!h) zK~yMHJ<&;S6G0RJ&_7l6V8?M1j06jWI2TvrIGh6(AOs|FoY>tp{DB36E4+uFKYjf2 z^Zxtsl#+z@!+!tnaK{Lb&*j(i%l&d;2ncYa+w1AW-GROxpN^#vQe90Q*VYYecQuX! zmDV{zjU}g??0Qb~O!V+l&Aj#|i5L+8d%)ANl&*Q;P#Y8UVjjcYZr4;P2||#N03Zr6 z;lurTydq2(rktdCAj3FtS&fnDD(68k3AmZMU#bHk5TjC4BcTjo4xpBqy#u{_eY2lt zMhT2)7@>@D`n}E*w_w+(VHjZGOKZ1>iO6Zcoe*Oh1_M{KuKwyUPiZ)8M<&z~^Gr*3 z&UjgrhEcj%Ep{$zL_kD0t)|;uy4lTLaUO=&W0WL7+FTxAo*&MOB}#xmpo)gTM5XnY zr2uwJ0@klL6Bx6ESm06{N2v2S5@@^IkKpk2{^@a95vi_5j757&mWPSll!^SmH{_Y} zTI$28xY_?70#c?hli!aQ?_H8K4`N7!y#_}J!K%preuVLKTCjxduQtcBkWf~yjv}zx zrrVq8STCwQ0#wZrF4f6mM~c(Aw(ja{1VY5QR1g0H XybyEF)T0<%00000NkvXXu0mjf*|Hr( literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_desert_sand_soil_wet.png b/mods/farming/textures/farming_desert_sand_soil_wet.png new file mode 100644 index 0000000000000000000000000000000000000000..cffa955d6689ad88d675921a3e033256869343f7 GIT binary patch literal 590 zcmV-U0TPe1t@7;T-w)^~?9) zmtV`GsxUjv^Yi&g!Sz=E-0zolB?3Sg4|Dl^JoD#uxz;LRt8RhXyTkXpQVMJ9M3_@k zO3CISjRSePS9fpLR7nv)dSJQM+Iubv^O9iIBg%2VZ)Qv?2&yOmQBv@Fd6XR`NtjW! zJ3y4ex;cg1<(w5s5$@)`wg3SkjLl3`62b#8&t!D)`Fxm%k)k0HT_TKv+sif&)fh%udoanm8FNu{tJNNLivS|JS#_KC z>98BR$(VERQB)PQ=IMIBUmlw)6#>FbT%aPg_4`&K9jfBC9|t(8NFLZ)d-E=Zkan62 z0zY1s*L8dQAyKWTRaBBi3sGR2(%~>HZ8hr%n7Iko>f)Aq<1{Aw&)eWVjO3@M({UW- z{l~+VczT*RmVBBD<=wkQ-C9HxVoC`fZ$BQMvr@^V+?Ue*pZAb;$a!7*m=sliy2+ zH91To`P;3^doPf5RFgz&Hwb0-5XkF|FL5WZbM{o1T|bcQv91-$`Zf>`FwO0KD9J-; zB-?&nha<^nkqvKpA!UHKTc0`RZJD>ZbHKx_A*q4@o_;kYUtGz$>&yBsu+91WO6wAk z&3w!ovLA)wZFM6J2#(K9-tGC`4-`4gsO|zT~Q~``^I4EOL z>7-`Q{JEid)bUTz<7swwX2};X8%KmzY}TPj_G9%(fSt0vZ~9fuNv#fDkSrxDEMb8L zK--uqAik+ctnA0BBTvTm-Ko-|M<%HAI1mP4hSt3bzs|s!o{td!Fmi&WPy!egWDr8& zwhaPVek)<80J>TZJasq$HE25x7GIxS+#x1 z2KIYZ!NA=Enlu0(XCYZwWfLWQ3e}n~e_H2m!L&wzb{oCrmotgm6{H%NP)Yx-Q{f`< zH@JO-3eZ`a@+U&YmBnK_2Q1)?O?ZRdhUZQdDj+yK>Q(Rh3NFdZ=TG7>NIAI_??n!m z_&4Bw=&L%yD+{WZtr9sn0=#FV02K@&nKJ~oIqCbdYF)_k>$#~cas%rKG#CJ|#wxE+ nMIKmUBX=JleSSG%=DPSlp*&w|_r}1_00000NkvXXu0mjfA;%Mv literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_donut.png b/mods/farming/textures/farming_donut.png new file mode 100644 index 0000000000000000000000000000000000000000..8985299bb01d7abc91a4a81270891b52f0e933fb GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5qYrYT`trw8qt8?kRr z#F2%u2NuVkTpE3JdDPkEVHZ~?Uf&RZbwldq%?USmR*2>u50K%;a(!5;&F3d7)zEetIr{yH9G^m*Xn9Bc^4fBRn&2MuymLFy;*aW(>PKZ z{L+-}Up~daIAiWaDR;m3IlFX39w=DfD&8YybEEFxXI`5HY|cmXe$E3rgu&C*&t;uc GLK6UdziDj% literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_donut_apple.png b/mods/farming/textures/farming_donut_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..6dfe63d5980364e3abe99d0ec5168b03d247dd93 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vt4g8Q5?0Aw{4$@F^q+=$ zz6y7EloIqbBjav<(!-*H+ZAaK8fx!%w!EJ_<>-p!_w(l6-&-UjlX(EBov|dyFPOpM z*^M+Hr`*%UF+}2WZ;!XoVFQk%GPfHz@Bf~^P32w6rP!^L6XLS}FI>g_AT{YQ&#$~w z*A5@@X<5IhD&nP+v`ER*)8jIBIPrMdhs+sfr`9}*YDnPuVz!EZYSNT|`ghCEMw)Up3a@2buy?yp>x<3T zUB9&}eO{qum=rvvv&Z6~$mJs^JElvTMcn)Se13ee1#9}B-gTe~DWM4f D3aex3 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_flour.png b/mods/farming/textures/farming_flour.png new file mode 100644 index 0000000000000000000000000000000000000000..b1a97836efa64c2bf3867a9fe9155bd9247bc515 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ1=3%?e*ORd|D#8bUc7km z`}glRZ{F66&XcY3~p)~x=Jbv3`rdl*4ENZu5)^OeI1;7 z90c7vrgR#*oH}xYMdzqO&k~6>ZH_l?Na`>L@g^ELnKZU6P~z!nGWadpAi*&43dhd! T=tKX3CNp@t`njxgN@xNA6R|Z; literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_grapes_1.png b/mods/farming/textures/farming_grapes_1.png new file mode 100644 index 0000000000000000000000000000000000000000..64a935d27a6b088bfb71470cb180119014a75862 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv=>VS)*FXja7h@SObLkj&)ii%y z`H4FHMYc;DeAcuF>q)B$1C=qB1o;IsI6S+N2INfgba4#PIG>!rz+}eE$1af4&{(w9 z7@SE6XK-xcVmB#I_%Y43F_3|!aJ9s#hYwG!<7(m% yWz1o8C}%mq8o?XUShhhahcl2vguzijnnA2f{mewspshgHF?hQAxvXVS)S49Q}7h@SObLkj&)ii%y z`H4FHMYc;DeAcuF=cyL|1S(@J3GxeOaCmkj4anK*>EaloasKE8L;gbw0%4 zyU+22%6L|FC?7j!u`A;bb69=j%k$H`A3NsE*_*GZKmEI0xJY5kI^Cd}XB+qYy1wqa zN{%!`hO|PXrkbEo%Q_t=r%Ev?#l$lwg528AByYNy-}d#a4KL?D(+A3$uD&)}txI@+ zUrqjWJLs&+r|QS?-#NBEo|gXIg7VS)*Fpvc7h@SObLkj&)ii%y z`H4FHMYc;DeAcuFPx@566R3=_B*-tA!Qt7BG$7}gr;B5V#`(Du4EdW31X>N3wr=FE z7N2X~P^z+UYoDpW;}eTM@^}1WI(&Yc_@k{(F>kh;=<9!f7dPq0@sv2`lh19&6uQ@f743&i) z3a)In6}!GH>1gBqzW=`sG)iozuKD$<`P?s!j_gY5yN`;T_iBGBl=Bxa<*%Kw?2_AU zy(Jyfgx$Lg4yR-*#JryIxz<8tMT_mCDSk4R4FApT7HZl5weSlA`iQ~P)z4*}Q$iB} Dz?m zGaO1c8(c>vW=}02kt~mLJ*9w5tcO!@Z;nO)0004WQchCe3 zyAFad6vdRbj9uKj=-dIsu?ekpEP)^+i^LxQ{Q-@iZ5y?>%01i3&3Pq>J0ddak$msE z9nIr7n?M|LrBs!xKp>8oM<9rx(jyS*K!isi-X4+5TOra|e9Zgj?o!^$K$xmj#sOUT zLW6P-_>g}&7Hw0$vMW|cU5ZTivXA!YMsq(-(H^Z*x+)+Cb~!LZ76@^Y)KVRYcEExZ zKYQT6J=VxJtckkVOk?*2d-TulTu!iu&!ClQ!G$+21zLlKrW+4vYl(Gx#7TXQ$fe~q ct3P|Z09FVrZ1Y1n!TUtP)vW=}02kt~mLJ*9w5tcO!>C3E=z0004WQchCe( zvChIE6oqT>mX0jlS$^jZ);f|DejKl9qa9r|zJS#i(D>Lw8ZTGnY+nfH@MT#zc~zL0 z?0v3_lYeYRPvC!Pt!R>I?3+#=b8{_)9Iybk5fNvY? zLkNKGlqf|>U@&_v|0ELV4a6PDmO|(Nwp7n>tG4Vfb>RjxFdw^NB!XgzI>DdJJm5CSUBKI$KkmvW=}02kt~mLJ*9w5tcO!>C3E=z0004WQchCGx zv5vwp42F9OPBV64&vG|sps+?FxiA_vYBREccmWD8a3>xcN2iNZ?Cp;gfBu?=N*ZNz zH~)42x`f}u97^!Lan9{Gt^`6u2c1}#U^FdGw)G`|lk7($u>=a02MfGKtOflsbUfh| zy(gZSQ`%mq$F2lnm|Tc~IY19YQE?Grebwb6o+HHS1{Rn4)|A9(DJ%prT_Q_XQ7 zFX88Kt9(S~{JyU_@-2e5fFT=L`G_at=%wLnEiA3m9XKp}yc?U-b3E^E>?1RHGQwN3 t53GDBPd2FeT9ml(0q;Jd&Nlvhya0u2Fp(z*et-Y~002ovPDHLkV1h~pi$nkb literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_grapes_7.png b/mods/farming/textures/farming_grapes_7.png new file mode 100644 index 0000000000000000000000000000000000000000..9e70b6d559fe4dec85b6800cec67d983055021cb GIT binary patch literal 358 zcmV-s0h#`ZP)Gx zu};G<5Qc-X7@Jruc~l_ zlIF72b@mTCe|VXE2G2`t?bFg`z<}ejMFxYa!)R)kK{E?IC@~j6I&K;Q?8KmfR|3*W zlT4%>Q;e(g__5Bwccb;aryLwQOi|>BW`ufChYWhdl~96!P#n8*`f?9^F*duh(FQKH4IGy zu};G<5I_?Y+c#p#LX027O(y2OpAf;s%H3KVJ{HCC`5AQcZ(L2nJM-pHYY1=7B^a>lblh3^7@z}x#WRj`#Z z+s9ozVlLs7qj+e{IE;-)@daUoR6+KdEsOxe0QhU}a+eldP<9YdIh3Zye2Jg#TRdJ| z2(OOBV{lw#Qt}r)agEgU$RF%MO%J$wG}YCpQs(=}j`UlsG2P<6p5s^JVJT3s#|qwT wMwL!Zp5cLOjJ*IgnZ!LLvi{#AQFWow7c2#_-A&)A#RvfBf+J|3B7hCqoQSFJnoNUoeBivm0qZ zj=ZOfV+hCfM(|FKecZ~FnYGnNGT1v5B2 zyO9Ru=yx`w!m#{)Sl}dYKQ@%UBZR7tG-B>_!@p zW9;eT7{YNqIpF}eP(n|$!7(0*W^cx08Vwij>%Yg-IWj@@l q;aj-vSx=sr*2e!qIkfJ=U2eX)fsD4sWg9^5WbkzLb6Mw<&;$T^KR~en literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_melon_6.png b/mods/farming/textures/farming_melon_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b31a5b4c42108dd21eb2bad0bea009707f5f2e6e GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5ptxjAFHpHy@-Lq-Ni zWFA9i4MR~oLuZFT^(2O_#SHUzG3?o`dghGL(`OEE-Z=gH8}?_d>OY`%#*!evU^3zkiFVX<4v0sH;<#nrmV*ttQk2+nN|o-3$(atY{kf&&vYqwCs!=c O1_n=8KbLh*2~7aaq)apb literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_melon_7.png b/mods/farming/textures/farming_melon_7.png new file mode 100644 index 0000000000000000000000000000000000000000..3aebfdd6d6d9d11483acb45d81b10f914b1d958c GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;VYihrtxjAFHpHy@-Lq-Ni zWFA9i4MR~oLuZFT^(2O_#SHUzG3?o`dghGL(`OEE-Z=gH8`gE|vL8@8V@Z%-FoVOh z8)-mJk*AAeh{WaG-ax)X20YH@9-h5Xdb%@PXD&()nygzeNfBt{Ob*zfaDlQ#URWsXMpIAuL$a|56#tmiT?43xT#Xc)I$ztaD0e0ss=dT&@5B literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_melon_side.png b/mods/farming/textures/farming_melon_side.png new file mode 100644 index 0000000000000000000000000000000000000000..88e40c6a08421585274e41b58ecd19c88cc0a567 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU4U7?v%ixdBP{=6K$S#$s zZPcu3mhPS?(>qCf#yqX1a}?&xmtVbBcl~DNotss6?NL|JS|ktDJJZv}F@)oK@{YLA z^^yPPZrRLp{n9`G*Y<)^rweqxl z-n}%AK{7bxo$hJ7cV&Hv-LL;A&$B+1W|-4m@m;67`nFx$%gz7uPTSqB6=OIp>~5eJ S&Y}l&B!j1`pUXO@geCyK literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_melon_slice.png b/mods/farming/textures/farming_melon_slice.png new file mode 100644 index 0000000000000000000000000000000000000000..6ee977577899412a6e1423c94cf160f1037e3c97 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5ptFAGz#fWUEC^^@|l zM^qK}tE=CU(>bHA;TOYO(=7Ub=92AuRNfvx@#XT4|4&c+cz>mT&8kyC?TjTse!&b5 z&u*jvIdPsYjv*44d;4zk9Z=w4`52*9apnL2TUnPQJbzuNyxqtvP^)k>P50}D&(mi1 zzBs7(u2+tMMS0TgGiwa`=lh0XQU88U1;r=|W{BDyd&ujIF1Xv@Ds Z#&hD#3zFP&3xPHQzo(4u{&UX$0PoR*-laKwya4X=gWi+Ly?p?@_+i_~$-7nnRLexK z2pW0Z093n#Zw3<0>;P08eRME7yX*kD5k!(n-7*{i?#d9WV-XZ40Pc7dz@QxcHUPOH zUhwf3&TIg=1Yhy<0=}#O>Dumo?wDxo0NL&7e!H48oB+Q6`?>%8ddUFHySrM;yU*+? WGEAu4rZoWo0000Ar;(RaW8`SR)mPl|hrFz!>_54khoqck*kI;3#|sW7?O=-ryW zrjJB$9q6aRYFoHe)flzU`)-SdF(3+WsKA1%Ge7ml9zxid_M{MG=VmCBTt!~PVh5g& zUBr(d=Nh7*OHC)F^|9)cyRWwo0vc1EEPhV8a@w%ewA4Js_P#KFQWJ{8<{XxGg`f{3 z$};(^qkcgcaNzu~rWpzsDjDLCtB5VE`ziIZaMrPG^aQ1T%>G~)K_mcF3Yoa(XPAY2 zj)_s1K?iyX_>mA>IUF!PyQiFrVx?syjf`8p?XiLbKNXudn()x3O{N#E19)@8^-O(n|!GIcO!AN z116yw8^_7BJh>}>5dfT=cpM#F0uYTx=oxR*?oV;84hC78+L2_;<=QRKGuEsn2>=p( z&omUa2vyl!<~_WtYqH;dNH*K9j#D6&+LDq(1W1oID=I8c?+HLhf4x49JqFn+5=bgZpxP?2^k}aC+)-FF{cP%ed3A tSP;`RaGZkwJO45eSKp^x(&^(HeglP*dF1ONiW~p{002ovPDHLkV1mZI%hvz^ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_orange_4.png b/mods/farming/textures/farming_orange_4.png new file mode 100644 index 0000000000000000000000000000000000000000..accb7b7ff0375e4c88dbfabe23bdcb6e8fd8f946 GIT binary patch literal 460 zcmV;-0W?GYf z1;oLrLc0VZ(1wmBlY?I|jmgdZI33j1#H$8;rkD3U=XcKg;~d2W1IdIqj)TwV!>ZV9 zzyGOd0PXV7(h_BB`G;CDa|D}o8l|Sn-lQ%7ookkQxzsD4X1^+c@#SaYI1UGgMO;Tn zuVmG=4gg{XJdB;c6;950KHVWxAN!egcZSH~KG%Yl$?PrXbe<0000QL70(Y)*K0-AbW|YuPgf<4taigt)BV6I)OrxC9V-A&iT2y zsd*&~&PAz-C8;S2<(VZJ3hti10pX2&;y^_uo-U3d7N?W{{QqyytlH4o=yZT7{qMR4 zi&jgKtSyGhb7LF01qvh&vDV*}khlAF{=`{&Uq}D| literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_potato.png b/mods/farming/textures/farming_potato.png new file mode 100644 index 0000000000000000000000000000000000000000..6e91d6ae8949445d7edba0c3cc8c5f542e93b011 GIT binary patch literal 252 zcmVOT3}^k{ zY@qj3^!${6!l?p2iXCp(TFw{nOg~_7P+p|k`JU7U1VdMGwZ@ri4C4A f`Yxd@-h2#9D@^8Jt}t~38q476>gTe~DWM4f8{R9! literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_potato_2.png b/mods/farming/textures/farming_potato_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c81830c40bcf17038f5b7e927a2779f9a63f2e6a GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`O`a}}Ar-fh6C_xjIo4Dx`!YYp z_x66Nf9_@rekw5MIWLPB{nLN$xLVs~h6yiSr4`H?ZW!F2klT8)nTKg7$IaFP0kc-d zqbm)X6D8JbPssI(<1l17^6k}u64to02GbR!o8HCFVLM>b$a5f7+b>+fTftg7mTx)Z liEX#8FVbq-$upOi;n>^MqwF@kM}e+k@O1TaS?83{1OWb|L(~8O literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_potato_3.png b/mods/farming/textures/farming_potato_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a3d7920918e958a2283b9ded3ed89b32830827b3 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`TRdGHLn>}1CoEvU@$c#f`$(zf z@uDo*F&}+8ZI~UTX7d~UQO{toQ*Vl4EavpPzCgNR4abt58O(?4Qw}?&gskyLHuiU!j^1z1-hTX)78&qol`;+05CpP;{X5v literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_potato_4.png b/mods/farming/textures/farming_potato_4.png new file mode 100644 index 0000000000000000000000000000000000000000..405b7e56d71be2991d1330f58325f12b9c0934ec GIT binary patch literal 283 zcmV+$0p$LPP)^*=N$PMhRY&?KqZD*Oz+Df!n6hu335TY1d8DWxrzX*a0VfVeA znVq*0`DeVeQsh<9)1Szf>sgVPx9)d=@?L06WU`i8fR2KARuA3oHj3=`=KGG~0~wg8 z2;OKNSj!-fa;Y8Q3|A7H#2Nse35JNh3!M0>oJ1gM>m+!NFF^9~bok_K(FjBriY5Ud zQxHJ*AVPQ8Q}p)^XW}f0)^Tt5&>D6c>cO-Tw9iPA>BNe(E!+u`Ads4xbYUCTw%egi=o^~tu%ABX?|002ovPDHLkV1lGBd`18O literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_potato_seed.png b/mods/farming/textures/farming_potato_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..74e440df3d7d786f430d8b9c583374d886b92cd7 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85s1GL71^(seKtxkiEpy*OmPahde(s>p{y|y+EN@PZ!4!i_^&o z5*Y_LlD|BU`jeiJkWlgKnKm;JIG_J?y61?*0hg8B5geKdPmFeObE(fym@;u%g2DB0 zwOcTQX!a9K2Q*+ou<>c>XqN*&TUK#LeWUHx3v IIVCg!0QfyfsQ>@~ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_1.png b/mods/farming/textures/farming_pumpkin_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e5b9a2bf946b3957a96b53dc9c6c7d1b87183fe5 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXHcHDplmV$hH0u_#h@ zZI(!Gt3e3veDNJsEn~B$S;_|;n|HeAjinl#W95AdUC=7#)QHKqZzXmrwBLi zWb8=1v?M``A&FzRre%|>gzuE2a}IV*acSX|lwj!8Wmy^d*kvbBH-o3EpUXO@geCyk C%q)Qb literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_2.png b/mods/farming/textures/farming_pumpkin_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d977e8c22021375b2d19f1e0fdba16ba159bfbe7 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeXWe{W#HDplmV$cs`(vRn{ zC{lK9mPl^o&+OvsUZxymd_xnclCdPnFPOpM*^M+H$Ia8lF@)oKa>4?;gu^%3F>n9? literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_3.png b/mods/farming/textures/farming_pumpkin_3.png new file mode 100644 index 0000000000000000000000000000000000000000..83f81905173ce0e5c5e113435a0e758b0280416b GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeXWl&@gHDplmV$cs`(vRn{ zC{lK9mPl^o&+OvsUZ%_>?U@c#$ygHP7tG-B>_!@p6YlBa7{YNqIbi{Vfn@Uu0d}^t z0&LS5u1RY81ba)wEYHx|xpFtV;SLuq!yPM^SQ+ftCAPDLa}~qYc9v8%BU8q&7Mjym rb!jw}tmZasTW!f8spY5>Eb7hBlgzKH?>b=~&Ea`*IyjKSvyt?&7$Sjt1 zg`J9q^~6lUfd0uzt5d2D~Dc#Ol8eSv1V+QytvmaO}ND_6-XPCE2J@X^C3w=|Y9 ZFf3jx5kBXP&J>`n44$rjF6*2UngA7SP2B(h literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_5.png b/mods/farming/textures/farming_pumpkin_5.png new file mode 100644 index 0000000000000000000000000000000000000000..59fa78eb0ebc9e5d8dc3b6989e3eeb22cb31eaec GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUZEWQfHDplmV$cs`(vRn{ zC{lK9mbje2l-$UFDw`p*i|>CiWA`%Ux6>K^Z(;aEpoGJUMCgst%iBYSoiThlDXj%CUQ)lD;i+8IlN{DK)Ap4~_T za+*9{977~7_x1&fF$HosU6o9GvGnP`aOr(f4*woDa;N>j|1fRGy7^H{?AM%@4FZlj*U%tHD7ss+=p9Sqg-4sN=MbFGNbZ3n@HQCr> zqVb&@-sfVYXD=6YjJ$I8?Bu>9TMW$jFSee&a_r$k235P@Tdc})w{qqHUBlq%>gTe~ HDWM4fdKz5H literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_7.png b/mods/farming/textures/farming_pumpkin_7.png new file mode 100644 index 0000000000000000000000000000000000000000..79190e09ec135158eee1ff6ccff404b3c09eed69 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5oCwkx;TbNTrTaqEyS$I;T)T^NHpy4|Mj|Mzpu>vbYQ|^)hVCM&(t~iHbw0(RbML= zmah3Gt@h`Gi|4L%M=-F@xfeKtWy7R~$2Swo1IjP6&g=HLl(*IF>4wKnd!{A5+gUm{ zeO2c63q7``KVG~!Hj}e9$8>Ya&pUN)FS=&PPvAV>%2j@Hzg29TicRNJ-V9yVJMnV@ RI)ScY@O1TaS?83{1OR`rVs`)l literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_8.png b/mods/farming/textures/farming_pumpkin_8.png new file mode 100644 index 0000000000000000000000000000000000000000..b941442cc236ebf2b29362ba98433dd05c6f9a0e GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5oCn*+_C z`i?bO?9oT2zJA@Z_tzc=+bvnTM?Hg^x>{FESN3CEJB^3;d&QSkaX!YTv5T@7-nA%Y VQ{5#yV>i%c44$rjF6*2UngHtQU9$iH literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_bread.png b/mods/farming/textures/farming_pumpkin_bread.png new file mode 100644 index 0000000000000000000000000000000000000000..0dfae08fd83a2c6ee7a88c67adaceb5f2882215f GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=5pT85V>v?8;?1-@tu$ zisZX(_P0(nyg8fu>ewF_r}R1v5B2yO9RugnGI-hHzX@PHam-GLS`c)I$ztaD0e0stQ@K=%Lu literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_dough.png b/mods/farming/textures/farming_pumpkin_dough.png new file mode 100644 index 0000000000000000000000000000000000000000..62ea7a65ffadc1aac24e9c9fde35a25130509537 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXIvzcu3H!Gcd`y1!gn z{PpUluQ&F6yM6lm{R_f6o7#cO7)yfuf*Bm1-ADs+LOfj@LpZJ{Cmdj(5gW^UprpcM z7iWjyyn7QbzB_Q>fK*^$T%6pq0|`O5xKg$*Gn%o?ZHxPs>1@U`mbC3!w%c0TNMiSn p9ZRgNcN-XJNJ?upt zSecodDm-G9dCc&sLW*P8$K|^|vZx;B)p5&rIM643&|^cT=HE-lU3U7d+N8Qo$gA|H zSY+K|r~8&C8lHFdC)`~uTT$6DEzw7rGke+e$Nzk67JE&qcKy=Pbo7tZqv^5tx92-X zyg1_Ay8ag1O#d+oNvf3iChV#LI+4NC)z4*} HQ$iB}bbn|M literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_face_on.png b/mods/farming/textures/farming_pumpkin_face_on.png new file mode 100644 index 0000000000000000000000000000000000000000..fa71c9d474c140e8b123c3da04fe468ad6d2846f GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF4e$wZZ3$?r(G2H0m{6C-J(F)E-+c>|UVfcU7{{PEnvHLM=ff{Ffx;Tb#TxXoXkpG{7 zFZ;nkr+4;FRNM&)qp<%wXz! z_TGcLcbpl_&c2n)cnD+&$;vUOEe=y;U`|#uOKLU(`c2TtSXo$*VNJ5p$41TVzktqU N@O1TaS?83{1OVymUPS-^ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_seed.png b/mods/farming/textures/farming_pumpkin_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..6933bc38e8a11650920f3bff1d16c80cc77ad543 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^MdN zG&1ncRQO>F6yYrJh%9Dc;1&j9Muu5)B!GhKC7!;n>~}c$c=VZi`d=vng(OQ{BTAg} zb8}PkN*J7rQWHy3QxwWGOEMJPJ$(bh8~Mb6iY9xyIEGl9PX6=%zdf^RLuaGY0jA_T znU9hafZ)g9pT^8U(46+Y-fB04xWW^o9o!+O%nS?+j0`t?`Y8Oih7AbZVm1~m?|g5+ z=`0TqPftax1IL3R$%||&uGAfP&zjR%x;*lMeTcDgKDxKFNRRa>P%mRikY6x^!?PP{ zK#rHEi(?4K_2h&D+!4(p3R^BsQZP`y6MLFlXUV1~=R4UZ_;}Vnd&B9#Hu>_&+U<@! z$7WUP8#{VQ*yi1Dkx<@f&Uh$c9 A`Tzg` literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_top.png b/mods/farming/textures/farming_pumpkin_top.png new file mode 100644 index 0000000000000000000000000000000000000000..79283454ef1f0d5ab418e9c6366b49a5783c1579 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU`;dA-N*M-pFDn@;q;uFcjnxzz0I)a=A7GmZ~ooGP&xPHHo@vWL{YYc}}S{MaAoXQ!pi&F}1CrGevVRa8t`9J@1 z@IU`)$7WBf`tN9RvhB?@u^;;*XE3i3bUAEr!l7wac(HMVX%o-Pg9jRt1bk$cKU3A= zNnllIRXD3)cfw&p+6;>`3TxO7h%~+6TfnGL-^|k}$x_UC?L&hmgXX;B3 zV_4a^lcUAZNp^|EGKQOBDbpK|JagRJ{*Y+`(+oueUIQsHyAwHU5*aS_$jv=bGh_9N eX+e%+3=F%)R;U`^(L4!sID@CFpUXO@geCwLQB*h@_o(N*kEDlq_MDpfx^<_@_uNhOZC!QT2eMpOHmS^?`&TPXZ(4@sY%cA zl0Ne_9U^u^NIGpFGEo8&0@ojGm;88dLFHYfOeTPFrK;OW-U$p&5#YGGh@MlB^Cmfb zWPd}r$K`-w?vG&d7cJ`L!QKv;LafsNG$q1uSqDGCEqex*5DA=q}lDyOs9=l?9XkQhdkU? zdA_gnC*U(5xxYq^mnc9Hh={sk^>o1k?oN@typvRADj-)A^*RU@C?k)O65!6x8m>ZQ z%K4CDF4_M8w$t0Gaoj2sR}(q@zBeSTvO3K#t7hf60d-Vp|FQ~fYG49Q0!V>s?P^~) hprJiz53o6Y;uowDqLJPOy4wH%002ovPDHLkV1k`AU_Af; literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_raspberry_4.png b/mods/farming/textures/farming_raspberry_4.png new file mode 100644 index 0000000000000000000000000000000000000000..32da6b9fb11cb9c6a88566d4b66c4cc1ea7a235f GIT binary patch literal 239 zcmV~)tMMF*!<2lGZ|Ke{5Ga~VrqiGIUOT1y?KgH` zE#s@k{yLBSFpJY|5g#+|E+w|-68HcBWNreOCDPa(%Y>1*AXrsKLb)(zH%7bv6%0#`N>tf{-75Ee|)Ii;1}dZx_t`&rzI{0vRj< p5C!Dg(MAe#Q@ha2uB{L6_XBqktmj>mMT`Id002ovPDHLkV1g?AU84X1 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_raspberry_seed.png b/mods/farming/textures/farming_raspberry_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..08c958d9e850647d0fcf2d9e033fcbce5b08f4dc GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6U4S$Y z{B+)352QE?JR*x381$4un6YB1eHl=Yy~NYkmHiHfJTC)N`InAnpiqdXi(`nz>Er~7 zi~}6Wf6^0voIh~jK!M1q?T(WUv(L~dW#m?5ZHYP7^hEsF|G>ciYb7NlB&O>ot61`! wC}j+MP#<#TKSlF4stYMu@ilNf4KUKTW%b%HA czx*cqoJQtdn-4@818rmQboFyt=akR{0OU1RPyhe` literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_rhubarb.png b/mods/farming/textures/farming_rhubarb.png new file mode 100644 index 0000000000000000000000000000000000000000..7d416ab21b752b0d4c59c01e5abf428d1d072db1 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXI~gZa+;6dc z_CeQcbLKwSwEpe+vjMHf=Yh%?OM?7@862M7NCR>#JY5_^IIbrrD6lv!Fj>tpWg&-X zqF7mj!6XsIpd7Db3l$Xmo@`+en7{ZY&!PoqdCsIKtj|zLk!F}B#dg-tebFSK84RAT KelF{r5}E+AIyGtl literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_rhubarb_1.png b/mods/farming/textures/farming_rhubarb_1.png new file mode 100644 index 0000000000000000000000000000000000000000..01585b1bee3fcf44ad3e39e1cd562728576e0616 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|t{=BCWF7Q;bN+muf!bc6 zAY)08UoeBivm0qZj*O>^V+hCf&XcU{2MGR4Gb(9B>i->`1G_C6y4awT*U;M vC3_rrm^GRYHXM{VX3$_X;~@{53LC>^S?05Qc*Pe1jbQL}^>bP0l+XkK&Zs9( literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_rhubarb_3.png b/mods/farming/textures/farming_rhubarb_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b412f7e0105cdf29452d5c44e378ae73745dd3c0 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?bKe4jKI@=o z!oo>#3(3IS&|cxLoW%%h0DVbHM{9#=G^)+7>Mg zc=+Jp+zIjmLhQNf#xw+RozDKEWt&^CE*a@_PucJJ3W1 MPgg&ebxsLQ0P7VvcmMzZ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_rhubarb_pie.png b/mods/farming/textures/farming_rhubarb_pie.png new file mode 100644 index 0000000000000000000000000000000000000000..1f77b535cc6a30729099d3ba2f1cbe7f2c8bdf08 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aElDk2Y;Be0Z@k&rWuvF} z?!ch>6rZmA@M+b_%Y#h|fyx+5g8YIR9G=}s19BogT^vI=t|uoPV83ztH1~m$jT<*w zbg(XI)LFpLVP>Y2@Ib)KjF;CmFX2IkNtvh!537+CQ!g_stF*)nBP**W5msRdi7QrC rQZp_!+?sjCN=iY^SW`1$t02SnRKb}pI-9NnEn)C<^>bP0l+XkKFLyjV literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_rhubarb_seed.png b/mods/farming/textures/farming_rhubarb_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..c16527d99aac89382de0fae41f28262582683d00 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85s1GL71^(seKtxkiEpy*OmPahdiI5)Pm-fc0i$MPZ!4!i_^&o z5*Y_Lk~MO_{5*f)z=031FQ&5rL7VzccF9h|hRz`I4FW+9CsGTT-~G%_tkGWlX?|m4 zqvMa0vTmDV9J<^l9f+2k`rqJs?~x3ZCx;Y;dQE!$7;-V!Z literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_scarecrow_front.png b/mods/farming/textures/farming_scarecrow_front.png new file mode 100644 index 0000000000000000000000000000000000000000..364738fd6f3020f97686e0350c7b20cb01ebca52 GIT binary patch literal 634 zcmV-=0)_pFP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn` z3pEH~gop+J00H_*L_t(I%cYXfY7o*UA3{&Q4t(G zMd^ZNMupAB;*x#+Lb(RmfbuX1EVqg&Q}R)ay`F(oEHkn$S%&2J+1Mut5gz!F;qY~pJoa|c^$q4Crm@?(;u!a#9`FIE!%sKVr zJi=BM09M7qSr>@P2Kji1?bk5*1S2FmPe3Sa$K~i-|Hgy8c7tgWv*uMX(_;`0Tl+%* zP7fw*byB(q69vBTkw-d0{NjW`mX?13FJHho2MQqlC zMTn1YpDp&Fdhv;Seuh*I7>#rTvf&7O!v|AwLWdH#53(SF!$Ao)-I1^FG; UvMH`M-~a#s07*qoM6N<$f{x1#`2YX_ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_scarecrow_front_light.png b/mods/farming/textures/farming_scarecrow_front_light.png new file mode 100644 index 0000000000000000000000000000000000000000..b4b3cf289b9525f2d4ae8004719a924434bb925a GIT binary patch literal 641 zcmV-{0)G98P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn` z3eCM9?yGOiu z+%jD1`TgH4`6;Hz&|0HYP$fXkA*7Ab8F_lnoA0eLf?B)hF)N*DWJzL`J&Ghk>Kvqv zaLOp1GtH=Gy*9a|U%yby12&*s3<9fE#uN$JAi`cuK`N#h+3AOjLyy1+3u(KozOEuI zMR67(tP<<*8f3$Se0a_@qegKAz}}xB&AU(x3XBu8_o{<11=4jfMZ&@M0K0OV?Cbt&SDS>+bOa0t#{?YW~;_1j+l4Ln9(i> zhsMhVV1fPMh(@qXJLs|+ECFz^Jz%pn<-sV9Xx1-^2*(AZ0cdX>(+HN?4~|$3mS}Gs zU;a?YO4Xl)`1tn8WDm;SPu%fRq;kM$WXUHz8DLjDFgXYXw#)l&{c41thdt)qG62mu z1rHFC{4_;+1C+18zc6NI_eYiepzge## b`A_`?RC(3*j&oOz00000NkvXXu0mjfqj(y4 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_scarecrow_side.png b/mods/farming/textures/farming_scarecrow_side.png new file mode 100644 index 0000000000000000000000000000000000000000..e22e84ba1dd15382c478abe92c35b03ffd9ba9f7 GIT binary patch literal 613 zcmV-r0-F7aP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn` z3pEq#;X&#E00HGmL_t(I%cYXfiqlXOhrfGsle9@2+Jab&2zD{dl)9MBJb~cC2XNs+ zpT~#s8QeOEf(}Jov?vw}g)mLpbn@?B7qy+VA_{)H1NS@p&bddtd^$4x;>F2V?gu%h zD$rV^b5Jgz8VG4)bU~Tl@ap4er=U(B_#C4%jdUee+o#GBq%J|)2&awGC3Qy)2jRZR z-@T=30ydyL3pPKsz*=rlrl9;V8WP7AvmP^=b^!_HHmCNZ|M0I(VsPDdab zU5eEL+wY;v9FXWD1);DVm&^CF+XNS*kWHG<^xBxs6$poFy?_Etu|@z@nju>OWfJ3b zdR&ac!x4sqknv=Oa6K?NmVbvI>m_%uGwhDLT`HiO3Z2C~><7R9!f+5GzJEYhB{EwQ z1{&%1$QKcI*QZ*=SiTRo$9Pg3VLX}9^xE4dX%0RhB;_(k`VlHnU`nLt0bsJ_{yl(r z{^ZQmk7&2he?>hS1P6x!@cPXc&QJS)l{aaE0;rDxaDLi9Sk#{hwhfLG?5JPqal`36 z-X<6h!h?s$?8NCj=JIOBv&U!q_`^YnRP00000NkvXXu0mjfYmf>R literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_scarecrow_top.png b/mods/farming/textures/farming_scarecrow_top.png new file mode 100644 index 0000000000000000000000000000000000000000..3a4addcd66f7399cedc6e9c415ff044c18ae5ec7 GIT binary patch literal 639 zcmV-_0)YLAP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn` z3p51=F2(u)00I9=L_t(I%YBniYZFlv#eeV3o0(=NGo%4&As{rXHl%`^euA!a*Nt1h zkDtV?Tm1rdBVwtdn1UEB1cJ#VGo3&0Jr`jnomf1(d%5>=IOkmP^7+_u4`rnRaFx@l zYt;Q3>iBWkYK(@1R{i?jXI`A20B}8-vJ3I%)kTZJ&F%7^p)5@vJPx4lFFY~tc@`H~ zU1E&E6rg;dyN8f2cJ+~}xZ`bc-t5RMO~}%O4_|JZrpXObO57;ISin>px?Y4*s$rF- z3F^~i*$7koO3)p^1yq1V;P??%=almVw^x8vTwZOpP-o)-S(?xZBFwidtZ;CY5Bd)2 z$5e|sPB+5s3CeX2z}a}Kh04-|(Qv@^WQsZfJ=a(-MRXlZI!6WpR_92si@P6Fu4Wwd zVkY35fXl z9iuB`zF-g=q~E8Q&2jfb^lFI{hTsM~Jw9x#RCPor6wd92!gvHQ;d!|tmC Z`~`sUMaIl#*FCAl<2 z*jzM4Ty?~h`4}A)c{PPt?KMP{c^Kt*n1q=bRCrk=xEU0986`OxWVslmco^k*nT44c z#Mwdm`4||0?gk==lYqvmax=(sFz88e+o=nSF))N!Dw)c0i7+sj$_sdC3VG;?gI%2B*-tAL5ssp zg-ugQ=JU=uj`9Nk{{8*_^zOAo%NAzE^8Wkr>FulM&mKK`aOcLA%jZt--?L|7TSI-Y zt)cF}e?Ncx`2PLeVafjvYCCXwRlio7S(M+S^r<9N}ZCe)ikpO+brY zd%8G=NL=n)e-CV|fjjVi!YBt~8j4oBq$NwtYo?c(at-|KQ;Z)*ex=iq0{<>owioXsq z1ik!ouD*J@sM%aW-=!Po+i&^w^w-O$1utxSnvFerlGdfq=U>%&>050@iqkdj*>7K8 zJlePNw(E6UM$dR}myBgQQ(tAd;k@w1$+=w<)GdgYQ#>vo>l>7bDJ MboFyt=akR{09AqB)&Kwi literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_soil_wet.png b/mods/farming/textures/farming_soil_wet.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4487d8a2460c3d06a49560ca5c5905fba69f30 GIT binary patch literal 677 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47zG1-LR^7dWWa>P5ny3}a5aQk zlzAD&I2c(N7(8_)M41?z)kK^$g=k&_1z9AS7;Myp6}cH@xEVEsScI4u6nU5>SQz9v8BG<0gupt1 zRs)eLH-jt(gNgvFtqQNLnozKXqA&x4u^hh=Ka(O4g9sx-u(`aRB&P;HqZAW^hk>lM zs-U?nueJzhxSgh{s(_IUzpav(z67Tv50eNVv$>LpFgt@N2LlHK13xPxC@dJEPBoO| zc2*a*m*WYkKbr#-k0=T93--^>2ncORO^Q697xMSp<(hy0etmua=>DBkhxYAWKC!1L z=-=Nzzu&!k`}+0E7tfzOzItWP>gkpLfP%k%e);tA!@F0{pFey2=+VQwH*Q?Jc>dJU z1KT#NTRwkg+w`@aM}T&`_H=O!k+^Jn*0t!cgNWZBPMTc0`OG>O8!?2L;U3OjqcUv+ABv;?~9#d{o(b^nay(07R%SGXNIn&nK znOvFwJ}Nf1EPC0^J6hQZUuDye%goDK+%3E|dFq1YmQz){p2r*YUS{8(#M)%2n9=H@ zmn6v&AfenM{N*640LzLG3TIy2d9bs`we7(TyUla%{dlG4ndTo^!uzW1_O!k{@#e$l z;x^diH(34tvgh~rmvwuu<@&2lSCIU~ZJK2JzAAqFsmt5n?&*{zmPJ9FmS}fu#KGe9b zh&FwWw2Y$OMdVUMIF@m12GebmTEioW4{YNWPoFE0>6BHO&ws73ECr`lAXM;oHJqx6 zu#HoyPma0#p~-fma{BcbC`A)pTOyn_g`yH9D^A)~j?c@4i-3! zNHY|BgOrEpRT;aa!S;ZZ>-a;3B2RG4F~LkhYy(=|C5zb_fn+jzSboK&?-};%l-eE! z3H$Ms$%Bu$c`wmwyA0oN=v{QMYjr-{q^!e?e?FFxr9PM6t~l&`TD2HmU1D~?k4>B- z6_KuE7PB261`g~KiZDcTJc=Y@@vx*-H>i3QHp_%odri0+^5QHbo&=no+X&aK5Dfms zamxg=CBf7o+wBqJIm2O0p&j`9_Z-{SNz^LE+GCj-Pz6 zcb{OZ2+sD9t2So3MNvyECnJ{03Q_O&$PO-!J>&M)!j#+W_Ei>fh3TWo%C~vac*@2v zGnqHJ`_JRq%O=Gpq2nru!L^EPJ~HZ0DD;F)G-f&zM0=l`KQ`n{(6R;b-oPK;a@>d* z+)2nKm1@^U1X+YGA937!O)wavOA(5^B?~j0&JIlpDH=9!-rSQ$GSwrKq)0ew&baTZ z2um2O*K0bLHCheOJcC14LsANww!@d-T@ej7l=Xlory*9Q$2RCwv7RCFkpBT>mv7$x S>1I#>0000U1tMAsC~XQXdKo#37T$6IK&m1K!cZOn z0004WQchC^n!~IR0GvPyIJQwW;ofr5@vS_Kk7&-n<{r4R7rea`}dn-usvKah|<3eHx&}k07WI z`e^tbA;t*d0!DATge86gx><#a56X$J{usBwLD+9@5O}LQAv0evdU2--{q|!1v(hB0g#UjTEfK8F8}}l07*qoM6N<$f~dNbB>(^b literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry_1.png b/mods/farming/textures/farming_strawberry_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa21edc5a73cff8a86f367ab663d9748427e6bb GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T(`YgAKzr5#Q)p?D8g70 zKHs- L{an^LB{Ts52<05a literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry_2.png b/mods/farming/textures/farming_strawberry_2.png new file mode 100644 index 0000000000000000000000000000000000000000..751115e9876d20ce7264a801486428c48f93640d GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@&H$ef*R`Ai@l6*0|Nnn`Y>5z1 zkg+7lFPOpM*^M+HN6*v6F+}2Wa)LxlgDJx)fsO_vsgMOid;U#F1){khtTJ h1S7A-Re=NshV%DWZ#dh_tpn<0@O1TaS?83{1OO8ICRYFe literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry_3.png b/mods/farming/textures/farming_strawberry_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8b7a7b8c0b24eb4b9ed1b13d7a32af01bfc850a4 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@o&cW^S0EkVWbq#a7|wSV_X7Eh zB|(0{3=Yq3qyahho-U3d5|@(`7VszVHW;}mD@H&jT;+>O^7y>6A;z%_} xNY-$WTxY$Yhk^A@*TNnLjpk0#`6nYJ8M0(JUs}{0Jqa|5!PC{xWt~$(69D26Fcbg) literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry_4.png b/mods/farming/textures/farming_strawberry_4.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf001753c0770e613b6b5b551349f958886bd22 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv{s5m4S0EkVWbq#a7`AQ8JvQ~) zF`y7*NswPKgTu2MX+Tbar;B5V#`(MFHu5$Y@UR>(KgIB0kh$ST11Hm|f5w6uI_xfv z-PZHtw>8R7IkL_?laJT&^lIm64n6ZWq_TDHvP?N7CDLw|HKE3JmG}eM0KW;#{;l7# zUe@5MoukMdg)0e0Q4Oh0CniXq(|&mQd0&131IHnDf#!9p++dMnYy*H10g>_g(pKiq+|M*?o-WC78H+75Uf?UQD-oL+& b-2cF+)xpi>{&|5G&_xWMu6{1-oD!M<02*B^ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry_6.png b/mods/farming/textures/farming_strawberry_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a4d0d603fc091f7ead1faa645646ba09e305e3d9 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvp#Yx{S0EkVWbq#a82;zx-oEY0 z&L*=GD9Tt8I9474ezNrP=8{z3;zN`o{YNk%ZJ(Erp-=)mD6xY+$^6WyXqFuE5#r8GN4IDq#ue zzqoEfMsdZui4Mo*w#4!^D0gH(_-VI2??UC9)X@C5@-IL2?%Pwg@tp(HdoF{e&83XH i*1X=5@TdAXqg~50?wf6EcW(i@i^0>?&t;ucLK6UGzF^M) literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry_7.png b/mods/farming/textures/farming_strawberry_7.png new file mode 100644 index 0000000000000000000000000000000000000000..ace223cd88a0cd46bf55c2eda7c3d7d1646b8439 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv(Ey(iS0EkVWbq#a7@jzq-M;Pl zKR5T*s@x8s1Y=2%UoeBivm0qZ&TLN?#}JM4XD3+mF&Xl(=4vkbwprk-+fGLHh%iro z!NB0B|J)BuJaErdrXl3yiTRa^zrG*-#M+my!Es~rB*_yO^FdP8W62jemm=(T}r zFeG1>!TUf|yhe8Ev`4lHJPb!gL!Pm$n5X!z<5Nv~-zCQ4dC@l)Z{5f2_V%Lfas{hh ztJQ8?ym(LLwmy5zS3AaoI_DSgEGlNI?05gq;Pg}U~2NA~|><~j58 mwUoq+vj5DhewNC|Dl@d7;PEOytjht^%i!ti=d#Wzp$PzctS;mL literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato.png b/mods/farming/textures/farming_tomato.png new file mode 100644 index 0000000000000000000000000000000000000000..586aa56de584ab5f8b9eeb101b430fb075f9c9f9 GIT binary patch literal 488 zcmVP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv00043NklJ3R~Lh!4Iq!i`I%-K~U7Y=v|*PZ?k0!N_!Cu3@^!>nM|^4%>NrJiF7Lj_KN{c3WHmhurOFJ z8&t8_1)&c2W8D1;^E-!oTxo#$rHj4?(-uI@@CvI~WFYK7+`?5(QM(R(?Dv2U)<>xO z5Z3`}M!p0cX+ZEjx*<#yx%d!hV4elx=;>vbs_&uc$(A!J3^R%~wkK!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%EIeHtLoEE0B^(dzi<`%KO6H8iz4$nWQ!=cF*_Y^U`ahrX wNPu3YLT=;T|4$;zo=8vHc0sP6k%xyNK#QN#bJ3nxKr!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%JUm?-LoEE0B^(dzi<`%KO6H8iz4$nWQ!=bq*d)8({CA$Y zr14Vfy8o9?T;*X>IGb{tkLhLi+yBdTH~gM&bGnZyTxZMiWCmtthWm~Zc9Xt@hyu-I N@O1TaS?83{1OSgGMg{-? literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato_3.png b/mods/farming/textures/farming_tomato_3.png new file mode 100644 index 0000000000000000000000000000000000000000..fe3dcf0a1302c0353d2e64930465cb80214af8a4 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%l0973YF9D)@w|z zxUlE4_!>>t6_&{p|Nh_7`fZ71(5^FI?N3ZFS@7(OYswA=7Kd4m+njeUY5sE5VY&W> q-~M3|4G#ZL3T(JvD1G1n14E~g#?M+?^V>k{7(8A5T-G@yGywoVyHw}^ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato_4.png b/mods/farming/textures/farming_tomato_4.png new file mode 100644 index 0000000000000000000000000000000000000000..27c32828dce42efbb2933fbf355752f46dc0335f GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%$~;{hLoEE0B^(dzi<`%KO6H8iz4$nWQ%m?fqBFkBpHh)k zIlt*Q|DgcA%mtOp^?%NCWJqD)aNe14-C^bt<{6Bd4re91-~3;$yG8x%giERG62g}- znl9H@I?Sq&-fYsG)6O-K?~*w4+zopr09PwkEC2ui literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato_5.png b/mods/farming/textures/farming_tomato_5.png new file mode 100644 index 0000000000000000000000000000000000000000..f369a68f4f864f7868965b3c05bfb649abb69e2b GIT binary patch literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%R(iTPhFJI~OE@0b7dMaf)DiwaQNI72XBIFB9aigOoD(Iw zb9VW!MH(tm#vCVppXQ#TSNxaXn8l^}$3fvU9mWi74zms|oAsZ6W(wCf+ng@TOtuy# z)5%XtQUs!szuPb14lQ=ruKAIz^7+jF?2=5}?3-elj1TPR6=6&J@2oa!Vw!-CnNtI! zgjFk#ctZ|1<1L>e9);!$E7J~`Fm!sY5XfBcKZS#Fzp()WgX{d%rxFTE1wcnLc)I$z JtaD0e0sub-W`_U( literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato_6.png b/mods/farming/textures/farming_tomato_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0135cb53beaee8d64cf0e39ce57bafabecedd70b GIT binary patch literal 490 zcmV1wBo#8Bznu=<=V)-qia7Mqkx zEdBwpAfciZxAz{4HbpBEi!+^^H|LkGbI2OEjRWWdJZDDu*RP1LLGZoT?fRLU$5i=F44hY9O?q44qdivT}n%bArT#Jg~ z5z=#~0$?SxQVB3hjbp=k=C<|m?v=&8Nd;Kko7Aq(ChELW)1m-OZw)FyA!l>2a3S&S zalOeGa2*#h3N1%;el9$x1QyyP6-9+jPVMx3HDF*~F+0hP;UBBJ(_L#1EG zRt`7Msw$`lI9Ry&^k^m`+B@pU`iM_{h}oz%w3d&{J0jrm3DK1i{Tg9S06-}XkG~GZ zB^YSLN@l%A_P)EKkv0YY^l+Ns8=eSVd$kH8j`v=G09l|0;AD{q_g}PIydph#NF#PH$+i&(I z3YDN2QmJ`57I0t!dL}|qDm71o?huspH3P+-%n3zdcP0o*&k@Ew&b(pf`X#_24RZDS_hy0od5s;07*qo IM6N<$f&{?&$N&HU literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato_8.png b/mods/farming/textures/farming_tomato_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0b490257f0dab5ec4a4d4e67775159ea75594e3d GIT binary patch literal 510 zcmVH;LN@>a0cS}>K~y+TwUWI~!!QuXyD+eI zB8lC^B_VY@GL#9aZvaTBYNrN_RSggs6nn!*{k*7aCyUCq=pQ-T!=N zyY??+{RU)x4#wsnPC~MM+Pw^hH=SMUZsNr9A}WjEA3+;GE#9$9n?NGrBW}SWO5x}( z19@e{*oB-jP}6m>4Ma!O)r7+v&tbtbm7kd%V7YsAQ_70+zEBp)ykr=os%Ep+QC1@VtQ#wbaH8_f0+cnIQk0e^10q&wmu zFC!?%9Ms4hoDF@)pBw!`i?Mb5(5LRSU0LMo+-WzY*(s<=dl89ot$o{E+U08ek!WXK zz=r;YKN8-I8Z&4O%@{W2XZ(?*KEz@i(rsW2i@Z0?29#U{CQAK~lrG@J$TH61**oy9 zxK<1OxblH{iS7nmcaK4`LVqhR`S`x|%j~tr=e|Nr#m|NU1oRGu7C6zVnU^<&`3Fyv=l*YN^q5re0zpUXO@ GgeCyv?@1N_ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_bronzehoe.png b/mods/farming/textures/farming_tool_bronzehoe.png new file mode 100644 index 0000000000000000000000000000000000000000..ef07a80a4b5d4a4a7e8360863147c1c01cceb1e1 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}NPtg>>x6IT|NsAQD93B4$Y-V` zV67@(ttsNHFYcx*>Tk*$XepE9DLl=Oe{-z#zGQ`inc9cTbaH8#Np!rNCL4H7c$|j$+0P>l{$UdT;yk4ZInNgqIb78> zYu}}-Yjk0m$MP#&JXbhZNP^&&i9Z^8&VIPf${NS?h3~*4H=s2Pp00i_>zopr0L^e- A+5i9m literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_diamondhoe.png b/mods/farming/textures/farming_tool_diamondhoe.png new file mode 100644 index 0000000000000000000000000000000000000000..093acb821c6a8da2e1ec642f0f0401fa01b3f587 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!M}SX=D}!$7|NsAm%S&}9^cl+W z8Y=RcDG6As3Rr83I4)V_v~;nvzPR(!#csNyUTaqRoAL%)$^>rO5V&Pij;C<$g>wa$ zFP7iD-u3o1`}*2ypqWf1L4H89%O;<-0P-R|T^vIyZpEJQ6l+ira6WiJ!=igZ!T;G- z7xuVq`n{DS#8{)^()8~Y(;rICeR+e$&a1F6n{Aq*?>06bt03Ob_k^_y7HTiQBgS-x lbq5&682o5Fse9oK+o^3#pNh?erT{Hr@O1TaS?83{1OPfLR!RT> literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_mesehoe.png b/mods/farming/textures/farming_tool_mesehoe.png new file mode 100644 index 0000000000000000000000000000000000000000..ffd597a49544f1a65c7ebf8466d9949720badf42 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!eSlAh>xo5q|Ns9tl;bs2WIX+IQxMyB~PQ%96t;@=9}p{tEFG;u~%{E-e4| b@CEzcwM+}0=9Omx&1dj*^>bP0l+XkKCcsp* literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_steelhoe.png b/mods/farming/textures/farming_tool_steelhoe.png new file mode 100644 index 0000000000000000000000000000000000000000..893a6958e4b4d2763513392378c2e1fe92cd2ac8 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!eSlAh>jG=O|Ns9R%JCX1@|h_K zSgQ(HYl=AQi@WKH`kV3wTFT^j3h&*!_sp3yj~+dG{P^*+XV2chfB*UO=kMRY12rlv z`8*G36jMo%AJE9M$!9Hqybw!wLZNn(b-`tCzVFXNC64T9aO~-Gwq^as`jzb~o1v7&mSd9J Z{;g7H>h2IuS_L$p!PC{xWt~$(69CsBRk{EG literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_stonehoe.png b/mods/farming/textures/farming_tool_stonehoe.png new file mode 100644 index 0000000000000000000000000000000000000000..4f8dade01c39dad208f481013cffc14369eeb91a GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}RDe&2>jqc8|Ns9R%JCX1@|h_K zSgQ(HYl_&Z2srDDyXlJhoAL%)$|NTzr=+B$rKRO~3g_hHeI=6ciN|m6es1 zmzP&mR8&@0R##Wo)YR11*EcjYG&MCXo3?H>&=#hWAU~jOWs}cZfb8^iaSV|Nk3D0~ z)Sw{3axu`bDe2t3|Fgst>h9*nZFJc$c<|cXaQ+7NjOV2jfM3|Ns9R%JCX1@|h_K zSgQ(HYl=AQi@WKH`kV3wTFOM)ibvVh@`s7rMpSxcnX)^z7+~IgsCLR z4`^7~#t_#CmVH Q15Ib}boFyt=akR{0M|c8ZvX%Q literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_trellis.png b/mods/farming/textures/farming_trellis.png new file mode 100644 index 0000000000000000000000000000000000000000..855b932608cdcc2e22e7751858e4d0014b721735 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv=>VS)S4Rd07h@SObLkj&)f7LS zj6nVVBHN`6K5N>8n{0mQ0F^P81o;IsI6S+N2IQ1^x;TbtoKH?*U@~LwV-QGbXe`=l z^4+Z8sC-Am>`w0v?+u>;7#+*Z=EaM zw?66EcHjN$UFP>Vu3EMD;^DZZlbjwsdT{x8)Akkdd)7v7THv>8y4&_8*2j(=oHc9m z$z9o7wY5`$rZAQS`2{mLJiCzwlo8NZu>H-brP(K~|(phXOxu6{1-oD!M<;EG@u literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_1.png b/mods/farming/textures/farming_wheat_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c16ad94ba4e9989dd795c452559376ea2137d78b GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=9Yr1Ue5HHSX6f+M=Q~ zYo{boh_NKdFPOpM*^M+HN8HoJF@)oKvP8xM1|=4W84^4a5|S(;3~VV3TOtB)Z38M{ N@O1TaS?83{1OQMF9ZdiL literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_2.png b/mods/farming/textures/farming_wheat_2.png new file mode 100644 index 0000000000000000000000000000000000000000..baddb4c544c6ea55d23c5dec5462e351c0f80c54 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ1=3wxO(*WOis%vDe8I1J zrB3l;b^H6RpMVmKB|(0{3=Yq3qyahVo-U3d9M_W<=yNa#vhn!vF!7w>VdLV_abQz! jW}J`^;*pRTP{6<-pT?xP*61c5Pz!^ntDnm{r-UW|z&Rvh literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_3.png b/mods/farming/textures/farming_wheat_3.png new file mode 100644 index 0000000000000000000000000000000000000000..36ebb1929de7851303f7b7da7a46fe831765608f GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU1=7oRg-u%NdiX-lntjog zlXa)B_1J%|{C~fqJ5Y|XB*-tA!Qt7BG$6;x)5S4_<9hM}Mh^x-Mjjm=CZ07sjC?$2 z9N3hd873r@1SF&t7$gX!gm@&B2n3{Pr0E1ChzWS42qXmt1cU?xurVyGV&j}_c4jru OGzL#sKbLh*2~7aHK`<)- literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_4.png b/mods/farming/textures/farming_wheat_4.png new file mode 100644 index 0000000000000000000000000000000000000000..735ed7772e5ed4e8ecf29004ce2fc92fc3001247 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeX1=8yeCePUzxb3x$}4MW-^nS{=7dR2o)#&6-Tm*+8s;xLd_unYEgOKA OF?hQAxvX9s(+5ED7=pW^j0RBMrzY^mK6y;kcfx zz^0S%ASuBkAtC7j!z70^W@heYh6$G+95`@J@4(R$7ZeUWIPqe^fpZT64k?^iG2y@q zg#{-J<`yTY8L2jYFgCPWYsLW_)yD%7EVQ;MLk?xjf`9ed6rv>PMO`bP0l+XkKd0|`D literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_7.png b/mods/farming/textures/farming_wheat_7.png new file mode 100644 index 0000000000000000000000000000000000000000..cc26ca96990f96f8fe71d5c3eed9d0eea3bb7c2e GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VW1=42^r0?G1yl-9Ds>LRk zj^=EhYw_T6>gAKMhqp$qS!#Crc>12re#f@OT}v_e094Ib666=m;PC858j#cI>Eal| zaXqzTBQKMoi1Xix@0<#cx*IU@hS*8nQV|kjb-khBePQ`x+dQTzflFvXs>=mhV;2emCjG1i2d=>Yi4QG+X_?w&uF`J&|NjKx2-V2i> z8I~wss2>uhpfH0;Q;cQ6mTSUj*^G3scIec@IkN4fjwkQ5J3rKu+S3!)(;3JQS_PpA z-;0E(n_uCPBcg(a93^6ni1$PrHQeA-jcoLXQ_goZLEjMb50^^>=YLuCB>(^b07*qo IM6N<$f*<&P1^@s6 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_seed.png b/mods/farming/textures/farming_wheat_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..a9031fba979d5fd323ce9f5200f6ede53b2e733f GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ^~o&Uwme~4v(x#*or@>< z%7V@L&K@&PuV1Rg~;HfM?GGmNJaLK%Y3 kFmc!!9azVD)2D`kVexq;Szopr0Jyg)f&c&j literal 0 HcmV?d00001 diff --git a/mods/farming/textures/vessels_drinking_cup.png b/mods/farming/textures/vessels_drinking_cup.png new file mode 100644 index 0000000000000000000000000000000000000000..2eba2321a5cf7650e0f3c0ced4896138f1da997e GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b;OkH}&M25w;xW@MN(M*=9wUgGKN z%6^Z7jaSIrGOINgC}ia6;uyklJvm{4fPu8MwzM>Zq>jS8Zl);@4>V0b$Z_Rh5=+P# mg+m7(aF}&mJnGue$jGpSjrr{wFMmy-ZU#?RKbLh*2~7Ypr#ry_ literal 0 HcmV?d00001 diff --git a/mods/farming/todo.md b/mods/farming/todo.md new file mode 100644 index 00000000..55870270 --- /dev/null +++ b/mods/farming/todo.md @@ -0,0 +1,12 @@ +* [x] orange trees from farming_plus +* [ ] optional - cocoa sapling +* [x] banana trees from farming_plus +* [x] carrot_seed +* [x] orange_seed +* [x] tomato_seed +* [x] potatoe_seed +* [x] rhubarb_seed +* [x] raspberry_seed +* [x] strawberry_seed +* [x] pumpkin_seed +* [x] aliases diff --git a/mods/farming/tomato.lua b/mods/farming/tomato.lua new file mode 100644 index 00000000..4ff6b643 --- /dev/null +++ b/mods/farming/tomato.lua @@ -0,0 +1,86 @@ + +--[[ + Textures edited from: + http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1288375-food-plus-mod-more-food-than-you-can-imagine-v2-9) +]] + +minetest.register_craftitem("farming:tomato_seed", { + description = "Tomato Seeds", + inventory_image = "farming_tomato_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:tomato_1") + end +}) + +-- tomato +minetest.register_craftitem("farming:tomato", { + description = "Tomato", + inventory_image = "farming_tomato.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:tomato_1") + end, + on_use = minetest.item_eat(4), +}) + +-- tomato definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_tomato_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:tomato_1", table.copy(crop_def)) + +-- stage2 +crop_def.tiles = {"farming_tomato_2.png"} +minetest.register_node("farming:tomato_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_tomato_3.png"} +minetest.register_node("farming:tomato_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_tomato_4.png"} +minetest.register_node("farming:tomato_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_tomato_5.png"} +minetest.register_node("farming:tomato_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_tomato_6.png"} +minetest.register_node("farming:tomato_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_tomato_7.png"} +crop_def.drop = { + items = { + {items = {'farming:tomato'}, rarity = 1}, + {items = {'farming:tomato_seed'}, rarity = 1}, + {items = {'farming:tomato'}, rarity = 3}, + } +} +minetest.register_node("farming:tomato_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"farming_tomato_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:tomato 3'}, rarity = 1}, + {items = {'farming:tomato_seed 4'}, rarity = 1}, + {items = {'farming:tomato 3'}, rarity = 2}, + } +} +minetest.register_node("farming:tomato_8", table.copy(crop_def)) diff --git a/mods/farming/wheat.lua b/mods/farming/wheat.lua new file mode 100644 index 00000000..72d65c42 --- /dev/null +++ b/mods/farming/wheat.lua @@ -0,0 +1,152 @@ + +-- wheat seeds +minetest.register_node("farming:seed_wheat", { + description = "Wheat Seed", + tiles = {"farming_wheat_seed.png"}, + inventory_image = "farming_wheat_seed.png", + wield_image = "farming_wheat_seed.png", + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:wheat_1") + end, +}) + +-- harvested wheat +minetest.register_craftitem("farming:wheat", { + description = "Wheat", + inventory_image = "farming_wheat.png", +}) + +-- straw +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_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"}, + } +}) + +-- flour +minetest.register_craftitem("farming:flour", { + description = "Flour", + inventory_image = "farming_flour.png", +}) + +minetest.register_craft({ + type = "shapeless", + output = "farming:flour", + recipe = {"farming:wheat", "farming:wheat", "farming:wheat", "farming:wheat"} +}) + +-- bread +minetest.register_craftitem("farming:bread", { + description = "Bread", + inventory_image = "farming_bread.png", + on_use = minetest.item_eat(5), +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 15, + output = "farming:bread", + recipe = "farming:flour" +}) + +-- wheat definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_wheat_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:wheat_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_wheat_2.png"} +minetest.register_node("farming:wheat_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_wheat_3.png"} +minetest.register_node("farming:wheat_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_wheat_4.png"} +minetest.register_node("farming:wheat_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_wheat_5.png"} +crop_def.drop = { + items = { + {items = {'farming:wheat'}, rarity = 2}, + {items = {'farming:seed_wheat'}, rarity = 2}, + } +} +minetest.register_node("farming:wheat_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_wheat_6.png"} +crop_def.drop = { + items = { + {items = {'farming:wheat'}, rarity = 2}, + {items = {'farming:seed_wheat'}, rarity = 1}, + } +} +minetest.register_node("farming:wheat_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_wheat_7.png"} +crop_def.drop = { + items = { + {items = {'farming:wheat'}, rarity = 1}, + {items = {'farming:wheat'}, rarity = 3}, + {items = {'farming:seed_wheat'}, rarity = 1}, + {items = {'farming:seed_wheat'}, rarity = 3}, + } +} +minetest.register_node("farming:wheat_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"farming_wheat_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:wheat'}, rarity = 1}, + {items = {'farming:wheat'}, rarity = 3}, + {items = {'farming:seed_wheat'}, rarity = 1}, + {items = {'farming:seed_wheat'}, rarity = 3}, + } +} +minetest.register_node("farming:wheat_8", table.copy(crop_def)) From 568045a4c48aa446bd26731400cd39594deaf2c8 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 16 Jul 2016 14:14:56 +0200 Subject: [PATCH 135/383] merge upstream commit: Doors: Remove unnecessary node lookups --- mods/boats | 1 + mods/boats/README.txt | 20 - mods/boats/depends.txt | 2 - mods/boats/init.lua | 336 -------- mods/boats/models/boat.obj | 358 -------- mods/boats/models/rowboat.x | 760 ----------------- mods/boats/textures/boats_inventory.png | Bin 851 -> 0 bytes mods/boats/textures/boats_wield.png | Bin 546 -> 0 bytes mods/boats/textures/rowboat_inventory.png | Bin 444 -> 0 bytes mods/boats/textures/rowboat_wield.png | Bin 366 -> 0 bytes mods/farming | 1 + mods/farming/README.txt | 150 ---- mods/farming/api.lua | 366 -------- mods/farming/banana.lua | 70 -- mods/farming/barley.lua | 96 --- mods/farming/beanpole.lua | 194 ----- mods/farming/blueberry.lua | 65 -- mods/farming/carrot.lua | 103 --- mods/farming/cocoa.lua | 172 ---- mods/farming/coffee.lua | 130 --- mods/farming/compatibility.lua | 78 -- mods/farming/corn.lua | 114 --- mods/farming/cotton.lua | 114 --- mods/farming/cucumber.lua | 53 -- mods/farming/depends.txt | 2 - mods/farming/description.txt | 1 - mods/farming/donut.lua | 45 - mods/farming/grapes.lua | 201 ----- mods/farming/grass.lua | 42 - mods/farming/hoes.lua | 151 ---- mods/farming/init.lua | 797 ------------------ mods/farming/init.lua_orig | 192 ----- mods/farming/license.txt | 14 - mods/farming/mapgen.lua | 65 -- mods/farming/melon.lua | 80 -- mods/farming/mod.conf | 1 - mods/farming/oranges.lua | 58 -- mods/farming/potato.lua | 85 -- mods/farming/pumpkin.lua | 346 -------- mods/farming/raspberry.lua | 74 -- mods/farming/rhubarb.lua | 70 -- mods/farming/screenshot.png | Bin 42499 -> 0 bytes mods/farming/soil.lua | 64 -- mods/farming/statistics.lua | 174 ---- mods/farming/strawberry.lua | 133 --- mods/farming/sugar.lua | 14 - .../farming/textures/farming_baked_potato.png | Bin 321 -> 0 bytes mods/farming/textures/farming_banana.png | Bin 515 -> 0 bytes .../textures/farming_banana_leaves.png | Bin 621 -> 0 bytes .../textures/farming_banana_sapling.png | Bin 647 -> 0 bytes mods/farming/textures/farming_barley.png | Bin 230 -> 0 bytes mods/farming/textures/farming_barley_1.png | Bin 140 -> 0 bytes mods/farming/textures/farming_barley_2.png | Bin 151 -> 0 bytes mods/farming/textures/farming_barley_3.png | Bin 209 -> 0 bytes mods/farming/textures/farming_barley_4.png | Bin 229 -> 0 bytes mods/farming/textures/farming_barley_5.png | Bin 246 -> 0 bytes mods/farming/textures/farming_barley_6.png | Bin 271 -> 0 bytes mods/farming/textures/farming_barley_7.png | Bin 277 -> 0 bytes mods/farming/textures/farming_barley_seed.png | Bin 145 -> 0 bytes mods/farming/textures/farming_beanbush.png | Bin 227 -> 0 bytes mods/farming/textures/farming_beanpole.png | Bin 323 -> 0 bytes mods/farming/textures/farming_beanpole_1.png | Bin 242 -> 0 bytes mods/farming/textures/farming_beanpole_2.png | Bin 264 -> 0 bytes mods/farming/textures/farming_beanpole_3.png | Bin 297 -> 0 bytes mods/farming/textures/farming_beanpole_4.png | Bin 355 -> 0 bytes mods/farming/textures/farming_beanpole_5.png | Bin 353 -> 0 bytes mods/farming/textures/farming_beans.png | Bin 193 -> 0 bytes mods/farming/textures/farming_blueberries.png | Bin 164 -> 0 bytes mods/farming/textures/farming_blueberry_1.png | Bin 114 -> 0 bytes mods/farming/textures/farming_blueberry_2.png | Bin 223 -> 0 bytes mods/farming/textures/farming_blueberry_3.png | Bin 231 -> 0 bytes mods/farming/textures/farming_blueberry_4.png | Bin 317 -> 0 bytes .../textures/farming_blueberry_muffin.png | Bin 236 -> 0 bytes .../textures/farming_bottle_ethanol.png | Bin 221 -> 0 bytes mods/farming/textures/farming_bread.png | Bin 552 -> 0 bytes mods/farming/textures/farming_carrot.png | Bin 220 -> 0 bytes mods/farming/textures/farming_carrot_1.png | Bin 108 -> 0 bytes mods/farming/textures/farming_carrot_2.png | Bin 111 -> 0 bytes mods/farming/textures/farming_carrot_3.png | Bin 113 -> 0 bytes mods/farming/textures/farming_carrot_4.png | Bin 119 -> 0 bytes mods/farming/textures/farming_carrot_5.png | Bin 123 -> 0 bytes mods/farming/textures/farming_carrot_6.png | Bin 129 -> 0 bytes mods/farming/textures/farming_carrot_7.png | Bin 144 -> 0 bytes mods/farming/textures/farming_carrot_8.png | Bin 160 -> 0 bytes mods/farming/textures/farming_carrot_gold.png | Bin 207 -> 0 bytes .../textures/farming_chocolate_dark.png | Bin 194 -> 0 bytes mods/farming/textures/farming_cocoa_1.png | Bin 230 -> 0 bytes mods/farming/textures/farming_cocoa_2.png | Bin 244 -> 0 bytes mods/farming/textures/farming_cocoa_3.png | Bin 253 -> 0 bytes mods/farming/textures/farming_cocoa_beans.png | Bin 187 -> 0 bytes mods/farming/textures/farming_coffee_1.png | Bin 135 -> 0 bytes mods/farming/textures/farming_coffee_2.png | Bin 145 -> 0 bytes mods/farming/textures/farming_coffee_3.png | Bin 171 -> 0 bytes mods/farming/textures/farming_coffee_4.png | Bin 192 -> 0 bytes mods/farming/textures/farming_coffee_5.png | Bin 192 -> 0 bytes .../farming/textures/farming_coffee_beans.png | Bin 204 -> 0 bytes mods/farming/textures/farming_coffee_cup.png | Bin 164 -> 0 bytes .../textures/farming_coffee_cup_hot.png | Bin 183 -> 0 bytes mods/farming/textures/farming_cookie.png | Bin 566 -> 0 bytes mods/farming/textures/farming_corn.png | Bin 197 -> 0 bytes mods/farming/textures/farming_corn_1.png | Bin 107 -> 0 bytes mods/farming/textures/farming_corn_2.png | Bin 121 -> 0 bytes mods/farming/textures/farming_corn_3.png | Bin 142 -> 0 bytes mods/farming/textures/farming_corn_4.png | Bin 154 -> 0 bytes mods/farming/textures/farming_corn_5.png | Bin 161 -> 0 bytes mods/farming/textures/farming_corn_6.png | Bin 268 -> 0 bytes mods/farming/textures/farming_corn_7.png | Bin 275 -> 0 bytes mods/farming/textures/farming_corn_8.png | Bin 311 -> 0 bytes mods/farming/textures/farming_corn_cob.png | Bin 182 -> 0 bytes mods/farming/textures/farming_cotton.png | Bin 166 -> 0 bytes mods/farming/textures/farming_cotton_1.png | Bin 110 -> 0 bytes mods/farming/textures/farming_cotton_2.png | Bin 120 -> 0 bytes mods/farming/textures/farming_cotton_3.png | Bin 144 -> 0 bytes mods/farming/textures/farming_cotton_4.png | Bin 150 -> 0 bytes mods/farming/textures/farming_cotton_5.png | Bin 159 -> 0 bytes mods/farming/textures/farming_cotton_6.png | Bin 164 -> 0 bytes mods/farming/textures/farming_cotton_7.png | Bin 170 -> 0 bytes mods/farming/textures/farming_cotton_8.png | Bin 196 -> 0 bytes mods/farming/textures/farming_cotton_seed.png | Bin 150 -> 0 bytes mods/farming/textures/farming_cucumber.png | Bin 185 -> 0 bytes mods/farming/textures/farming_cucumber_1.png | Bin 119 -> 0 bytes mods/farming/textures/farming_cucumber_2.png | Bin 145 -> 0 bytes mods/farming/textures/farming_cucumber_3.png | Bin 217 -> 0 bytes mods/farming/textures/farming_cucumber_4.png | Bin 275 -> 0 bytes .../textures/farming_desert_sand_soil.png | Bin 637 -> 0 bytes .../textures/farming_desert_sand_soil_wet.png | Bin 590 -> 0 bytes .../farming_desert_sand_soil_wet_side.png | Bin 601 -> 0 bytes mods/farming/textures/farming_donut.png | Bin 258 -> 0 bytes mods/farming/textures/farming_donut_apple.png | Bin 252 -> 0 bytes .../textures/farming_donut_chocolate.png | Bin 256 -> 0 bytes mods/farming/textures/farming_flour.png | Bin 159 -> 0 bytes mods/farming/textures/farming_grapebush.png | Bin 144 -> 0 bytes mods/farming/textures/farming_grapes.png | Bin 175 -> 0 bytes mods/farming/textures/farming_grapes_1.png | Bin 255 -> 0 bytes mods/farming/textures/farming_grapes_2.png | Bin 290 -> 0 bytes mods/farming/textures/farming_grapes_3.png | Bin 307 -> 0 bytes mods/farming/textures/farming_grapes_4.png | Bin 330 -> 0 bytes mods/farming/textures/farming_grapes_5.png | Bin 338 -> 0 bytes mods/farming/textures/farming_grapes_6.png | Bin 347 -> 0 bytes mods/farming/textures/farming_grapes_7.png | Bin 358 -> 0 bytes mods/farming/textures/farming_grapes_8.png | Bin 350 -> 0 bytes mods/farming/textures/farming_melon_1.png | Bin 138 -> 0 bytes mods/farming/textures/farming_melon_2.png | Bin 161 -> 0 bytes mods/farming/textures/farming_melon_3.png | Bin 177 -> 0 bytes mods/farming/textures/farming_melon_4.png | Bin 181 -> 0 bytes mods/farming/textures/farming_melon_5.png | Bin 196 -> 0 bytes mods/farming/textures/farming_melon_6.png | Bin 219 -> 0 bytes mods/farming/textures/farming_melon_7.png | Bin 247 -> 0 bytes mods/farming/textures/farming_melon_side.png | Bin 270 -> 0 bytes mods/farming/textures/farming_melon_slice.png | Bin 227 -> 0 bytes mods/farming/textures/farming_melon_top.png | Bin 272 -> 0 bytes mods/farming/textures/farming_orange.png | Bin 544 -> 0 bytes mods/farming/textures/farming_orange_1.png | Bin 108 -> 0 bytes mods/farming/textures/farming_orange_2.png | Bin 193 -> 0 bytes mods/farming/textures/farming_orange_3.png | Bin 451 -> 0 bytes mods/farming/textures/farming_orange_4.png | Bin 460 -> 0 bytes mods/farming/textures/farming_orange_seed.png | Bin 281 -> 0 bytes mods/farming/textures/farming_potato.png | Bin 252 -> 0 bytes mods/farming/textures/farming_potato_1.png | Bin 132 -> 0 bytes mods/farming/textures/farming_potato_2.png | Bin 187 -> 0 bytes mods/farming/textures/farming_potato_3.png | Bin 237 -> 0 bytes mods/farming/textures/farming_potato_4.png | Bin 283 -> 0 bytes mods/farming/textures/farming_potato_seed.png | Bin 221 -> 0 bytes mods/farming/textures/farming_pumpkin_1.png | Bin 159 -> 0 bytes mods/farming/textures/farming_pumpkin_2.png | Bin 182 -> 0 bytes mods/farming/textures/farming_pumpkin_3.png | Bin 199 -> 0 bytes mods/farming/textures/farming_pumpkin_4.png | Bin 230 -> 0 bytes mods/farming/textures/farming_pumpkin_5.png | Bin 259 -> 0 bytes mods/farming/textures/farming_pumpkin_6.png | Bin 263 -> 0 bytes mods/farming/textures/farming_pumpkin_7.png | Bin 271 -> 0 bytes mods/farming/textures/farming_pumpkin_8.png | Bin 275 -> 0 bytes .../textures/farming_pumpkin_bread.png | Bin 200 -> 0 bytes .../textures/farming_pumpkin_dough.png | Bin 193 -> 0 bytes .../textures/farming_pumpkin_face_off.png | Bin 259 -> 0 bytes .../textures/farming_pumpkin_face_on.png | Bin 269 -> 0 bytes .../farming/textures/farming_pumpkin_seed.png | Bin 312 -> 0 bytes .../farming/textures/farming_pumpkin_side.png | Bin 231 -> 0 bytes .../textures/farming_pumpkin_slice.png | Bin 204 -> 0 bytes mods/farming/textures/farming_pumpkin_top.png | Bin 272 -> 0 bytes mods/farming/textures/farming_raspberries.png | Bin 230 -> 0 bytes mods/farming/textures/farming_raspberry_1.png | Bin 100 -> 0 bytes mods/farming/textures/farming_raspberry_2.png | Bin 223 -> 0 bytes mods/farming/textures/farming_raspberry_3.png | Bin 231 -> 0 bytes mods/farming/textures/farming_raspberry_4.png | Bin 239 -> 0 bytes .../textures/farming_raspberry_seed.png | Bin 212 -> 0 bytes .../textures/farming_raspberry_smoothie.png | Bin 231 -> 0 bytes mods/farming/textures/farming_rhubarb.png | Bin 165 -> 0 bytes mods/farming/textures/farming_rhubarb_1.png | Bin 119 -> 0 bytes mods/farming/textures/farming_rhubarb_2.png | Bin 152 -> 0 bytes mods/farming/textures/farming_rhubarb_3.png | Bin 167 -> 0 bytes mods/farming/textures/farming_rhubarb_pie.png | Bin 198 -> 0 bytes .../farming/textures/farming_rhubarb_seed.png | Bin 219 -> 0 bytes .../textures/farming_scarecrow_front.png | Bin 634 -> 0 bytes .../farming_scarecrow_front_light.png | Bin 641 -> 0 bytes .../textures/farming_scarecrow_side.png | Bin 613 -> 0 bytes .../textures/farming_scarecrow_top.png | Bin 639 -> 0 bytes mods/farming/textures/farming_soil.png | Bin 706 -> 0 bytes mods/farming/textures/farming_soil_wet.png | Bin 677 -> 0 bytes .../textures/farming_soil_wet_side.png | Bin 96 -> 0 bytes mods/farming/textures/farming_straw.png | Bin 892 -> 0 bytes mods/farming/textures/farming_strawberry.png | Bin 382 -> 0 bytes .../farming/textures/farming_strawberry_1.png | Bin 116 -> 0 bytes .../farming/textures/farming_strawberry_2.png | Bin 137 -> 0 bytes .../farming/textures/farming_strawberry_3.png | Bin 157 -> 0 bytes .../farming/textures/farming_strawberry_4.png | Bin 209 -> 0 bytes .../farming/textures/farming_strawberry_5.png | Bin 234 -> 0 bytes .../farming/textures/farming_strawberry_6.png | Bin 240 -> 0 bytes .../farming/textures/farming_strawberry_7.png | Bin 258 -> 0 bytes .../farming/textures/farming_strawberry_8.png | Bin 258 -> 0 bytes mods/farming/textures/farming_sugar.png | Bin 142 -> 0 bytes mods/farming/textures/farming_tomato.png | Bin 488 -> 0 bytes mods/farming/textures/farming_tomato_1.png | Bin 207 -> 0 bytes mods/farming/textures/farming_tomato_2.png | Bin 223 -> 0 bytes mods/farming/textures/farming_tomato_3.png | Bin 250 -> 0 bytes mods/farming/textures/farming_tomato_4.png | Bin 269 -> 0 bytes mods/farming/textures/farming_tomato_5.png | Bin 320 -> 0 bytes mods/farming/textures/farming_tomato_6.png | Bin 490 -> 0 bytes mods/farming/textures/farming_tomato_7.png | Bin 570 -> 0 bytes mods/farming/textures/farming_tomato_8.png | Bin 510 -> 0 bytes mods/farming/textures/farming_tomato_seed.png | Bin 221 -> 0 bytes .../textures/farming_tool_bronzehoe.png | Bin 258 -> 0 bytes .../textures/farming_tool_diamondhoe.png | Bin 244 -> 0 bytes .../farming/textures/farming_tool_mesehoe.png | Bin 230 -> 0 bytes .../textures/farming_tool_steelhoe.png | Bin 230 -> 0 bytes .../textures/farming_tool_stonehoe.png | Bin 263 -> 0 bytes .../farming/textures/farming_tool_woodhoe.png | Bin 222 -> 0 bytes mods/farming/textures/farming_trellis.png | Bin 227 -> 0 bytes mods/farming/textures/farming_wheat.png | Bin 241 -> 0 bytes mods/farming/textures/farming_wheat_1.png | Bin 120 -> 0 bytes mods/farming/textures/farming_wheat_2.png | Bin 142 -> 0 bytes mods/farming/textures/farming_wheat_3.png | Bin 172 -> 0 bytes mods/farming/textures/farming_wheat_4.png | Bin 191 -> 0 bytes mods/farming/textures/farming_wheat_5.png | Bin 218 -> 0 bytes mods/farming/textures/farming_wheat_6.png | Bin 234 -> 0 bytes mods/farming/textures/farming_wheat_7.png | Bin 253 -> 0 bytes mods/farming/textures/farming_wheat_8.png | Bin 310 -> 0 bytes mods/farming/textures/farming_wheat_seed.png | Bin 141 -> 0 bytes .../farming/textures/vessels_drinking_cup.png | Bin 200 -> 0 bytes mods/farming/todo.md | 12 - mods/farming/tomato.lua | 86 -- mods/farming/wheat.lua | 152 ---- 241 files changed, 2 insertions(+), 6040 deletions(-) create mode 160000 mods/boats delete mode 100644 mods/boats/README.txt delete mode 100644 mods/boats/depends.txt delete mode 100644 mods/boats/init.lua delete mode 100644 mods/boats/models/boat.obj delete mode 100644 mods/boats/models/rowboat.x delete mode 100644 mods/boats/textures/boats_inventory.png delete mode 100644 mods/boats/textures/boats_wield.png delete mode 100644 mods/boats/textures/rowboat_inventory.png delete mode 100644 mods/boats/textures/rowboat_wield.png create mode 160000 mods/farming delete mode 100644 mods/farming/README.txt delete mode 100644 mods/farming/api.lua delete mode 100644 mods/farming/banana.lua delete mode 100644 mods/farming/barley.lua delete mode 100644 mods/farming/beanpole.lua delete mode 100644 mods/farming/blueberry.lua delete mode 100644 mods/farming/carrot.lua delete mode 100644 mods/farming/cocoa.lua delete mode 100644 mods/farming/coffee.lua delete mode 100644 mods/farming/compatibility.lua delete mode 100644 mods/farming/corn.lua delete mode 100644 mods/farming/cotton.lua delete mode 100644 mods/farming/cucumber.lua delete mode 100644 mods/farming/depends.txt delete mode 100644 mods/farming/description.txt delete mode 100644 mods/farming/donut.lua delete mode 100644 mods/farming/grapes.lua delete mode 100644 mods/farming/grass.lua delete mode 100644 mods/farming/hoes.lua delete mode 100644 mods/farming/init.lua delete mode 100644 mods/farming/init.lua_orig delete mode 100644 mods/farming/license.txt delete mode 100644 mods/farming/mapgen.lua delete mode 100644 mods/farming/melon.lua delete mode 100644 mods/farming/mod.conf delete mode 100644 mods/farming/oranges.lua delete mode 100644 mods/farming/potato.lua delete mode 100644 mods/farming/pumpkin.lua delete mode 100644 mods/farming/raspberry.lua delete mode 100644 mods/farming/rhubarb.lua delete mode 100644 mods/farming/screenshot.png delete mode 100644 mods/farming/soil.lua delete mode 100644 mods/farming/statistics.lua delete mode 100644 mods/farming/strawberry.lua delete mode 100644 mods/farming/sugar.lua delete mode 100644 mods/farming/textures/farming_baked_potato.png delete mode 100644 mods/farming/textures/farming_banana.png delete mode 100644 mods/farming/textures/farming_banana_leaves.png delete mode 100644 mods/farming/textures/farming_banana_sapling.png delete mode 100644 mods/farming/textures/farming_barley.png delete mode 100644 mods/farming/textures/farming_barley_1.png delete mode 100644 mods/farming/textures/farming_barley_2.png delete mode 100644 mods/farming/textures/farming_barley_3.png delete mode 100644 mods/farming/textures/farming_barley_4.png delete mode 100644 mods/farming/textures/farming_barley_5.png delete mode 100644 mods/farming/textures/farming_barley_6.png delete mode 100644 mods/farming/textures/farming_barley_7.png delete mode 100644 mods/farming/textures/farming_barley_seed.png delete mode 100644 mods/farming/textures/farming_beanbush.png delete mode 100644 mods/farming/textures/farming_beanpole.png delete mode 100644 mods/farming/textures/farming_beanpole_1.png delete mode 100644 mods/farming/textures/farming_beanpole_2.png delete mode 100644 mods/farming/textures/farming_beanpole_3.png delete mode 100644 mods/farming/textures/farming_beanpole_4.png delete mode 100644 mods/farming/textures/farming_beanpole_5.png delete mode 100644 mods/farming/textures/farming_beans.png delete mode 100644 mods/farming/textures/farming_blueberries.png delete mode 100644 mods/farming/textures/farming_blueberry_1.png delete mode 100644 mods/farming/textures/farming_blueberry_2.png delete mode 100644 mods/farming/textures/farming_blueberry_3.png delete mode 100644 mods/farming/textures/farming_blueberry_4.png delete mode 100644 mods/farming/textures/farming_blueberry_muffin.png delete mode 100644 mods/farming/textures/farming_bottle_ethanol.png delete mode 100644 mods/farming/textures/farming_bread.png delete mode 100644 mods/farming/textures/farming_carrot.png delete mode 100644 mods/farming/textures/farming_carrot_1.png delete mode 100644 mods/farming/textures/farming_carrot_2.png delete mode 100644 mods/farming/textures/farming_carrot_3.png delete mode 100644 mods/farming/textures/farming_carrot_4.png delete mode 100644 mods/farming/textures/farming_carrot_5.png delete mode 100644 mods/farming/textures/farming_carrot_6.png delete mode 100644 mods/farming/textures/farming_carrot_7.png delete mode 100644 mods/farming/textures/farming_carrot_8.png delete mode 100644 mods/farming/textures/farming_carrot_gold.png delete mode 100644 mods/farming/textures/farming_chocolate_dark.png delete mode 100644 mods/farming/textures/farming_cocoa_1.png delete mode 100644 mods/farming/textures/farming_cocoa_2.png delete mode 100644 mods/farming/textures/farming_cocoa_3.png delete mode 100644 mods/farming/textures/farming_cocoa_beans.png delete mode 100644 mods/farming/textures/farming_coffee_1.png delete mode 100644 mods/farming/textures/farming_coffee_2.png delete mode 100644 mods/farming/textures/farming_coffee_3.png delete mode 100644 mods/farming/textures/farming_coffee_4.png delete mode 100644 mods/farming/textures/farming_coffee_5.png delete mode 100644 mods/farming/textures/farming_coffee_beans.png delete mode 100644 mods/farming/textures/farming_coffee_cup.png delete mode 100644 mods/farming/textures/farming_coffee_cup_hot.png delete mode 100644 mods/farming/textures/farming_cookie.png delete mode 100644 mods/farming/textures/farming_corn.png delete mode 100644 mods/farming/textures/farming_corn_1.png delete mode 100644 mods/farming/textures/farming_corn_2.png delete mode 100644 mods/farming/textures/farming_corn_3.png delete mode 100644 mods/farming/textures/farming_corn_4.png delete mode 100644 mods/farming/textures/farming_corn_5.png delete mode 100644 mods/farming/textures/farming_corn_6.png delete mode 100644 mods/farming/textures/farming_corn_7.png delete mode 100644 mods/farming/textures/farming_corn_8.png delete mode 100644 mods/farming/textures/farming_corn_cob.png delete mode 100644 mods/farming/textures/farming_cotton.png delete mode 100644 mods/farming/textures/farming_cotton_1.png delete mode 100644 mods/farming/textures/farming_cotton_2.png delete mode 100644 mods/farming/textures/farming_cotton_3.png delete mode 100644 mods/farming/textures/farming_cotton_4.png delete mode 100644 mods/farming/textures/farming_cotton_5.png delete mode 100644 mods/farming/textures/farming_cotton_6.png delete mode 100644 mods/farming/textures/farming_cotton_7.png delete mode 100644 mods/farming/textures/farming_cotton_8.png delete mode 100644 mods/farming/textures/farming_cotton_seed.png delete mode 100644 mods/farming/textures/farming_cucumber.png delete mode 100644 mods/farming/textures/farming_cucumber_1.png delete mode 100644 mods/farming/textures/farming_cucumber_2.png delete mode 100644 mods/farming/textures/farming_cucumber_3.png delete mode 100644 mods/farming/textures/farming_cucumber_4.png delete mode 100644 mods/farming/textures/farming_desert_sand_soil.png delete mode 100644 mods/farming/textures/farming_desert_sand_soil_wet.png delete mode 100644 mods/farming/textures/farming_desert_sand_soil_wet_side.png delete mode 100644 mods/farming/textures/farming_donut.png delete mode 100644 mods/farming/textures/farming_donut_apple.png delete mode 100644 mods/farming/textures/farming_donut_chocolate.png delete mode 100644 mods/farming/textures/farming_flour.png delete mode 100644 mods/farming/textures/farming_grapebush.png delete mode 100644 mods/farming/textures/farming_grapes.png delete mode 100644 mods/farming/textures/farming_grapes_1.png delete mode 100644 mods/farming/textures/farming_grapes_2.png delete mode 100644 mods/farming/textures/farming_grapes_3.png delete mode 100644 mods/farming/textures/farming_grapes_4.png delete mode 100644 mods/farming/textures/farming_grapes_5.png delete mode 100644 mods/farming/textures/farming_grapes_6.png delete mode 100644 mods/farming/textures/farming_grapes_7.png delete mode 100644 mods/farming/textures/farming_grapes_8.png delete mode 100644 mods/farming/textures/farming_melon_1.png delete mode 100644 mods/farming/textures/farming_melon_2.png delete mode 100644 mods/farming/textures/farming_melon_3.png delete mode 100644 mods/farming/textures/farming_melon_4.png delete mode 100644 mods/farming/textures/farming_melon_5.png delete mode 100644 mods/farming/textures/farming_melon_6.png delete mode 100644 mods/farming/textures/farming_melon_7.png delete mode 100644 mods/farming/textures/farming_melon_side.png delete mode 100644 mods/farming/textures/farming_melon_slice.png delete mode 100644 mods/farming/textures/farming_melon_top.png delete mode 100644 mods/farming/textures/farming_orange.png delete mode 100644 mods/farming/textures/farming_orange_1.png delete mode 100644 mods/farming/textures/farming_orange_2.png delete mode 100644 mods/farming/textures/farming_orange_3.png delete mode 100644 mods/farming/textures/farming_orange_4.png delete mode 100644 mods/farming/textures/farming_orange_seed.png delete mode 100644 mods/farming/textures/farming_potato.png delete mode 100644 mods/farming/textures/farming_potato_1.png delete mode 100644 mods/farming/textures/farming_potato_2.png delete mode 100644 mods/farming/textures/farming_potato_3.png delete mode 100644 mods/farming/textures/farming_potato_4.png delete mode 100644 mods/farming/textures/farming_potato_seed.png delete mode 100644 mods/farming/textures/farming_pumpkin_1.png delete mode 100644 mods/farming/textures/farming_pumpkin_2.png delete mode 100644 mods/farming/textures/farming_pumpkin_3.png delete mode 100644 mods/farming/textures/farming_pumpkin_4.png delete mode 100644 mods/farming/textures/farming_pumpkin_5.png delete mode 100644 mods/farming/textures/farming_pumpkin_6.png delete mode 100644 mods/farming/textures/farming_pumpkin_7.png delete mode 100644 mods/farming/textures/farming_pumpkin_8.png delete mode 100644 mods/farming/textures/farming_pumpkin_bread.png delete mode 100644 mods/farming/textures/farming_pumpkin_dough.png delete mode 100644 mods/farming/textures/farming_pumpkin_face_off.png delete mode 100644 mods/farming/textures/farming_pumpkin_face_on.png delete mode 100644 mods/farming/textures/farming_pumpkin_seed.png delete mode 100644 mods/farming/textures/farming_pumpkin_side.png delete mode 100644 mods/farming/textures/farming_pumpkin_slice.png delete mode 100644 mods/farming/textures/farming_pumpkin_top.png delete mode 100644 mods/farming/textures/farming_raspberries.png delete mode 100644 mods/farming/textures/farming_raspberry_1.png delete mode 100644 mods/farming/textures/farming_raspberry_2.png delete mode 100644 mods/farming/textures/farming_raspberry_3.png delete mode 100644 mods/farming/textures/farming_raspberry_4.png delete mode 100644 mods/farming/textures/farming_raspberry_seed.png delete mode 100644 mods/farming/textures/farming_raspberry_smoothie.png delete mode 100644 mods/farming/textures/farming_rhubarb.png delete mode 100644 mods/farming/textures/farming_rhubarb_1.png delete mode 100644 mods/farming/textures/farming_rhubarb_2.png delete mode 100644 mods/farming/textures/farming_rhubarb_3.png delete mode 100644 mods/farming/textures/farming_rhubarb_pie.png delete mode 100644 mods/farming/textures/farming_rhubarb_seed.png delete mode 100644 mods/farming/textures/farming_scarecrow_front.png delete mode 100644 mods/farming/textures/farming_scarecrow_front_light.png delete mode 100644 mods/farming/textures/farming_scarecrow_side.png delete mode 100644 mods/farming/textures/farming_scarecrow_top.png delete mode 100644 mods/farming/textures/farming_soil.png delete mode 100644 mods/farming/textures/farming_soil_wet.png delete mode 100644 mods/farming/textures/farming_soil_wet_side.png delete mode 100644 mods/farming/textures/farming_straw.png delete mode 100644 mods/farming/textures/farming_strawberry.png delete mode 100644 mods/farming/textures/farming_strawberry_1.png delete mode 100644 mods/farming/textures/farming_strawberry_2.png delete mode 100644 mods/farming/textures/farming_strawberry_3.png delete mode 100644 mods/farming/textures/farming_strawberry_4.png delete mode 100644 mods/farming/textures/farming_strawberry_5.png delete mode 100644 mods/farming/textures/farming_strawberry_6.png delete mode 100644 mods/farming/textures/farming_strawberry_7.png delete mode 100644 mods/farming/textures/farming_strawberry_8.png delete mode 100644 mods/farming/textures/farming_sugar.png delete mode 100644 mods/farming/textures/farming_tomato.png delete mode 100644 mods/farming/textures/farming_tomato_1.png delete mode 100644 mods/farming/textures/farming_tomato_2.png delete mode 100644 mods/farming/textures/farming_tomato_3.png delete mode 100644 mods/farming/textures/farming_tomato_4.png delete mode 100644 mods/farming/textures/farming_tomato_5.png delete mode 100644 mods/farming/textures/farming_tomato_6.png delete mode 100644 mods/farming/textures/farming_tomato_7.png delete mode 100644 mods/farming/textures/farming_tomato_8.png delete mode 100644 mods/farming/textures/farming_tomato_seed.png delete mode 100644 mods/farming/textures/farming_tool_bronzehoe.png delete mode 100644 mods/farming/textures/farming_tool_diamondhoe.png delete mode 100644 mods/farming/textures/farming_tool_mesehoe.png delete mode 100644 mods/farming/textures/farming_tool_steelhoe.png delete mode 100644 mods/farming/textures/farming_tool_stonehoe.png delete mode 100644 mods/farming/textures/farming_tool_woodhoe.png delete mode 100644 mods/farming/textures/farming_trellis.png delete mode 100644 mods/farming/textures/farming_wheat.png delete mode 100644 mods/farming/textures/farming_wheat_1.png delete mode 100644 mods/farming/textures/farming_wheat_2.png delete mode 100644 mods/farming/textures/farming_wheat_3.png delete mode 100644 mods/farming/textures/farming_wheat_4.png delete mode 100644 mods/farming/textures/farming_wheat_5.png delete mode 100644 mods/farming/textures/farming_wheat_6.png delete mode 100644 mods/farming/textures/farming_wheat_7.png delete mode 100644 mods/farming/textures/farming_wheat_8.png delete mode 100644 mods/farming/textures/farming_wheat_seed.png delete mode 100644 mods/farming/textures/vessels_drinking_cup.png delete mode 100644 mods/farming/todo.md delete mode 100644 mods/farming/tomato.lua delete mode 100644 mods/farming/wheat.lua 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 3fa40f25..00000000 --- a/mods/boats/README.txt +++ /dev/null @@ -1,20 +0,0 @@ -Minetest 0.4 mod: boats -======================= -by PilzAdam, slightly modified for NeXt -changed by TenPlus1 to add some new features - - boat is destroyed when crashing (drops 3 wood) - - boat turns faster - - used model from ds_rowboat mod - -License of source code: ------------------------ -WTFPL - -License of media (textures and sounds): ---------------------------------------- -WTFPL - -Authors of media files: ------------------------ -textures: Zeg9 -model: thetoon and Zeg9, modified by PavelS(SokolovPavel) diff --git a/mods/boats/depends.txt b/mods/boats/depends.txt deleted file mode 100644 index 7c506cfb..00000000 --- a/mods/boats/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -mobs? \ No newline at end of file diff --git a/mods/boats/init.lua b/mods/boats/init.lua deleted file mode 100644 index 136e09f4..00000000 --- a/mods/boats/init.lua +++ /dev/null @@ -1,336 +0,0 @@ -handlers = {} - -minetest.register_on_leaveplayer(function(player) - handlers[player:get_player_name()] = nil -end) - --- --- Helper functions --- - -local function is_water(pos) - - return minetest.get_item_group(minetest.get_node(pos).name, "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 square = math.sqrt - -local function get_v(v) - - return square(v.x *v.x + v.z *v.z) -end - --- --- Boat entity --- - -local boat = { - physical = true, - --collisionbox = {-0.5, -0.4, -0.5, 0.5, 0.3, 0.5}, -- rowboat - collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5}, -- boat - visual = "mesh", - --mesh = "rowboat.x", - mesh = "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 - - handlers[name] = nil - self.driver = nil - - clicker:set_detach() - - default.player_attached[name] = false - default.player_set_animation(clicker, "stand" , 30) - - local pos = clicker:getpos() - - minetest.after(0.1, function() - clicker:setpos({x=pos.x, y=pos.y+0.2, z=pos.z}) - end) - - elseif not self.driver then - - if handlers[name] and handlers[name].driver then - handlers[name].driver = nil - end - - handlers[name] = self.object:get_luaentity() - 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) - - self.object:setyaw(clicker:get_look_yaw() - math.pi / 2) - end -end - -function boat.on_activate(self, staticdata, dtime_s) - - if (mobs and mobs.entity and mobs.entity == false) - or not self then - self.object:remove() - return - end - - self.object:set_armor_groups({immortal = 1}) - self.v = 0 - self.v2 = self.v - self.last_v = self.v - self.count = 0 -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 - local name = puncher:get_player_name() - puncher:set_detach() - self.driver = nil - handlers[name] = nil - default.player_attached[name] = false - end - - if not self.driver then - - self.removed = true - - if not minetest.setting_getbool("creative_mode") then - - local inv = puncher:get_inventory() - - if inv:room_for_item("main", "boats:boat") then - inv:add_item("main", "boats:boat") - else - minetest.add_item(self.object:getpos(), "boats:boat") - end - end - - self.object:remove() - end -end - -function boat.on_step(self, dtime) - - -- after 10 seconds remove boat and drop as item if not boarded - self.count = self.count + dtime - - if self.count > 10 then - minetest.add_item(self.object:getpos(), "boats:boat") - self.object:remove() - return - end - - self.v = get_v(self.object:getvelocity()) * get_sign(self.v) - - if self.driver then - - self.count = 0 - - 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.08) -- 0.03 changed to speed up turning - else - self.object:setyaw(yaw + (1 + dtime) * 0.08) -- 0.03 - end - - elseif ctrl.right then - - if self.v < 0 then - self.object:setyaw(yaw + (1 + dtime) * 0.08) -- 0.03 - else - self.object:setyaw(yaw - (1 + dtime) * 0.08) -- 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() - local new_velo = {x = 0, y = 0, z = 0} - local new_acce = {x = 0, y = 0, z = 0} - - p.y = p.y - 0.5 - - 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 = 0, z = 0} -- y was 1 - 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) - - -- if boat comes to sudden stop then it has crashed, destroy boat and drop 3x wood - if self.v2 - self.v >= 3 then - - if self.driver then ---print ("Crash! with driver", self.v2 - self.v) - self.driver:set_detach() - default.player_attached[self.driver:get_player_name()] = false - default.player_set_animation(self.driver, "stand" , 30) - else ---print ("Crash! no driver") - end - - minetest.add_item(self.object:getpos(), "default:wood 3") - - self.object:remove() - - return - end - - self.v2 = self.v - -end - -minetest.register_entity("boats:boat", boat) - -minetest.register_craftitem("boats:boat", { - description = "Boat", - --inventory_image = "rowboat_inventory.png", - inventory_image = "boats_inventory.png", - --wield_image = "rowboat_wield.png", - wield_image = "boats_wield.png", - wield_scale = {x = 2, y = 2, z = 1}, - liquids_pointable = true, - - on_place = function(itemstack, placer, pointed_thing) - - if pointed_thing.type ~= "node" - or not is_water(pointed_thing.under) then - return - end - - pointed_thing.under.y = pointed_thing.under.y + 0.5 - - minetest.add_entity(pointed_thing.under, "boats:boat") - - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - - return itemstack - end, -}) - -minetest.register_craft({ - output = "boats:boat", - recipe = { - {"", "", ""}, - {"group:wood", "", "group:wood"}, - {"group:wood", "group:wood", "group:wood"}, - }, -}) - -minetest.register_alias("ds_rowboat:ds_rowboat", "boats:boat") - -print ("[MOD] Boats loaded") diff --git a/mods/boats/models/boat.obj b/mods/boats/models/boat.obj deleted file mode 100644 index 0f21e47f..00000000 --- a/mods/boats/models/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/models/rowboat.x b/mods/boats/models/rowboat.x deleted file mode 100644 index 73a61df3..00000000 --- a/mods/boats/models/rowboat.x +++ /dev/null @@ -1,760 +0,0 @@ -xof 0303txt 0032 - -Frame Root { - FrameTransformMatrix { - 1.000000, 0.000000, 0.000000, 0.000000, - 0.000000,-0.000000, 1.000000, 0.000000, - 0.000000, 1.000000, 0.000000, 0.000000, - 0.000000, 0.000000, 0.000000, 1.000000;; - } - Frame Cube_000 { - FrameTransformMatrix { - 1.000000, 0.000000, 0.000000, 0.000000, - 0.000000, 1.000000, 0.000000, 0.000000, - 0.000000, 0.000000, 1.000000, 0.000000, - 0.000000, 0.000000, 0.000000, 1.000000;; - } - Mesh { // Cube_000 mesh - 240; - 6.000000; 3.999999; 2.376923;, - 5.999998;-8.000001; 2.376923;, - 5.999998;-8.000001; 4.376923;, - 6.000001; 3.999999; 4.376923;, - -2.000000; 8.000000; 2.376923;, - 2.000000; 8.000000; 2.376923;, - 2.000001; 8.000000; 4.376923;, - -1.999999; 8.000000; 4.376923;, - -6.000000; 4.000000; 4.376923;, - -6.000001;-8.000000; 4.376923;, - -6.000001;-7.999999; 2.376923;, - -6.000000; 4.000000; 2.376923;, - -3.999999; 6.000001; 2.376923;, - -1.999999; 6.000000; 2.376923;, - -2.000001;-8.000002; 2.376923;, - -4.000001;-8.000000; 2.376923;, - -2.000000; 4.000000;-1.623077;, - -2.000001;-7.999999;-1.623077;, - 1.999999;-8.000001;-1.623077;, - 2.000000; 4.000000;-1.623077;, - -2.000000; 4.000000; 0.376923;, - 2.000000; 3.999999; 0.376923;, - 1.999999;-8.000001; 0.376923;, - -2.000001;-8.000000; 0.376923;, - -2.000000; 4.000000;-1.623077;, - 2.000000; 4.000000;-1.623077;, - 2.000000; 3.999999; 0.376923;, - -2.000000; 4.000000; 0.376923;, - 2.000000; 4.000000;-1.623077;, - 1.999999;-8.000001;-1.623077;, - 1.999999;-8.000001; 0.376923;, - 2.000000; 3.999999; 0.376923;, - 1.999999;-8.000001;-1.623077;, - -2.000001;-7.999999;-1.623077;, - -2.000001;-8.000000; 0.376923;, - 1.999999;-8.000001; 0.376923;, - -2.000000; 4.000000; 0.376923;, - -2.000001;-8.000000; 0.376923;, - -2.000001;-7.999999;-1.623077;, - -2.000000; 4.000000;-1.623077;, - -4.000001;-8.000000; 0.376923;, - -4.000001;-10.000000; 0.376923;, - 4.000000;-10.000000; 0.376923;, - 3.999999;-8.000000; 0.376923;, - -4.000000;-7.999999; 4.376923;, - 4.000000;-8.000001; 4.376923;, - 3.999999;-10.000001; 4.376923;, - -4.000001;-10.000000; 4.376923;, - -4.000001;-8.000000; 0.376923;, - 3.999999;-8.000000; 0.376923;, - 4.000000;-8.000001; 4.376923;, - -4.000000;-7.999999; 4.376923;, - 3.999999;-8.000000; 0.376923;, - 4.000000;-10.000000; 0.376923;, - 3.999999;-10.000001; 4.376923;, - 4.000000;-8.000001; 4.376923;, - 4.000000;-10.000000; 0.376923;, - -4.000001;-10.000000; 0.376923;, - -4.000001;-10.000000; 4.376923;, - 3.999999;-10.000001; 4.376923;, - -4.000000;-7.999999; 4.376923;, - -4.000001;-10.000000; 4.376923;, - -4.000001;-10.000000; 0.376923;, - -4.000001;-8.000000; 0.376923;, - 4.000000; 4.000000; 2.376923;, - 3.999999;-8.000001; 2.376923;, - 5.999998;-8.000001; 2.376923;, - 6.000000; 3.999999; 2.376923;, - 4.000001; 4.000000; 4.376923;, - 6.000001; 3.999999; 4.376923;, - 5.999998;-8.000001; 4.376923;, - 4.000000;-8.000001; 4.376923;, - 4.000000; 4.000000; 2.376923;, - 6.000000; 3.999999; 2.376923;, - 6.000001; 3.999999; 4.376923;, - 4.000001; 4.000000; 4.376923;, - 5.999998;-8.000001; 2.376923;, - 3.999999;-8.000001; 2.376923;, - 4.000000;-8.000001; 4.376923;, - 5.999998;-8.000001; 4.376923;, - 4.000001; 4.000000; 4.376923;, - 4.000000;-8.000001; 4.376923;, - 3.999999;-8.000001; 2.376923;, - 4.000000; 4.000000; 2.376923;, - 2.000000; 6.000000; 0.376923;, - 1.999999;-8.000001; 0.376923;, - 3.999999;-8.000000; 0.376923;, - 4.000000; 6.000000; 0.376923;, - 2.000001; 6.000000; 2.376923;, - 4.000001; 5.999999; 2.376923;, - 3.999999;-8.000001; 2.376923;, - 1.999999;-8.000000; 2.376923;, - 2.000000; 6.000000; 0.376923;, - 4.000000; 6.000000; 0.376923;, - 4.000001; 5.999999; 2.376923;, - 2.000001; 6.000000; 2.376923;, - 4.000000; 6.000000; 0.376923;, - 3.999999;-8.000000; 0.376923;, - 3.999999;-8.000001; 2.376923;, - 4.000001; 5.999999; 2.376923;, - 3.999999;-8.000000; 0.376923;, - 1.999999;-8.000001; 0.376923;, - 1.999999;-8.000000; 2.376923;, - 3.999999;-8.000001; 2.376923;, - 2.000001; 6.000000; 2.376923;, - 1.999999;-8.000000; 2.376923;, - 1.999999;-8.000001; 0.376923;, - 2.000000; 6.000000; 0.376923;, - 2.000001; 6.000000; 2.376923;, - 2.000000; 4.000000; 2.376923;, - 4.000000; 4.000000; 2.376923;, - 4.000001; 5.999999; 2.376923;, - 2.000001; 6.000000; 4.376923;, - 4.000001; 5.999999; 4.376923;, - 4.000001; 4.000000; 4.376923;, - 2.000000; 4.000000; 4.376923;, - 2.000001; 6.000000; 2.376923;, - 4.000001; 5.999999; 2.376923;, - 4.000001; 5.999999; 4.376923;, - 2.000001; 6.000000; 4.376923;, - 4.000001; 5.999999; 2.376923;, - 4.000000; 4.000000; 2.376923;, - 4.000001; 4.000000; 4.376923;, - 4.000001; 5.999999; 4.376923;, - 4.000000; 4.000000; 2.376923;, - 2.000000; 4.000000; 2.376923;, - 2.000000; 4.000000; 4.376923;, - 4.000001; 4.000000; 4.376923;, - 2.000001; 6.000000; 4.376923;, - 2.000000; 4.000000; 4.376923;, - 2.000000; 4.000000; 2.376923;, - 2.000001; 6.000000; 2.376923;, - -3.999999; 6.000001; 2.376923;, - -4.000000; 4.000000; 2.376923;, - -2.000000; 4.000000; 2.376923;, - -1.999999; 6.000000; 2.376923;, - -3.999999; 6.000001; 4.376923;, - -1.999999; 6.000000; 4.376923;, - -2.000000; 4.000000; 4.376923;, - -4.000000; 3.999999; 4.376923;, - -3.999999; 6.000001; 2.376923;, - -1.999999; 6.000000; 2.376923;, - -1.999999; 6.000000; 4.376923;, - -3.999999; 6.000001; 4.376923;, - -1.999999; 6.000000; 2.376923;, - -2.000000; 4.000000; 2.376923;, - -2.000000; 4.000000; 4.376923;, - -1.999999; 6.000000; 4.376923;, - -2.000000; 4.000000; 2.376923;, - -4.000000; 4.000000; 2.376923;, - -4.000000; 3.999999; 4.376923;, - -2.000000; 4.000000; 4.376923;, - -3.999999; 6.000001; 4.376923;, - -4.000000; 3.999999; 4.376923;, - -4.000000; 4.000000; 2.376923;, - -3.999999; 6.000001; 2.376923;, - -2.000000; 8.000000; 2.376923;, - -1.999999; 6.000000; 2.376923;, - 2.000001; 6.000000; 2.376923;, - 2.000000; 8.000000; 2.376923;, - -1.999999; 8.000000; 4.376923;, - 2.000001; 8.000000; 4.376923;, - 2.000001; 6.000000; 4.376923;, - -1.999999; 6.000000; 4.376923;, - 2.000000; 8.000000; 2.376923;, - 2.000001; 6.000000; 2.376923;, - 2.000001; 6.000000; 4.376923;, - 2.000001; 8.000000; 4.376923;, - 2.000001; 6.000000; 2.376923;, - -1.999999; 6.000000; 2.376923;, - -1.999999; 6.000000; 4.376923;, - 2.000001; 6.000000; 4.376923;, - -1.999999; 8.000000; 4.376923;, - -1.999999; 6.000000; 4.376923;, - -1.999999; 6.000000; 2.376923;, - -2.000000; 8.000000; 2.376923;, - -2.000000; 6.000000; 0.376923;, - -2.000000; 4.000000; 0.376923;, - 2.000000; 3.999999; 0.376923;, - 2.000000; 6.000000; 0.376923;, - -1.999999; 6.000000; 2.376923;, - 2.000001; 6.000000; 2.376923;, - 2.000000; 4.000000; 2.376923;, - -2.000000; 4.000000; 2.376923;, - -2.000000; 6.000000; 0.376923;, - 2.000000; 6.000000; 0.376923;, - 2.000001; 6.000000; 2.376923;, - -1.999999; 6.000000; 2.376923;, - 2.000000; 6.000000; 0.376923;, - 2.000000; 3.999999; 0.376923;, - 2.000000; 4.000000; 2.376923;, - 2.000001; 6.000000; 2.376923;, - 2.000000; 3.999999; 0.376923;, - -2.000000; 4.000000; 0.376923;, - -2.000000; 4.000000; 2.376923;, - 2.000000; 4.000000; 2.376923;, - -1.999999; 6.000000; 2.376923;, - -2.000000; 4.000000; 2.376923;, - -2.000000; 4.000000; 0.376923;, - -2.000000; 6.000000; 0.376923;, - -6.000000; 4.000000; 2.376923;, - -6.000001;-7.999999; 2.376923;, - -4.000001;-8.000000; 2.376923;, - -4.000000; 4.000000; 2.376923;, - -6.000000; 4.000000; 4.376923;, - -4.000000; 3.999999; 4.376923;, - -4.000000;-7.999999; 4.376923;, - -6.000001;-8.000000; 4.376923;, - -6.000000; 4.000000; 2.376923;, - -4.000000; 4.000000; 2.376923;, - -4.000000; 3.999999; 4.376923;, - -6.000000; 4.000000; 4.376923;, - -4.000000; 4.000000; 2.376923;, - -4.000001;-8.000000; 2.376923;, - -4.000000;-7.999999; 4.376923;, - -4.000000; 3.999999; 4.376923;, - -4.000001;-8.000000; 2.376923;, - -6.000001;-7.999999; 2.376923;, - -6.000001;-8.000000; 4.376923;, - -4.000000;-7.999999; 4.376923;, - -4.000000; 6.000001; 0.376923;, - -4.000001;-8.000000; 0.376923;, - -2.000001;-8.000000; 0.376923;, - -2.000000; 6.000000; 0.376923;, - -4.000000; 6.000001; 0.376923;, - -2.000000; 6.000000; 0.376923;, - -1.999999; 6.000000; 2.376923;, - -3.999999; 6.000001; 2.376923;, - -2.000000; 6.000000; 0.376923;, - -2.000001;-8.000000; 0.376923;, - -2.000001;-8.000002; 2.376923;, - -1.999999; 6.000000; 2.376923;, - -2.000001;-8.000000; 0.376923;, - -4.000001;-8.000000; 0.376923;, - -4.000001;-8.000000; 2.376923;, - -2.000001;-8.000002; 2.376923;, - -3.999999; 6.000001; 2.376923;, - -4.000001;-8.000000; 2.376923;, - -4.000001;-8.000000; 0.376923;, - -4.000000; 6.000001; 0.376923;; - 60; - 4;0,1,2,3;, - 4;4,5,6,7;, - 4;8,9,10,11;, - 4;12,13,14,15;, - 4;16,17,18,19;, - 4;20,21,22,23;, - 4;24,25,26,27;, - 4;28,29,30,31;, - 4;32,33,34,35;, - 4;36,37,38,39;, - 4;40,41,42,43;, - 4;44,45,46,47;, - 4;48,49,50,51;, - 4;52,53,54,55;, - 4;56,57,58,59;, - 4;60,61,62,63;, - 4;64,65,66,67;, - 4;68,69,70,71;, - 4;72,73,74,75;, - 4;76,77,78,79;, - 4;80,81,82,83;, - 4;84,85,86,87;, - 4;88,89,90,91;, - 4;92,93,94,95;, - 4;96,97,98,99;, - 4;100,101,102,103;, - 4;104,105,106,107;, - 4;108,109,110,111;, - 4;112,113,114,115;, - 4;116,117,118,119;, - 4;120,121,122,123;, - 4;124,125,126,127;, - 4;128,129,130,131;, - 4;132,133,134,135;, - 4;136,137,138,139;, - 4;140,141,142,143;, - 4;144,145,146,147;, - 4;148,149,150,151;, - 4;152,153,154,155;, - 4;156,157,158,159;, - 4;160,161,162,163;, - 4;164,165,166,167;, - 4;168,169,170,171;, - 4;172,173,174,175;, - 4;176,177,178,179;, - 4;180,181,182,183;, - 4;184,185,186,187;, - 4;188,189,190,191;, - 4;192,193,194,195;, - 4;196,197,198,199;, - 4;200,201,202,203;, - 4;204,205,206,207;, - 4;208,209,210,211;, - 4;212,213,214,215;, - 4;216,217,218,219;, - 4;220,221,222,223;, - 4;224,225,226,227;, - 4;228,229,230,231;, - 4;232,233,234,235;, - 4;236,237,238,239;; - MeshNormals { // Cube_000 normals - 60; - -1.000000; 0.000000; 0.000000;, - 0.000000;-1.000000;-0.000000;, - 1.000000;-0.000000; 0.000000;, - 0.000000; 0.000000;-1.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -0.000000;-1.000000;-0.000000;, - -1.000000; 0.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - 1.000000;-0.000000;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -0.000000;-1.000000;-0.000000;, - -1.000000; 0.000000;-0.000000;, - 0.000000; 1.000000; 0.000000;, - 1.000000;-0.000000;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -0.000000;-1.000000;-0.000000;, - 0.000000; 1.000000; 0.000000;, - 1.000000;-0.000000;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -0.000000;-1.000000;-0.000001;, - -1.000000; 0.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - 1.000000;-0.000000;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -0.000000;-1.000000; 0.000000;, - -1.000000; 0.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - 1.000000;-0.000001;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -0.000001;-1.000000; 0.000000;, - -1.000000; 0.000001;-0.000000;, - -0.000000; 1.000000; 0.000000;, - 1.000000;-0.000000;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -1.000000;-0.000000; 0.000000;, - -0.000000; 1.000000;-0.000000;, - 1.000000; 0.000000;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - 0.000000;-1.000000;-0.000000;, - -1.000000; 0.000000; 0.000000;, - 0.000000; 1.000000;-0.000000;, - 1.000000;-0.000000;-0.000000;, - 0.000000; 0.000000; 1.000000;, - 0.000000; 0.000000;-1.000000;, - -0.000000;-1.000000;-0.000000;, - -1.000000; 0.000000; 0.000000;, - 0.000000; 1.000000; 0.000000;, - 0.000000; 0.000000; 1.000000;, - -0.000000;-1.000000;-0.000000;, - -1.000000; 0.000000; 0.000000;, - 0.000001; 1.000000; 0.000001;, - 1.000000;-0.000000;-0.000000;; - 60; - 4;0,0,0,0;, - 4;1,1,1,1;, - 4;2,2,2,2;, - 4;3,3,3,3;, - 4;4,4,4,4;, - 4;5,5,5,5;, - 4;6,6,6,6;, - 4;7,7,7,7;, - 4;8,8,8,8;, - 4;9,9,9,9;, - 4;10,10,10,10;, - 4;11,11,11,11;, - 4;12,12,12,12;, - 4;13,13,13,13;, - 4;14,14,14,14;, - 4;15,15,15,15;, - 4;16,16,16,16;, - 4;17,17,17,17;, - 4;18,18,18,18;, - 4;19,19,19,19;, - 4;20,20,20,20;, - 4;21,21,21,21;, - 4;22,22,22,22;, - 4;23,23,23,23;, - 4;24,24,24,24;, - 4;25,25,25,25;, - 4;26,26,26,26;, - 4;27,27,27,27;, - 4;28,28,28,28;, - 4;29,29,29,29;, - 4;30,30,30,30;, - 4;31,31,31,31;, - 4;32,32,32,32;, - 4;33,33,33,33;, - 4;34,34,34,34;, - 4;35,35,35,35;, - 4;36,36,36,36;, - 4;37,37,37,37;, - 4;38,38,38,38;, - 4;39,39,39,39;, - 4;40,40,40,40;, - 4;41,41,41,41;, - 4;42,42,42,42;, - 4;43,43,43,43;, - 4;44,44,44,44;, - 4;45,45,45,45;, - 4;46,46,46,46;, - 4;47,47,47,47;, - 4;48,48,48,48;, - 4;49,49,49,49;, - 4;50,50,50,50;, - 4;51,51,51,51;, - 4;52,52,52,52;, - 4;53,53,53,53;, - 4;54,54,54,54;, - 4;55,55,55,55;, - 4;56,56,56,56;, - 4;57,57,57,57;, - 4;58,58,58,58;, - 4;59,59,59,59;; - } // End of Cube_000 normals - MeshTextureCoords { // Cube_000 UV coordinates - 240; - 6.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 6.000000; 0.000000;, - 2.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 2.000000; 0.000000;, - 6.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 6.000000; 0.000000;, - 7.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 5.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 5.000000;-1.000000;, - 6.000000;-1.000000;, - 6.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 2.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 2.000000; 0.000000;, - 6.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 6.000000; 0.000000;, - 3.000000; 0.999999;, - 0.000000; 1.000000;, - 0.000000; 0.000001;, - 3.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000001; 1.000000;, - 0.000000;-4.000000;, - 1.000000;-4.000000;, - 1.000000;-3.000000;, - 0.999999; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-3.000000;, - 4.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 4.000000;-1.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 1.000000;-1.000000;, - 5.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-0.999999;, - 5.000000;-1.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 1.000000;-1.000000;, - 5.375000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 5.375000; 0.000000;, - 5.375000; 0.000000;, - 5.375000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;, - 6.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 6.000000; 0.000000;, - 7.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 1.000000;-1.000000;, - 1.000000;-1.000000;, - 0.999999; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 2.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000001;, - 2.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 1.000000;-1.000000;, - 1.000000;-1.000000;, - 0.999999; 1.000000;, - 0.000000; 1.000000;, - 0.000000;-1.000000;, - 2.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 2.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 2.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000001;, - 2.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;, - 7.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 6.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 6.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;, - 1.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 1.000000; 0.000000;, - 7.000000; 1.000000;, - 0.000000; 1.000000;, - 0.000000; 0.000000;, - 7.000000; 0.000000;; - } // End of Cube_000 UV coordinates - MeshMaterialList { // Cube_000 material list - 1; - 60; - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0;; - Material Material { - 0.640000; 0.640000; 0.640000; 1.000000;; - 96.078431; - 0.500000; 0.500000; 0.500000;; - 0.000000; 0.000000; 0.000000;; - TextureFilename {"default_wood.png";} - } - } // End of Cube_000 material list - } // End of Cube_000 mesh - } // End of Cube_000 -} // End of Root diff --git a/mods/boats/textures/boats_inventory.png b/mods/boats/textures/boats_inventory.png deleted file mode 100644 index f9d082e31625c099490403a56906e922e2ea9e72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 851 zcmV-Z1FZasP)>bI*)Nhm3B#3M=*L}JA!9HRz@*?WkF_AHc>+{j&Vqga7ao&Fo0-9c3?qe zR6TE8K~_mQd16INLponkKt(}5WKJ!rg-)P-N|<*>n|VftYCWQVN|tp)lXF9CR4=E3 zOr(KKj&DGUY(02gHk*4$o_j}wXFGsoI(Az!X;LqbaYBP;IB-`nU`i^CZ9s@>J9}X` zfn+vxTQz)OGkIP!b6GQIP%D~uM3QnrjBPxHXgYjiIcifdYEmsuJRy~ILX>krh-o=* zRxVvgDOf}&RYE14TQCv;002C6QchCF4C!)z#F_%)z?4wzjROrk zg#{I`ySuwv-~76p?lSrRYdN5Rg6?&ebLY%6bI z-nq};QSUzDun5`WTPSq6&@T6!4T~zlRFQC4DK5=Fe3b*&Ya)cAoQkrdfMie}9i0xe zz~?6l6eFw~7^$inDe-2?0((6T_%UzsiV=4?0YXMn^bDJenO^0@Ux!aE$C4=nlr4i( z(PP4u1SpW_7tagT{`IYM^0Q2Yu*Js)!RYZ%-d*VW}xw7 zaApN-Y~D;pq@3fvR?>;w(8Xe_NsBv}aFJ|=eSC6WN`O!7e>1udibU2qhRMiIzEB)* zz?%b_L?gY|lx( dAMEQD2kZ(bZYdv#XGG|aNV@)bxN++y^OPh8>jBr72S2Jx@ zEq`V`bXzl5Ml)+vF{gq~lypUiY(0~3JcMdHePla>X*qgeIeTF;sDn>~YCw8oK3YX8 zrGQMLeMpvbK#FcWQA99aNi0-BCX#bOh-W%uPB2P9FlkXKY*si?Jt3KPNPu87y7d!z z00001bW%=J06^y0W&i*IG)Y83R5;7+kXv?xAQVLd0)l9aK=G|HzG95cYyNX9w)v3N zA++~>xdBdTSqmSkCILNo9`d~K_;lU?lIGZh zQFU*qD3P!_$ZW(2`cRN^UHThnhBcH6gwu5h7)qtBnMH~{9t1b9 k#*!tWkz&lBcYo-<03BBywb>I+MgRZ+07*qoM6N<$f=^K0k^lez diff --git a/mods/boats/textures/rowboat_inventory.png b/mods/boats/textures/rowboat_inventory.png deleted file mode 100644 index 086bb92bc2b3f0a03463ff5474bf52dc75dbf760..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 444 zcmV;t0YmEoM$eeXDFv@CZ%pQsBka|C;0FH z0004WQchCt0yp^kFpwRvR;Xp=b(b#6;Q4sa+@-*C32f*(whM~ z^cFGSx~^-zkVMmO)jcK;-!6Pz7q7Ln8guAz0ECK&?yZZjYsq2>pwDTdobFV4xQ8xg zmRm%pyG{Xg3KJ?K>f3~wmp&YgNi>Kk)8%2?buqJ=sVC4U8=yxaUBttLnZ?XCrhCo- z=tT~&ZM!aJ7IXIiP-hzSsxobf3iGwpOnuOurvQ3WHM$mGEcaH8YTz6+{V@PKmDy@s zW6%|7(7T>#01+5eWMiVx^jD*1(A#1vZRg2u&`0Q=%)RrmcNReZ0=jZ%b?(dteFjwS m$jZt9eQheUBI#R6Kh!S(O%kS6$54g<0000_d0O^ z0004WQchCx0a0`j|pSFVVN&3wMU!9HvY%GLX zmVbrsM_lpRqSlM8lUuih;C>y^W8^x{1g;@ch%uBolZ1#E341__Qt5Lh3<)Mk$$)Bh%h_y<*;TPB{d5VK zrQyPd0Y4@}7gIut1I3)h=kcxrp+p=K;%kCZ28ES7L8L<>YGZJH1ZF#8Yf!V_ufW^t zs4!m=w+q;OOq>a4FK!UpkgMafdl9!*#(TTzssD def.maxlight then - tick_again(pos) - return - end - - -- grow - minetest.swap_node(pos, {name = def.next_plant}) - - -- 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 - - -- Register seed - local lbm_nodes = {mname .. ":seed_" .. pname} - local g = {seed = 1, snappy = 3, attached_node = 1} - 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", - 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({ - dug = {name = "default_grass_footstep", gain = 0.2}, - place = {name = "default_place_node", gain = 0.25}, - }), - - on_place = function(itemstack, placer, pointed_thing) - 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", - }) - - -- Register growing steps - for i = 1, def.steps do - local drop = { - items = { - {items = {mname .. ":" .. pname}, rarity = 9 - i}, - {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, - {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, - {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 2}, - } - } - local nodegroups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1} - nodegroups[pname] = i - - local next_plant = nil - local on_timer = nil - - if i < def.steps then - next_plant = mname .. ":" .. pname .. "_" .. (i + 1) - on_timer = farming.grow_plant - 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", - 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/banana.lua b/mods/farming/banana.lua deleted file mode 100644 index 492d1cf7..00000000 --- a/mods/farming/banana.lua +++ /dev/null @@ -1,70 +0,0 @@ -minetest.register_node("farming:banana_sapling", { - description = "Banana Tree Sapling", - drawtype = "plantlike", - tiles = {"farming_banana_sapling.png"}, - inventory_image = "farming_banana_sapling.png", - wield_image = "farming_banana_sapling.png", - paramtype = "light", - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} - }, - groups = {dig_immediate=3,flammable=2}, - sounds = default.node_sound_defaults(), -}) - -minetest.register_node("farming:banana_leaves", { - drawtype = "allfaces_optional", - tiles = {"farming_banana_leaves.png"}, - paramtype = "light", - groups = {snappy=3, leafdecay=3, flammable=2, not_in_creative_inventory=1}, - drop = { - max_items = 1, - items = { - { - items = {'farming:banana_sapling'}, - rarity = 20, - }, - { - items = {'farming:banana_leaves'}, - } - } -}, - sounds = default.node_sound_leaves_defaults(), -}) - -minetest.register_abm({ - nodenames = {"farming:banana_sapling"}, - interval = 60, - chance = 20, - action = function(pos, node) - farming.generate_tree(pos, "default:tree", "farming:banana_leaves", {"default:dirt", "default:dirt_with_grass"}, {["farming:banana"]=20}) - end -}) - -minetest.register_on_generated(function(minp, maxp, blockseed) - if math.random(1, 100) > 5 then - return - end - local tmp = {x=(maxp.x-minp.x)/2+minp.x, y=(maxp.y-minp.y)/2+minp.y, z=(maxp.z-minp.z)/2+minp.z} - local pos = minetest.find_node_near(tmp, maxp.x-minp.x, {"default:dirt_with_grass"}) - if pos ~= nil then - farming.generate_tree({x=pos.x, y=pos.y+1, z=pos.z}, "default:tree", "farming:banana_leaves", {"default:dirt", "default:dirt_with_grass"}, {["farming:banana"]=10}) - end -end) - -minetest.register_node("farming:banana", { - description = "Banana", - tiles = {"farming_banana.png"}, - inventory_image = "farming_banana.png", - wield_image = "farming_banana.png", - drawtype = "torchlike", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - groups = {fleshy=3,dig_immediate=3,flammable=2,leafdecay=3,leafdecay_drop=1}, - sounds = default.node_sound_defaults(), - - on_use = minetest.item_eat(6), -}) diff --git a/mods/farming/barley.lua b/mods/farming/barley.lua deleted file mode 100644 index d69b0bad..00000000 --- a/mods/farming/barley.lua +++ /dev/null @@ -1,96 +0,0 @@ - --- barley seeds -minetest.register_node("farming:seed_barley", { - description = "Barley Seed", - tiles = {"farming_barley_seed.png"}, - inventory_image = "farming_barley_seed.png", - wield_image = "farming_barley_seed.png", - drawtype = "signlike", - groups = {seed = 1, snappy = 3, attached_node = 1}, - paramtype = "light", - paramtype2 = "wallmounted", - walkable = false, - sunlight_propagates = true, - selection_box = farming.select, - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:barley_1") - end, -}) - --- harvested barley -minetest.register_craftitem("farming:barley", { - description = "barley", - inventory_image = "farming_barley.png", -}) - --- flour -minetest.register_craft({ - type = "shapeless", - output = "farming:flour", - recipe = {"farming:barley", "farming:barley", "farming:barley", "farming:barley"} -}) - --- barley definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_barley_1.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "", - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:barley_1", table.copy(crop_def)) - --- stage 2 -crop_def.tiles = {"farming_barley_2.png"} -minetest.register_node("farming:barley_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_barley_3.png"} -minetest.register_node("farming:barley_3", table.copy(crop_def)) - --- stage 4 -crop_def.tiles = {"farming_barley_4.png"} -minetest.register_node("farming:barley_4", table.copy(crop_def)) - --- stage 5 -crop_def.tiles = {"farming_barley_5.png"} -crop_def.drop = { - items = { - {items = {'farming:barley'}, rarity = 2}, - {items = {'farming:seed_barley'}, rarity = 2}, - } -} -minetest.register_node("farming:barley_5", table.copy(crop_def)) - --- stage 6 -crop_def.tiles = {"farming_barley_6.png"} -crop_def.drop = { - items = { - {items = {'farming:barley'}, rarity = 2}, - {items = {'farming:seed_barley'}, rarity = 1}, - } -} -minetest.register_node("farming:barley_6", table.copy(crop_def)) - --- stage 7 (final) -crop_def.tiles = {"farming_barley_7.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:barley'}, rarity = 1}, - {items = {'farming:barley'}, rarity = 3}, - {items = {'farming:seed_barley'}, rarity = 1}, - {items = {'farming:seed_barley'}, rarity = 3}, - } -} -minetest.register_node("farming:barley_7", table.copy(crop_def)) diff --git a/mods/farming/beanpole.lua b/mods/farming/beanpole.lua deleted file mode 100644 index cda736f9..00000000 --- a/mods/farming/beanpole.lua +++ /dev/null @@ -1,194 +0,0 @@ ---[[ - All textures by - (C) Auke Kok - CC-BY-SA-3.0 -]] - --- beans -minetest.register_craftitem("farming:beans", { - description = "Green Beans", - inventory_image = "farming_beans.png", - on_use = minetest.item_eat(1), - - on_place = function(itemstack, placer, pointed_thing) - - if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then - return - end - - local nodename = minetest.get_node(pointed_thing.under).name - - if nodename == "farming:beanpole" then - minetest.set_node(pointed_thing.under, {name = "farming:beanpole_1"}) - - minetest.sound_play("default_place_node", {pos = pointed_thing.above, gain = 1.0}) - else - return - end - - if not minetest.setting_getbool("creative_mode") then - - itemstack:take_item() - - -- check for refill - if itemstack:get_count() == 0 then - - minetest.after(0.20, - farming.refill_plant, - placer, - "farming:beans", - placer:get_wield_index() - ) - end - end - - return itemstack - end -}) - --- beans can be used for green dye -minetest.register_craft({ - output = "dye:green", - recipe = { - {'farming:beans'}, - } -}) - --- beanpole -minetest.register_node("farming:beanpole", { - description = "Bean Pole (place on soil before planting beans)", - drawtype = "plantlike", - tiles = {"farming_beanpole.png"}, - inventory_image = "farming_beanpole.png", - visual_scale = 1.45, - paramtype = "light", - walkable = false, - buildable_to = true, - sunlight_propagates = true, - drop = "farming:beanpole", - selection_box = farming.select, - groups = {snappy = 3, flammable = 2, attached_node = 1}, - sounds = default.node_sound_leaves_defaults(), - - on_place = function(itemstack, placer, pointed_thing) - - if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then - return - end - - local nodename = minetest.get_node(pointed_thing.under).name - - if minetest.get_item_group(nodename, "soil") < 2 then - return - end - - local top = { - x = pointed_thing.above.x, - y = pointed_thing.above.y + 1, - z = pointed_thing.above.z - } - - nodename = minetest.get_node(top).name - - if nodename ~= "air" then - return - end - - minetest.set_node(pointed_thing.above, {name = "farming:beanpole"}) - - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - - return itemstack - end -}) - -minetest.register_craft({ - output = "farming:beanpole", - recipe = { - {'', '', ''}, - {'default:stick', '', 'default:stick'}, - {'default:stick', '', 'default:stick'}, - } -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:beanpole", - burntime = 10, -}) - --- green bean definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_beanpole_1.png"}, - visual_scale = 1.45, - paramtype = "light", - walkable = false, - buildable_to = true, - sunlight_propagates = true, - drop = { - items = { - {items = {'farming:beanpole'}, rarity = 1}, - } - }, - selection_box = farming.select, - groups = { - snappy = 3, flammable = 3, not_in_creative_inventory = 1, - attached_node = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:beanpole_1", table.copy(crop_def)) - --- stage2 -crop_def.tiles = {"farming_beanpole_2.png"} -minetest.register_node("farming:beanpole_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_beanpole_3.png"} -minetest.register_node("farming:beanpole_3", table.copy(crop_def)) - --- stage 4 -crop_def.tiles = {"farming_beanpole_4.png"} -minetest.register_node("farming:beanpole_4", table.copy(crop_def)) - --- stage 5 (final) -crop_def.tiles = {"farming_beanpole_5.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:beanpole'}, rarity = 1}, - {items = {'farming:beans 3'}, rarity = 1}, - {items = {'farming:beans 2'}, rarity = 2}, - {items = {'farming:beans 2'}, rarity = 3}, - } -} -minetest.register_node("farming:beanpole_5", table.copy(crop_def)) - --- wild green bean bush (this is what you find on the map) -minetest.register_node("farming:beanbush", { - drawtype = "plantlike", - tiles = {"farming_beanbush.png"}, - paramtype = "light", - waving = 1, - walkable = false, - buildable_to = true, - sunlight_propagates = true, - drop = { - items = { - {items = {'farming:beans 1'}, rarity = 1}, - {items = {'farming:beans 1'}, rarity = 2}, - {items = {'farming:beans 1'}, rarity = 3}, - } - }, - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory=1 - }, - sounds = default.node_sound_leaves_defaults(), -}) diff --git a/mods/farming/blueberry.lua b/mods/farming/blueberry.lua deleted file mode 100644 index 6a29ba97..00000000 --- a/mods/farming/blueberry.lua +++ /dev/null @@ -1,65 +0,0 @@ - --- blueberries -minetest.register_craftitem("farming:blueberries", { - description = "Blueberries", - inventory_image = "farming_blueberries.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:blueberry_1") - end, - on_use = minetest.item_eat(1), -}) - --- blueberry muffin (thanks to sosogirl123 @ deviantart.com for muffin image) - -minetest.register_craftitem("farming:muffin_blueberry", { - description = "Blueberry Muffin", - inventory_image = "farming_blueberry_muffin.png", - on_use = minetest.item_eat(2), -}) - -minetest.register_craft({ - output = "farming:muffin_blueberry 2", - recipe = { - {"farming:blueberries", "farming:bread", "farming:blueberries"}, - } -}) - --- blueberry definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_blueberry_1.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "", - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:blueberry_1", table.copy(crop_def)) - --- stage 2 -crop_def.tiles = {"farming_blueberry_2.png"} -minetest.register_node("farming:blueberry_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_blueberry_3.png"} -minetest.register_node("farming:blueberry_3", table.copy(crop_def)) - --- stage 4 (final) -crop_def.tiles = {"farming_blueberry_4.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:blueberries 2'}, rarity = 1}, - {items = {'farming:blueberries'}, rarity = 2}, - {items = {'farming:blueberries'}, rarity = 3}, - } -} -minetest.register_node("farming:blueberry_4", table.copy(crop_def)) diff --git a/mods/farming/carrot.lua b/mods/farming/carrot.lua deleted file mode 100644 index 90c1b918..00000000 --- a/mods/farming/carrot.lua +++ /dev/null @@ -1,103 +0,0 @@ - ---[[ - Original textures from PixelBox texture pack - https://forum.minetest.net/viewtopic.php?id=4990 -]] - -minetest.register_craftitem("farming:carrot_seed", { - description = "Carrot Seeds", - inventory_image = "farming_carrot_seed.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:carrot_1") - end -}) - --- carrot -minetest.register_craftitem("farming:carrot", { - description = "Carrot", - inventory_image = "farming_carrot.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:carrot_1") - end, - on_use = minetest.item_eat(4), -}) - --- golden carrot -minetest.register_craftitem("farming:carrot_gold", { - description = "Golden Carrot", - inventory_image = "farming_carrot_gold.png", - on_use = minetest.item_eat(6), -}) - -minetest.register_craft({ - output = "farming:carrot_gold", - recipe = { - {"", "default:gold_lump", ""}, - {"default:gold_lump", "farming:carrot", "default:gold_lump"}, - {"", "default:gold_lump", ""}, - } -}) - --- carrot definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_carrot_1.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "", - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - - --- stage 1 -minetest.register_node("farming:carrot_1", table.copy(crop_def)) - --- stage 2 -crop_def.tiles = {"farming_carrot_2.png"} -minetest.register_node("farming:carrot_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_carrot_3.png"} -minetest.register_node("farming:carrot_3", table.copy(crop_def)) - --- stage 4 -crop_def.tiles = {"farming_carrot_4.png"} -minetest.register_node("farming:carrot_4", table.copy(crop_def)) - --- stage 5 -crop_def.tiles = {"farming_carrot_5.png"} -minetest.register_node("farming:carrot_5", table.copy(crop_def)) - --- stage 6 -crop_def.tiles = {"farming_carrot_6.png"} -minetest.register_node("farming:carrot_6", table.copy(crop_def)) - --- stage 7 -crop_def.tiles = {"farming_carrot_7.png"} -crop_def.drop = { - items = { - {items = {'farming:carrot'}, rarity = 1}, - {items = {'farming:carrot_seed'}, rarity = 1}, - {items = {'farming:carrot 2'}, rarity = 3}, - } -} -minetest.register_node("farming:carrot_7", table.copy(crop_def)) - --- stage 8 (final) -crop_def.tiles = {"farming_carrot_8.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:carrot 2'}, rarity = 1}, - {items = {'farming:carrot_seed'}, rarity = 1}, - {items = {'farming:carrot 3'}, rarity = 2}, - } -} -minetest.register_node("farming:carrot_8", table.copy(crop_def)) diff --git a/mods/farming/cocoa.lua b/mods/farming/cocoa.lua deleted file mode 100644 index a11a6110..00000000 --- a/mods/farming/cocoa.lua +++ /dev/null @@ -1,172 +0,0 @@ - --- place cocoa -function place_cocoa(itemstack, placer, pointed_thing, plantname) - - local pt = pointed_thing - - -- check if pointing at a node - if not pt or pt.type ~= "node" then - return - end - - local under = minetest.get_node(pt.under) - - -- return if any of the nodes are not registered - if not minetest.registered_nodes[under.name] then - return - end - - -- check if pointing at jungletree - if under.name ~= "default:jungletree" - or minetest.get_node(pt.above).name ~= "air" then - return - end - - -- add the node and remove 1 item from the itemstack - minetest.set_node(pt.above, {name = plantname}) - - minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}) - - if not minetest.setting_getbool("creative_mode") then - - itemstack:take_item() - - -- check for refill - if itemstack:get_count() == 0 then - - minetest.after(0.20, - farming.refill_plant, - placer, - "farming:cocoa_beans", - placer:get_wield_index() - ) - end - end - - return itemstack -end - --- cocoa beans -minetest.register_craftitem("farming:cocoa_beans", { - description = "Cocoa Beans", - inventory_image = "farming_cocoa_beans.png", - on_place = function(itemstack, placer, pointed_thing) - return place_cocoa(itemstack, placer, pointed_thing, "farming:cocoa_1") - end, -}) - -minetest.register_craft( { - output = "dye:brown 2", - recipe = { - { "farming:cocoa_beans" }, - } -}) - --- chocolate cookie -minetest.register_craftitem("farming:cookie", { - description = "Cookie", - inventory_image = "farming_cookie.png", - on_use = minetest.item_eat(2), -}) - -minetest.register_craft( { - output = "farming:cookie 8", - recipe = { - { "farming:wheat", "farming:cocoa_beans", "farming:wheat" }, - } -}) - --- bar of dark chocolate (thanks to Ice Pandora for her deviantart.com chocolate tutorial) -minetest.register_craftitem("farming:chocolate_dark", { - description = "Bar of Dark Chocolate", - inventory_image = "farming_chocolate_dark.png", - on_use = minetest.item_eat(3), -}) - -minetest.register_craft( { - output = "farming:chocolate_dark", - recipe = { - { "farming:cocoa_beans", "farming:cocoa_beans", "farming:cocoa_beans" }, - } -}) - --- cocoa definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_cocoa_1.png"}, - paramtype = "light", - walkable = true, - drop = { - items = { - {items = {'farming:cocoa_beans 1'}, rarity = 2}, - } - }, - selection_box = { - type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} - }, - groups = { - snappy = 3, flammable = 2, plant = 1, growing = 1, - not_in_creative_inventory=1, leafdecay = 1, leafdecay_drop = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:cocoa_1", table.copy(crop_def)) - --- stage2 -crop_def.tiles = {"farming_cocoa_2.png"} -crop_def.drop = { - items = { - {items = {'farming:cocoa_beans 1'}, rarity = 1}, - } -} -minetest.register_node("farming:cocoa_2", table.copy(crop_def)) - --- stage 3 (final) -crop_def.tiles = {"farming_cocoa_3.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:cocoa_beans 2'}, rarity = 1}, - {items = {'farming:cocoa_beans 1'}, rarity = 2}, - } -} -minetest.register_node("farming:cocoa_3", table.copy(crop_def)) - --- add random cocoa pods to jungle tree trunks -minetest.register_abm({ - nodenames = {"default:jungletree"}, - neighbors = {"default:jungleleaves", "moretrees:jungletree_leaves_green"}, - interval = 8, - chance = 80, - catch_up = false, - action = function(pos, node) - - local dir = math.random(1, 50) - - if dir == 1 then - pos.x = pos.x + 1 - elseif dir == 2 then - pos.x = pos.x - 1 - elseif dir == 3 then - pos.z = pos.z + 1 - elseif dir == 4 then - pos.z = pos.z -1 - else return - end - - local nodename = minetest.get_node(pos).name - - if nodename == "air" - and minetest.get_node_light(pos) > 12 then - - --print ("Cocoa Pod added at " .. minetest.pos_to_string(pos)) - - minetest.set_node(pos, { - name = "farming:cocoa_" .. tostring(math.random(1, 3)) - }) - end - end, -}) diff --git a/mods/farming/coffee.lua b/mods/farming/coffee.lua deleted file mode 100644 index c9854e6e..00000000 --- a/mods/farming/coffee.lua +++ /dev/null @@ -1,130 +0,0 @@ - --- coffee -minetest.register_craftitem("farming:coffee_beans", { - description = "Coffee Beans", - inventory_image = "farming_coffee_beans.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:coffee_1") - end, -}) - - --- drinking cup -minetest.register_node("farming:drinking_cup", { - description = "Drinking Cup (empty)", - drawtype = "plantlike", - tiles = {"vessels_drinking_cup.png"}, - inventory_image = "vessels_drinking_cup.png", - wield_image = "vessels_drinking_cup.png", - paramtype = "light", - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25} - }, - groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, - sounds = default.node_sound_glass_defaults(), -}) - -minetest.register_craft( { - output = "farming:drinking_cup 5", - recipe = { - { "default:glass", "", "default:glass" }, - {"", "default:glass",""}, - } -}) - --- cold cup of coffee -minetest.register_node("farming:coffee_cup", { - description = "Cold Cup of Coffee", - drawtype = "plantlike", - tiles = {"farming_coffee_cup.png"}, - inventory_image = "farming_coffee_cup.png", - wield_image = "farming_coffee_cup.png", - paramtype = "light", - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25} - }, - groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, - on_use = minetest.item_eat(2, "farming:drinking_cup"), - sounds = default.node_sound_glass_defaults(), -}) - -minetest.register_craft( { - output = "farming:coffee_cup", - recipe = { - {"farming:drinking_cup", "farming:coffee_beans","bucket:bucket_water"}, - }, - replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}} -}) - -minetest.register_craft({ - type = "cooking", - cooktime = 5, - output = "farming:coffee_cup_hot", - recipe = "farming:coffee_cup" -}) - --- hot cup of coffee -minetest.register_node("farming:coffee_cup_hot", { - description = "Hot Cup of Coffee", - drawtype = "plantlike", - tiles = {"farming_coffee_cup_hot.png"}, - inventory_image = "farming_coffee_cup_hot.png", - wield_image = "farming_coffee_cup_hot.png", - paramtype = "light", - walkable = false, - selection_box = { - type = "fixed", - fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25} - }, - groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, - on_use = minetest.item_eat(3, "farming:drinking_cup"), - sounds = default.node_sound_glass_defaults(), -}) - --- coffee definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_coffee_1.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "", - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:coffee_1", table.copy(crop_def)) - --- stage 2 -crop_def.tiles = {"farming_coffee_2.png"} -minetest.register_node("farming:coffee_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_coffee_3.png"} -minetest.register_node("farming:coffee_3", table.copy(crop_def)) - --- stage 4 -crop_def.tiles = {"farming_coffee_4.png"} -minetest.register_node("farming:coffee_4", table.copy(crop_def)) - --- stage 5 (final) -crop_def.tiles = {"farming_coffee_5.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:coffee_beans 2'}, rarity = 1}, - {items = {'farming:coffee_beans 2'}, rarity = 2}, - {items = {'farming:coffee_beans 2'}, rarity = 3}, - } -} -minetest.register_node("farming:coffee_5", table.copy(crop_def)) diff --git a/mods/farming/compatibility.lua b/mods/farming/compatibility.lua deleted file mode 100644 index 07a53404..00000000 --- a/mods/farming/compatibility.lua +++ /dev/null @@ -1,78 +0,0 @@ --- Banana -minetest.register_alias("farming_plus:banana_sapling", "farming:banana_sapling") -minetest.register_alias("farming_plus:banana_leaves", "farming:banana_leaves") -minetest.register_alias("farming_plus:banana", "farming:banana") - --- Carrot -minetest.register_alias("farming_plus:carrot_seed", "farming:carrot_seed") -minetest.register_alias("farming_plus:carrot_1", "farming:carrot_1") -minetest.register_alias("farming_plus:carrot_2", "farming:carrot_4") -minetest.register_alias("farming_plus:carrot_3", "farming:carrot_6") -minetest.register_alias("farming_plus:carrot", "farming:carrot_8") -minetest.register_alias("farming_plus:carrot_item", "farming:carrot") - --- Cocoa -minetest.register_alias("farming_plus:cocoa_sapling", "farming:cocoa_beans") -minetest.register_alias("farming_plus:cocoa_leaves", "default:leaves") -minetest.register_alias("farming_plus:cocoa", "default:apple") -minetest.register_alias("farming_plus:cocoa_bean", "farming:cocoa_beans") - --- Orange -minetest.register_alias("farming_plus:orange_1", "farming:orange_1") -minetest.register_alias("farming_plus:orange_2", "farming:orange_2") -minetest.register_alias("farming_plus:orange_3", "farming:orange_3") -minetest.register_alias("farming_plus:orange", "farming:orange_4") -minetest.register_alias("farming_plus:orange_8", "farming:orange") -minetest.register_alias("farming_plus:orange_item", "farming:orange_item") -minetest.register_alias("farming_plus:orange_seed", "farming:orange_seed") -minetest.register_alias("farming:orange", "farming:orange_4") - --- Potato -minetest.register_alias("farming_plus:potato_item", "farming:potato") -minetest.register_alias("farming_plus:potato_1", "farming:potato_1") -minetest.register_alias("farming_plus:potato_2", "farming:potato_2") -minetest.register_alias("farming_plus:potato", "farming:potato_3") -minetest.register_alias("farming_plus:potato_seed", "farming:potato_seed") - --- Pumpkin -minetest.register_alias("farming:pumpkin_seed", "farming:pumpkin_slice") -minetest.register_alias("farming:pumpkin_face", "farming:pumpkin") -minetest.register_alias("farming:pumpkin_face_light", "farming:jackolantern") -minetest.register_alias("farming:big_pumpkin", "farming:pumpkin") -minetest.register_alias("farming:big_pumpkin_side", "air") -minetest.register_alias("farming:big_pumpkin_corner", "air") -minetest.register_alias("farming:big_pumpkin_top", "air") -minetest.register_alias("farming:pumpkin_flour", "farming:pumpkin_dough") - --- Rhubarb -minetest.register_alias("farming_plus:rhubarb_seed", "farming:rhubarb_seed") -minetest.register_alias("farming_plus:rhubarb_1", "farming:rhubarb_1") -minetest.register_alias("farming_plus:rhubarb_2", "farming:rhubarb_2") -minetest.register_alias("farming_plus:rhubarb", "farming:rhubarb_3") -minetest.register_alias("farming_plus:rhubarb_item", "farming:rhubarb") - --- Strawberry -minetest.register_alias("farming_plus:strawberry_item", "farming:strawberry_item") -minetest.register_alias("farming_plus:strawberry_seed", "farming:strawberry_seed") -minetest.register_alias("farming_plus:strawberry_1", "farming:strawberry_1") -minetest.register_alias("farming_plus:strawberry_2", "farming:strawberry_2") -minetest.register_alias("farming_plus:strawberry_3", "farming:strawberry_3") -minetest.register_alias("farming_plus:strawberry", "farming:strawberry_3") -minetest.register_alias("farming:strawberry", "farming:strawberry_item") -minetest.register_alias("farming_plus:strawberry", "farming:strawberry_3") - --- Raspberry ---minetest.register_alias("farming_plus:raspberry_seed", "farming:raspberry_seed") ---minetest.register_alias("farming_plus:raspberrys", "farming:raspberrys") ---minetest.register_alias("farming_plus:raspberry_seed", "farming:raspberry_seed") - --- Tomato -minetest.register_alias("farming_plus:tomato_seed", "farming:tomato_seed") -minetest.register_alias("farming_plus:tomato_item", "farming:tomato") -minetest.register_alias("farming_plus:tomato_1", "farming:tomato_2") -minetest.register_alias("farming_plus:tomato_2", "farming:tomato_4") -minetest.register_alias("farming_plus:tomato_3", "farming:tomato_6") -minetest.register_alias("farming_plus:tomato", "farming:tomato_8") - --- Weed -minetest.register_alias("farming:weed", "default:grass_2") diff --git a/mods/farming/corn.lua b/mods/farming/corn.lua deleted file mode 100644 index 43707575..00000000 --- a/mods/farming/corn.lua +++ /dev/null @@ -1,114 +0,0 @@ - ---[[ - Original textures from GeMinecraft - http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/wip-mods/1440575-1-2-5-generation-minecraft-beta-1-2-farming-and -]] - --- corn -minetest.register_craftitem("farming:corn", { - description = "Corn", - inventory_image = "farming_corn.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:corn_1") - end, - on_use = minetest.item_eat(3), -}) - --- corn on the cob (texture by TenPlus1) -minetest.register_craftitem("farming:corn_cob", { - description = "Corn on the Cob", - inventory_image = "farming_corn_cob.png", - on_use = minetest.item_eat(5), -}) - -minetest.register_craft({ - type = "cooking", - cooktime = 10, - output = "farming:corn_cob", - recipe = "farming:corn" -}) - --- ethanol (thanks to JKMurray for this idea) -minetest.register_craftitem("farming:bottle_ethanol", { - description = "Bottle of Ethanol", - inventory_image = "farming_bottle_ethanol.png", -}) - -minetest.register_craft( { - output = "farming:bottle_ethanol", - recipe = { - { "vessels:glass_bottle", "farming:corn", "farming:corn"}, - { "farming:corn", "farming:corn", "farming:corn"}, - } -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:bottle_ethanol", - burntime = 240, - replacements = {{ "farming:bottle_ethanol", "vessels:glass_bottle"}} -}) - --- corn definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_corn_1.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "", - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:corn_1", table.copy(crop_def)) - --- stage 2 -crop_def.tiles = {"farming_corn_2.png"} -minetest.register_node("farming:corn_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_corn_3.png"} -minetest.register_node("farming:corn_3", table.copy(crop_def)) - --- stage 4 -crop_def.tiles = {"farming_corn_4.png"} -minetest.register_node("farming:corn_4", table.copy(crop_def)) - --- stage 5 -crop_def.tiles = {"farming_corn_5.png"} -minetest.register_node("farming:corn_5", table.copy(crop_def)) - --- stage 6 -crop_def.tiles = {"farming_corn_6.png"} -crop_def.visual_scale = 1.45 -minetest.register_node("farming:corn_6", table.copy(crop_def)) - --- stage 7 -crop_def.tiles = {"farming_corn_7.png"} -crop_def.drop = { - items = { - {items = {'farming:corn'}, rarity = 1}, - {items = {'farming:corn'}, rarity = 2}, - {items = {'farming:corn'}, rarity = 3}, - } -} -minetest.register_node("farming:corn_7", table.copy(crop_def)) - --- stage 8 (final) -crop_def.tiles = {"farming_corn_8.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:corn 2'}, rarity = 1}, - {items = {'farming:corn 2'}, rarity = 2}, - {items = {'farming:corn 2'}, rarity = 2}, - } -} -minetest.register_node("farming:corn_8", table.copy(crop_def)) diff --git a/mods/farming/cotton.lua b/mods/farming/cotton.lua deleted file mode 100644 index 2ddf88e2..00000000 --- a/mods/farming/cotton.lua +++ /dev/null @@ -1,114 +0,0 @@ - --- cotton seeds -minetest.register_node("farming:seed_cotton", { - description = "Cotton Seed", - tiles = {"farming_cotton_seed.png"}, - inventory_image = "farming_cotton_seed.png", - wield_image = "farming_cotton_seed.png", - drawtype = "signlike", - groups = {seed = 1, snappy = 3, attached_node = 1}, - paramtype = "light", - paramtype2 = "wallmounted", - walkable = false, - sunlight_propagates = true, - selection_box = farming.select, - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:cotton_1") - end, -}) - --- cotton / string - -minetest.register_craftitem("farming:cotton", { - description = "Cotton", - inventory_image = "farming_cotton.png", -}) - -minetest.register_alias("farming:string", "farming:cotton") - --- cotton to wool -minetest.register_craft({ - output = "wool:white", - recipe = { - {"farming:string", "farming:string"}, - {"farming:string", "farming:string"}, - } -}) - --- cotton definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_cotton_1.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "", - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:cotton_1", table.copy(crop_def)) - --- stage 2 -crop_def.tiles = {"farming_cotton_2.png"} -minetest.register_node("farming:cotton_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_cotton_3.png"} -minetest.register_node("farming:cotton_3", table.copy(crop_def)) - --- stage 4 -crop_def.tiles = {"farming_cotton_4.png"} -minetest.register_node("farming:cotton_4", table.copy(crop_def)) - --- stage 5 -crop_def.tiles = {"farming_cotton_5.png"} -crop_def.drop = { - items = { - {items = {"farming:seed_cotton"}, rarity = 1}, - } -} -minetest.register_node("farming:cotton_5", table.copy(crop_def)) - --- stage 6 -crop_def.tiles = {"farming_cotton_6.png"} -crop_def.drop = { - items = { - {items = {"farming:cotton"}, rarity = 1}, - {items = {"farming:cotton"}, rarity = 2}, - } -} -minetest.register_node("farming:cotton_6", table.copy(crop_def)) - --- stage 7 -crop_def.tiles = {"farming_cotton_7.png"} -crop_def.drop = { - items = { - {items = {"farming:cotton"}, rarity = 1}, - {items = {"farming:cotton"}, rarity = 2}, - {items = {"farming:seed_cotton"}, rarity = 1}, - {items = {"farming:seed_cotton"}, rarity = 2}, - } -} -minetest.register_node("farming:cotton_7", table.copy(crop_def)) - --- stage 8 (final) -crop_def.tiles = {"farming_cotton_8.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {"farming:string"}, rarity = 1}, - {items = {"farming:string"}, rarity = 2}, - {items = {"farming:string"}, rarity = 3}, - {items = {"farming:seed_cotton"}, rarity = 1}, - {items = {"farming:seed_cotton"}, rarity = 2}, - {items = {"farming:seed_cotton"}, rarity = 3}, - } -} -minetest.register_node("farming:cotton_8", table.copy(crop_def)) diff --git a/mods/farming/cucumber.lua b/mods/farming/cucumber.lua deleted file mode 100644 index 22e367bc..00000000 --- a/mods/farming/cucumber.lua +++ /dev/null @@ -1,53 +0,0 @@ - ---[[ - Original textures from DocFarming mod - https://forum.minetest.net/viewtopic.php?id=3948 -]] - --- cucumber -minetest.register_craftitem("farming:cucumber", { - description = "Cucumber", - inventory_image = "farming_cucumber.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:cucumber_1") - end, - on_use = minetest.item_eat(4), -}) - --- cucumber definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_cucumber_1.png"}, - paramtype = "light", - walkable = false, - buildable_to = true, - drop = "", - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:cucumber_1", table.copy(crop_def)) - --- stage 2 -crop_def.tiles = {"farming_cucumber_2.png"} -minetest.register_node("farming:cucumber_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_cucumber_3.png"} -minetest.register_node("farming:cucumber_3", table.copy(crop_def)) - --- stage 4 (final) -crop_def.tiles = {"farming_cucumber_4.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:cucumber'}, rarity = 1}, - {items = {'farming:cucumber 2'}, rarity = 2}, - } -} -minetest.register_node("farming:cucumber_4", table.copy(crop_def)) diff --git a/mods/farming/depends.txt b/mods/farming/depends.txt deleted file mode 100644 index be420a35..00000000 --- a/mods/farming/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -wool \ No newline at end of file diff --git a/mods/farming/description.txt b/mods/farming/description.txt deleted file mode 100644 index 58bdc810..00000000 --- a/mods/farming/description.txt +++ /dev/null @@ -1 +0,0 @@ -Adds many plants and food to Minetest \ No newline at end of file diff --git a/mods/farming/donut.lua b/mods/farming/donut.lua deleted file mode 100644 index 1b49848b..00000000 --- a/mods/farming/donut.lua +++ /dev/null @@ -1,45 +0,0 @@ --- Donut (thanks to Bockwurst for making the donut images) -minetest.register_craftitem("farming:donut", { - description = "Donut", - inventory_image = "farming_donut.png", - on_use = minetest.item_eat(4), -}) - -minetest.register_craft({ - output = "farming:donut 3", - recipe = { - {'', 'farming:wheat', ''}, - {'farming:wheat', '', 'farming:wheat'}, - {'', 'farming:wheat', ''}, - } -}) - --- Chocolate Donut -minetest.register_craftitem("farming:donut_chocolate", { - description = "Chocolate Donut", - inventory_image = "farming_donut_chocolate.png", - on_use = minetest.item_eat(6), -}) - -minetest.register_craft({ - output = "farming:donut_chocolate", - recipe = { - {'farming:cocoa_beans'}, - {'farming:donut'}, - } -}) - --- Apple Donut -minetest.register_craftitem("farming:donut_apple", { - description = "Apple Donut", - inventory_image = "farming_donut_apple.png", - on_use = minetest.item_eat(6), -}) - -minetest.register_craft({ - output = "farming:donut_apple", - recipe = { - {'default:apple'}, - {'farming:donut'}, - } -}) \ No newline at end of file diff --git a/mods/farming/grapes.lua b/mods/farming/grapes.lua deleted file mode 100644 index 9c93016b..00000000 --- a/mods/farming/grapes.lua +++ /dev/null @@ -1,201 +0,0 @@ - --- grapes -minetest.register_craftitem("farming:grapes", { - description = "Grapes", - inventory_image = "farming_grapes.png", - on_use = minetest.item_eat(2), - - on_place = function(itemstack, placer, pointed_thing) - - if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then - return - end - - local nodename = minetest.get_node(pointed_thing.under).name - - if nodename == "farming:trellis" then - minetest.set_node(pointed_thing.under, {name = "farming:grapes_1"}) - - minetest.sound_play("default_place_node", {pos = pointed_thing.above, gain = 1.0}) - else - return - end - - if not minetest.setting_getbool("creative_mode") then - - itemstack:take_item() - - -- check for refill - if itemstack:get_count() == 0 then - - minetest.after(0.20, - farming.refill_plant, - placer, - "farming:grapes", - placer:get_wield_index() - ) - end - end - - return itemstack - end -}) - --- grapes can be used for violet dye -minetest.register_craft({ - output = "dye:violet", - recipe = { - {'farming:grapes'}, - } -}) - --- trellis -minetest.register_node("farming:trellis", { - description = "Trellis (place on soil before planting grapes)", - drawtype = "plantlike", - tiles = {"farming_trellis.png"}, - inventory_image = "farming_trellis.png", - visual_scale = 1.45, - paramtype = "light", - walkable = false, - buildable_to = true, - sunlight_propagates = true, - drop = "farming:trellis", - selection_box = farming.select, - groups = {snappy = 3, flammable = 2, attached_node = 1}, - sounds = default.node_sound_leaves_defaults(), - - on_place = function(itemstack, placer, pointed_thing) - - if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then - return - end - - local nodename = minetest.get_node(pointed_thing.under).name - - if minetest.get_item_group(nodename, "soil") < 2 then - return - end - - local top = { - x = pointed_thing.above.x, - y = pointed_thing.above.y + 1, - z = pointed_thing.above.z - } - - nodename = minetest.get_node(top).name - - if nodename ~= "air" then - return - end - - minetest.set_node(pointed_thing.above, {name = "farming:trellis"}) - - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - - return itemstack - end -}) - -minetest.register_craft({ - output = "farming:trellis", - recipe = { - {'default:stick', 'default:stick', 'default:stick'}, - {'default:stick', 'default:stick', 'default:stick'}, - {'default:stick', 'default:stick', 'default:stick'}, - } -}) - -minetest.register_craft({ - type = "fuel", - recipe = "farming:trellis", - burntime = 15, -}) - --- grapes definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_grapes_1.png"}, - visual_scale = 1.45, - paramtype = "light", - walkable = false, - buildable_to = true, - sunlight_propagates = true, - drop = { - items = { - {items = {'farming:trellis'}, rarity = 1}, - } - }, - selection_box = farming.select, - groups = { - snappy = 3, flammable = 3, not_in_creative_inventory = 1, - attached_node = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:grapes_1", table.copy(crop_def)) - --- stage2 -crop_def.tiles = {"farming_grapes_2.png"} -minetest.register_node("farming:grapes_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_grapes_3.png"} -minetest.register_node("farming:grapes_3", table.copy(crop_def)) - --- stage 4 -crop_def.tiles = {"farming_grapes_4.png"} -minetest.register_node("farming:grapes_4", table.copy(crop_def)) - --- stage 5 -crop_def.tiles = {"farming_grapes_5.png"} -minetest.register_node("farming:grapes_5", table.copy(crop_def)) - --- stage 6 -crop_def.tiles = {"farming_grapes_6.png"} -minetest.register_node("farming:grapes_6", table.copy(crop_def)) - --- stage 7 -crop_def.tiles = {"farming_grapes_7.png"} -minetest.register_node("farming:grapes_7", table.copy(crop_def)) - --- stage 8 (final) -crop_def.tiles = {"farming_grapes_8.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:trellis'}, rarity = 1}, - {items = {'farming:grapes 3'}, rarity = 1}, - {items = {'farming:grapes 1'}, rarity = 2}, - {items = {'farming:grapes 1'}, rarity = 3}, - } -} -minetest.register_node("farming:grapes_8", table.copy(crop_def)) - --- wild grape vine (this is what you find on the map) -minetest.register_node("farming:grapebush", { - drawtype = "plantlike", - tiles = {"farming_grapebush.png"}, - paramtype = "light", - waving = 1, - walkable = false, - buildable_to = true, - sunlight_propagates = true, - drop = { - items = { - {items = {'farming:grapes 1'}, rarity = 1}, - {items = {'farming:grapes 1'}, rarity = 2}, - {items = {'farming:grapes 1'}, rarity = 3}, - } - }, - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory=1 - }, - sounds = default.node_sound_leaves_defaults(), -}) diff --git a/mods/farming/grass.lua b/mods/farming/grass.lua deleted file mode 100644 index aacb220f..00000000 --- a/mods/farming/grass.lua +++ /dev/null @@ -1,42 +0,0 @@ - -for i = 3, 5 do - - -- Override default grass and have it drop Wheat Seeds - - minetest.override_item("default:grass_" .. i, { - drop = { - max_items = 1, - items = { - {items = {'farming:seed_wheat'}, rarity = 5}, - {items = {'default:grass_1'}}, - } - }, - }) - - -- Override default dry grass and have it drop Barley Seeds - if minetest.registered_nodes["default:dry_grass_1"] then - - minetest.override_item("default:dry_grass_" .. i, { - drop = { - max_items = 1, - items = { - {items = {'farming:seed_barley'}, rarity = 6}, - {items = {'default:dry_grass_1'}}, - } - }, - }) - end - -end - --- Override default Jungle Grass and have it drop Cotton Seeds - -minetest.override_item("default:junglegrass", { - drop = { - max_items = 1, - items = { - {items = {'farming:seed_cotton'}, rarity = 8}, - {items = {'default:junglegrass'}}, - } - }, -}) diff --git a/mods/farming/hoes.lua b/mods/farming/hoes.lua deleted file mode 100644 index ef27d420..00000000 --- a/mods/farming/hoes.lua +++ /dev/null @@ -1,151 +0,0 @@ - --- Hoe registration function - -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 - }) - - -- 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", ""} - } - }) - end -end - --- Turns dirt with group soil=1 into soil - -function farming.hoe_on_use(itemstack, user, pointed_thing, uses) - - local pt = pointed_thing - - -- check if pointing at a node - if not pt or pt.type ~= "node" then - return - end - - local under = minetest.get_node(pt.under) - local upos = pointed_thing.under - - if minetest.is_protected(upos, user:get_player_name()) then - minetest.record_protection_violation(upos, user:get_player_name()) - return - end - - 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] - or 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 dirt - if minetest.get_item_group(under.name, "soil") ~= 1 then - return - end - - -- turn the node into soil, wear out item and play sound - minetest.set_node(pt.under, {name = "farming:soil"}) - - minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5}) - - if not minetest.setting_getbool("creative_mode") then - itemstack:add_wear(65535/(uses-1)) - end - - return itemstack -end - --- Define Hoes - -farming.register_hoe(":farming:hoe_wood", { - description = "Wooden Hoe", - inventory_image = "farming_tool_woodhoe.png", - max_uses = 30, - material = "group:wood" -}) - -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 2d92e094..00000000 --- a/mods/farming/init.lua +++ /dev/null @@ -1,797 +0,0 @@ ---[[ - Minetest Farming Redo Mod 1.22 (31st March 2016) - by TenPlus1 - NEW growing routine by prestidigitator - auto-refill by crabman77 -]] - -farming = {} -farming.mod = "redo" -farming.path = minetest.get_modpath("farming") -farming.hoe_on_use = default.hoe_on_use -farming.select = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5} -} - -farming.DEBUG = false --- farming.DEBUG = {} -- Uncomment to turn on profiling code/functions - -local DEBUG_abm_runs = 0 -local DEBUG_abm_time = 0 -local DEBUG_timer_runs = 0 -local DEBUG_timer_time = 0 - -if farming.DEBUG then - - function farming.DEBUG.reset_times() - DEBUG_abm_runs = 0 - DEBUG_abm_time = 0 - DEBUG_timer_runs = 0 - DEBUG_timer_time = 0 - end - - function farming.DEBUG.report_times() - - local abm_n = DEBUG_abm_runs - local abm_dt = DEBUG_abm_time - local abm_avg = (abm_n > 0 and abm_dt / abm_n) or 0 - local timer_n = DEBUG_timer_runs - local timer_dt = DEBUG_timer_time - local timer_avg = (timer_n > 0 and timer_dt / timer_n) or 0 - local dt = abm_dt + timer_dt - - print("ABM ran for "..abm_dt.."µs over "..abm_n.." runs: "..abm_avg.."µs/run") - print("Timer ran for "..timer_dt.."µs over "..timer_n.." runs: "..timer_avg.."µs/run") - print("Total farming time: "..dt.."µs") - end -end - -local statistics = dofile(farming.path.."/statistics.lua") - -dofile(farming.path.."/soil.lua") -dofile(farming.path.."/banana.lua") -dofile(farming.path.."/hoes.lua") -dofile(farming.path.."/grass.lua") -dofile(farming.path.."/wheat.lua") -dofile(farming.path.."/cotton.lua") -dofile(farming.path.."/carrot.lua") -dofile(farming.path.."/potato.lua") -dofile(farming.path.."/tomato.lua") -dofile(farming.path.."/cucumber.lua") -dofile(farming.path.."/corn.lua") -dofile(farming.path.."/coffee.lua") -dofile(farming.path.."/melon.lua") -dofile(farming.path.."/sugar.lua") -dofile(farming.path.."/pumpkin.lua") -dofile(farming.path.."/cocoa.lua") -dofile(farming.path.."/raspberry.lua") -dofile(farming.path.."/strawberry.lua") -dofile(farming.path.."/blueberry.lua") -dofile(farming.path.."/rhubarb.lua") -dofile(farming.path.."/beanpole.lua") -dofile(farming.path.."/grapes.lua") -dofile(farming.path.."/barley.lua") -dofile(farming.path.."/oranges.lua") -dofile(farming.path.."/donut.lua") -dofile(farming.path.."/mapgen.lua") -dofile(farming.path.."/compatibility.lua") -- Farming Plus compatibility - --- Utility Functions - -local time_speed = tonumber(minetest.setting_get("time_speed")) or 72 -local SECS_PER_CYCLE = (time_speed > 0 and 24 * 60 * 60 / time_speed) or 0 - -local function clamp(x, min, max) - return (x < min and min) or (x > max and max) or x -end - -local function in_range(x, min, max) - return min <= x and x <= max -end - ---- Tests the amount of day or night time between two times. - -- - -- @param t_game - -- The current time, as reported by mintest.get_gametime(). - -- @param t_day - -- The current time, as reported by mintest.get_timeofday(). - -- @param dt - -- The amount of elapsed time. - -- @param count_day - -- If true, count elapsed day time. Otherwise, count elapsed night time. - -- @return - -- The amount of day or night time that has elapsed. - -local function day_or_night_time(t_game, t_day, dt, count_day) - - local t1_day = t_day - dt / SECS_PER_CYCLE - local t1_c, t2_c -- t1_c < t2_c and t2_c always in [0, 1) - - if count_day then - - if t_day < 0.25 then - t1_c = t1_day + 0.75 -- Relative to sunup, yesterday - t2_c = t_day + 0.75 - else - t1_c = t1_day - 0.25 -- Relative to sunup, today - t2_c = t_day - 0.25 - end - else - if t_day < 0.75 then - t1_c = t1_day + 0.25 -- Relative to sundown, yesterday - t2_c = t_day + 0.25 - else - t1_c = t1_day - 0.75 -- Relative to sundown, today - t2_c = t_day - 0.75 - end - end - - local dt_c = clamp(t2_c, 0, 0.5) - clamp(t1_c, 0, 0.5) -- this cycle - - if t1_c < -0.5 then - local nc = math.floor(-t1_c) - t1_c = t1_c + nc - dt_c = dt_c + 0.5 * nc + clamp(-t1_c - 0.5, 0, 0.5) - end - - return dt_c * SECS_PER_CYCLE -end - ---- Tests the amount of elapsed day time. - -- - -- @param dt - -- The amount of elapsed time. - -- @return - -- The amount of day time that has elapsed. - -- -local function day_time(dt) - return day_or_night_time(minetest.get_gametime(), minetest.get_timeofday(), dt, true) -end - ---- Tests the amount of elapsed night time. - -- - -- @param dt - -- The amount of elapsed time. - -- @return - -- The amount of night time that has elapsed. - -- -local function night_time(time_game, time_day, dt, count_day) - return day_or_night_time(minetest.get_gametime(), minetest.get_timeofday(), dt, false) -end - - --- Growth Logic - -local STAGE_LENGTH_AVG = 160.0 -local STAGE_LENGTH_DEV = STAGE_LENGTH_AVG / 6 -local MIN_LIGHT = 13 -local MAX_LIGHT = 1000 - ---- Determines plant name and stage from node. - -- - -- Separates node name on the last underscore (_). - -- - -- @param node - -- Node or position table, or node name. - -- @return - -- List (plant_name, stage), or nothing (nil) if node isn't loaded - -local function plant_name_stage(node) - - local name - - if type(node) == 'table' then - - if node.name then - name = node.name - elseif node.x and node.y and node.z then - node = minetest.get_node_or_nil(node) - name = node and node.name - end - else - name = tostring(node) - end - - if not name or name == "ignore" then - return nil - end - - local sep_pos = name:find("_[^_]+$") - - if sep_pos and sep_pos > 1 then - - local stage = tonumber(name:sub(sep_pos + 1)) - - if stage and stage >= 0 then - return name:sub(1, sep_pos - 1), stage - end - end - - return name, 0 -end - --- Map from node name to --- { plant_name = ..., name = ..., stage = n, stages_left = { node_name, ... } } - -local plant_stages = {} - -farming.plant_stages = plant_stages - ---- Registers the stages of growth of a (possible plant) node. - -- - -- @param node - -- Node or position table, or node name. - -- @return - -- The (possibly zero) number of stages of growth the plant will go through - -- before being fully grown, or nil if not a plant. - -local register_plant_node - --- Recursive helper -local function reg_plant_stages(plant_name, stage, force_last) - - local node_name = plant_name and plant_name .. "_" .. stage - local node_def = node_name and minetest.registered_nodes[node_name] - - if not node_def then - return nil - end - - local stages = plant_stages[node_name] - - if stages then - return stages - end - - if minetest.get_item_group(node_name, "growing") > 0 then - - local ns = reg_plant_stages(plant_name, stage + 1, true) - local stages_left = (ns and { ns.name, unpack(ns.stages_left) }) or {} - - stages = { - plant_name = plant_name, - name = node_name, - stage = stage, - stages_left = stages_left - } - - if #stages_left > 0 then - - local old_constr = node_def.on_construct - local old_destr = node_def.on_destruct - - minetest.override_item(node_name, - { - on_construct = function(pos) - - if old_constr then - old_constr(pos) - end - - farming.handle_growth(pos) - end, - - on_destruct = function(pos) - - minetest.get_node_timer(pos):stop() - - if old_destr then - old_destr(pos) - end - end, - - on_timer = function(pos, elapsed) - return farming.plant_growth_timer(pos, elapsed, node_name) - end, - }) - end - - elseif force_last then - - stages = { - plant_name = plant_name, - name = node_name, - stage = stage, - stages_left = {} - } - else - return nil - end - - plant_stages[node_name] = stages - - return stages -end - -register_plant_node = function(node) - - local plant_name, stage = plant_name_stage(node) - - if plant_name then - - local stages = reg_plant_stages(plant_name, stage, false) - return stages and #stages.stages_left - else - return nil - end -end - -local function set_growing(pos, stages_left) - - if not stages_left then - return - end - - local timer = minetest.get_node_timer(pos) - - if stages_left > 0 then - - if not timer:is_started() then - - local stage_length = statistics.normal(STAGE_LENGTH_AVG, STAGE_LENGTH_DEV) - - stage_length = clamp(stage_length, 0.5 * STAGE_LENGTH_AVG, 3.0 * STAGE_LENGTH_AVG) - - timer:set(stage_length, -0.5 * math.random() * STAGE_LENGTH_AVG) - end - - elseif timer:is_started() then - timer:stop() - end -end - --- https://git.tchncs.de/Illuna-Minetest/farming_plus/blob/master/init.lua#L54 - -function farming.generate_tree(pos, trunk, leaves, underground, replacements) - pos.y = pos.y-1 - local nodename = minetest.get_node(pos).name - local ret = true - for _,name in ipairs(underground) do - if nodename == name then - ret = false - break - end - end - pos.y = pos.y+1 - if not minetest.get_node_light(pos) then - return - end - if ret or minetest.get_node_light(pos) < 8 then - return - end - - node = {name = ""} - for dy=1,4 do - pos.y = pos.y+dy - if minetest.get_node(pos).name ~= "air" then - return - end - pos.y = pos.y-dy - end - node.name = trunk - for dy=0,4 do - pos.y = pos.y+dy - minetest.set_node(pos, node) - pos.y = pos.y-dy - end - - if not replacements then - replacements = {} - end - - node.name = leaves - pos.y = pos.y+3 - for dx=-2,2 do - for dz=-2,2 do - for dy=0,3 do - pos.x = pos.x+dx - pos.y = pos.y+dy - pos.z = pos.z+dz - - if dx == 0 and dz == 0 and dy==3 then - if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then - minetest.set_node(pos, node) - for name,rarity in pairs(replacements) do - if math.random(1, rarity) == 1 then - minetest.set_node(pos, {name=name}) - end - end - end - elseif dx == 0 and dz == 0 and dy==4 then - if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then - minetest.set_node(pos, node) - for name,rarity in pairs(replacements) do - if math.random(1, rarity) == 1 then - minetest.set_node(pos, {name=name}) - end - end - end - elseif math.abs(dx) ~= 2 and math.abs(dz) ~= 2 then - if minetest.get_node(pos).name == "air" then - minetest.set_node(pos, node) - for name,rarity in pairs(replacements) do - if math.random(1, rarity) == 1 then - minetest.set_node(pos, {name=name}) - end - end - end - else - if math.abs(dx) ~= 2 or math.abs(dz) ~= 2 then - if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then - minetest.set_node(pos, node) - for name,rarity in pairs(replacements) do - if math.random(1, rarity) == 1 then - minetest.set_node(pos, {name=name}) - end - end - end - end - end - - pos.x = pos.x-dx - pos.y = pos.y-dy - pos.z = pos.z-dz - end - end - end -end - --- Detects a plant type node at the given position, starting --- or stopping the plant growth timer as appopriate - --- @param pos --- The node's position. --- @param node --- The cached node table if available, or nil. - -function farming.handle_growth(pos, node) - - if not pos then - return - end - - local stages_left = register_plant_node(node or pos) - - if stages_left then - set_growing(pos, stages_left) - end -end - -minetest.after(0, function() - - for _, node_def in pairs(minetest.registered_nodes) do - register_plant_node(node_def) - end -end) - -local abm_func = farming.handle_growth - -if farming.DEBUG then - - local normal_abm_func = abm_func - - abm_func = function(...) - - local t0 = minetest.get_us_time() - local r = { normal_abm_func(...) } - local t1 = minetest.get_us_time() - - DEBUG_abm_runs = DEBUG_abm_runs + 1 - DEBUG_abm_time = DEBUG_abm_time + (t1 - t0) - - return unpack(r) - end -end - --- Just in case a growing type or added node is missed (also catches existing --- nodes added to map before timers were incorporated). - -minetest.register_abm({ - nodenames = { "group:growing" }, - interval = 300, - chance = 1, - action = abm_func -}) - --- Plant timer function. --- Grows plants under the right conditions. - -function farming.plant_growth_timer(pos, elapsed, node_name) - - local stages = plant_stages[node_name] - - if not stages then - return false - end - - local max_growth = #stages.stages_left - - if max_growth <= 0 then - return false - end - - if stages.plant_name == "farming:cocoa" then - - if not minetest.find_node_near(pos, 1, - {"default:jungletree", "moretrees:jungletree_leaves_green"}) then - - return true - end - else - local under = minetest.get_node_or_nil({ x = pos.x, y = pos.y - 1, z = pos.z }) - - if not under or under.name ~= "farming:soil_wet" then - return true - end - end - - local growth - local light_pos = {x = pos.x, y = pos.y, z = pos.z} - local lambda = elapsed / STAGE_LENGTH_AVG - - if lambda < 0.1 then - return true - end - - if max_growth == 1 or lambda < 2.0 then - - local light = (minetest.get_node_light(light_pos) or 0) - --print ("light level:", light) - - if not in_range(light, MIN_LIGHT, MAX_LIGHT) then - return true - end - - growth = 1 - else - local night_light = (minetest.get_node_light(light_pos, 0) or 0) - local day_light = (minetest.get_node_light(light_pos, 0.5) or 0) - local night_growth = in_range(night_light, MIN_LIGHT, MAX_LIGHT) - local day_growth = in_range(day_light, MIN_LIGHT, MAX_LIGHT) - - if not night_growth then - - if not day_growth then - return true - end - - lambda = day_time(elapsed) / STAGE_LENGTH_AVG - - elseif not day_growth then - - lambda = night_time(elapsed) / STAGE_LENGTH_AVG - end - - growth = statistics.poisson(lambda, max_growth) - - if growth < 1 then - return true - end - end - - if minetest.registered_nodes[stages.stages_left[growth]] then - minetest.swap_node(pos, {name = stages.stages_left[growth]}) - else - return true - end - - return growth ~= max_growth -end - -if farming.DEBUG then - - local timer_func = farming.plant_growth_timer; - - farming.plant_growth_timer = function(pos, elapsed, node_name) - - local t0 = minetest.get_us_time() - local r = { timer_func(pos, elapsed, node_name) } - local t1 = minetest.get_us_time() - - DEBUG_timer_runs = DEBUG_timer_runs + 1 - DEBUG_timer_time = DEBUG_timer_time + (t1 - t0) - - return unpack(r) - end -end - --- refill placed plant by crabman (26/08/2015) -local can_refill_plant = { - ["farming:blueberry_1"] = "farming:blueberries", - ["farming:carrot_1"] = "farming:carrot", - ["farming:coffee_1"] = "farming:coffee_beans", - ["farming:corn_1"] = "farming:corn", - ["farming:cotton_1"] = "farming:seed_cotton", - ["farming:cucumber_1"] = "farming:cucumber", - ["farming:melon_1"] = "farming:melon_slice", - ["farming:potato_1"] = "farming:potato", - ["farming:pumpkin_1"] = "farming:pumpkin_slice", - ["farming:raspberry_1"] = "farming:raspberries", - ["farming:rhubarb_1"] = "farming:rhubarb", - ["farming:tomato_1"] = "farming:tomato", - ["farming:wheat_1"] = "farming:seed_wheat", - ["farming:grapes_1"] = "farming:grapes", - ["farming:beans_1"] = "farming:beans", - ["farming:rhubarb_1"] = "farming:rhubarb", - ["farming:cocoa_1"] = "farming:cocoa_beans", - ["farming:orange_1"] = "farming:orange_item", -} - -function farming.refill_plant(player, plantname, index) - - local inv = player:get_inventory() - local old_stack = inv:get_stack("main", index) - - if old_stack:get_name() ~= "" then - return - end - - for i, stack in pairs(inv:get_list("main")) do - - if stack:get_name() == plantname and i ~= index then - - inv:set_stack("main", index, stack) - stack:clear() - inv:set_stack("main", i, stack) - --minetest.log("action", "farming: refilled stack("..plantname..") of " .. player:get_player_name() ) - return - end - end -end - --- Place Seeds on Soil - -function farming.place_seed(itemstack, placer, pointed_thing, plantname) - - local pt = pointed_thing - - -- check if pointing at a node - if not pt or pt.type ~= "node" then - return - end - - local under = minetest.get_node(pt.under) - local above = minetest.get_node(pt.above) - - -- check if pointing at the top of the node - if pt.above.y ~= pt.under.y + 1 then - return - end - - -- return if any of the nodes is not registered - if not minetest.registered_nodes[under.name] - or not minetest.registered_nodes[above.name] then - return - end - - -- can I replace above node, and am I pointing at soil - if not minetest.registered_nodes[above.name].buildable_to - or minetest.get_item_group(under.name, "soil") < 2 - -- avoid multiple seed placement bug - or minetest.get_item_group(above.name, "plant") ~= 0 then - return - end - - -- if not protected then add node and remove 1 item from the itemstack - if not minetest.is_protected(pt.above, placer:get_player_name()) then - - minetest.set_node(pt.above, {name = plantname, param2 = 1}) - - minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}) - - if not minetest.setting_getbool("creative_mode") then - - itemstack:take_item() - - -- check for refill - if itemstack:get_count() == 0 - and can_refill_plant[plantname] then - - minetest.after(0.10, - farming.refill_plant, - placer, - can_refill_plant[plantname], - placer:get_wield_index() - ) - end - end - - return itemstack - end -end - --- Function to register plants (for compatibility) - -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 - - -- Register seed - 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 = {seed = 1, snappy = 3, attached_node = 1}, - paramtype = "light", - paramtype2 = "wallmounted", - walkable = false, - sunlight_propagates = true, - selection_box = farming.select, - - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, mname .. ":"..pname.."_1") - end, - }) - - -- Register harvest - minetest.register_craftitem(":" .. mname .. ":" .. pname, { - description = pname:gsub("^%l", string.upper), - inventory_image = mname .. "_" .. pname .. ".png", - }) - - -- Register growing steps - for i = 1, def.steps do - - local drop = { - items = { - {items = {mname .. ":" .. pname}, rarity = 9 - i}, - {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, - {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, - {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 2}, - } - } - - local g = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, growing = 1} - - -- Last step doesn't need growing=1 so Abm never has to check these - if i == def.steps then - g = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1} - end - - local node_name = mname .. ":" .. pname .. "_" .. i - - minetest.register_node(node_name, { - drawtype = "plantlike", - waving = 1, - tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"}, - paramtype = "light", - walkable = false, - buildable_to = true, - drop = drop, - selection_box = farming.select, - groups = g, - sounds = default.node_sound_leaves_defaults(), - }) - - register_plant_node(node_name) - end - - -- Return info - local r = {seed = mname .. ":seed_" .. pname, harvest = mname .. ":" .. pname} - return r -end - ---[[ Cotton (example, is already registered in cotton.lua) -farming.register_plant("farming:cotton", { - description = "Cotton2 seed", - inventory_image = "farming_cotton_seed.png", - steps = 8, -})]] diff --git a/mods/farming/init.lua_orig b/mods/farming/init.lua_orig deleted file mode 100644 index aee9976f..00000000 --- a/mods/farming/init.lua_orig +++ /dev/null @@ -1,192 +0,0 @@ ---[[ - Minetest Farming Redo Mod 1.14 (11th May 2015) - by TenPlus1 -]] - -farming = {} -farming.mod = "redo" -farming.path = minetest.get_modpath("farming") -farming.hoe_on_use = default.hoe_on_use - -dofile(farming.path.."/soil.lua") -dofile(farming.path.."/hoes.lua") -dofile(farming.path.."/grass.lua") -dofile(farming.path.."/wheat.lua") -dofile(farming.path.."/cotton.lua") -dofile(farming.path.."/carrot.lua") -dofile(farming.path.."/potato.lua") -dofile(farming.path.."/tomato.lua") -dofile(farming.path.."/cucumber.lua") -dofile(farming.path.."/corn.lua") -dofile(farming.path.."/coffee.lua") -dofile(farming.path.."/melon.lua") -dofile(farming.path.."/sugar.lua") -dofile(farming.path.."/pumpkin.lua") -dofile(farming.path.."/cocoa.lua") -dofile(farming.path.."/raspberry.lua") -dofile(farming.path.."/blueberry.lua") -dofile(farming.path.."/rhubarb.lua") -dofile(farming.path.."/beanpole.lua") -dofile(farming.path.."/donut.lua") -dofile(farming.path.."/mapgen.lua") -dofile(farming.path.."/compatibility.lua") -- Farming Plus compatibility - --- Place Seeds on Soil - -function farming.place_seed(itemstack, placer, pointed_thing, plantname) - local pt = pointed_thing - - -- check if pointing at a node - if not pt and pt.type ~= "node" then - return - end - - local under = minetest.get_node(pt.under) - local above = minetest.get_node(pt.above) - - -- check if pointing at the top of the node - if pt.above.y ~= pt.under.y+1 then - return - end - - -- return if any of the nodes is not registered - if not minetest.registered_nodes[under.name] - or not minetest.registered_nodes[above.name] then - return - end - - -- can I replace above node, and am I pointing at soil - if not minetest.registered_nodes[above.name].buildable_to - or minetest.get_item_group(under.name, "soil") < 2 - or minetest.get_item_group(above.name, "plant") ~= 0 then -- ADDED this line for multiple seed placement bug - return - end - - -- add the node and remove 1 item from the itemstack - if not minetest.is_protected(pt.above, placer:get_player_name()) then - minetest.add_node(pt.above, {name=plantname}) - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - return itemstack - end -end - --- Single ABM Handles Growing of All Plants - -minetest.register_abm({ - nodenames = {"group:growing"}, - neighbors = {"farming:soil_wet", "default:jungletree"}, - interval = 80, - chance = 2, - - action = function(pos, node) - - -- split plant name (e.g. farming:wheat_1) - local plant = node.name:split("_")[1].."_" - local numb = node.name:split("_")[2] - - -- fully grown ? - if not minetest.registered_nodes[plant..(numb + 1)] then return end - - -- cocoa pod on jungle tree ? - if plant ~= "farming:cocoa_" then - - -- growing on wet soil ? - if minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name ~= "farming:soil_wet" then return end - end - - -- enough light ? - if minetest.get_node_light(pos) < 13 then return end - - -- grow - minetest.set_node(pos, {name=plant..(numb + 1)}) - - end -}) - --- Function to register plants (for compatibility) - -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 - - -- Register seed - 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 = {seed = 1, snappy = 3, attached_node = 1}, - paramtype = "light", - paramtype2 = "wallmounted", - walkable = false, - sunlight_propagates = true, - selection_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, mname .. ":"..pname.."_1") - end - }) - - -- Register harvest - minetest.register_craftitem(":" .. mname .. ":" .. pname, { - description = pname:gsub("^%l", string.upper), - inventory_image = mname .. "_" .. pname .. ".png", - }) - - -- Register growing steps - for i=1,def.steps do - local drop = { - items = { - {items = {mname .. ":" .. pname}, rarity = 9 - i}, - {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, - {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, - {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 2}, - } - } - - local g = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, growing = 1} - -- Last step doesn't need growing=1 so Abm never has to check these - if i == def.steps then - g = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1} - end - - minetest.register_node(mname .. ":" .. pname .. "_" .. i, { - drawtype = "plantlike", - waving = 1, - tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"}, - paramtype = "light", - walkable = false, - buildable_to = true, - is_ground_content = true, - drop = drop, - selection_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, - groups = g, - sounds = default.node_sound_leaves_defaults(), - }) - end - - -- Return info - local r = {seed = mname .. ":seed_" .. pname, harvest = mname .. ":" .. pname} - return r -end - ---[[ Cotton (example, is already registered in cotton.lua) -farming.register_plant("farming:cotton", { - description = "Cotton seed", - inventory_image = "farming_cotton_seed.png", - steps = 8, -}) ---]] diff --git a/mods/farming/license.txt b/mods/farming/license.txt deleted file mode 100644 index 5d30c149..00000000 --- a/mods/farming/license.txt +++ /dev/null @@ -1,14 +0,0 @@ - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 2, December 2004 - - Copyright (C) 2004 Sam Hocevar - - Everyone is permitted to copy and distribute verbatim or modified - copies of this license document, and changing it is allowed as long - as the name is changed. - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. You just DO WHAT THE FUCK YOU WANT TO. \ No newline at end of file diff --git a/mods/farming/mapgen.lua b/mods/farming/mapgen.lua deleted file mode 100644 index 1cb46ca2..00000000 --- a/mods/farming/mapgen.lua +++ /dev/null @@ -1,65 +0,0 @@ --- decoration function -local function register_plant(name, min, max, spawnby, num) - minetest.register_decoration({ - deco_type = "simple", - place_on = {"default:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.006, - spread = {x = 100, y = 100, z = 100}, - seed = 329, - octaves = 3, - persist = 0.6 - }, - y_min = min, - y_max = max, - decoration = "farming:" .. name, - spawn_by = spawnby, - num_spawn_by = num, - }) -end - -function farming.register_mgv6_decorations() - register_plant("potato_3", 15, 40, "", -1) - register_plant("tomato_7", 5, 20, "", -1) - register_plant("carrot_8", 1, 30, "group:water", 1) - register_plant("cucumber_4", 1, 20, "group:water", 1) - register_plant("corn_7", 12, 22, "", -1) - register_plant("corn_8", 10, 20, "", -1) - register_plant("coffee_5", 20, 45, "", -1) - register_plant("melon_8", 1, 20, "group:water", 1) - register_plant("pumpkin_8", 1, 20, "group:water", 1) - register_plant("raspberry_4", 3, 10, "", -1) - register_plant("rhubarb_3", 3, 15, "", -1) - register_plant("blueberry_4", 3, 10, "", -1) - register_plant("beanbush", 18, 35, "", -1) - register_plant("grapebush", 25, 45, "", -1) - register_plant("strawberry_4", 3, 10, "", -1) -end - --- v7 maps have a beach so plants growing near water is limited to 6 high -function farming.register_mgv7_decorations() - register_plant("potato_3", 15, 40, "", -1) - register_plant("tomato_7", 5, 20, "", -1) - register_plant("carrot_8", 1, 6, "", -1) - register_plant("cucumber_4", 1, 6, "", -1) - register_plant("corn_7", 12, 22, "", -1) - register_plant("corn_8", 10, 20, "", -1) - register_plant("coffee_5", 20, 45, "", -1) - register_plant("melon_8", 1, 6, "", -1) - register_plant("pumpkin_8", 1, 6, "", -1) - register_plant("raspberry_4", 3, 10, "", -1) - register_plant("rhubarb_3", 3, 15, "", -1) - register_plant("blueberry_4", 3, 10, "", -1) - register_plant("beanbush", 18, 35, "", -1) - register_plant("grapebush", 25, 45, "", -1) - register_plant("strawberry_4", 3, 10, "", -1) -end - --- detect mapgen -if minetest.get_mapgen_params().mgname == "v6" then - farming.register_mgv6_decorations() -else - farming.register_mgv7_decorations() -end diff --git a/mods/farming/melon.lua b/mods/farming/melon.lua deleted file mode 100644 index fb59e7bf..00000000 --- a/mods/farming/melon.lua +++ /dev/null @@ -1,80 +0,0 @@ - --- melon -minetest.register_craftitem("farming:melon_slice", { - description = "Melon Slice", - inventory_image = "farming_melon_slice.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:melon_1") - end, - on_use = minetest.item_eat(2), -}) - -minetest.register_craft({ - output = "farming:melon_8", - recipe = { - {"farming:melon_slice", "farming:melon_slice", "farming:melon_slice"}, - {"farming:melon_slice", "farming:melon_slice", "farming:melon_slice"}, - {"farming:melon_slice", "farming:melon_slice", "farming:melon_slice"}, - } -}) - -minetest.register_craft({ - output = "farming:melon_slice 9", - recipe = { - {"", "farming:melon_8", ""}, - } -}) - --- melon definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_melon_1.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "", - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:melon_1", table.copy(crop_def)) - --- stage 2 -crop_def.tiles = {"farming_melon_2.png"} -minetest.register_node("farming:melon_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_melon_3.png"} -minetest.register_node("farming:melon_3", table.copy(crop_def)) - --- stage 4 -crop_def.tiles = {"farming_melon_4.png"} -minetest.register_node("farming:melon_4", table.copy(crop_def)) - --- stage 5 -crop_def.tiles = {"farming_melon_5.png"} -minetest.register_node("farming:melon_5", table.copy(crop_def)) - --- stage 6 -crop_def.tiles = {"farming_melon_6.png"} -minetest.register_node("farming:melon_6", table.copy(crop_def)) - --- stage 7 -crop_def.tiles = {"farming_melon_7.png"} -minetest.register_node("farming:melon_7", table.copy(crop_def)) - --- stage 8 (final) -crop_def.drawtype = "nodebox" -crop_def.description = "Melon" -crop_def.tiles = {"farming_melon_top.png", "farming_melon_top.png", "farming_melon_side.png"} -crop_def.selection_box = {-.5, -.5, -.5, .5, .5, .5} -crop_def.walkable = true -crop_def.groups = {snappy = 3, oddly_breakable_by_hand = 1, flammable = 2, plant = 1} -crop_def.drop = "farming:melon_slice 9" -minetest.register_node("farming:melon_8", table.copy(crop_def)) diff --git a/mods/farming/mod.conf b/mods/farming/mod.conf deleted file mode 100644 index 80ab8b0b..00000000 --- a/mods/farming/mod.conf +++ /dev/null @@ -1 +0,0 @@ -name = farming \ No newline at end of file diff --git a/mods/farming/oranges.lua b/mods/farming/oranges.lua deleted file mode 100644 index 88e39afa..00000000 --- a/mods/farming/oranges.lua +++ /dev/null @@ -1,58 +0,0 @@ -minetest.register_craftitem("farming:orange_seed", { - description = "Orange Seeds", - inventory_image = "farming_orange_seed.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:orange_1") - end -}) - -minetest.register_craftitem("farming:orange_item", { - description = "Orange", - inventory_image = "farming_orange.png", - on_use = minetest.item_eat(4), - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:orange_1") - end -}) - --- orange definition -local crop_def = { - paramtype = "plantlike", - walkable = false, - paramtype = "light", - sunlight_propagates = true, - buildable_to = true, - drawtype = "plantlike", - drop = "", - tiles = {"farming_orange_1.png"}, - selection_box = farming.select, - groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1,growing=1}, - sounds = default.node_sound_leaves_defaults(), -} - --- stage 1 -minetest.register_node("farming:orange_1", table.copy(crop_def)) - --- stage 2 -crop_def.tiles = {"farming_orange_2.png"} -minetest.register_node("farming:orange_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_orange_3.png"} -minetest.register_node("farming:orange_3", table.copy(crop_def)) - --- stage 4 -crop_def.tiles = {"farming_orange_4.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - { items = {'farming:orange_seed'} }, - { items = {'farming:orange_seed'}, rarity = 2}, - { items = {'farming:orange_seed'}, rarity = 5}, - { items = {'farming:orange_item'} }, - { items = {'farming:orange_item'}, rarity = 2 }, - { items = {'farming:orange_item'}, rarity = 5 }, - } -} - -minetest.register_node("farming:orange_4", table.copy(crop_def)) diff --git a/mods/farming/potato.lua b/mods/farming/potato.lua deleted file mode 100644 index fa95442c..00000000 --- a/mods/farming/potato.lua +++ /dev/null @@ -1,85 +0,0 @@ - ---[[ - Original textures from DocFarming mod - https://forum.minetest.net/viewtopic.php?id=3948 -]] - -minetest.register_craftitem("farming:potato_seed", { - description = "Potato Seeds", - inventory_image = "farming_potato_seed.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:potato_1") - end -}) - --- potato -minetest.register_craftitem("farming:potato", { - description = "Potato", - inventory_image = "farming_potato.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:potato_1") - end, - on_use = minetest.item_eat(1), -}) - --- baked potato -minetest.register_craftitem("farming:baked_potato", { - description = "Baked Potato", - inventory_image = "farming_baked_potato.png", - on_use = minetest.item_eat(6), -}) - -minetest.register_craft({ - type = "cooking", - cooktime = 10, - output = "farming:baked_potato", - recipe = "farming:potato" -}) - --- potato definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_potato_1.png"}, - paramtype = "light", - sunlight_propagates = true, - waving = 1, - walkable = false, - buildable_to = true, - drop = "", - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:potato_1", table.copy(crop_def)) - --- stage 2 -crop_def.tiles = {"farming_potato_2.png"} -minetest.register_node("farming:potato_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_potato_3.png"} -crop_def.drop = { - items = { - {items = {'farming:potato'}, rarity = 1}, - {items = {'farming:potato_seed'}, rarity = 1}, - {items = {'farming:potato'}, rarity = 3}, - } -} -minetest.register_node("farming:potato_3", table.copy(crop_def)) - --- stage 4 -crop_def.tiles = {"farming_potato_4.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:potato 2'}, rarity = 1}, - {items = {'farming:potato_seed 2'}, rarity = 1}, - {items = {'farming:potato 3'}, rarity = 2}, - } -} -minetest.register_node("farming:potato_4", table.copy(crop_def)) diff --git a/mods/farming/pumpkin.lua b/mods/farming/pumpkin.lua deleted file mode 100644 index 67ecb9c5..00000000 --- a/mods/farming/pumpkin.lua +++ /dev/null @@ -1,346 +0,0 @@ - ---[[ - Big thanks to PainterlyPack.net for allowing me to use these textures -]] - -minetest.register_craftitem("farming:pumpkin_seed", { - description = "Pumpkin Seed", - inventory_image = "farming_pumpkin_seed.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1") - end -}) - --- pumpkin -minetest.register_node("farming:pumpkin", { - description = "Pumpkin", - tiles = { - "farming_pumpkin_top.png", - "farming_pumpkin_top.png", - "farming_pumpkin_side.png" - }, - groups = { - choppy = 1, oddly_breakable_by_hand = 1, - flammable = 2, plant = 1 - }, - drop = { - items = { - {items = {'farming:pumpkin_slice 9'}, rarity = 1}, - } - }, - sounds = default.node_sound_wood_defaults(), -}) - --- pumpkin slice -minetest.register_craftitem("farming:pumpkin_slice", { - description = "Pumpkin Slice", - inventory_image = "farming_pumpkin_slice.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1") - end, - on_use = minetest.item_eat(2), -}) - -minetest.register_craft({ - output = "farming:pumpkin", - recipe = { - {"farming:pumpkin_slice", "farming:pumpkin_slice", "farming:pumpkin_slice"}, - {"farming:pumpkin_slice", "farming:pumpkin_slice", "farming:pumpkin_slice"}, - {"farming:pumpkin_slice", "farming:pumpkin_slice", "farming:pumpkin_slice"}, - } -}) - -minetest.register_craft({ - output = "farming:pumpkin_slice 9", - recipe = { - {"", "farming:pumpkin", ""}, - } -}) - --- jack 'o lantern -minetest.register_node("farming:jackolantern", { - description = "Jack 'O Lantern", - tiles = { - "farming_pumpkin_top.png", - "farming_pumpkin_top.png", - "farming_pumpkin_side.png", - "farming_pumpkin_side.png", - "farming_pumpkin_side.png", - "farming_pumpkin_face_off.png" - }, - paramtype2 = "facedir", - groups = {choppy = 1, oddly_breakable_by_hand = 1, flammable = 2}, - sounds = default.node_sound_wood_defaults(), - on_punch = function(pos, node, puncher) - node.name = "farming:jackolantern_on" - minetest.swap_node(pos, node) - end, -}) - -minetest.register_node("farming:jackolantern_on", { - description = "Jack 'O Lantern", - tiles = { - "farming_pumpkin_top.png", - "farming_pumpkin_top.png", - "farming_pumpkin_side.png", - "farming_pumpkin_side.png", - "farming_pumpkin_side.png", - "farming_pumpkin_face_on.png" - }, - light_source = default.LIGHT_MAX - 1, - paramtype2 = "facedir", - groups = {choppy = 1, oddly_breakable_by_hand = 1, flammable = 2}, - sounds = default.node_sound_wood_defaults(), - drop = "farming:jackolantern", - on_punch = function(pos, node, puncher) - node.name = "farming:jackolantern" - minetest.swap_node(pos, node) - end, -}) - -minetest.register_craft({ - output = "farming:jackolantern", - recipe = { - {"", "", ""}, - {"", "default:torch", ""}, - {"", "farming:pumpkin", ""}, - } -}) - --- scarecrow -local box1 = { - {-1, -8, -1, 1, 8, 1}, -} - -local box2 = { - {-1, -8, -1, 1, 8, 1}, - {-12, -8, -1, 12, -7, 1}, - {-5, -2, -5, 5, 8, 5} -} - -for j,list in ipairs(box1) do - for i,int in ipairs(list) do - list[i] = int/16 - end - box1[j] = list -end - -for j,list in ipairs(box2) do - for i,int in ipairs(list) do - list[i] = int/16 - end - box2[j] = list -end - -minetest.register_node("farming:scarecrow", { - description = "Scarecrow", - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "facedir", - tiles = {"farming_scarecrow_top.png", "farming_scarecrow_top.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_front.png"}, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = box2 - }, - selection_box = { - type = "fixed", - fixed = { - {-12/16, -1.5, -0.5, 12/16, 0.5, 0.5} - } - }, - groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2}, - - after_place_node = function(pos, placer) - local node = minetest.get_node(pos) - local param2 = node.param2 - pos.y = pos.y+1 - if minetest.get_node(pos).name ~= "air" then - pos.y = pos.y-1 - minetest.remove_node(pos) - minetest.after(0.1, function(placer) - local inv = placer:get_inventory() - local index = placer:get_wield_index() - inv:set_stack("main", index, ItemStack("farming:scarecrow")) - end, placer) - return - end - minetest.set_node(pos, node) - pos.y = pos.y-1 - node.name = "farming:scarecrow_bottom" - minetest.set_node(pos, node) - end, - - after_destruct = function(pos, oldnode) - pos.y = pos.y-1 - if minetest.get_node(pos).name == "farming:scarecrow_bottom" then - minetest.remove_node(pos) - end - end -}) - -minetest.register_node("farming:scarecrow_bottom", { - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "facedir", - tiles = {"default_wood.png"}, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = box1 - }, - groups = {not_in_creative_inventory=1}, - selection_box = { - type = "fixed", - fixed = { - {0, 0, 0, 0, 0, 0} - } - } -}) - -minetest.register_craft({ - output = "farming:scarecrow", - recipe = { - {"", "farming:pumpkin_face", "",}, - {"default:stick", "default:stick", "default:stick",}, - {"", "default:stick", "",} - } -}) - -minetest.register_node("farming:scarecrow_light", { - description = "Scarecrow With light", - paramtype = "light", - sunlight_propagates = true, - paramtype2 = "facedir", - light_source = LIGHT_MAX-2, - tiles = {"farming_scarecrow_top.png", "farming_scarecrow_top.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_front_light.png"}, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = box2 - }, - selection_box = { - type = "fixed", - fixed = { - {-12/16, -1.5, -0.5, 12/16, 0.5, 0.5} - } - }, - groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2}, - - after_place_node = function(pos, placer) - local node = minetest.get_node(pos) - local param2 = node.param2 - pos.y = pos.y+1 - if minetest.get_node(pos).name ~= "air" then - pos.y = pos.y-1 - minetest.remove_node(pos) - minetest.after(0.1, function(placer) - local inv = placer:get_inventory() - local index = placer:get_wield_index() - inv:set_stack("main", index, ItemStack("farming:scarecrow_light")) - end, placer) - return - end - minetest.set_node(pos, node) - pos.y = pos.y-1 - node.name = "farming:scarecrow_bottom" - minetest.set_node(pos, node) - end, - - after_destruct = function(pos, oldnode) - pos.y = pos.y-1 - if minetest.get_node(pos).name == "farming:scarecrow_bottom" then - minetest.remove_node(pos) - end - end -}) - -minetest.register_craft({ - output = "farming:scarecrow_light", - recipe = { - {"", "farming:pumpkin_face_light", "",}, - {"default:stick", "default:stick", "default:stick",}, - {"", "default:stick", "",} - } -}) - --- pumpkin bread -minetest.register_craftitem("farming:pumpkin_bread", { - description = ("Pumpkin Bread"), - inventory_image = "farming_pumpkin_bread.png", - on_use = minetest.item_eat(8) -}) - -minetest.register_craftitem("farming:pumpkin_dough", { - description = "Pumpkin Dough", - inventory_image = "farming_pumpkin_dough.png", -}) - -minetest.register_craft({ - output = "farming:pumpkin_dough", - type = "shapeless", - recipe = {"farming:flour", "farming:pumpkin_slice", "farming:pumpkin_slice"} -}) - -minetest.register_craft({ - type = "cooking", - output = "farming:pumpkin_bread", - recipe = "farming:pumpkin_dough", - cooktime = 10 -}) - --- pumpkin definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_pumpkin_1.png"}, - paramtype = "light", - sunlight_propagates = true, - waving = 1, - walkable = false, - buildable_to = true, - drop = "", - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:pumpkin_1", table.copy(crop_def)) - --- stage 2 -crop_def.tiles = {"farming_pumpkin_2.png"} -minetest.register_node("farming:pumpkin_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_pumpkin_3.png"} -minetest.register_node("farming:pumpkin_3", table.copy(crop_def)) - --- stage 4 -crop_def.tiles = {"farming_pumpkin_4.png"} -minetest.register_node("farming:pumpkin_4", table.copy(crop_def)) - --- stage 5 -crop_def.tiles = {"farming_pumpkin_5.png"} -minetest.register_node("farming:pumpkin_5", table.copy(crop_def)) - --- stage 6 -crop_def.tiles = {"farming_pumpkin_6.png"} -minetest.register_node("farming:pumpkin_6", table.copy(crop_def)) - --- stage 7 -crop_def.tiles = {"farming_pumpkin_7.png"} -minetest.register_node("farming:pumpkin_7", table.copy(crop_def)) - --- stage 8 (final) -crop_def.tiles = {"farming_pumpkin_8.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:pumpkin_slice 9'}, rarity = 1}, - {items = {'farming:pumpkin_slice 4'}, rarity = 1}, - } -} -minetest.register_node("farming:pumpkin_8", table.copy(crop_def)) diff --git a/mods/farming/raspberry.lua b/mods/farming/raspberry.lua deleted file mode 100644 index 686ea5a7..00000000 --- a/mods/farming/raspberry.lua +++ /dev/null @@ -1,74 +0,0 @@ -minetest.register_craftitem("farming:raspberry_seed", { - description = "Raspberry Seeds", - inventory_image = "farming_raspberry_seed.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:raspberry_1") - end -}) - --- raspberries -minetest.register_craftitem("farming:raspberries", { - description = "Raspberries", - inventory_image = "farming_raspberries.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:raspberry_1") - end, - on_use = minetest.item_eat(1), -}) - --- raspberry smoothie -minetest.register_craftitem("farming:smoothie_raspberry", { - description = "Raspberry Smoothie", - inventory_image = "farming_raspberry_smoothie.png", - on_use = minetest.item_eat(2, "vessels:drinking_glass"), -}) - -minetest.register_craft({ - output = "farming:smoothie_raspberry", - recipe = { - {"default:snow"}, - {"farming:raspberries"}, - {"vessels:drinking_glass"}, - } -}) - --- raspberries definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_raspberry_1.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "", - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:raspberry_1", table.copy(crop_def)) - --- stage 2 -crop_def.tiles = {"farming_raspberry_2.png"} -minetest.register_node("farming:raspberry_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_raspberry_3.png"} -minetest.register_node("farming:raspberry_3", table.copy(crop_def)) - --- stage 4 (final) -crop_def.tiles = {"farming_raspberry_4.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:raspberries 2'}, rarity = 1}, - {items = {'farming:raspberries'}, rarity = 2}, - {items = {'farming:raspberries'}, rarity = 3}, - {items = {'farming:raspberry_seed 4'}, rarity = 1}, - } -} -minetest.register_node("farming:raspberry_4", table.copy(crop_def)) diff --git a/mods/farming/rhubarb.lua b/mods/farming/rhubarb.lua deleted file mode 100644 index aaf50866..00000000 --- a/mods/farming/rhubarb.lua +++ /dev/null @@ -1,70 +0,0 @@ -minetest.register_craftitem("farming:rhubarb_seed", { - description = "Rhubarb Seeds", - inventory_image = "farming_rhubarb_seed.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:rhubarb_1") - end -}) - --- rhubarb -minetest.register_craftitem("farming:rhubarb", { - description = "Rhubarb", - inventory_image = "farming_rhubarb.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:rhubarb_1") - end, - on_use = minetest.item_eat(1), -}) - --- rhubarb pie -minetest.register_craftitem("farming:rhubarb_pie", { - description = "Rhubarb Pie", - inventory_image = "farming_rhubarb_pie.png", - on_use = minetest.item_eat(6), -}) - -minetest.register_craft({ - output = "farming:rhubarb_pie", - recipe = { - {"", "farming:sugar", ""}, - {"farming:rhubarb", "farming:rhubarb", "farming:rhubarb"}, - {"farming:wheat", "farming:wheat", "farming:wheat"}, - } -}) - --- rhubarb definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_rhubarb_1.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "", - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:rhubarb_1", table.copy(crop_def)) - --- stage2 -crop_def.tiles = {"farming_rhubarb_2.png"} -minetest.register_node("farming:rhubarb_2", table.copy(crop_def)) - --- stage 3 (final) -crop_def.tiles = {"farming_rhubarb_3.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:rhubarb 2'}, rarity = 1}, - {items = {'farming:rhubarb'}, rarity = 2}, - {items = {'farming:rhubarb_seed 2'}, rarity = 2}, - {items = {'farming:rhubarb'}, rarity = 3}, - } -} -minetest.register_node("farming:rhubarb_3", table.copy(crop_def)) diff --git a/mods/farming/screenshot.png b/mods/farming/screenshot.png deleted file mode 100644 index aba30f016aae3e97daa01c0793c2b8468a921880..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42499 zcmV(?K-a&CP)MUoxor;UUrt(sw2**tnSXSah*FG}9ay4CV5Sn%haKyHHQ$4Rw3;}- zlwRwIYu}p#s-}~_rec%UAe_PQ*u#77$r|C%XyxYLsvi+4001BWNklped^hN3G(R)Q0PU#EaxAK#) zSS;udm`-tnJ_=uK}3^KB%4 zJKbGynj?LaguV*ioQb&I3c5r1!+3|#k@ZyGxd15a<{z;spa#rc)+3 z9*MUMo*NDglTh3gcwZz1agH{pawG}=&|bMefjiHqm-MILz?Zy*!*#uoc7>ti(Ayq7 zc%Cob_Y)U3;n#<-?aI%EzAsMY`Y`A^x$rh@!hgrZ2iQ#ibqE~+p&UY7+8|4%)bxpe zK7L!D2LBcKO=%BaA>0QW_!0c-bQVcpe)h%v!FwEhZR=yiPQHs8d+C#MkIi4z@f}y6 z&N05ZO*aH{XXt!-;hj&f+)uC5=U46WgwBs~cP`H1Twv(@ z!WVG#uflt@{B)4Sbjx2EaOi*jWe5{D3}O!;bkd<5X&MG#oyIUidJW$Gae*c2g<{ z9pm%HIm`0e_ecc@bXNV5@<$NTLF#m^L;nXL3`cRua)Ti3(f?tO6rTsy3Gd}=%wJPn zGx_JWFNJ}LI$n-zhx6q~^rbKlFE0-N6hiqZ2-bqI)VP*ExRungrT$y5uu%VnKM@0E z;{03{_Wmh^o|pF6JkydCF+jxM^@&)LO~6o`}x)Vl!fJw#3LQd zu$21P>SCya1%&)9s*BT_hbjo$UxAKNrxl0(1iuartJC?L0G;OliPtK0dTM$fUf0<>8?zKo_ebfs4>C26`T zFYo+ox3dDJiHZ2@E+M=EN(1r@Ay|o{lP2K&4jy;=u&Fiz?yAAUEBBs4`w~KfvHD;G zLaFVOYnNkFX#!U)kv2a9;6G`%+vy??d+FcMnVZv*APfT3hHjgNG|()hmkx=#O<7&z z-zN|@1&x8mHP$+Gb*{>I(oub)0f}8RrO6;Ri$Z@ zR-c&j>gbJW&sZBla zdw4GsqKC!+zdG?(dTdbBMeH?gEYF9_1k7meT08CKxo9lP-v#tF?8rsv=O`} zP$h)v502Lt$zb8;>amDOJ)bwo0_U!jU_Kyp`VI>l2HPOZW6d#~xna53lE10c*-~#lY%M8h`w8|HsX#Qb)o`zy9Z|9G3_RW3+=n zb`^qQkYNU9u>@5Ir}_j!%)2mz&9GkYQ%RZ{enoYGp_ZeY2CqzWwP_<F{+6!u@(*DPzKn&d|MZdNsy7((#pKY70Vf+acg*7{~LuuC4|nq}pQy z|NQF@7!R-^L`H%T{$LCQgdj{iRv(B}9_uVl6MzTs!R%R4)aB+V_*OG!vpr}?S6HIg?#j;0U@IZ5LS&ZfwJ|8$Vmiw9M6ZdAOJT9WZnG(Y=TUWxrqQ-mZe7rgUM9cGrPLGo$q1WwRLYRi} zXcSE*0YX@|m?SjXflgO#q}^!p>e4c=l)+#^=#<*lKYgfix&s#eiP_agc&6kN>|b6G zy}R4nHG}vxd%AtvA3uwc5`^a#j!i*I-%cHJHph`6G!0TkKtS(?cqkwg-*xyy1P48| zL~S2H%qF8r;TFd*1n7bSNrnmM4E`O7amTYDBB!kJ#aRl{UXMr!2*yD-Y-8B-xEJN_I9@aR<$5hE`)(xt!P-cY!n6ZxjByKh6PJfTrro%Q zAO@ZTHc1wYvf~s{^y<2(so2Hq)P*5FsYHPWBTU1J!(f|mMzj+?UK8zxN%D@0C__6`Io5b;5ZUBhEx+;9MF zjUjHOA40g%Y?Oi{VIgoGKpYxEO~F5|LRc|fKWE^72JtA0PQb$MBnNGlI(~R8;!##4 z$?-TX67&>otXC)yHx#WEJ_(6>J}U^lF!hLr_GN^I!lOOTn9IvtHR2Feb$rp|?X78d zYx@TPM3pAS1J$o=l>g>7O}q^WP;JfJJ^TqER;@%xWk7hVbfFx_hB>2+Esfxrgz5=# zJekrFh3NVH62Jp#B;&piYEZ!kw#;9D-he{lJSBd9s%k6 zq%L4Ph(UT5$AT&#NNysGH7iFHrLuSh6=6++6zfF{zaqW#2wg5XY1kYxU{-4Y;pcFu z+UW|uv4KW+28Li{A|*vAENPf{4B>~MFn$t;0HFcl)9s6Ci<)BvZx<$nQvcSk=YxSG zX}yMmtBy?$9*>43Jye>7LJcYi0XF>k3m)#^x%do1axjMBC7xPee;o*LO`56n~I}Z|^uH zlB^69!#V&$nD{Y>cc2p6CTS_`nG;J=8D3)q>5gfhIguX4%S-baRHEU*8D1+${`2AR zt`HP*bYmL2XMX2=i6LyrZ@baXppu<9P_F)g2F+g_UAs!a!Jt2M-7xNUfrNI)gA0!+ z0*sRha51I&8!Gy!kD@Hn(1!xS#qnH|O0;@ipl%T1$U`UX^)6jQ6)sgOKx-F-kPv)- zL*o!3tg4p#3m0xms5LMIR7&AK>GYI>&@^a1bl}Pi{ZyOd1p}WR`s2+5z9kn!VDLU`Pmsu0zn5Tbud1d*2r;RAeAzjp<{VH{_ZCHw1S zU5~?R1rQ!Df+$sScfmr~^YDQBaAUGXL%1;^Ea6AoHJY+;XbZs?v`mSD;8(QIt66xK zJ|7B8)P&?yI7*hkgPD3bYYdNuMT)koEg}5#ufJL(brs>A^PJF#4CLb$mC;jM)5TXhXW6qAHb-GHzeUU=7< z(A0zMREQ&!77IBpV?s!Gg?1^vB5=*o@Ap8GT3*-n{o!B;9>ydag}(1N0Hu?Nz_nA6 z?5u?d)oukBG$RXh&sH^+aLtDog0y!*Lm7rSzP*_M0u5&mYKE8@!c8j@RuNoJ>)UI}kis)fr-C2^F{)WegCTT8bb%nm_gNdZKs3FN4Wjku zjfN2{n?D4W_kW?pcQgU}2pNq5(vV)tJ$(v*^?cv!dKgEUkQ^12Vg(h9)1&t0c?-TB z`-ORzQ}$Gb_j5^_>Tt_}DERzrK)7NE+o)6zrZGx`wl>(H~zPd3qga?H1!ml6}(zPPf6$R-ZO#~4@4A0z? z>FkL3_JHvlsAmRJ;rVrt29p5&0{Fr}KQ9hO@d*apU#AlQHDyy&+Mp6kcnR-Yqo8Y) zd^$gdkTbtRFdg=*Rf~ix7)&jlx)+yDvJW9)O$d+5%oLil)V{rf@IgSR;&HCXnO7S$ zNY{X%3879o33JAAbQ#Ac3>OE$2dStateV^wP9Q>fxWG{66%+j8e-Y*W6z;uJh~OIj zabMtpJxMbyJFgFTYuF#ek(dpD6Cz54u$zrC0upXC=~W1U%HkB$E#OpO9dHnUbC{wh zZ;fPVj?A%tt9Agr2onWf;5a10*=j`XxC8i`z$S$MZ18bmZf(O0?R@~KFvq~nJ<6Rfhe5lKodef zaaFc5O(uX(>lfp+vUX!rjK@Gj38D7yH-?c?ov%jLST7z;*-RfL9}r~c9dqy=2j-@L zgnqC8>qBTqLDs==h=Me65W&((@#(~)=Kqp}z)@>5%CaEN;)!RZ>_5Q|CtpY!R$zN- zIeNIgl@QjAl({S7VhF6%ZKMWSE!K_TwJb9O2vLsyDMC6A2%%7h8p7+2A-}kt?OPDi zhYN4)g<}wos{uF;b3{${+MAI8*nsUr81o7J`H`3}!b< zBv^G~P*i0%?jFJ11b0?21kjwKZWpxd{y&_cNvmt&`?NHmSJShC8SQgXs^k|^bv`2Au-b1ff|VxuVQ z(9IzvDdw11iL%Dl}?LP-1r|AJn=tY%NOk$T>cFF|H`y&R9Fqt6-qLZ@;4giM~( zXUcHXh^1ow`2F=_pd#dgxL$wo3lg+x(tKrF4hTTzB|0Ul{O0S>Ku|)+Gtr_+G?`4Y zY&05WvDf?2(0&E@fU6k~0pUhNsLJ|Em2N5szXB*o3ec!1MQUNbOO?b3d!_}UnQlV8 zwVB=u2-zsrp8Zj<(0~vwEgExSA)`Jg5~Z7FCLX`h6>TUgR9h2bju#aGoKut#{_bD| zVQ?UhHjFV4A-b<${{xi#S_&{NP9nvVAj*Pll8pdJAmk5N*dx(|muR)x?*(=Q<*l?v znl_5GNRw%jlx4H(;>t`Dz6ZdoXhc*+c&4fv`3H1u_7{Hres!$dDPNGI;Oy0fSv;>x zNDNm&tHWlH?NGHLtTxpJ2hX(-L5b@R{sx2!IISB8GCUx092l4mzW%4Q#N=~;4iE$g zVPg`RozFxkntl3Zx@Y{3^Rwsuuz``@&wDIRRv|lTs9ZZJp%X{gxaDpbM~7? z4G*b8(uL+0e_kup8LH*$-Wc3z#UI`5Z6>sQu+5<%KT;D!d2 z3fzIk-ft32CRpQy@WpWu|A2%&QJarZ|07~2Sh(28(kA7>rFx2!EcH%Ahl5tNbgNzv z<->=Ojyrv*ICn$C5sEGRUS=~N5*t(7_M zy2IZ`P|H(BPn$FJ+MuGL9lu&=iDILJ(PR{ZWeP$x3mp%k`gDk3;)Y}?LpWQ_j8b%2 zdChs5bYoOL7*lA>;zVg@8uKVVnxopZA(SaZ#&9j<=^E@(7Kl|diB%&J8!W6egh}JB zP}m-Ig}veY*rizmE%_*unzfiG(jWY72pO$`AxtHZ>@YTAw5S7+7seA1qu}Pl54W5E zw)J|Q4q(|~@(C7Ngdr6$u`-%rkn+kzwPsyYyMVY^G1^jwbdE;SSC!H<9CnFq5+z$SOIy7c)X8x|oU?}LbuJmH@)h_OP`{YVsg&0yVOQ1FDt-g* z)VvW41UHQdevX<`%9oHz(-&x5Q4CmEQyXL68@WN}>gp`fvORyMYE3NE9ApSnb2jni zu$6#Q&VK|C%kfJyyLEH@;lC2@?MPQ);pe2W+Zp4cjgUu_` zoY8Ect8a02sAEobXU9$am{U{qS<_9~7TuLLi5qhUH%9S!d)9ENCnBal?_cq&$Ndvk z*w;x7>F66c_C@YrI2Z$FA^L;?;Fks1_`=~*DB$L36lYzWvLPiY1K6=_YS_W4A@iy= zr*;~Xu*G!F&!$D0Ges+Lhs*o_)5+SYm{V%b2P@0s@`^j08%A(`;41;J5kfnOdzKQW0z*q&!J=&6_WuBv ze+pso88UAA)8;|WMN6w6w;B4$`~E+Ju-{aLU%y_@7)zVRnlMfoID{Zbu^7&G6K|4( zek3n30F9_kQgN1n?Wnxim(!ZBMg5B-aw!yPlJ9%`bj&e#xUC3IjYfIvqxsL z&*{H3{^irR8;&`D-yUrXQ-1l0X+#i?CLl7iN$5~nzC#gHws64D54wP>>r8Ty`p_T! zVgI%Nlf(ZF1l`_0;GnWe8xr+X`xXT$`GYw7EWz%XAVrff4Dtv;909bjHvp7dU&{SI zJ{rvsMWaVosMh4l;P!I-7F@>RKjGkY2k}$TQ5PcLCb5U*ZwXG432@GhL>9kvh?2JX z$>IOv{eFgWTjo$U9YDuee zUwNgip>K31D?jUgnDpHKKV+dSH68SS>Rtj1F*7m2R){D9{KO5>k{RLLjWCSS$?*wS z*fY|F1T;10N*~bAf0@6p3Js2ES^DEJ&!BI`*cm^jOU1t}j zq}=?fuaInh6&Y7_foh+o(R%N*Hg-l%WK)_DmY+A=Grr@MhFqI=?=@R=X)|)2Ns*Y5 z@X`fUIQS>hb8xM+=F>A$_b1VNh8l(kK|Uf)2zc>s6s-|wg5ym8BFA^HG@xv^t2E{y zTr{7&=-qkIn&K^b|11+2w%i0{0te_f!o4CiQF?aZ{xok3eC8BAUWwRlh z?yI-CicG6(VXNDsjB}Ue<{}YEm%S)AW{18_xw)2wXx?V!XOi}!I>Q_ZH=I|g3p`n` z|KBlZu0>6+Sfu6(6dWuCnF)duZ5c39@qd7vggqmq<*?iBrNeHo$1~Ng_N#1meoS31 zY%0r(K9#y_S=mI!#87uSX_f<+G;Va+f}c39nuQmeMz6TaI9n5&>a#vo8!@vmF>kFC zm=Ct^-`@JRU7Xa(2LIFw{jFFWCXOgbiy(SICWn+n3eQ8n{-@uf_K%S*tpD#WyX000Ia$HT}P&C$LIK$ym?8F>Jt zSQ4vvQ1&R%?_fv$R1-o^-7Af*QI$?oRWeniEX~rGXGj$oa!a>uvlWD9A0u(Px97(^ zii)aLHDF3cSy5YENJu{2tr|tE?8;~rmlU{8hd2&%17a$U^IxRipy483I38rq5CM5c zR6=3{)zc#n~CDD(jZ>6)yXG)>)qCz?aHwYbn#igy4qeY^xf?jXD3c zRSYTw?aSNY@ba7&?eZtC#yJ^9IaCX+swHLb&08!_hX<;R6&P+VAuLgb`c0_)q7ntOh3M!vHJ4-^=p3vNZL-1+_rY5wt--s&mSM*f1Z)Op#@(hyC#s# zQ*|@4n(FoS?d9$5We*S@H|AV>QB4Kv5AOzsQZ+v^ScoEY)*3>Vs(AqP zG1tBX5RP>J3!$0chcHPzOf5yxC?}PN6*OSY*p5f(l{5ukViG!RvHCO_-w}}j+K1N; zyVW3YSUG!qWh{@!8g`d@az%P+r|0t>j`?F=81_tJG`(JURi;;jzE z!e)7B#d2A-C6Z-vn+6NPofHz3=NHUOA*sJyRnf|5x0k~&{udw|SRg2Ks(=};Sd|yU?S0{#o}lVsa(iVk}K^MN1Q)Jog!XOxN&?vo~S|o z5P^n;IXgwSHxN>kA9SgcIHTFK9iLv`-w#MZ;9%V>1(pzs@>Ef1d}_3o77z;jkbN`3 zEiz0EgA~It7ZjYaAWi-qIZ9Etp{}7ZLpc_}7twSIL=f-`olunWxIA+^B@s$A1j9L{ zz87c#IT)dK@Gnn$IEVja%+I1;AOL7F?4{BtZgp<1>qVXegpV+yD32;FAWP*1vLPx> z(n_~2ZyqO_Hq)GcY(RBrG(&NebyRJ*uM`$Ho=&ntT$iv`3!bDkn_UpB5V8b60T<$S z)|R1Ulj5oVB@%WcxYHj`XgoyG;LAV<-KkVrWWTOyC+guEl2%PeljW~CSBcMfehs0rQ;37B*(HQZ z7viaqgR^UL6d?5ee$~v6X&4ZMkNGK&@UAz~_!ilqTzlaK!Wm3N(gHLenlFSN+A;~R zT7l(vso6`YHv~;c9RyDxPvw+5+#Y~BteP!6S)DDO4}jqu00d1q-{n!(@;?~t(`lni zjnOW>4k1mseSd!i{8nI;o-YFD287&NY9k=jv#PkkY10x_V=TCuusb0or$IrX3jKe{ z9*t2_!Ovr!gBhPcg5x_7vxqGWp2gJl*HaO1_VfWZW?D*%h$bXhS+>drND#uLs?eA@ zanEE_iHzY9A;k83t={E4cVv8cdw+ZTzRXaL0*XP|y5^+bT2o^_PMe02tEXlh&ooI4 zDaa(;Y^oN7l^}ETe4ju_0L_{ZN}rV>ya4dlw~K#E6=F}CJTCypctj+8+-`x9U6Jx- z1O>X-aa+8T2>Y#uMmR3J70I!qBOz#)Ju400Q*Z2SE6| zK+h1|dy=E()x7BM+^{2C5TYdmBm@@j4-8;4Rv<$`$Z35}>=!w{jk?l5IU+MZT$?_`}OVZZJB{<2vRh=p3fmyP7fJV5&3gh&Q7Zj z)DIPH8Sp1`gMHl`gD26GC_M@P5YK1cHx;!Rme800jxjz%N70Iy1_=$2{b{1I6oY@1 zFC1L4MhoCyK%%rvK^X#saOX!cKE_t+Im(M5BgXZafJP@FvCcu-`cF?in$u++*@h9l zJCEEGBrKD(XHNJnWd;ATMiL?omzz8)^rWCf)B{Tv(#rJUZ^O^+kuE;s&`b}}tp7KJ z5FTn{#h#`h6@KRCbEfAB5m19=o` z*{ddml@8Fb_#_C8qe{_9=DcXS^Z+SNv@eW$olCc#6HU0_q%&y3BIbGa8=dszi_75W zb>xR^%R~TU7r-kvs2Mj=5TRbot>Mt)V43{yr)>Zw5g9>^B_fD5G!zR>-MfcGmHDCj z5r*lV+v}B$00_6$ClWpbfZ0M%tG!rE2Q83#won+(M9}nPCVe*qAt*r-qqT4zO$c=x zJ%pcPb#l`P^-xzex&Daq8bl+Rvw)C=!v%yszd_Bo2mN24)6@fJU0q;or8m4@@{5Rp z)Qld{Y(WObIYQb+JcAe@bl7L0l#}l^Bxq{TFdY(lLVohgAs2SzpP%;b@6yIZQfmAI z=8U#K#Nx`;0WQ<~+j6m37RCfYqti*L0^PNs;bL}+Ed1D9LRcLzH-T}rgQ}=#Ls-ey z`{CXEbv%#Mfp2LM`$io0J zO4t!#uU_Lbg1DwO0V`~&{DvL0!nS-(<2)vxkQ%5*aghTn<4q?B0LyMR?zj_~9(M^Eqz#V`UoMwuj4tcStYN8I3nDQMPqzf# z?G#|VEu=kT2*1sy$n$3eaCI=s0V-W8Va)XxMlEKNH&-C!Za_^0kF?@eX|fPyDaW~e zOfTv3C~zrc7;`Kg6G<}akAsvG9gbjAc8^oJSJN0aOsPz?DJ8+3`Y)mc$(uDF>-4~A1?Dr;(1;t12)Xxe26 zc%5hAY?JLa%D5em!d#g5p#tE&qLt4|gM zHPRm9xcaQtDZ`F?HUS7DV&Q0v@p7dC8K$*hp28Bx3SX>NLc+?W z!>E^`$;^wJO&`T3>**~u&{ z^0=xqNglJ|#+4e@Uz$u#llWeQT{hP#WqSy6&% zS{C)wZ2Fs1{jW4%kaG=jzEzouV?0_Q(78JMm-c!S?x8hW3gDQ5Lg_6h5gH*l0@(o+ z9YpNcKgC5V;%LFh3vJ1UO^xXZP=(+=ApHPQkfS}EfZYX)GzxlFY9t>n2zM30RM|T! zj?fbm7br~AHT`?p=&Cf-NqM!dx;bIu_d3NCcTbCaTW<0H^r;2mm5GRniV3S_{Wzv{ zeZJ}SS=!FUJW7uW-A9wrjF~5dD4CwC3D_fZ_U#agZnx82uhzG+ni!tJz>F5`>q|4| zWxalyO@M+C1!hhWX}@UG3(%o}tFH0Y0+okH6pdn}*E1I5A&5`w*%EYM3fd5WLsKT|Fp?lf zyMw+ZJOnd@{bLNZx1X9c{KaX`_NS~$Q~A(tUh)f)XY`|KB%+VuQ|p#-UhaCn6`MRAp1PUv_yUdPJD<&74Bnal}^bw^f$qqnJuB06Z{8 z$)f2D`h83JfWJIaL)@xZp67B8f+TUYj`$yHVPd;I7h^O;Loi578~cXXjxAf-7(H(A zpG}Y=Y_>$sZ9r(?j)&mM#>)!~mr9B@US-jQG$Fcs>>RA0$iqPWHUa)bV>nsFiK2)S z4lpojE2QceBy6`!sxHo#Dqyo;EjdIA=tVItIvK}UBVhd&dZt@3Y}1fhp8UQ5OMc8i zQLma@o7QhTqMwKZmIMsEbK@NL^aO-(IB-&|U z1qtn@K&1~77u7NF!3(W-WgHIA@AwR^0R~x674A7CgGy1r@I-yEVei50Ob>&!9#(m* zL;?z7*HKf3ake}G*i?lPN8Nxfzt!^Me_fgql14wM!S9pspEsZ(m|VvrO93DR{4m<4 zg`};7DDS!gVG~0_Uof5zpbssVi>0aiz^1{<+oe*B8sfu>m&=g;1bO&-5s?x8AZIJY z5o_V;uLYhGK}s!R(oI_`OiD+wRlIGR7@E@6Q+5lXM>^3kVT79@4p~t! zh7nw|L|qHYamG-Gz8Mu1wQCB?tT108=}9Q^V)Jy^nwFEmv5e5G5Isq)D{H=9TUGlS zj2ERK{tv+U2|Ax20;YWlIu~QPp1vIU{}8N!cImIZu8J_ zJ9X|!iZXWiWJwdn#pFP0YC+Vf9>LtAAOdS!u8oqi1tA!r3+drYar!JFq%^LH(uG=N zimHX*q~oxESuvOZwS-kuR%%f+i^jMnl!j1YXslNFa|j0}emI<;qNB`--!MSEu#2rW za_1UtanZ22j*(9_Iu+ZDBx@EC&1@!`Eqr>%PCrum3~bmEU&&CT@vM-$u4l8=+goN6 zgb*=1NC2<6`fSb6Wfn0umVgQ?B~#bJ9F+jkDjUSPH-nK<6)Kotn8j%KtY=d$Wo#y! zeLmqBJq?i+L*|c;T zJ!|bv`f*~BdHOhE>mzYT!5z{QQ2>TgvCwwANYCY%Ak3bH#%nW@tsR0_xB?9b72A|3 zTqy|GY_w>R+DHoT4QWho?}brBi@c04bzx)C&|k1=6fQDH};?Jvs= zi-li*?pZYZ5cLN}HqE}yD*IR54O_pLB;nn5>v{2ZyS%@0Br?ro`q(zm&~thyI7t)A z_>AMEALU1BxfUgkOAw5RB|y0O;3Il)==^&i%^qdFB7~14P=#3#VBDnv;dMa@5Q0>E z6V8L6jUbkWaJ@3?+l1GELDkh><@Kd=A=WXHd!&YyA%U^gUitOcm0`m#BtaSn0<<55 zUF=I+^@ox-aX^Mf5qN&Nf32y#j9@!<&(89>=k|mpYU|eDz`+mq1m;XPRS>2j&Vo4E z(j|1G?}5W+tYdfK9)J_!TaS;PV~?{*h$bkxhS{|^jdCw2rt*f~9$_gYpJ|RTiOd;P zveJSDGFt`R)hr5Oh@o(FU%OJ57*)pC`fzP zA^Z`By_OWk3UqFo@pn>8_K$rE$C&|u+u7ZvAazt)cAg<8w_CjO**pt%JX9Jdp~vw7 zo4Z}04&9tAaR~hX4iGw2ACn113VPLk+(mF8LddG{d6BVEGs!X_US>kL{1ie?!0*W^ z6lL8_Nh&QA<@F|w5L@yiAhz=GSr)2xM9UCF^ zaD7et`}f@ldAOVB0O6zUgvhW13sXeunFVJih$j#v2vG-WZ;p^#O9deqj_raqlc5}KKscU^$BKo($O+5Q6@He$*4aC>nPTj)V%W4otvMFK)Ts2YBx=wCP}O;M2IBZs$9GzYuKApefQ z0S(~;wE4XUZ!am4w2a4yT_#9K^K_&f4aaPrlD&f5(}nnZLCd`+;gf=Jr5uNqIYa@Y zsAR;_86+W>Q_>CRkB;#sX^fVwwn$Q!B4*k|QeE5^6+GxGWwu?9Q>#7qSi4S_^2w z(Tvv2;})jyf;Leb5>q%IAWKj%TuotSlVi#CbrBj1X1TYni?vN#-^WINo`2znfIDG3 z)9EZnK^oRiGv84V>H;XtA)Y8KgYh-EG2k{$IR#=94WpeH-@iZR04gXZC!GUN}H`z?|vlQAc;$sLyq*UbEhSsOZ_acRUY&!=DhwjQ@mU6dl7S7q;%63EmBGj!&$g>FzzNyd~aZMs9^HDeVHwwYM zjNQm+8_l4z0#a;>Lj+f*US>jMnh3(kv&?u2KtLhdmoLM~d^exxK^DWdJE79Q zVb5KX_okyaKZ&gIbFtfQu|3Cfx8>0&jZju>f+ZI@RU#INjLgb{Ss^d!i|*z5cUx(LU`rc)^Zu6Dx^U7Bp?TIf^`ppv}T$RQjnV=R3sGBviCA` zD+kX;V-s~R5d5~1aT+4w{mouNh^*Z+jRk_(HPj;ICQTI3eGEya&>AVEh>%%;J0jd3 z={JahIqS$t_~m(rb*}iZ`_j+nJGkAKyQSm84kJ2B*Vl7HWEvPcobhQybzt8XnfG*$ z7x?}XLLI^J>^R;E2t!v$NG=bRSt(q`6}$YS$%cY~TK@OYKm|eUaYsh1?Zo_&(25AE zV`F;$01%=aC94!HP~xDlW)|>@^`aD{ls|gIN!L=YQrt}uPLq%!-(%=aBFHk7S@`W< zkx&y+4W7qp$%g7^!YCm*A@RtHZp6$K+as+sC$vSo=^(r}M^QY=Tr>l|d_fp9sxIFJ z2q61h=Q2bpf%0VV zo1$b4A$bsP=qO(j>>H;N36grxIK2toPXb13eTgzWDN|DW5WfkjFHj)W`~08O+8WC6)= zk}~8y{9?q4a74Nj9FQDc{TzhmavqQSz408)P=6T@!9wqS{SqS?L(QEDdR|P>-0y|+ z!1XRBU)pgBFx>hGVd&pYFN1UB``J9BLJzMIB0w-tAGV~RqsvMy3l}A{ZG_OX;+?=w zJbf1%bE-2WI|d&aLXe{jAu2}PUdTx1dSw(C%3#}`i793($-0?!n}j$y`kR>3_R>J` zn|25BS+q$52s4Vgj3(^vNuV$!Lj)5tG?L_0Si?5_6=dU(QxCL^hhO?Qy$IMgAJ}t1 zEFYvpAf-ETeLyotwW!^S5cDGmU_|keDAzJkX{rQn+&=j>LO6Z$b+Dj0O|zTlA!7*E zPv+$j7Oar~brULBgAL2-q=aCXG$OpVY`e73wzBO21tQI)q$O;S=CB zOkp1(7$Qe4f)I=xA0f6?g6Piv0UM4CG zBb|Rf1Stx}A4h6fgGRJq!505*F)S75#KH{p#FsCVJO~g#@Dh7ok7cCOOFY*L-Ao_= zT0o`0?_uGRlBBG$sG*VVEw(;FDlm+0sWrI+|P7?mGZ4#3=a}yRM?)oFNP{_6i9?8RHJTpbLCl zVDg>1Ts-Z$jA<|Bs5Ceg3FXX*YY4u{EU((}&JeCe{UM7{ImnzD8Thaz!;}mHv0jt( z01bl%Ae=`cyoS@>wul`2Z2%)&?%lkf&g1?h^uF}TWEsro;PmJ7z@mVu2NEuuXEwQD z^Len_jS*PE7{+Hh^+0~9>;M2D07*naRDC<&>hXQMxO>RE453RiDiOj?9up!Sh|=1# z-~^pKmnV@d{MdX@vficWH~tdG1|v14*BFBDAPa4+3DHMX5R$|s$DRVDtO}(|0saMA zrn40n2nq;ggD2s>zo_^M7eA>;&IJio$st>$?>I<9Dra(kU>VBh4BI5i@-#dK=|%{f zWh9+`Hh8cAo@1nWv=t&$j9m~V-*?-Q2SohhA^j}hNAxC^6)fi(pWQAHPV}Q4&i$!x zTVfDC(`n-ScOtsRG~7OccbIDkNsIzu{2{Bmog-dArg$r;YP+~H2(r!<7OBl%f6u}R z*esO&B<#>BIsv#AJHsZ`5N6~|kV_$a3Q_X}9)*VxVi}W|0z(k$8c^-^am+=<*DxY_ z0pUzFM_eli$3iaYc{YN6cT$w_8?$jA0)4 zhjBRFZU^YrcPUCU27+OjW)7D~Ui<{`napiqApW1&xD+5WkS;yXJa_%Orv={^!ZDmL z!8e3U4aX1z(OhvHBB70yqe$zaU#n%Nr?M! zix^7PE;Sg9TeNr27~`8RE{m93Pzt7RuxjsjdB9 z&n}~A&3sAqIQ~esd#PM?OuZjaV88v|+r9xyOi8G3yFuI)$&JC=kn5%h7T;IzYRTe}SaExT8d zRJK0So-}ne?2c24Dfna-p-AWi-#c*bX;Bx`X#rR{3HKVO6i1O1t$}-!B%DsC(#%xp zqm`Z)LlDY*y8!VXG@MDo8Pj%e&Wj=9&BSzHChug z3Wb9UA(9&sKn68>aQ*R)gD`UojYKqMzJd}&uYMxE1q6^*#K6~RJa+QO{P1nRR`w`f zQIwHn?2BJvb)qQP)+nykF}5!D75fsn?!s$luMk5B8{2gaP;ucR@Lr_Mh8OZY`1=9E z?>W`nz>A`oreT`E{RUg`jfjfcpb}+5=mC*F^$?H}q}=ZXyu6=b}+5M=^F|7T&L)o=_XUvlM;T+K(+6vzaM3 zn`Km+9OO&|<@`jdNk_L?f@Y$si7*a?1-iv9OBmB8YkxaOq=BIGhljfbA~<#}!Mz|^ z%x~v?y9tiVK7&Ib`eX#G631#>c~W+8rKh)dU}S&`;UytlC+p#s4IXeSC4`b=b_b0l zgjDI&gjk5I()Wjtpb0T+*+#7?e(W(qaSGNd$@Bs+JW{*-9==*pzZ?Awy4hYOA;zEdTc>B67g-tHkk>e96TlH z19+NbDhf)Gn0ypTO9q&Rs~`@(+&$dQF|FkEzHo90RNnl{_zPJAA}GfE@@+{BxO1oe z?aY^!C7CI*gS0M^UeT_wexG zP9`4MG@}4~2oSCQGVD*vj({N{bX*Y_qcOep-D0XPGh$^N#8(~m(kiBe06wzKDrSCb z3G6CB877-P=jz|aC%_Ln#)rsug0JSdBO&m?&Iwb13RK*Y8|51iUL702&_WFLj3ilS zA?ARtjAjYct8}%#|8~DW?D0R!TW<1GH;0MeTnC_M(|C}?YY?z% zOHNQ|8xeT|G$B1?OXWm9hlZK>Vh#`t#z+-G3S2G{S!+}4vnHxuD#Ed2fxk2aFXXNT70=^>ov zS(tCb$#{zGxbLR(TwE4p8*3kj6c{o`Bp_VLF1B8@jI?ZY!=`xDlwzBVpv&a7tcGhq zcZA{eSxqN{UsIeQX?)hM&&{LQTzakH#hLDi4$dvH#()dDgN)%>u@Uv+i6yA%WSoG8 zXavpHEAD_Ore?E&xo^;rOM=ymC6N$*lgTF$dXosQ&8ou&erFV^H&7m=pEMvG!|}0GS2Gtz>iSROo4u7Qu^iBf928e(m{$(UdpLj(k5i@P^P);w~GlDAhE6q<4 zJbn4LH>-zDk5F+@gt#qc0J3<)4y z)}ksM#~-hFYPFQ3qTRhgL)pOumE9$RZ?c%?MHXCW2+s|JlvBRsLx?iMOcmnGA`I{e zqxqI2G66aGzWd;V#=8UgNr&Z=aTrY>{A`-Q?gxpDYgnC@GUdT&m`)pR06Pb^z?6gF zuHOdM_l5Oo+h)ohe??~?nok-1Z$vMg#`2B?6QG2X%3pC^rdoE);R66vct$1;`n`}K z?0_g;0JAF7qrfY7!s{nRslpJK$%9w$^=~QsqFP)K3twdMpeU~Sh8~3|iZPN+g|#K`|DQxh!^Nt>T6sX8zqluLNR4-pL@e8**K>*i-*Uw<%s zEeJv{ObNnpLDCVgltNHw!(%OgRV;*)0)`c)F=kKHvqTuDYg+9`HG5(U2Lm%g?Y*=h zG+utgqC_@F59g*iDiimXtgVnPgbs?zpv{Q<`Yl?f1lfaFNMx#JUxZWV;b96&65lWq z60Y=fOlHPscN=h z)cU5Gte0UnboN`-Q1|yYavl>cbltFK$S*Vqm~(lrGHxivD@&n72A^kLL(;s0A_Ezz-Y0QmY2$J6SP zu=};7wRZ<;-3JKK%mIMm^PX1}>|9vb1+z@bjV7D8gyt*85FYWOZV1DLo=9)Hg(wrB zZf3yBU``6t_L*3%{A`v!$vG7xIk$!8oq@Z6bFxQ)Q9~mTlmd4YO)}&h zPf9~O^TCGyxJ!#sGyF^l_Jqt*ylONvy<82vxl36qSM*>Mt1d=y91R)47Nu#YARj|W z<_&1CK_A_T8qqt~47cNjg@dU~)Q6ynlT^}8xcL;FR0fX0P25iq)(c}6_F7jw0fMOB zt|Rz<3-6OIRO<2NhQ%mI!P=Cd+BdW&++!b6!)6B|C@joEC*x4f&z2QzY~4iglV=fn z5L29eKc;HW2g|oRKtosL8qDY=TnA*O)>-|*Ec_7G1w!cP*xI7Fn^>c|7shD zW^qRo48>%iC=o%|dca5wTBOpo(RkGDlxa9 zisDh!Pa3`9l=Q`?^ZR))5Q3Ch`3kVUZU&$Rhvk9g>d;A3%olb#0>fVFlr?31g;FeP zqx3>xC~ebYEdr-zG{z|7ZP}iO*=qJKA$)nEGAOMOk%UixV4h(vC{qav!>X~G0P=G( z4YA?8u4GeFE<`s443H8H!KqK!|3e!3u*-HjuHT4qi7V0Re9pN3g;mn9Wg51LR)|c| zLDGN3b;bH!AYwciKHfguzy|sbZ3tnbL|G{zlq^JN0BM=le9E4aV#7T&Njn{nY3L9} z0>fHDS(^lGM8L7a?E=BoTF)7j-ot9PI$*kxTUoq_GN{!Xmo4679sX=Jna~{SD689f z3WShxV*n+J(^!_rWSN<}7>(rIP&gwx^3%|!Fr^IuKCn@0cW6S9cFPS2@nUv+7h3Pa zBpo!E({F;=@H&RQ{@u-eJ|ry&mds!{1!I8_9W>2Yey&mXDP1TRUPdeDbvPK-tVSI# z^$eEUwvF-QoM z>?jNegHE@LZ0WMWp#&O;_CI-s?Qx4s*ALn;BH}}H|O@p9Sjq%v5|omxqG2w3C*I9Kz>$RDsb6)3j(fgNAolOKxf`G4UkKQigA) za1m|;LWd~w^a?XQrOUawY7}mRiAW0(5@$2x+k{XeI1SbOdNs{n)<@AfXl2$6*N8{R z9)v6S(0O=BfQ6oml2pY&9Un35b`ipXSVR+E4w?`ezWFB*_6;4VoRI!wnnws)NGl)V z;th!44X!g6E4$RZFN#A=G8Uj4fIE-uJCioVvE+|{HB%6Tp@$H99m?W6p<#g*mt%@5 zQPZ%b7mJnXR!Oabu)Galu@NνDV(0f4oRX)Eyy2k1#kox* zD59mAbUdP3l}P_d>7@sn%Lm#J{0axr;zb2)SvT)6ZXK}*DnCh%G@SBFzkYD(4eIC& z{0CzcAiM+YaAm((KuC-I4TcTT%fGKU*M~ER0kB}uxM595tVCY+DPjWjMQ$F*phajq7)aVenvEUF8val6nAQltVcTk+qV0XU0V=$D>nfKudeg5-1 z089p{2QCG=^*vmY4j^T4TD1HPtPh59rGYbQwSPWny?3ki}_oDz^#F$sIuDclk$z}W0R4>TrjsN%Y{{8!Ra45ve z%RXD4QdC;(P+>o8V_;dg*z6fD{iQ{EX}a_;wPJtp(0}X>!~2{2AiAZc8}ldx&3Mxt zrjLMS`wpq=5@hK4FzgQxf`uePiG{G;uPHXugUjz(=>ppccDo+7gXYrUlz6rfS*MH9 zh@K)3i^TE#+gYn^r7D6FOU24AzfbE{PZQZcJ&IH>84PHWR@6k4f>dy@EJB=fJt6fu z(yNhw#FVkXp{3||9JYjQceXV8M>;am>-8$|B?m7;6p>mSG_b&7iG zS;hNn!6d|ZhflsmSQg5+(9lWW9@E5FxgXL}oD?8I;BPM>Tt7XD6=GLv?!4;CwrV!+ zUI^DlTc{-wk?L3P=L|a|Na1M$t0VC9BOO#pI z5$aBJGLS%a=DA{IGw#w7sspiZLL*@`(88BL01)1c`-AcQ&Gg}pmb$&a0|>LnflDf} zZOjzt6xNun00@h6utD+p`dSWzJRQ{O`|D;1Zv1-@qK!(;)~Unic#6HE6I?F65R0ZK zB}%O#;aL`;m|hVQfVf69U>Jrdn>2 zIU)l%1=tk#JLV@O3s0vQoJz{>#*+XXij27UT3}U~L$d;rihkFSq>^~uXs+-CRTy=z zLwF_Vrc4$d4|juptRk$8?+~eWH+;;-_xJa>#_H(){?5mR$5A8R-$MVZ`!prL&(nH`-!X>icyg@^ExbRs>nEq$mx5HBxDw%(}1E1BqVVV zMd^a3sL>=t6u2sc0Rx*&hq!t=YfqyaK1oRp8v!*FkMjAJw#H-p(K7`FhQc_-S!e7h zTG}BDL3-lRjG-~R@)TjTl(K^neh}2Fy~JZCIs^kG^gV%Kpg;^z`Q;J(;NLY@#!RPo z0oh>qkhB~NgFyYen}<0g)M*P%7UdUC$>)eiSv*%5zCXVch8eXIib2Hg0t%3N zw*3r;?3#6A4-F0ygwcG$MogDj7)hbp5i0~438(z-u0Lp}hqMVZ?8o!@P+PBQ9Q6l? z)$QalCXZ0AZp℞1^eq+rXb`F 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 0 and v) or -v -end - -erf_inv = function(x) - - if x == 0 then return 0; end - - if x <= -1 or x >= 1 then return nil; end - - local y = math.log(1 - x * x) - local u = C + 0.5 * y - local v = math.sqrt(math.sqrt(u * u - D * y) - u) - - return (x > 0 and v) or -v -end - -local function std_normal(u) - return ROOT_2 * erf_inv(2.0 * u - 1.0) -end - -local poisson -local cdf_table = {} - -local function generate_cdf(lambda_index, lambda) - - local max = math.ceil(4 * lambda) - local pdf = math.exp(-lambda) - local cdf = pdf - local t = { [0] = pdf } - - for i = 1, max - 1 do - pdf = pdf * lambda / i - cdf = cdf + pdf - t[i] = cdf - end - - return t -end - -for li = 1, 100 do - cdf_table[li] = generate_cdf(li, 0.25 * li) -end - -poisson = function(lambda, max) - - if max < 2 then - return (math.random() < math.exp(-lambda) and 0) or 1 - elseif lambda >= 2 * max then - return max - end - - local u = math.random() - local lambda_index = math.floor(4 * lambda + 0.5) - local cdfs = cdf_table[lambda_index] - - if cdfs then - - lambda = 0.25 * lambda_index - - if u < cdfs[0] then return 0; end - if max > #cdfs then max = #cdfs + 1 else max = math.floor(max); end - if u >= cdfs[max - 1] then return max; end - - if max > 4 then -- Binary search - - local s = 0 - - while s + 1 < max do - - local m = math.floor(0.5 * (s + max)) - - if u < cdfs[m] then max = m; else s = m; end - end - else - for i = 1, max - 1 do - if u < cdfs[i] then return i; end - end - end - - return max - else - local x = lambda + math.sqrt(lambda) * std_normal(u) - - return (x < 0.5 and 0) or (x >= max - 0.5 and max) or math.floor(x + 0.5) - end -end - --- Error function. -statistics.erf = erf - --- Inverse error function. -statistics.erf_inv = erf_inv - ---- Standard normal distribution function (mean 0, standard deviation 1). - -- - -- @return - -- Any real number (actually between -3.0 and 3.0). - -statistics.std_normal = function() - - local u = math.random() - - if u < 0.001 then - return -3.0 - elseif u > 0.999 then - return 3.0 - end - - return std_normal(u) -end - ---- Standard normal distribution function (mean 0, standard deviation 1). - -- - -- @param mu - -- The distribution mean. - -- @param sigma - -- The distribution standard deviation. - -- @return - -- Any real number (actually between -3*sigma and 3*sigma). - -statistics.normal = function(mu, sigma) - - local u = math.random() - - if u < 0.001 then - return mu - 3.0 * sigma - elseif u > 0.999 then - return mu + 3.0 * sigma - end - - return mu + sigma * std_normal(u) -end - ---- Poisson distribution function. - -- - -- @param lambda - -- The distribution mean and variance. - -- @param max - -- The distribution maximum. - -- @return - -- An integer between 0 and max (both inclusive). - -statistics.poisson = function(lambda, max) - - lambda, max = tonumber(lambda), tonumber(max) - - if not lambda or not max or lambda <= 0 or max < 1 then return 0; end - - return poisson(lambda, max) -end - -return statistics diff --git a/mods/farming/strawberry.lua b/mods/farming/strawberry.lua deleted file mode 100644 index 919a8e8f..00000000 --- a/mods/farming/strawberry.lua +++ /dev/null @@ -1,133 +0,0 @@ --- [ strawberrys from github.com/tenplus1/farming ] --- --- Strawberry (can also be planted as seed) -minetest.register_craftitem("farming:strawberry_item", { - description = "Strawberry", - inventory_image = "farming_strawberry.png", - wield_image = "farming_strawberry.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:strawberry_1") - end, - on_use = minetest.item_eat(1), -}) - --- added by illuna -minetest.register_craftitem("farming:strawberry_seed", { - description = "Strawberry Seeds", - inventory_image = "farming_strawberry_seed.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:strawberry_1") - end, -}) - --- Define Strawberry Bush growth stages -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_strawberry_1.png"}, - paramtype = "light", - sunlight_propagates = true, - waving = 1, - walkable = false, - buildable_to = true, - drop = "", - selection_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5} - }, - groups = { - snappy = 3, flammable =2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults(), -} - ---stage 1 -minetest.register_node("farming:strawberry_1", table.copy(crop_def)) - --- stage 2 -crop_def.tiles = {"farming_strawberry_2.png"} -minetest.register_node("farming:strawberry_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_strawberry_3.png"} -minetest.register_node("farming:strawberry_3", table.copy(crop_def)) - --- stage 4 -crop_def.tiles = {"farming_strawberry_4.png"} -minetest.register_node("farming:strawberry_4", table.copy(crop_def)) - --- stage 5 -crop_def.tiles = {"farming_strawberry_5.png"} -minetest.register_node("farming:strawberry_5", table.copy(crop_def)) - --- stage 6 -crop_def.tiles = {"farming_strawberry_6.png"} -crop_def.drop = { - items = { - {items = {"farming:strawberry 1"},rarity = 2}, - {items = {"farming:strawberry 2"},rarity = 3}, - } -} -minetest.register_node("farming:strawberry_6", table.copy(crop_def)) - --- stage 7 -crop_def.tiles = {"farming_strawberry_7.png"} -crop_def.drop = { - items = { - {items = {"farming:strawberry 1"},rarity = 1}, - {items = {"farming:strawberry_item 2"},rarity = 3}, - } -} -minetest.register_node("farming:strawberry_7", table.copy(crop_def)) - --- stage 8 -crop_def.tiles = {"farming_strawberry_8.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {"farming:strawberry 2"},rarity = 1}, - {items = {"farming:strawberry_item 3"},rarity = 3}, - } -} -minetest.register_node("farming:strawberry_8", table.copy(crop_def)) - --- growing routine if farming redo isn't present -if not farming or not farming.mod or farming.mod ~= "redo" then - -minetest.register_abm({ - nodenames = { - "farming:strawberry_1", "farming:strawberry_2", "farming:strawberry_3", - "farming:strawberry_4", "farming:strawberry_5", "farming:strawberry_6", - "farming:strawberry_7" - }, - neighbors = {"farming:soil_wet"}, - interval = 9, - chance = 20, - catch_up = false, - action = function(pos, node) - - -- are we on wet soil? - pos.y = pos.y - 1 - if minetest.get_item_group(minetest.get_node(pos).name, "soil") < 3 then - return - end - pos.y = pos.y + 1 - - -- do we have enough light? - local light = minetest.get_node_light(pos) - - if not light - or light < 13 then - return - end - - -- grow to next stage - local num = node.name:split("_")[2] - - node.name = "farming:strawberry_" .. tonumber(num + 1) - - minetest.swap_node(pos, node) - end -}) - -end -- END IF diff --git a/mods/farming/sugar.lua b/mods/farming/sugar.lua deleted file mode 100644 index efc92efd..00000000 --- a/mods/farming/sugar.lua +++ /dev/null @@ -1,14 +0,0 @@ - ---= Sugar - -minetest.register_craftitem("farming:sugar", { - description = "Sugar", - inventory_image = "farming_sugar.png", -}) - -minetest.register_craft({ - type = "cooking", - cooktime = 3, - output = "farming:sugar 2", - recipe = "default:papyrus", -}) \ No newline at end of file diff --git a/mods/farming/textures/farming_baked_potato.png b/mods/farming/textures/farming_baked_potato.png deleted file mode 100644 index 425c4ae333ad4629fac7095108ebc6fc043656af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmV-H0lxl;P)o#s5c-QvbhvnFBV6pi5vjf;1dI z?giEi!nbb4{=axJ{BQP$7!J}rD~$oW?Hg+$ z27qjX8C2uJ@PA4I!~X+4I5fflNC7Bh8+;i4cZD(hZwX-dU+>NEe`YGg)&)5X_@i!9 z9mD@^O%TP4^BMk6OM=iKgK9k)h>LfS29T3MPMw|%!6YZy?r?_x`PO7;Bo_bxNuTQ` TQlETq00000NkvXXu0mjfmmPPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00007bV*G`2iyoB z5CbCwPWwFo00DzZL_t(I%cYXdD@0Kkho5urU}hsb*(eKkV`D2j zd;i8PZIot3N!h3=+fjG0n1#r3XE=bYbj-rn;FDJ4$pY-<&l z({ONckmdatic^587CLtf2!@US0g5G@4Dn!NfY+Nup@ZR`4vyAG{si!tDhiDSz~p!w z`Fw@BIq}=+%ZJAdHV*|rf0sr&p5i=t!tL%DPdhUe!^v$QrYccnrnKh*@YFZ+VnO=+ zf`%52+|D!~o;T_=ANP01sOAl}o#Q!uOE8>bzRd%G*KeSB{YHs4w`9v?UPvo@jVqTY z6J5cbkK%gIku(g__gNOETFU=ID4-KQO~|1>jn1ZCA{To?sj{h772ZFqv4lX=+hxLt z0f^$mKUD7T(s(i9=qiHV-63o0o2b)#JYKGmipTg4^C4Qxdk_lf#iayLtv8e^8-W{3 z2mrFwic$YzWs$xi747o+4e=`zLjk>XU`dtX*{CRY?+bQ;r%1TN|Ahbm002ovPDHLk FV1iwP-J}2j diff --git a/mods/farming/textures/farming_banana_leaves.png b/mods/farming/textures/farming_banana_leaves.png deleted file mode 100644 index cf8eecbf1251e08347e964853dabed27c627c9c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 621 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`K2;$RB|(Yh3I#>^X_+~x3MG{V zsS2qTnQ06R6}KLHtv%uMIEaBcSy@jwxR~46+t`>{!C<4wMiVaw5_$Qs7kmC(Bm$SelvY3H^?+6GpPSxg<1`4v5c>21s-{Fww*V5f^YV91b zkZVMVV`)i7ei6gUb!R+)LR=+4A?N&p%A(Blj1q=5{Aa9yqI_V{qSVBa%=|oslFZyx z2Gj5SoIn{)kW6rXT1k0gQ7S`h!GDl)Zjhi$W^r;(B2Z}&!}bGP`hmh6AmQ-DqP)z! zbcO@c&)R`v>=6B>MaiiQU;j71hADH-&&^HED`EI{X4-zB7#m1gNM=b+D#MC*m(+nG zKRjI=Lo9mNPBP3sY#`7&-$#gJp{C+&Ly0c#s4Xck?Jw4Un`9r5EFh7qq;iyF$$`=g z|B0Km@&#=QFO`4y6A-l97jbT=B~E zd_O;bN8SH~H@zqHXF6rhKLz3xYk)|@-0-_^MPE{EQuf?NCdwPs1JIq_M( zT6xN}Dk&pf9Jf8hUt7<1gZRASkVVs7fs)D#-Al Ze$|J$Odc;*=K#Zi!PC{xWt~$(697ur;#U9w diff --git a/mods/farming/textures/farming_banana_sapling.png b/mods/farming/textures/farming_banana_sapling.png deleted file mode 100644 index 821c64ff374ad182b4b0bb87d4a4f7a44b450430..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`K2;$RB|(Yh3I#>^X_+~x3MG{V zsS2qTnQ06R6}KLHtv%uMIEaBcSy@jwxR~46+t`>{!C<4wMiVaw5_$Qs7kmC(Bm$SelvY3H^?+6GpPSxg<1`4v5c>21s-{FwwmonjgZoD2W ziU&OF--5C#{5LXFM$T`2DvM4h>ql94%{~0TwC?8m~C^fMpGe1wEBr`Xa z!Sp*nCs2kHBomyUR#Ki=l*$lW@E@d{8zktGS)81c2vl0cu>HW6exNW1NH{#PC@(WF zo#BA=vv!~uJ4AnJQF1E7*Z+aL#|S@MTYn?|&dS>`lg!Z}QV+jMQ$iTEsS=XHB!xDhR)^ zGb6E7kSje>`SAbd%MuT`zJ@&gw^+LCovDcanR_daZFs2Aq<`l0!Gv|If6Z@fY&>`} z;_v>(SGsJ>SEDuT5?uP-)RVvd|FdTg&ujiUi6us1|NnozZqJryrq;H8|3AYydunD2 z+HwT&SeVTH`2X^C9v|Ms~&PkjBq)CXzl$1*t??jF*;>6opb0}L+)Pgg&ebxsLQ0A8N` Am;e9( diff --git a/mods/farming/textures/farming_barley.png b/mods/farming/textures/farming_barley.png deleted file mode 100644 index ca929e0e0cfa7852ad952325191cf22bb215e6eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vt8QkVR*;faoT6uuoM(kr zO1XY$gGy9`ZbXA|RHshnEYsXsE)CP{)=ai+K4N`gbKt`>eM`@`MFO=mmIV0)GdMiE zkp|=>db&7tSePLZmF-$ zXkB{w_sm^~RA+u?6=jw_w&a#zK gim|o1v@x(Tuxw?xnXsmG6;KU>r>mdKI;Vst0HOCHn*aa+ diff --git a/mods/farming/textures/farming_barley_2.png b/mods/farming/textures/farming_barley_2.png deleted file mode 100644 index 96610c2f9f4e98fa44990ef6d947acffe15fc04c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aH3Ty9nYpI%TF&BQ*eqX@bbU` tfkOw_QWy#qoST`LnRg30FKA|DW-#bt7Ex>w{sq*<;OXk;vd$@?2>^5&Ctd&m diff --git a/mods/farming/textures/farming_barley_3.png b/mods/farming/textures/farming_barley_3.png deleted file mode 100644 index ef14b5b321603ee5d643ab99f571187ab1f8985a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs{@c>!@v~Ez?;R)P|IZ5 z#LGIFFSL%|x|@?>nP6f!ul;;MyH&hdi&=HHaWb6XV!6wZa$#mWP#0rKkY6x^!?PP{ zK#q^6i(`ny<+DA3d<_O1&fLLfZF%?pZ|U3U@|g3<;!54j#`?S8c&Es{)8`er{%on( z$*2F7clNJb#I;dn!&O7Ao>RwuZ!xkE_B$2h{*=wxlQG1&$~_EdE`z75pUXO@geCxA C(Lojf diff --git a/mods/farming/textures/farming_barley_4.png b/mods/farming/textures/farming_barley_4.png deleted file mode 100644 index f7c90544fff9159878eef2d06988e7ffad86f9b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs{;cAn*#$+AcJZ=19J|G zXcY%XFE7JlZCka&oc;91V{HGd>)EEBd(gaO?w+Ox z%Px0@)J-_>YT3=BCq&(DI=`Qo*X3T^dTNpIl*O*nm%?2wcl!w3W)tK+@c1m-%p+Va a1&j;+F=gf&UE2?|i^0>?&t;ucLK6V)PEErA diff --git a/mods/farming/textures/farming_barley_5.png b/mods/farming/textures/farming_barley_5.png deleted file mode 100644 index 68c0d683934b8b164bb092a1bbf61e83d453b49b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs{;drh%|$|4uhH@gT6h3 zsTYG+DsxaCS9CRZYCCsEFGIm}o{GhSWy=|wHZyb|WSDx1p?UhH*+A`#B|(0{3=Yq3 zqyagFo-U3d5|`)pIEo!n;BXGsW?E$M-Tv)@x2IAgKOFMs_)z+YWwZQ)>*v1Q`N6o$ zFM8qzUz!}?^t*>W5IQwj;($Zl9o(Z r6DH)tmv=Yr|a zayO=|{uSMpJDG21lg^7PrRTqS%gHJ}{Jg{EQ}gGVtOE-0HBL7-F7HFLCz(d%UNvHN`jx>Nu3N;S8}{Yop`!|-@qsL?g3~S5 Rw*y_p;OXk;vd$@?2>`@0V5tBA diff --git a/mods/farming/textures/farming_barley_7.png b/mods/farming/textures/farming_barley_7.png deleted file mode 100644 index 1c636afbea800b2748fade6f1718ddffc5b375f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs{;cA8y|y+EQ7Q2S>qlrZtl-D_1cz?qI#JIq>0`zGL6|m4MnAOM?7@862M7 zNCR>vc)B=-NL+U9jTB;0b-o$zCufKIhy-Ad!ofgNPTR&d?y8r9L>$kV2uPIKJ zuXW7((YNx0^&JkwocX&xx8*$TVO<=-X8UmJEFSrTk^Q#}oMQy0 zWlGVl0vCOQwc##YSB{GsURuafxoRQLmgwnm4pz;-8Eu|0Znv7icEgTe~DWM4fHVR=7 diff --git a/mods/farming/textures/farming_barley_seed.png b/mods/farming/textures/farming_barley_seed.png deleted file mode 100644 index 2f00a20af9e02653dff065ad6897fc40a3cb7ddd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ%`eK$=rqflXjL-9wrzv^ zgq=at_QsgAU-=7Ez*rLG7tG-B>_!@pqvh%17{YNqIpF})q(mO~5HqfX;s&D`EDwC9 pB?!!9I?|=kwwf`9lX)TogWzmtuh%D{b^>)Vc)I$ztaD0e0svrzE2sbf diff --git a/mods/farming/textures/farming_beanbush.png b/mods/farming/textures/farming_beanbush.png deleted file mode 100644 index 637e7162d46a9bf193f8b400c076ad7156a2958a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeXEjDCq&)JYRO?Yba4#fxUPEIkc-Jtz~y58 z?Y`O{dcG z;=kW33gm8XwEOwXJJr+dU2pBCO~;osEtB4(%-+3yQB07poMuJwDS^qE=1Yz-&i={R YZovOR;>fG%KeyY002ovPDHLkV1gyTi>&|v diff --git a/mods/farming/textures/farming_beanpole_1.png b/mods/farming/textures/farming_beanpole_1.png deleted file mode 100644 index ef2bd5abe14f6a13a035f901d2ecc7d749335014..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvi2$Dv*Te#b93PQ3ACZ<=iL`0L zISWJzmWh^c5IdzH7YbCvSQ6wH%;50sMjDXQ;pyTSqH(@;;z8bK0|A!r=hS`*WgKW^ z3(#7?GTnjm<$qQtmD`IwJ|3RtW_7m8e^>u%+k*^$SQoflC{AJ9@L#Oypm@~7ScX0B z6P$0cak@`p+w=4P7v>1rBf?x9ItSM0Fa)!zeXHw}mgd`VuYB)Trk>e9V$MgX+zqeF nJ32cltS)7B(we|7^&5;%AK3h5RvMlKx{1Nl)z4*}Q$iB}1btSk diff --git a/mods/farming/textures/farming_beanpole_2.png b/mods/farming/textures/farming_beanpole_2.png deleted file mode 100644 index 34143e470fa2e7762acddb6d6ec296fe18ef0f3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvi2$Dv*Te#b93PQ3ACZ<=iL`0L zISWJzmWh^c5IdzH7YbCvSQ6wH%;50sMjDVa&(p;*MB{wxL_@yA3Oug82UC5cOP8O# zVET%4Ps;Wpp?CJ87gzDcPkqJMss6xTdXc|juP8Hv9rJ>wghSfg4Ik`T54MK;wB8YA z@K?Cxj^qMcWT|5sV*baT(%Nj-0tJp9l*>z23d9tM_gJVym?I+_Dr%HZkh K=d#Wzp$PyKw_sTS diff --git a/mods/farming/textures/farming_beanpole_3.png b/mods/farming/textures/farming_beanpole_3.png deleted file mode 100644 index d693f17090f63db73650a55b8691dac267d39b5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvi2$Dv*Te#b93PQ3ACZ<=iL`0L zISWJzmWh^c5IdzH7YbCvSQ6wH%;50sMjDW_-_yl0MB{wx#Jzln40u}RUQyGwenJ4$$`Ixl}+Uz z3=-Pb%1_RH$Z_1uS$SSoxSF&|hxnX~K*w1uX(G7?YXfIWOxa(S&TDjDa>r`UqHc%K z37j5F%ul|TX>l{YlI||kG^w%CLh`De+(VG;L^B|S6B st5l*^=(wKmXxfyNe(uB!^}PqVlPtueObpeefL>wnboFyt=akR{0Ota4WdHyG diff --git a/mods/farming/textures/farming_beanpole_4.png b/mods/farming/textures/farming_beanpole_4.png deleted file mode 100644 index c779b254c52345ce2dea0642ce8e5243a98b19a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355 zcmV-p0i6DcP)g)3qH~!@pMDPF=b)wCZL!P*y-lNS)l1Qq*s88!Ho^lN41K z$D5z-z4wa`;C~FL>3>SE(8Aq;%{^p8?5I_HkWiv1;nbf`R+}tk8-C7NNWI9`6E@%Q zt3&BwS$X}*+WA?A`cdI?Ru@g#a>F+3=;80Kooc?zSj4|mZTmka@E@i)#-dq3x002ovPDHLkV1l^F BlU4u# diff --git a/mods/farming/textures/farming_beanpole_5.png b/mods/farming/textures/farming_beanpole_5.png deleted file mode 100644 index 910f8a07d54f862539b2877ce6a389c4120c7bcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 353 zcmV-n0iOPeP)00DGTPE!Ct=GbNc008kxL_t(2 z&s~wRPQx$|h8_2gI9m$pZb~b}hLAe28G@x|J0e$g-y%!)Ac0V~sOpf%#X^X?^tSt? z`~CS&slU=nR!*~Q0?_HXx*!%?(T77QfduG`zN;rAV-^k*&{r=;_T6XmKJH~GUcdHU zfZ@&h)g%I+VJ*Q?Z?TkLiKhsaP(@$GB1l!Z9gTKE1FbSU$08vl@Uamh&4WU<8W>at zi53jPuFeS`8FV_PmzLi=vfK_>`y+$Jnev#i7}&2?nHifkHsuw~J%gf8Yju`KBDOgZ zFW|`op>sF?pu`r_efi!N2FVdQ&MBb@0Np=DHvj+t diff --git a/mods/farming/textures/farming_blueberries.png b/mods/farming/textures/farming_blueberries.png deleted file mode 100644 index b0c493195c4b46e5196221e5f0c49b7cf16adbe7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRRD?FGDuXi$VD)y%x2Nu z%@EKjnzcu)@s{-NqaT5?j3q&S!3+-1ZlnP@=AJH&Asp9}6ArM=;90=a@1mh>BdEnV zmC3VVrUK^%Edl=7S_bwuf;x{FmmEk^Xnkl9TX4I9fuU*%*L>$Uk3)b)FnGH9xvX$ZR|6JHC@W!tw1D8g70 zk;uyklJvl*vMMOe^MMi?9N`j})P-6!J10MrZdH|!oHc%CVr>mdK II;Vst03L!ESpWb4 diff --git a/mods/farming/textures/farming_blueberry_2.png b/mods/farming/textures/farming_blueberry_2.png deleted file mode 100644 index 308a0caf006a7d617319c7cc98453d7a36d8e55b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmV<503iQ~P)h@_o(N*kEDlq_MDpfx^<_@_uNhOZC!QT2eMpOHmS^?`&TPXZ(4@sY%cA zl0Ne_9U^u^NIGpFGEo8&0@ojGm;88dLFHYfOeTPFrK;OW-U$p&5#YGGh@MlB^Cmfb zWPd}r$K`-w?vG&d7cJ`L!QKv;LafsNG$q1uSqDGCEqex*5DA=q}lDyOs9=l?9XkQhdkU? zdA_gnC*U(5xxYq^mnc9Hh={sk^>o1k?oN@typvRADj-)A^*RU@C?k)O65!6x8m>ZQ z%K4CDF4_M8w$t0Gaoj2sR}(q@zBeSTvO3K#t7hf60d-Vp|FQ~fYG49Q0!V>s?P^~) hprJiz53o6Y;uowDqLJPOy4wH%002ovPDHLkV1k`AU_Af; diff --git a/mods/farming/textures/farming_blueberry_4.png b/mods/farming/textures/farming_blueberry_4.png deleted file mode 100644 index 75fb69a0ee637f2bcfd309bd8b3c1e8ddd049559..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317 zcmV-D0mA-?P)EJl!N5h5>1s;&t8sh>gb_^9sCPZ`kin0Dz*7 zDZR4II2tjpz||JtBIgz8MDBuRn-O_s!MaJP45*ugVG3mevAdCQoPeBAJp>9-8H;l! zQmZXES#*^9BVnoSk)Cc6H%=5f_dRfav)|-i)G^;*J|h5FYH&IQW;5V;=SDgURafPeRJjAo%Jt|_3c=7)EcOTu_VYZn8D%MjWi&q*we)^gyVX0 zLPCOwh)4nhlUrwBpPPVpMD^FSUbh7flh3Vj)-LBT@OWcc{Orlh%e_2@W~KLBn`61= zgu<3*J(p$$PZp6>c{V4qluhNRhVACX$=z9ifz~s4y85}Sb4q9e08e;RLI3~& diff --git a/mods/farming/textures/farming_bottle_ethanol.png b/mods/farming/textures/farming_bottle_ethanol.png deleted file mode 100644 index 84e6162de837acf5f930477d9c6ee8877d35229f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(a1=3pm&!lD{!JP~7dHDYce{k<=MVsk>iBic20p~P(_^K!~ zL-&a;Uf5VD?|otpPlZcMA+>7ELAOQ!1V-uzL|CcCh_)FWLgFA5 zvGq6Vd;H>Y0oE!)wHkBqy+!A!ARXomGs`e9Xf@i*8K_)@%P~Y?81p&P(>O+m7DkwDL%_&g^5`h%3o&rPg)&T*D zfd!Q3AWZGv+0-xTSF`}9;ILR6D0nC;%7ltCacc)*OqlWP_J*oE1%*!D!(v#{5HzB% q18(j#gjsK&T=V!_d-W}!f8i%XZ^E3%vu4Er0000q|v6C`4u zBWO{^JvUCuu9bUvs=Rxrz`imq|5*azOT{kLtKID~d@|dYO{aVtP&;EukY6x^!?PP{ zKu)-)i(`ny<*9w1LJbN$EQ;L@90&jJ58E>3X!p}QRxf8A*(smcHg&7U`53cKXHUjZ zvkU1$t0Xrz{HTsEKh1Hmd|{#5b!ok07w7xUU)Fr^Q%^7FbpH4sbD3S;nLJmoom2<3 Og2B_(&t;ucLK6UaE=pej diff --git a/mods/farming/textures/farming_carrot_1.png b/mods/farming/textures/farming_carrot_1.png deleted file mode 100644 index bbeae7e8a3ca2915c4b76dba28933e95a6ebdc0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uId~D{<8$amx`^jo6-jq zWGo5t3ubV5b|VeQ5%hF%4B@z*oUlMBgCR+cosEGdjNx!I_xT$@Nd`|>KbLh*2~7Z+ CK^ZXs diff --git a/mods/farming/textures/farming_carrot_2.png b/mods/farming/textures/farming_carrot_2.png deleted file mode 100644 index b24ecc05049160fe0965788b1c5b767530ae92b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|t{xl${<8$amx^gVx%C?; z$XF8O7tG-B>_!@pBjV}e7{YNqIbnf}34@_>M?z5o0|QqaqYL-egkwN?22WQ%mvv4F FO#mQi8odAj diff --git a/mods/farming/textures/farming_carrot_3.png b/mods/farming/textures/farming_carrot_3.png deleted file mode 100644 index 840050570f0fb4f23654553e1a90026f3defe895..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|u1cH&{<8$amx}2yUyKI| zGL{7S1v5B2yO9Ruh%YY?E4sHEZY|a0#z`0y85}S Ib4q9e00lT2M*si- diff --git a/mods/farming/textures/farming_carrot_4.png b/mods/farming/textures/farming_carrot_4.png deleted file mode 100644 index 32ee26245c9e8c2a2821d3fae65a911b4abdedbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0YzoQ^0?gK=@Lz`)+;~ zKt5whkY6x^!?PP{K#ruRi(?4K_2h&FECnVEoXeOUnu-}ao*rOe5MRM$=KRjmdKI;Vst0KR`6IRF3v diff --git a/mods/farming/textures/farming_carrot_5.png b/mods/farming/textures/farming_carrot_5.png deleted file mode 100644 index 0bcd9c1e3baf7dcc4ce9c88dbf3dcfe4ca6dc1bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0YzoQ^0?gK=@Lz`)+;~ zKt5whkY6x^!?PP{K#r`Zi(?4K_2dKv;Q|u|&Sl09O~s5IPZ?As_zf5sR2i6=nXX@q Q04ikgboFyt=akR{0P;>7g#Z8m diff --git a/mods/farming/textures/farming_carrot_6.png b/mods/farming/textures/farming_carrot_6.png deleted file mode 100644 index a17c6b2bbff968e6e4946726acf6442f54f92bcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0YzoQ^0?gK=@Lz`)+;~ zKt5whkY6x^!?PP{K#sDfi(?4K_2dKvUI~VcuFMk>te90S#2Gl1*%b~}FsM8`z`)?- Wz;T{J7 diff --git a/mods/farming/textures/farming_carrot_7.png b/mods/farming/textures/farming_carrot_7.png deleted file mode 100644 index d26eee7cce6a0d6cc021517a73d615b470958d6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZWnj>>DC4$k<#z8BaOo59 zpCu5!R4n1wn;$?0j3q&S!3+-1ZlnP@nw~C>Asp9}6Be*07&inkG79Wt%ywdG5tZQz nJ($H1c=*5@hO0+Z7*rTaYMHGL_B2cdYGUwo^>bP0l+XkK-Pb3p diff --git a/mods/farming/textures/farming_carrot_8.png b/mods/farming/textures/farming_carrot_8.png deleted file mode 100644 index 00b6d92885e473fd0ca76295b14c1294559d9765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=1E}+;*+p?wtZIeFFQ+ zwESlYgfA7lRIhfo%kar;Upb}x)j&mzB|(0{3=Yq3qyag)o-U3d9M_W*7APf{Hw18U z3hZNyc4TasI)^RvU>ZZ<;RA0Nt{zcgNIjFqD#Wl#j%9yxW zDB~{3;k9e!cJCDMpCu5!RBZ7g_k;VSE?+i&|32&Y?@M18c|is-mIV0)GdMiEkp|@W zdb&7$25|E$vl_U=5cVDjCxgN1oEBVV>8g9xwSQID##Z-53fc)I$ztaD0e0stTJ BMu`9b diff --git a/mods/farming/textures/farming_chocolate_dark.png b/mods/farming/textures/farming_chocolate_dark.png deleted file mode 100644 index 03243b274bcacd462e39b4042b2c364fbdee6007..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6O!VDyj#A@{cDgFST5LZP826GvPRAZ)e6NU~K z##)8j+CVABk|4ie28U-i(tw;qPZ!4!j_bbt7X=R}a5xt-mohgCU*MhcH(je^>$7&7 zzGjClAx5&ITmDqb6!CLv38-&bpa04@nCo<{Lh#iW{1zQeOZ{1Fx}F|A&~=OF_qJD| p->yC>5L#nhvwUaqw%^Tf<8Ry-Qj|ClUjej?!PC{xWt~$(69D9SLB9Y1 diff --git a/mods/farming/textures/farming_cocoa_1.png b/mods/farming/textures/farming_cocoa_1.png deleted file mode 100644 index f887a1fb1b758229c763a7f60d4bd15436877b8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;VYl>^Oil2&hvcBVF6_gTe~DWM4f?R-~> diff --git a/mods/farming/textures/farming_cocoa_2.png b/mods/farming/textures/farming_cocoa_2.png deleted file mode 100644 index f0d393532509e2d9c2aae1735feff65735cafe99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;VYl>;Uil2&hvi__tq4k{% zN9QqIn9J~J6T_Wt3_njWd_O7ozo$iOpB-Kg)XrEE9`#i+@Rf5OstdO^*N$;BSKlD_7nqT#Gab8NqXM3P_#*!evU5E&^1fZW1~Xy1dW!13K|+5 f8yU0s^cWa6ALXe3yedx!Xg-6dtDnm{r-UW|E!{Vd diff --git a/mods/farming/textures/farming_coffee_1.png b/mods/farming/textures/farming_coffee_1.png deleted file mode 100644 index 97c207a313610e5e4e8316d762ab75d8e8236aad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXJ?3guI(Qc@;KxK?2L4Lsu4$p3+0Xb5hE{-7_*OL<#=xekX-jG?q!^f)8 de3ik2fkAvRqo}92{sN#X22WQ%mvv4FO#q!(BT@hW diff --git a/mods/farming/textures/farming_coffee_2.png b/mods/farming/textures/farming_coffee_2.png deleted file mode 100644 index a659f851fd94fe9e9025d2ef700b41bb19714e01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXJ?4B(Nhlrx)a6Llym z`9fObi<*XaRb5~EjM74dfyx+5g8YIR9G=}s19DV6T^vI=t|uofkmG1EjCjbytkLYt ocL&V_ils_RF7~fa)1MUHx3vIVCg!0Fnal#7TQD| zib^@3TJ)&2{ZmK7QinM}X~vQuzhDN3XE)M-96L`J#}JO|$q5R48xBgc1+eYTWNbOO zP=IgQ=}V#tLVPk@0j4sqQUi{jQ{ziuTg~Lm6rmuxO0CtGAx~8>m!CkB O7(8A5T-G@yGywoQ%rRa7 diff --git a/mods/farming/textures/farming_coffee_4.png b/mods/farming/textures/farming_coffee_4.png deleted file mode 100644 index 37a609f66d24cd61f8aed53098d2f0eb4a19578f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXJ?4&jlhRxq1tYqQWM z>QGe5`P8CErR|?Oaz20h1ysgZ666=m;PC858jut0>Eal|aXmS~fr%|(mZ6}U5L0po zr-Nh;TY%W^Oh?8UiVG$9u7yln$1t&AV*tbI#PlZt`pqlS%FPNHj9o;J2s>=4Smng& l(PDelcLBqqHeMG-23`lwI{$O`*n!3~c)I$ztaD0e0suJ!Ix7GG diff --git a/mods/farming/textures/farming_coffee_5.png b/mods/farming/textures/farming_coffee_5.png deleted file mode 100644 index e624fbebe1129c5c884a7c3abd76d86350e62e8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXJ?^y6M^&LC5*U^dm( zW}!{u>7=4ZrR|?OmWRFS2P$JM3GxeOaCmkj4af=hba4#fxSpKgz{D3YOH)v75?AsH zO$W&wz5ub^(T2Z?7p4WwY)Hf7ON6Hxp?`) zua9p(eS7-h+sAI6D}q2Zj3q&S!3+-1ZlnP@R-P`7Asp9}6BY<;Sh}=zsValy8-=(^ zh6#y0EUa%%@Te*{ByLdQ;_6z?Bx<~an`>GFZ<3~dc|rmM!;xOD{YKWQEkIKkJYD@< J);T3K0RRauGzb6y diff --git a/mods/farming/textures/farming_coffee_cup_hot.png b/mods/farming/textures/farming_coffee_cup_hot.png deleted file mode 100644 index f4fae904142e3ac14ccd50da6311f4074b9a2e9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUO)Ovtu@TDh5pRl>xp?`) zua9p(eS7-h+sAI6D}q2Zj3q&S!3+-1ZlnP@zMd|QAsp9}6C4=W#n{*d&K{d^fK4oc zk+YF8K!MSfS7yV~rL9XFpWJZV^NB&>umlI!jfs+84h@GAJViuA{8_cq3dBWp8Y9Bu c_)H`jZvW$TpwF8eK4VnkVej4iHHIL|Z{@0du{7%sg@=)F1|2u;yki%fWHt zfSZ)#AZ*{LgV+NMJMkx2kCZSdl?6nyM(3RHfD8~YU9-C{p(YLhHQE?~hz$nF-e3nH zkB4oXW1dKHge0oep@A|{XUGBonUfml9FmwF?Y0280KhEAEffi+N9&xdRfoG1%f5<~ ziSBjeP*%GP{ntgzU3FwQ#NkH$rs{;6}Zn*(S7C2{?1z5*?m2&qR z4($ShzF1}V4hj94C|N^@wKwSWx_#sLgxHWcvcvU6`~Yja46a=ygM+Q6ecH9(!sQNa16E5n*d qPfvj(=?Nl2DG4mxoK6}R3=H$q`CGmUMxOz5*r z?Xl13bDgm%Zjp@19iSSp z?RU?c>{>bBYubjSmC7G^fyx+5g8YIR9G=}s19EgdT^vI=t|uobh>AG8WMkKGc3!}E yC}ERF1DE7M5$OXNj60Gvnnl%)PG~s8!0=-~OVCWWTg!nO89ZJ6T-G@yGywoEeJ!Z~ diff --git a/mods/farming/textures/farming_corn_5.png b/mods/farming/textures/farming_corn_5.png deleted file mode 100644 index 7b6fb02b707ae653e7b29c5b384271e3e94dd93f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXK7E;o#9HBD}Hi0?7W zndDwI&$Dhp$kdH-Pt4_R0+lhA1o;IsI6S+N2IQD{x;Tb#Tu)9oz%Qd9BHeTF#sr3` z8ymU|HdvWBMoKXzteW7+tEJ2k93#gNyoSNpl0lo9p}dQYy)kBP0#HALr>mdKI;Vst E0Bim&3jhEB diff --git a/mods/farming/textures/farming_corn_6.png b/mods/farming/textures/farming_corn_6.png deleted file mode 100644 index 313697b90653b62819b4df7606ac80e65157911d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy#sNMduHAMEG?QgK%MC)BO`==v z;@d5wJB?F%>=OGdGA4OtPj)Su>{dS4y>ms#v<*qKHpNZfme@0)dJ0fGV@Z%-FoVOh z8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-JcqUD@w(3UlgNWwtGQ2NVkO zba4!^IGvmz!McUP=g*YY4;~~WJV-sVys6i*L2|v|nwp9ymNOf;Dn4XBPf1KT`rfU~ zFO6wm!twPC5?pUu4s~`1cog-wskpEzvc|NCENE9@SkuY4r?JYY2xvNkr>mdKI;Vst E0JTIseMktGlFuaxD`!yE1MZqJlm&sj)#`cJ#(O5#*!evUYh7ML)4Ealo zaXvXgBE&&Hw&A5SFVdQ&MBb@0HPvQCjbBd diff --git a/mods/farming/textures/farming_corn_8.png b/mods/farming/textures/farming_corn_8.png deleted file mode 100644 index 77e442b09977c3945e4b2cd3aec4cbe34a897e6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy#sNMdu8%LS&`y>y$}(Las^eZ^ zU{PxsP-Pm{YLeJto!Dm)JR>M;vU|~F*Zk?8`&%+=7yETBk95DqEeX`lSQ6wH%;50s zMjD8d z^N5Wh^?P>0zf+r-`=@bT-ol5$D=qIum}J7} z`#h|Rc0GF7E>|PmdWZAEe~-_>zmENVvcrGTC04#yKXMNM9m3%0>gTe~DWM4f`<8Ex diff --git a/mods/farming/textures/farming_corn_cob.png b/mods/farming/textures/farming_corn_cob.png deleted file mode 100644 index a2fd9da7d09358e8ac76ea460d817656b5031c12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUO)OxLiBVE6RA1gEdT=Vk zskyAT*T~%7pSjar_Y6=CV@Z%-FoVOh8)-m}kEe@c2*>s0ga!sijkziu3vc>}DwJep zFwF?eOJZAg(>rDXlWJN5TlG$FDVGCBC3Ox=d&DE?QCMckU_2?dM{(II3uhLIR-OxQ bS{WIpvT*hl)xgG#>vCLxQk&%%X!6lKsg3aS3j3^P6N1~t zT7lw>B|(0{3=Yq3qyafno-U3d6^zLXSPYCdFr0Mfa%j5C=_!@pqwneB7{YNqd4UMW0SP{XHb$ow$z^Sx4T37?j~qC$fI-YC mC8cFmP*}r-9yd1!AqL+pCe=^OGu(k%89ZJ6T-G@yGywoue<@V} diff --git a/mods/farming/textures/farming_cotton_4.png b/mods/farming/textures/farming_cotton_4.png deleted file mode 100644 index f314b07b7e1968592fb8bf3f9fb592f4a6467010..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=7hmI;G_XzVTY!9oC1Y zup|P77)yfuf*Bm1-ADs+Og&v3LpZJ{EAVbOAi-zQ#?;oq5F)ymnOS)P%j(3i1g4Y5 q%sbf$~F!A+hX*qB)6klZKoY&;i1vH7l)78&qol`;+0Mzd* A1ONa4 diff --git a/mods/farming/textures/farming_cotton_6.png b/mods/farming/textures/farming_cotton_6.png deleted file mode 100644 index f4bd4fb346ec9ee2a71696d9337723d2be7de8dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^3h)VW^~o%3Ot#4jH=kbW9_ejT z5o;-L`KAjf%UBZR7tG-B>_!@pn!GVY2Kz8F^Aq7W=<|h7su7+0_ z%;(jgy1^6crYhviImc{Ej=$HGy^A(l>lC<3yg$co;R#@=OgfrXJV)k$6JL*(mP0PX<{vDId%2_RfQB-7 My85}Sb4q9e07KF(tpET3 diff --git a/mods/farming/textures/farming_cotton_8.png b/mods/farming/textures/farming_cotton_8.png deleted file mode 100644 index f835ba5b3f6f2c4d0e6c3f730be01e599dab7b6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ1=1BEstJygSFT*~H50Ya z6g2nMH80Iv29#hd3GxeOaCmkj4akZ0ba4#fxSrd&k+;Es=fIpT2I&tPJ~#^SGX#C- zlbP^;{Q{w$icL9n8i96(^{U|s@{S!nx`{Fen{H}v4KbMfXl0lD=7OY*ggmJ~bxxfl+I4L|LH_AoGby85}Sb4q9e09F4!`v3p{ diff --git a/mods/farming/textures/farming_cotton_seed.png b/mods/farming/textures/farming_cotton_seed.png deleted file mode 100644 index f1d5b8ab714e2f074b8136aac0d8dab88c0acc2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b^~o&sbXJcEvo6REsH=<@ zI$@IslwvFi@(X5gcy=QV$T9VFaSW+oOg_LkL)2l3Fmv-nh7LuY0}32s=^+P}PGejn t#^aEscx$0U1mmeR5eCVl4VN|87&b3ts&D#O@cf4Ux*d*m>!qJ?|+p;0iq>WL5F(thzheea+CfA~;T#88w zQaJ)zopr0F+lb?f?J) diff --git a/mods/farming/textures/farming_cucumber_1.png b/mods/farming/textures/farming_cucumber_1.png deleted file mode 100644 index e008fd12aef55c66f70a05c7d444c0ad69eca6d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`cAhSdAr-fh6C_v{Cx{5}-sv;? z!@u{?hxr<}1CrGePVcx!&=f9@W zfh6n0^>eSTXlsc}{J}4zev9EKE5}iVvkJ@;W81DzRq&jV`@fOli2F5$Ny;yzCNQNm z?{x;uhBhM ztpmcH2lO@;Mu!w7fENmcKVfppLLlVSJ8P#?b7PU|5&=+-7MJ7%T9d8jG6{Xerfm_k z><&QdSnTc7ff3MNWjhGSN00006VoOIv0RI600RN!9r;`8x0t!h) zK~yMHJ<&;S6G0RJ&_7l6V8?M1j06jWI2TvrIGh6(AOs|FoY>tp{DB36E4+uFKYjf2 z^Zxtsl#+z@!+!tnaK{Lb&*j(i%l&d;2ncYa+w1AW-GROxpN^#vQe90Q*VYYecQuX! zmDV{zjU}g??0Qb~O!V+l&Aj#|i5L+8d%)ANl&*Q;P#Y8UVjjcYZr4;P2||#N03Zr6 z;lurTydq2(rktdCAj3FtS&fnDD(68k3AmZMU#bHk5TjC4BcTjo4xpBqy#u{_eY2lt zMhT2)7@>@D`n}E*w_w+(VHjZGOKZ1>iO6Zcoe*Oh1_M{KuKwyUPiZ)8M<&z~^Gr*3 z&UjgrhEcj%Ep{$zL_kD0t)|;uy4lTLaUO=&W0WL7+FTxAo*&MOB}#xmpo)gTM5XnY zr2uwJ0@klL6Bx6ESm06{N2v2S5@@^IkKpk2{^@a95vi_5j757&mWPSll!^SmH{_Y} zTI$28xY_?70#c?hli!aQ?_H8K4`N7!y#_}J!K%preuVLKTCjxduQtcBkWf~yjv}zx zrrVq8STCwQ0#wZrF4f6mM~c(Aw(ja{1VY5QR1g0H XybyEF)T0<%00000NkvXXu0mjf*|Hr( 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 cffa955d6689ad88d675921a3e033256869343f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 590 zcmV-U0TPe1t@7;T-w)^~?9) zmtV`GsxUjv^Yi&g!Sz=E-0zolB?3Sg4|Dl^JoD#uxz;LRt8RhXyTkXpQVMJ9M3_@k zO3CISjRSePS9fpLR7nv)dSJQM+Iubv^O9iIBg%2VZ)Qv?2&yOmQBv@Fd6XR`NtjW! zJ3y4ex;cg1<(w5s5$@)`wg3SkjLl3`62b#8&t!D)`Fxm%k)k0HT_TKv+sif&)fh%udoanm8FNu{tJNNLivS|JS#_KC z>98BR$(VERQB)PQ=IMIBUmlw)6#>FbT%aPg_4`&K9jfBC9|t(8NFLZ)d-E=Zkan62 z0zY1s*L8dQAyKWTRaBBi3sGR2(%~>HZ8hr%n7Iko>f)Aq<1{Aw&)eWVjO3@M({UW- z{l~+VczT*RmVBBD<=wkQ-C9HxVoC`fZ$BQMvr@^V+?Ue*pZAb;$a!7*m=sliy2+ zH91To`P;3^doPf5RFgz&Hwb0-5XkF|FL5WZbM{o1T|bcQv91-$`Zf>`FwO0KD9J-; zB-?&nha<^nkqvKpA!UHKTc0`RZJD>ZbHKx_A*q4@o_;kYUtGz$>&yBsu+91WO6wAk z&3w!ovLA)wZFM6J2#(K9-tGC`4-`4gsO|zT~Q~``^I4EOL z>7-`Q{JEid)bUTz<7swwX2};X8%KmzY}TPj_G9%(fSt0vZ~9fuNv#fDkSrxDEMb8L zK--uqAik+ctnA0BBTvTm-Ko-|M<%HAI1mP4hSt3bzs|s!o{td!Fmi&WPy!egWDr8& zwhaPVek)<80J>TZJasq$HE25x7GIxS+#x1 z2KIYZ!NA=Enlu0(XCYZwWfLWQ3e}n~e_H2m!L&wzb{oCrmotgm6{H%NP)Yx-Q{f`< zH@JO-3eZ`a@+U&YmBnK_2Q1)?O?ZRdhUZQdDj+yK>Q(Rh3NFdZ=TG7>NIAI_??n!m z_&4Bw=&L%yD+{WZtr9sn0=#FV02K@&nKJ~oIqCbdYF)_k>$#~cas%rKG#CJ|#wxE+ nMIKmUBX=JleSSG%=DPSlp*&w|_r}1_00000NkvXXu0mjfA;%Mv diff --git a/mods/farming/textures/farming_donut.png b/mods/farming/textures/farming_donut.png deleted file mode 100644 index 8985299bb01d7abc91a4a81270891b52f0e933fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5qYrYT`trw8qt8?kRr z#F2%u2NuVkTpE3JdDPkEVHZ~?Uf&RZbwldq%?USmR*2>u50K%;a(!5;&F3d7)zEetIr{yH9G^m*Xn9Bc^4fBRn&2MuymLFy;*aW(>PKZ z{L+-}Up~daIAiWaDR;m3IlFX39w=DfD&8YybEEFxXI`5HY|cmXe$E3rgu&C*&t;uc GLK6UdziDj% diff --git a/mods/farming/textures/farming_donut_apple.png b/mods/farming/textures/farming_donut_apple.png deleted file mode 100644 index 6dfe63d5980364e3abe99d0ec5168b03d247dd93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vt4g8Q5?0Aw{4$@F^q+=$ zz6y7EloIqbBjav<(!-*H+ZAaK8fx!%w!EJ_<>-p!_w(l6-&-UjlX(EBov|dyFPOpM z*^M+Hr`*%UF+}2WZ;!XoVFQk%GPfHz@Bf~^P32w6rP!^L6XLS}FI>g_AT{YQ&#$~w z*A5@@X<5IhD&nP+v`ER*)8jIBIPrMdhs+sfr`9}*YDnPuVz!EZYSNT|`ghCEMw)Up3a@2buy?yp>x<3T zUB9&}eO{qum=rvvv&Z6~$mJs^JElvTMcn)Se13ee1#9}B-gTe~DWM4f D3aex3 diff --git a/mods/farming/textures/farming_flour.png b/mods/farming/textures/farming_flour.png deleted file mode 100644 index b1a97836efa64c2bf3867a9fe9155bd9247bc515..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ1=3%?e*ORd|D#8bUc7km z`}glRZ{F66&XcY3~p)~x=Jbv3`rdl*4ENZu5)^OeI1;7 z90c7vrgR#*oH}xYMdzqO&k~6>ZH_l?Na`>L@g^ELnKZU6P~z!nGWadpAi*&43dhd! T=tKX3CNp@t`njxgN@xNA6R|Z; diff --git a/mods/farming/textures/farming_grapes_1.png b/mods/farming/textures/farming_grapes_1.png deleted file mode 100644 index 64a935d27a6b088bfb71470cb180119014a75862..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv=>VS)*FXja7h@SObLkj&)ii%y z`H4FHMYc;DeAcuF>q)B$1C=qB1o;IsI6S+N2INfgba4#PIG>!rz+}eE$1af4&{(w9 z7@SE6XK-xcVmB#I_%Y43F_3|!aJ9s#hYwG!<7(m% yWz1o8C}%mq8o?XUShhhahcl2vguzijnnA2f{mewspshgHF?hQAxvXVS)S49Q}7h@SObLkj&)ii%y z`H4FHMYc;DeAcuF=cyL|1S(@J3GxeOaCmkj4anK*>EaloasKE8L;gbw0%4 zyU+22%6L|FC?7j!u`A;bb69=j%k$H`A3NsE*_*GZKmEI0xJY5kI^Cd}XB+qYy1wqa zN{%!`hO|PXrkbEo%Q_t=r%Ev?#l$lwg528AByYNy-}d#a4KL?D(+A3$uD&)}txI@+ zUrqjWJLs&+r|QS?-#NBEo|gXIg7VS)*Fpvc7h@SObLkj&)ii%y z`H4FHMYc;DeAcuFPx@566R3=_B*-tA!Qt7BG$7}gr;B5V#`(Du4EdW31X>N3wr=FE z7N2X~P^z+UYoDpW;}eTM@^}1WI(&Yc_@k{(F>kh;=<9!f7dPq0@sv2`lh19&6uQ@f743&i) z3a)In6}!GH>1gBqzW=`sG)iozuKD$<`P?s!j_gY5yN`;T_iBGBl=Bxa<*%Kw?2_AU zy(Jyfgx$Lg4yR-*#JryIxz<8tMT_mCDSk4R4FApT7HZl5weSlA`iQ~P)z4*}Q$iB} Dz?m zGaO1c8(c>vW=}02kt~mLJ*9w5tcO!@Z;nO)0004WQchCe3 zyAFad6vdRbj9uKj=-dIsu?ekpEP)^+i^LxQ{Q-@iZ5y?>%01i3&3Pq>J0ddak$msE z9nIr7n?M|LrBs!xKp>8oM<9rx(jyS*K!isi-X4+5TOra|e9Zgj?o!^$K$xmj#sOUT zLW6P-_>g}&7Hw0$vMW|cU5ZTivXA!YMsq(-(H^Z*x+)+Cb~!LZ76@^Y)KVRYcEExZ zKYQT6J=VxJtckkVOk?*2d-TulTu!iu&!ClQ!G$+21zLlKrW+4vYl(Gx#7TXQ$fe~q ct3P|Z09FVrZ1Y1n!TUtP)vW=}02kt~mLJ*9w5tcO!>C3E=z0004WQchCe( zvChIE6oqT>mX0jlS$^jZ);f|DejKl9qa9r|zJS#i(D>Lw8ZTGnY+nfH@MT#zc~zL0 z?0v3_lYeYRPvC!Pt!R>I?3+#=b8{_)9Iybk5fNvY? zLkNKGlqf|>U@&_v|0ELV4a6PDmO|(Nwp7n>tG4Vfb>RjxFdw^NB!XgzI>DdJJm5CSUBKI$KkmvW=}02kt~mLJ*9w5tcO!>C3E=z0004WQchCGx zv5vwp42F9OPBV64&vG|sps+?FxiA_vYBREccmWD8a3>xcN2iNZ?Cp;gfBu?=N*ZNz zH~)42x`f}u97^!Lan9{Gt^`6u2c1}#U^FdGw)G`|lk7($u>=a02MfGKtOflsbUfh| zy(gZSQ`%mq$F2lnm|Tc~IY19YQE?Grebwb6o+HHS1{Rn4)|A9(DJ%prT_Q_XQ7 zFX88Kt9(S~{JyU_@-2e5fFT=L`G_at=%wLnEiA3m9XKp}yc?U-b3E^E>?1RHGQwN3 t53GDBPd2FeT9ml(0q;Jd&Nlvhya0u2Fp(z*et-Y~002ovPDHLkV1h~pi$nkb diff --git a/mods/farming/textures/farming_grapes_7.png b/mods/farming/textures/farming_grapes_7.png deleted file mode 100644 index 9e70b6d559fe4dec85b6800cec67d983055021cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#`ZP)Gx zu};G<5Qc-X7@Jruc~l_ zlIF72b@mTCe|VXE2G2`t?bFg`z<}ejMFxYa!)R)kK{E?IC@~j6I&K;Q?8KmfR|3*W zlT4%>Q;e(g__5Bwccb;aryLwQOi|>BW`ufChYWhdl~96!P#n8*`f?9^F*duh(FQKH4IGy zu};G<5I_?Y+c#p#LX027O(y2OpAf;s%H3KVJ{HCC`5AQcZ(L2nJM-pHYY1=7B^a>lblh3^7@z}x#WRj`#Z z+s9ozVlLs7qj+e{IE;-)@daUoR6+KdEsOxe0QhU}a+eldP<9YdIh3Zye2Jg#TRdJ| z2(OOBV{lw#Qt}r)agEgU$RF%MO%J$wG}YCpQs(=}j`UlsG2P<6p5s^JVJT3s#|qwT wMwL!Zp5cLOjJ*IgnZ!LLvi{#AQFWow7c2#_-A&)A#RvfBf+J|3B7hCqoQSFJnoNUoeBivm0qZ zj=ZOfV+hCfM(|FKecZ~FnYGnNGT1v5B2 zyO9Ru=yx`w!m#{)Sl}dYKQ@%UBZR7tG-B>_!@p zW9;eT7{YNqIpF}eP(n|$!7(0*W^cx08Vwij>%Yg-IWj@@l q;aj-vSx=sr*2e!qIkfJ=U2eX)fsD4sWg9^5WbkzLb6Mw<&;$T^KR~en diff --git a/mods/farming/textures/farming_melon_6.png b/mods/farming/textures/farming_melon_6.png deleted file mode 100644 index b31a5b4c42108dd21eb2bad0bea009707f5f2e6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5ptxjAFHpHy@-Lq-Ni zWFA9i4MR~oLuZFT^(2O_#SHUzG3?o`dghGL(`OEE-Z=gH8}?_d>OY`%#*!evU^3zkiFVX<4v0sH;<#nrmV*ttQk2+nN|o-3$(atY{kf&&vYqwCs!=c O1_n=8KbLh*2~7aaq)apb diff --git a/mods/farming/textures/farming_melon_7.png b/mods/farming/textures/farming_melon_7.png deleted file mode 100644 index 3aebfdd6d6d9d11483acb45d81b10f914b1d958c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;VYihrtxjAFHpHy@-Lq-Ni zWFA9i4MR~oLuZFT^(2O_#SHUzG3?o`dghGL(`OEE-Z=gH8`gE|vL8@8V@Z%-FoVOh z8)-mJk*AAeh{WaG-ax)X20YH@9-h5Xdb%@PXD&()nygzeNfBt{Ob*zfaDlQ#URWsXMpIAuL$a|56#tmiT?43xT#Xc)I$ztaD0e0ss=dT&@5B diff --git a/mods/farming/textures/farming_melon_side.png b/mods/farming/textures/farming_melon_side.png deleted file mode 100644 index 88e40c6a08421585274e41b58ecd19c88cc0a567..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU4U7?v%ixdBP{=6K$S#$s zZPcu3mhPS?(>qCf#yqX1a}?&xmtVbBcl~DNotss6?NL|JS|ktDJJZv}F@)oK@{YLA z^^yPPZrRLp{n9`G*Y<)^rweqxl z-n}%AK{7bxo$hJ7cV&Hv-LL;A&$B+1W|-4m@m;67`nFx$%gz7uPTSqB6=OIp>~5eJ S&Y}l&B!j1`pUXO@geCyK diff --git a/mods/farming/textures/farming_melon_slice.png b/mods/farming/textures/farming_melon_slice.png deleted file mode 100644 index 6ee977577899412a6e1423c94cf160f1037e3c97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5ptFAGz#fWUEC^^@|l zM^qK}tE=CU(>bHA;TOYO(=7Ub=92AuRNfvx@#XT4|4&c+cz>mT&8kyC?TjTse!&b5 z&u*jvIdPsYjv*44d;4zk9Z=w4`52*9apnL2TUnPQJbzuNyxqtvP^)k>P50}D&(mi1 zzBs7(u2+tMMS0TgGiwa`=lh0XQU88U1;r=|W{BDyd&ujIF1Xv@Ds Z#&hD#3zFP&3xPHQzo(4u{&UX$0PoR*-laKwya4X=gWi+Ly?p?@_+i_~$-7nnRLexK z2pW0Z093n#Zw3<0>;P08eRME7yX*kD5k!(n-7*{i?#d9WV-XZ40Pc7dz@QxcHUPOH zUhwf3&TIg=1Yhy<0=}#O>Dumo?wDxo0NL&7e!H48oB+Q6`?>%8ddUFHySrM;yU*+? WGEAu4rZoWo0000Ar;(RaW8`SR)mPl|hrFz!>_54khoqck*kI;3#|sW7?O=-ryW zrjJB$9q6aRYFoHe)flzU`)-SdF(3+WsKA1%Ge7ml9zxid_M{MG=VmCBTt!~PVh5g& zUBr(d=Nh7*OHC)F^|9)cyRWwo0vc1EEPhV8a@w%ewA4Js_P#KFQWJ{8<{XxGg`f{3 z$};(^qkcgcaNzu~rWpzsDjDLCtB5VE`ziIZaMrPG^aQ1T%>G~)K_mcF3Yoa(XPAY2 zj)_s1K?iyX_>mA>IUF!PyQiFrVx?syjf`8p?XiLbKNXudn()x3O{N#E19)@8^-O(n|!GIcO!AN z116yw8^_7BJh>}>5dfT=cpM#F0uYTx=oxR*?oV;84hC78+L2_;<=QRKGuEsn2>=p( z&omUa2vyl!<~_WtYqH;dNH*K9j#D6&+LDq(1W1oID=I8c?+HLhf4x49JqFn+5=bgZpxP?2^k}aC+)-FF{cP%ed3A tSP;`RaGZkwJO45eSKp^x(&^(HeglP*dF1ONiW~p{002ovPDHLkV1mZI%hvz^ diff --git a/mods/farming/textures/farming_orange_4.png b/mods/farming/textures/farming_orange_4.png deleted file mode 100644 index accb7b7ff0375e4c88dbfabe23bdcb6e8fd8f946..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 460 zcmV;-0W?GYf z1;oLrLc0VZ(1wmBlY?I|jmgdZI33j1#H$8;rkD3U=XcKg;~d2W1IdIqj)TwV!>ZV9 zzyGOd0PXV7(h_BB`G;CDa|D}o8l|Sn-lQ%7ookkQxzsD4X1^+c@#SaYI1UGgMO;Tn zuVmG=4gg{XJdB;c6;950KHVWxAN!egcZSH~KG%Yl$?PrXbe<0000QL70(Y)*K0-AbW|YuPgf<4taigt)BV6I)OrxC9V-A&iT2y zsd*&~&PAz-C8;S2<(VZJ3hti10pX2&;y^_uo-U3d7N?W{{QqyytlH4o=yZT7{qMR4 zi&jgKtSyGhb7LF01qvh&vDV*}khlAF{=`{&Uq}D| diff --git a/mods/farming/textures/farming_potato.png b/mods/farming/textures/farming_potato.png deleted file mode 100644 index 6e91d6ae8949445d7edba0c3cc8c5f542e93b011..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmVOT3}^k{ zY@qj3^!${6!l?p2iXCp(TFw{nOg~_7P+p|k`JU7U1VdMGwZ@ri4C4A f`Yxd@-h2#9D@^8Jt}t~38q476>gTe~DWM4f8{R9! diff --git a/mods/farming/textures/farming_potato_2.png b/mods/farming/textures/farming_potato_2.png deleted file mode 100644 index c81830c40bcf17038f5b7e927a2779f9a63f2e6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`O`a}}Ar-fh6C_xjIo4Dx`!YYp z_x66Nf9_@rekw5MIWLPB{nLN$xLVs~h6yiSr4`H?ZW!F2klT8)nTKg7$IaFP0kc-d zqbm)X6D8JbPssI(<1l17^6k}u64to02GbR!o8HCFVLM>b$a5f7+b>+fTftg7mTx)Z liEX#8FVbq-$upOi;n>^MqwF@kM}e+k@O1TaS?83{1OWb|L(~8O diff --git a/mods/farming/textures/farming_potato_3.png b/mods/farming/textures/farming_potato_3.png deleted file mode 100644 index a3d7920918e958a2283b9ded3ed89b32830827b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`TRdGHLn>}1CoEvU@$c#f`$(zf z@uDo*F&}+8ZI~UTX7d~UQO{toQ*Vl4EavpPzCgNR4abt58O(?4Qw}?&gskyLHuiU!j^1z1-hTX)78&qol`;+05CpP;{X5v diff --git a/mods/farming/textures/farming_potato_4.png b/mods/farming/textures/farming_potato_4.png deleted file mode 100644 index 405b7e56d71be2991d1330f58325f12b9c0934ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 283 zcmV+$0p$LPP)^*=N$PMhRY&?KqZD*Oz+Df!n6hu335TY1d8DWxrzX*a0VfVeA znVq*0`DeVeQsh<9)1Szf>sgVPx9)d=@?L06WU`i8fR2KARuA3oHj3=`=KGG~0~wg8 z2;OKNSj!-fa;Y8Q3|A7H#2Nse35JNh3!M0>oJ1gM>m+!NFF^9~bok_K(FjBriY5Ud zQxHJ*AVPQ8Q}p)^XW}f0)^Tt5&>D6c>cO-Tw9iPA>BNe(E!+u`Ads4xbYUCTw%egi=o^~tu%ABX?|002ovPDHLkV1lGBd`18O diff --git a/mods/farming/textures/farming_potato_seed.png b/mods/farming/textures/farming_potato_seed.png deleted file mode 100644 index 74e440df3d7d786f430d8b9c583374d886b92cd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85s1GL71^(seKtxkiEpy*OmPahde(s>p{y|y+EN@PZ!4!i_^&o z5*Y_LlD|BU`jeiJkWlgKnKm;JIG_J?y61?*0hg8B5geKdPmFeObE(fym@;u%g2DB0 zwOcTQX!a9K2Q*+ou<>c>XqN*&TUK#LeWUHx3v IIVCg!0QfyfsQ>@~ diff --git a/mods/farming/textures/farming_pumpkin_1.png b/mods/farming/textures/farming_pumpkin_1.png deleted file mode 100644 index e5b9a2bf946b3957a96b53dc9c6c7d1b87183fe5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXHcHDplmV$hH0u_#h@ zZI(!Gt3e3veDNJsEn~B$S;_|;n|HeAjinl#W95AdUC=7#)QHKqZzXmrwBLi zWb8=1v?M``A&FzRre%|>gzuE2a}IV*acSX|lwj!8Wmy^d*kvbBH-o3EpUXO@geCyk C%q)Qb diff --git a/mods/farming/textures/farming_pumpkin_2.png b/mods/farming/textures/farming_pumpkin_2.png deleted file mode 100644 index d977e8c22021375b2d19f1e0fdba16ba159bfbe7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeXWe{W#HDplmV$cs`(vRn{ zC{lK9mPl^o&+OvsUZxymd_xnclCdPnFPOpM*^M+H$Ia8lF@)oKa>4?;gu^%3F>n9? diff --git a/mods/farming/textures/farming_pumpkin_3.png b/mods/farming/textures/farming_pumpkin_3.png deleted file mode 100644 index 83f81905173ce0e5c5e113435a0e758b0280416b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeXWl&@gHDplmV$cs`(vRn{ zC{lK9mPl^o&+OvsUZ%_>?U@c#$ygHP7tG-B>_!@p6YlBa7{YNqIbi{Vfn@Uu0d}^t z0&LS5u1RY81ba)wEYHx|xpFtV;SLuq!yPM^SQ+ftCAPDLa}~qYc9v8%BU8q&7Mjym rb!jw}tmZasTW!f8spY5>Eb7hBlgzKH?>b=~&Ea`*IyjKSvyt?&7$Sjt1 zg`J9q^~6lUfd0uzt5d2D~Dc#Ol8eSv1V+QytvmaO}ND_6-XPCE2J@X^C3w=|Y9 ZFf3jx5kBXP&J>`n44$rjF6*2UngA7SP2B(h diff --git a/mods/farming/textures/farming_pumpkin_5.png b/mods/farming/textures/farming_pumpkin_5.png deleted file mode 100644 index 59fa78eb0ebc9e5d8dc3b6989e3eeb22cb31eaec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUZEWQfHDplmV$cs`(vRn{ zC{lK9mbje2l-$UFDw`p*i|>CiWA`%Ux6>K^Z(;aEpoGJUMCgst%iBYSoiThlDXj%CUQ)lD;i+8IlN{DK)Ap4~_T za+*9{977~7_x1&fF$HosU6o9GvGnP`aOr(f4*woDa;N>j|1fRGy7^H{?AM%@4FZlj*U%tHD7ss+=p9Sqg-4sN=MbFGNbZ3n@HQCr> zqVb&@-sfVYXD=6YjJ$I8?Bu>9TMW$jFSee&a_r$k235P@Tdc})w{qqHUBlq%>gTe~ HDWM4fdKz5H diff --git a/mods/farming/textures/farming_pumpkin_7.png b/mods/farming/textures/farming_pumpkin_7.png deleted file mode 100644 index 79190e09ec135158eee1ff6ccff404b3c09eed69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5oCwkx;TbNTrTaqEyS$I;T)T^NHpy4|Mj|Mzpu>vbYQ|^)hVCM&(t~iHbw0(RbML= zmah3Gt@h`Gi|4L%M=-F@xfeKtWy7R~$2Swo1IjP6&g=HLl(*IF>4wKnd!{A5+gUm{ zeO2c63q7``KVG~!Hj}e9$8>Ya&pUN)FS=&PPvAV>%2j@Hzg29TicRNJ-V9yVJMnV@ RI)ScY@O1TaS?83{1OR`rVs`)l diff --git a/mods/farming/textures/farming_pumpkin_8.png b/mods/farming/textures/farming_pumpkin_8.png deleted file mode 100644 index b941442cc236ebf2b29362ba98433dd05c6f9a0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5oCn*+_C z`i?bO?9oT2zJA@Z_tzc=+bvnTM?Hg^x>{FESN3CEJB^3;d&QSkaX!YTv5T@7-nA%Y VQ{5#yV>i%c44$rjF6*2UngHtQU9$iH diff --git a/mods/farming/textures/farming_pumpkin_bread.png b/mods/farming/textures/farming_pumpkin_bread.png deleted file mode 100644 index 0dfae08fd83a2c6ee7a88c67adaceb5f2882215f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=5pT85V>v?8;?1-@tu$ zisZX(_P0(nyg8fu>ewF_r}R1v5B2yO9RugnGI-hHzX@PHam-GLS`c)I$ztaD0e0stQ@K=%Lu diff --git a/mods/farming/textures/farming_pumpkin_dough.png b/mods/farming/textures/farming_pumpkin_dough.png deleted file mode 100644 index 62ea7a65ffadc1aac24e9c9fde35a25130509537..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXIvzcu3H!Gcd`y1!gn z{PpUluQ&F6yM6lm{R_f6o7#cO7)yfuf*Bm1-ADs+LOfj@LpZJ{Cmdj(5gW^UprpcM z7iWjyyn7QbzB_Q>fK*^$T%6pq0|`O5xKg$*Gn%o?ZHxPs>1@U`mbC3!w%c0TNMiSn p9ZRgNcN-XJNJ?upt zSecodDm-G9dCc&sLW*P8$K|^|vZx;B)p5&rIM643&|^cT=HE-lU3U7d+N8Qo$gA|H zSY+K|r~8&C8lHFdC)`~uTT$6DEzw7rGke+e$Nzk67JE&qcKy=Pbo7tZqv^5tx92-X zyg1_Ay8ag1O#d+oNvf3iChV#LI+4NC)z4*} HQ$iB}bbn|M diff --git a/mods/farming/textures/farming_pumpkin_face_on.png b/mods/farming/textures/farming_pumpkin_face_on.png deleted file mode 100644 index fa71c9d474c140e8b123c3da04fe468ad6d2846f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF4e$wZZ3$?r(G2H0m{6C-J(F)E-+c>|UVfcU7{{PEnvHLM=ff{Ffx;Tb#TxXoXkpG{7 zFZ;nkr+4;FRNM&)qp<%wXz! z_TGcLcbpl_&c2n)cnD+&$;vUOEe=y;U`|#uOKLU(`c2TtSXo$*VNJ5p$41TVzktqU N@O1TaS?83{1OVymUPS-^ diff --git a/mods/farming/textures/farming_pumpkin_seed.png b/mods/farming/textures/farming_pumpkin_seed.png deleted file mode 100644 index 6933bc38e8a11650920f3bff1d16c80cc77ad543..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^MdN zG&1ncRQO>F6yYrJh%9Dc;1&j9Muu5)B!GhKC7!;n>~}c$c=VZi`d=vng(OQ{BTAg} zb8}PkN*J7rQWHy3QxwWGOEMJPJ$(bh8~Mb6iY9xyIEGl9PX6=%zdf^RLuaGY0jA_T znU9hafZ)g9pT^8U(46+Y-fB04xWW^o9o!+O%nS?+j0`t?`Y8Oih7AbZVm1~m?|g5+ z=`0TqPftax1IL3R$%||&uGAfP&zjR%x;*lMeTcDgKDxKFNRRa>P%mRikY6x^!?PP{ zK#rHEi(?4K_2h&D+!4(p3R^BsQZP`y6MLFlXUV1~=R4UZ_;}Vnd&B9#Hu>_&+U<@! z$7WUP8#{VQ*yi1Dkx<@f&Uh$c9 A`Tzg` diff --git a/mods/farming/textures/farming_pumpkin_top.png b/mods/farming/textures/farming_pumpkin_top.png deleted file mode 100644 index 79283454ef1f0d5ab418e9c6366b49a5783c1579..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU`;dA-N*M-pFDn@;q;uFcjnxzz0I)a=A7GmZ~ooGP&xPHHo@vWL{YYc}}S{MaAoXQ!pi&F}1CrGevVRa8t`9J@1 z@IU`)$7WBf`tN9RvhB?@u^;;*XE3i3bUAEr!l7wac(HMVX%o-Pg9jRt1bk$cKU3A= zNnllIRXD3)cfw&p+6;>`3TxO7h%~+6TfnGL-^|k}$x_UC?L&hmgXX;B3 zV_4a^lcUAZNp^|EGKQOBDbpK|JagRJ{*Y+`(+oueUIQsHyAwHU5*aS_$jv=bGh_9N eX+e%+3=F%)R;U`^(L4!sID@CFpUXO@geCwLQB*h@_o(N*kEDlq_MDpfx^<_@_uNhOZC!QT2eMpOHmS^?`&TPXZ(4@sY%cA zl0Ne_9U^u^NIGpFGEo8&0@ojGm;88dLFHYfOeTPFrK;OW-U$p&5#YGGh@MlB^Cmfb zWPd}r$K`-w?vG&d7cJ`L!QKv;LafsNG$q1uSqDGCEqex*5DA=q}lDyOs9=l?9XkQhdkU? zdA_gnC*U(5xxYq^mnc9Hh={sk^>o1k?oN@typvRADj-)A^*RU@C?k)O65!6x8m>ZQ z%K4CDF4_M8w$t0Gaoj2sR}(q@zBeSTvO3K#t7hf60d-Vp|FQ~fYG49Q0!V>s?P^~) hprJiz53o6Y;uowDqLJPOy4wH%002ovPDHLkV1k`AU_Af; diff --git a/mods/farming/textures/farming_raspberry_4.png b/mods/farming/textures/farming_raspberry_4.png deleted file mode 100644 index 32da6b9fb11cb9c6a88566d4b66c4cc1ea7a235f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmV~)tMMF*!<2lGZ|Ke{5Ga~VrqiGIUOT1y?KgH` zE#s@k{yLBSFpJY|5g#+|E+w|-68HcBWNreOCDPa(%Y>1*AXrsKLb)(zH%7bv6%0#`N>tf{-75Ee|)Ii;1}dZx_t`&rzI{0vRj< p5C!Dg(MAe#Q@ha2uB{L6_XBqktmj>mMT`Id002ovPDHLkV1g?AU84X1 diff --git a/mods/farming/textures/farming_raspberry_seed.png b/mods/farming/textures/farming_raspberry_seed.png deleted file mode 100644 index 08c958d9e850647d0fcf2d9e033fcbce5b08f4dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6U4S$Y z{B+)352QE?JR*x381$4un6YB1eHl=Yy~NYkmHiHfJTC)N`InAnpiqdXi(`nz>Er~7 zi~}6Wf6^0voIh~jK!M1q?T(WUv(L~dW#m?5ZHYP7^hEsF|G>ciYb7NlB&O>ot61`! wC}j+MP#<#TKSlF4stYMu@ilNf4KUKTW%b%HA czx*cqoJQtdn-4@818rmQboFyt=akR{0OU1RPyhe` diff --git a/mods/farming/textures/farming_rhubarb.png b/mods/farming/textures/farming_rhubarb.png deleted file mode 100644 index 7d416ab21b752b0d4c59c01e5abf428d1d072db1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXI~gZa+;6dc z_CeQcbLKwSwEpe+vjMHf=Yh%?OM?7@862M7NCR>#JY5_^IIbrrD6lv!Fj>tpWg&-X zqF7mj!6XsIpd7Db3l$Xmo@`+en7{ZY&!PoqdCsIKtj|zLk!F}B#dg-tebFSK84RAT KelF{r5}E+AIyGtl diff --git a/mods/farming/textures/farming_rhubarb_1.png b/mods/farming/textures/farming_rhubarb_1.png deleted file mode 100644 index 01585b1bee3fcf44ad3e39e1cd562728576e0616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|t{=BCWF7Q;bN+muf!bc6 zAY)08UoeBivm0qZj*O>^V+hCf&XcU{2MGR4Gb(9B>i->`1G_C6y4awT*U;M vC3_rrm^GRYHXM{VX3$_X;~@{53LC>^S?05Qc*Pe1jbQL}^>bP0l+XkK&Zs9( diff --git a/mods/farming/textures/farming_rhubarb_3.png b/mods/farming/textures/farming_rhubarb_3.png deleted file mode 100644 index b412f7e0105cdf29452d5c44e378ae73745dd3c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?bKe4jKI@=o z!oo>#3(3IS&|cxLoW%%h0DVbHM{9#=G^)+7>Mg zc=+Jp+zIjmLhQNf#xw+RozDKEWt&^CE*a@_PucJJ3W1 MPgg&ebxsLQ0P7VvcmMzZ diff --git a/mods/farming/textures/farming_rhubarb_pie.png b/mods/farming/textures/farming_rhubarb_pie.png deleted file mode 100644 index 1f77b535cc6a30729099d3ba2f1cbe7f2c8bdf08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aElDk2Y;Be0Z@k&rWuvF} z?!ch>6rZmA@M+b_%Y#h|fyx+5g8YIR9G=}s19BogT^vI=t|uoPV83ztH1~m$jT<*w zbg(XI)LFpLVP>Y2@Ib)KjF;CmFX2IkNtvh!537+CQ!g_stF*)nBP**W5msRdi7QrC rQZp_!+?sjCN=iY^SW`1$t02SnRKb}pI-9NnEn)C<^>bP0l+XkKFLyjV diff --git a/mods/farming/textures/farming_rhubarb_seed.png b/mods/farming/textures/farming_rhubarb_seed.png deleted file mode 100644 index c16527d99aac89382de0fae41f28262582683d00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85s1GL71^(seKtxkiEpy*OmPahdiI5)Pm-fc0i$MPZ!4!i_^&o z5*Y_Lk~MO_{5*f)z=031FQ&5rL7VzccF9h|hRz`I4FW+9CsGTT-~G%_tkGWlX?|m4 zqvMa0vTmDV9J<^l9f+2k`rqJs?~x3ZCx;Y;dQE!$7;-V!Z diff --git a/mods/farming/textures/farming_scarecrow_front.png b/mods/farming/textures/farming_scarecrow_front.png deleted file mode 100644 index 364738fd6f3020f97686e0350c7b20cb01ebca52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 634 zcmV-=0)_pFP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn` z3pEH~gop+J00H_*L_t(I%cYXfY7o*UA3{&Q4t(G zMd^ZNMupAB;*x#+Lb(RmfbuX1EVqg&Q}R)ay`F(oEHkn$S%&2J+1Mut5gz!F;qY~pJoa|c^$q4Crm@?(;u!a#9`FIE!%sKVr zJi=BM09M7qSr>@P2Kji1?bk5*1S2FmPe3Sa$K~i-|Hgy8c7tgWv*uMX(_;`0Tl+%* zP7fw*byB(q69vBTkw-d0{NjW`mX?13FJHho2MQqlC zMTn1YpDp&Fdhv;Seuh*I7>#rTvf&7O!v|AwLWdH#53(SF!$Ao)-I1^FG; UvMH`M-~a#s07*qoM6N<$f{x1#`2YX_ diff --git a/mods/farming/textures/farming_scarecrow_front_light.png b/mods/farming/textures/farming_scarecrow_front_light.png deleted file mode 100644 index b4b3cf289b9525f2d4ae8004719a924434bb925a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 641 zcmV-{0)G98P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn` z3eCM9?yGOiu z+%jD1`TgH4`6;Hz&|0HYP$fXkA*7Ab8F_lnoA0eLf?B)hF)N*DWJzL`J&Ghk>Kvqv zaLOp1GtH=Gy*9a|U%yby12&*s3<9fE#uN$JAi`cuK`N#h+3AOjLyy1+3u(KozOEuI zMR67(tP<<*8f3$Se0a_@qegKAz}}xB&AU(x3XBu8_o{<11=4jfMZ&@M0K0OV?Cbt&SDS>+bOa0t#{?YW~;_1j+l4Ln9(i> zhsMhVV1fPMh(@qXJLs|+ECFz^Jz%pn<-sV9Xx1-^2*(AZ0cdX>(+HN?4~|$3mS}Gs zU;a?YO4Xl)`1tn8WDm;SPu%fRq;kM$WXUHz8DLjDFgXYXw#)l&{c41thdt)qG62mu z1rHFC{4_;+1C+18zc6NI_eYiepzge## b`A_`?RC(3*j&oOz00000NkvXXu0mjfqj(y4 diff --git a/mods/farming/textures/farming_scarecrow_side.png b/mods/farming/textures/farming_scarecrow_side.png deleted file mode 100644 index e22e84ba1dd15382c478abe92c35b03ffd9ba9f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmV-r0-F7aP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn` z3pEq#;X&#E00HGmL_t(I%cYXfiqlXOhrfGsle9@2+Jab&2zD{dl)9MBJb~cC2XNs+ zpT~#s8QeOEf(}Jov?vw}g)mLpbn@?B7qy+VA_{)H1NS@p&bddtd^$4x;>F2V?gu%h zD$rV^b5Jgz8VG4)bU~Tl@ap4er=U(B_#C4%jdUee+o#GBq%J|)2&awGC3Qy)2jRZR z-@T=30ydyL3pPKsz*=rlrl9;V8WP7AvmP^=b^!_HHmCNZ|M0I(VsPDdab zU5eEL+wY;v9FXWD1);DVm&^CF+XNS*kWHG<^xBxs6$poFy?_Etu|@z@nju>OWfJ3b zdR&ac!x4sqknv=Oa6K?NmVbvI>m_%uGwhDLT`HiO3Z2C~><7R9!f+5GzJEYhB{EwQ z1{&%1$QKcI*QZ*=SiTRo$9Pg3VLX}9^xE4dX%0RhB;_(k`VlHnU`nLt0bsJ_{yl(r z{^ZQmk7&2he?>hS1P6x!@cPXc&QJS)l{aaE0;rDxaDLi9Sk#{hwhfLG?5JPqal`36 z-X<6h!h?s$?8NCj=JIOBv&U!q_`^YnRP00000NkvXXu0mjfYmf>R diff --git a/mods/farming/textures/farming_scarecrow_top.png b/mods/farming/textures/farming_scarecrow_top.png deleted file mode 100644 index 3a4addcd66f7399cedc6e9c415ff044c18ae5ec7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 639 zcmV-_0)YLAP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn` z3p51=F2(u)00I9=L_t(I%YBniYZFlv#eeV3o0(=NGo%4&As{rXHl%`^euA!a*Nt1h zkDtV?Tm1rdBVwtdn1UEB1cJ#VGo3&0Jr`jnomf1(d%5>=IOkmP^7+_u4`rnRaFx@l zYt;Q3>iBWkYK(@1R{i?jXI`A20B}8-vJ3I%)kTZJ&F%7^p)5@vJPx4lFFY~tc@`H~ zU1E&E6rg;dyN8f2cJ+~}xZ`bc-t5RMO~}%O4_|JZrpXObO57;ISin>px?Y4*s$rF- z3F^~i*$7koO3)p^1yq1V;P??%=almVw^x8vTwZOpP-o)-S(?xZBFwidtZ;CY5Bd)2 z$5e|sPB+5s3CeX2z}a}Kh04-|(Qv@^WQsZfJ=a(-MRXlZI!6WpR_92si@P6Fu4Wwd zVkY35fXl z9iuB`zF-g=q~E8Q&2jfb^lFI{hTsM~Jw9x#RCPor6wd92!gvHQ;d!|tmC Z`~`sUMaIl#*FCAl<2 z*jzM4Ty?~h`4}A)c{PPt?KMP{c^Kt*n1q=bRCrk=xEU0986`OxWVslmco^k*nT44c z#Mwdm`4||0?gk==lYqvmax=(sFz88e+o=nSF))N!Dw)c0i7+sj$_sdC3VG;?gI%2B*-tAL5ssp zg-ugQ=JU=uj`9Nk{{8*_^zOAo%NAzE^8Wkr>FulM&mKK`aOcLA%jZt--?L|7TSI-Y zt)cF}e?Ncx`2PLeVafjvYCCXwRlio7S(M+S^r<9N}ZCe)ikpO+brY zd%8G=NL=n)e-CV|fjjVi!YBt~8j4oBq$NwtYo?c(at-|KQ;Z)*ex=iq0{<>owioXsq z1ik!ouD*J@sM%aW-=!Po+i&^w^w-O$1utxSnvFerlGdfq=U>%&>050@iqkdj*>7K8 zJlePNw(E6UM$dR}myBgQQ(tAd;k@w1$+=w<)GdgYQ#>vo>l>7bDJ MboFyt=akR{09AqB)&Kwi diff --git a/mods/farming/textures/farming_soil_wet.png b/mods/farming/textures/farming_soil_wet.png deleted file mode 100644 index 0b4487d8a2460c3d06a49560ca5c5905fba69f30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 677 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47zG1-LR^7dWWa>P5ny3}a5aQk zlzAD&I2c(N7(8_)M41?z)kK^$g=k&_1z9AS7;Myp6}cH@xEVEsScI4u6nU5>SQz9v8BG<0gupt1 zRs)eLH-jt(gNgvFtqQNLnozKXqA&x4u^hh=Ka(O4g9sx-u(`aRB&P;HqZAW^hk>lM zs-U?nueJzhxSgh{s(_IUzpav(z67Tv50eNVv$>LpFgt@N2LlHK13xPxC@dJEPBoO| zc2*a*m*WYkKbr#-k0=T93--^>2ncORO^Q697xMSp<(hy0etmua=>DBkhxYAWKC!1L z=-=Nzzu&!k`}+0E7tfzOzItWP>gkpLfP%k%e);tA!@F0{pFey2=+VQwH*Q?Jc>dJU z1KT#NTRwkg+w`@aM}T&`_H=O!k+^Jn*0t!cgNWZBPMTc0`OG>O8!?2L;U3OjqcUv+ABv;?~9#d{o(b^nay(07R%SGXNIn&nK znOvFwJ}Nf1EPC0^J6hQZUuDye%goDK+%3E|dFq1YmQz){p2r*YUS{8(#M)%2n9=H@ zmn6v&AfenM{N*640LzLG3TIy2d9bs`we7(TyUla%{dlG4ndTo^!uzW1_O!k{@#e$l z;x^diH(34tvgh~rmvwuu<@&2lSCIU~ZJK2JzAAqFsmt5n?&*{zmPJ9FmS}fu#KGe9b zh&FwWw2Y$OMdVUMIF@m12GebmTEioW4{YNWPoFE0>6BHO&ws73ECr`lAXM;oHJqx6 zu#HoyPma0#p~-fma{BcbC`A)pTOyn_g`yH9D^A)~j?c@4i-3! zNHY|BgOrEpRT;aa!S;ZZ>-a;3B2RG4F~LkhYy(=|C5zb_fn+jzSboK&?-};%l-eE! z3H$Ms$%Bu$c`wmwyA0oN=v{QMYjr-{q^!e?e?FFxr9PM6t~l&`TD2HmU1D~?k4>B- z6_KuE7PB261`g~KiZDcTJc=Y@@vx*-H>i3QHp_%odri0+^5QHbo&=no+X&aK5Dfms zamxg=CBf7o+wBqJIm2O0p&j`9_Z-{SNz^LE+GCj-Pz6 zcb{OZ2+sD9t2So3MNvyECnJ{03Q_O&$PO-!J>&M)!j#+W_Ei>fh3TWo%C~vac*@2v zGnqHJ`_JRq%O=Gpq2nru!L^EPJ~HZ0DD;F)G-f&zM0=l`KQ`n{(6R;b-oPK;a@>d* z+)2nKm1@^U1X+YGA937!O)wavOA(5^B?~j0&JIlpDH=9!-rSQ$GSwrKq)0ew&baTZ z2um2O*K0bLHCheOJcC14LsANww!@d-T@ej7l=Xlory*9Q$2RCwv7RCFkpBT>mv7$x S>1I#>0000U1tMAsC~XQXdKo#37T$6IK&m1K!cZOn z0004WQchC^n!~IR0GvPyIJQwW;ofr5@vS_Kk7&-n<{r4R7rea`}dn-usvKah|<3eHx&}k07WI z`e^tbA;t*d0!DATge86gx><#a56X$J{usBwLD+9@5O}LQAv0evdU2--{q|!1v(hB0g#UjTEfK8F8}}l07*qoM6N<$f~dNbB>(^b diff --git a/mods/farming/textures/farming_strawberry_1.png b/mods/farming/textures/farming_strawberry_1.png deleted file mode 100644 index 3fa21edc5a73cff8a86f367ab663d9748427e6bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T(`YgAKzr5#Q)p?D8g70 zKHs- L{an^LB{Ts52<05a diff --git a/mods/farming/textures/farming_strawberry_2.png b/mods/farming/textures/farming_strawberry_2.png deleted file mode 100644 index 751115e9876d20ce7264a801486428c48f93640d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@&H$ef*R`Ai@l6*0|Nnn`Y>5z1 zkg+7lFPOpM*^M+HN6*v6F+}2Wa)LxlgDJx)fsO_vsgMOid;U#F1){khtTJ h1S7A-Re=NshV%DWZ#dh_tpn<0@O1TaS?83{1OO8ICRYFe diff --git a/mods/farming/textures/farming_strawberry_3.png b/mods/farming/textures/farming_strawberry_3.png deleted file mode 100644 index 8b7a7b8c0b24eb4b9ed1b13d7a32af01bfc850a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@o&cW^S0EkVWbq#a7|wSV_X7Eh zB|(0{3=Yq3qyahho-U3d5|@(`7VszVHW;}mD@H&jT;+>O^7y>6A;z%_} xNY-$WTxY$Yhk^A@*TNnLjpk0#`6nYJ8M0(JUs}{0Jqa|5!PC{xWt~$(69D26Fcbg) diff --git a/mods/farming/textures/farming_strawberry_4.png b/mods/farming/textures/farming_strawberry_4.png deleted file mode 100644 index dcf001753c0770e613b6b5b551349f958886bd22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv{s5m4S0EkVWbq#a7`AQ8JvQ~) zF`y7*NswPKgTu2MX+Tbar;B5V#`(MFHu5$Y@UR>(KgIB0kh$ST11Hm|f5w6uI_xfv z-PZHtw>8R7IkL_?laJT&^lIm64n6ZWq_TDHvP?N7CDLw|HKE3JmG}eM0KW;#{;l7# zUe@5MoukMdg)0e0Q4Oh0CniXq(|&mQd0&131IHnDf#!9p++dMnYy*H10g>_g(pKiq+|M*?o-WC78H+75Uf?UQD-oL+& b-2cF+)xpi>{&|5G&_xWMu6{1-oD!M<02*B^ diff --git a/mods/farming/textures/farming_strawberry_6.png b/mods/farming/textures/farming_strawberry_6.png deleted file mode 100644 index a4d0d603fc091f7ead1faa645646ba09e305e3d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvp#Yx{S0EkVWbq#a82;zx-oEY0 z&L*=GD9Tt8I9474ezNrP=8{z3;zN`o{YNk%ZJ(Erp-=)mD6xY+$^6WyXqFuE5#r8GN4IDq#ue zzqoEfMsdZui4Mo*w#4!^D0gH(_-VI2??UC9)X@C5@-IL2?%Pwg@tp(HdoF{e&83XH i*1X=5@TdAXqg~50?wf6EcW(i@i^0>?&t;ucLK6UGzF^M) diff --git a/mods/farming/textures/farming_strawberry_7.png b/mods/farming/textures/farming_strawberry_7.png deleted file mode 100644 index ace223cd88a0cd46bf55c2eda7c3d7d1646b8439..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv(Ey(iS0EkVWbq#a7@jzq-M;Pl zKR5T*s@x8s1Y=2%UoeBivm0qZ&TLN?#}JM4XD3+mF&Xl(=4vkbwprk-+fGLHh%iro z!NB0B|J)BuJaErdrXl3yiTRa^zrG*-#M+my!Es~rB*_yO^FdP8W62jemm=(T}r zFeG1>!TUf|yhe8Ev`4lHJPb!gL!Pm$n5X!z<5Nv~-zCQ4dC@l)Z{5f2_V%Lfas{hh ztJQ8?ym(LLwmy5zS3AaoI_DSgEGlNI?05gq;Pg}U~2NA~|><~j58 mwUoq+vj5DhewNC|Dl@d7;PEOytjht^%i!ti=d#Wzp$PzctS;mL diff --git a/mods/farming/textures/farming_tomato.png b/mods/farming/textures/farming_tomato.png deleted file mode 100644 index 586aa56de584ab5f8b9eeb101b430fb075f9c9f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488 zcmVP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv00043NklJ3R~Lh!4Iq!i`I%-K~U7Y=v|*PZ?k0!N_!Cu3@^!>nM|^4%>NrJiF7Lj_KN{c3WHmhurOFJ z8&t8_1)&c2W8D1;^E-!oTxo#$rHj4?(-uI@@CvI~WFYK7+`?5(QM(R(?Dv2U)<>xO z5Z3`}M!p0cX+ZEjx*<#yx%d!hV4elx=;>vbs_&uc$(A!J3^R%~wkK!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%EIeHtLoEE0B^(dzi<`%KO6H8iz4$nWQ!=cF*_Y^U`ahrX wNPu3YLT=;T|4$;zo=8vHc0sP6k%xyNK#QN#bJ3nxKr!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%JUm?-LoEE0B^(dzi<`%KO6H8iz4$nWQ!=bq*d)8({CA$Y zr14Vfy8o9?T;*X>IGb{tkLhLi+yBdTH~gM&bGnZyTxZMiWCmtthWm~Zc9Xt@hyu-I N@O1TaS?83{1OSgGMg{-? diff --git a/mods/farming/textures/farming_tomato_3.png b/mods/farming/textures/farming_tomato_3.png deleted file mode 100644 index fe3dcf0a1302c0353d2e64930465cb80214af8a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%l0973YF9D)@w|z zxUlE4_!>>t6_&{p|Nh_7`fZ71(5^FI?N3ZFS@7(OYswA=7Kd4m+njeUY5sE5VY&W> q-~M3|4G#ZL3T(JvD1G1n14E~g#?M+?^V>k{7(8A5T-G@yGywoVyHw}^ diff --git a/mods/farming/textures/farming_tomato_4.png b/mods/farming/textures/farming_tomato_4.png deleted file mode 100644 index 27c32828dce42efbb2933fbf355752f46dc0335f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%$~;{hLoEE0B^(dzi<`%KO6H8iz4$nWQ%m?fqBFkBpHh)k zIlt*Q|DgcA%mtOp^?%NCWJqD)aNe14-C^bt<{6Bd4re91-~3;$yG8x%giERG62g}- znl9H@I?Sq&-fYsG)6O-K?~*w4+zopr09PwkEC2ui diff --git a/mods/farming/textures/farming_tomato_5.png b/mods/farming/textures/farming_tomato_5.png deleted file mode 100644 index f369a68f4f864f7868965b3c05bfb649abb69e2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%R(iTPhFJI~OE@0b7dMaf)DiwaQNI72XBIFB9aigOoD(Iw zb9VW!MH(tm#vCVppXQ#TSNxaXn8l^}$3fvU9mWi74zms|oAsZ6W(wCf+ng@TOtuy# z)5%XtQUs!szuPb14lQ=ruKAIz^7+jF?2=5}?3-elj1TPR6=6&J@2oa!Vw!-CnNtI! zgjFk#ctZ|1<1L>e9);!$E7J~`Fm!sY5XfBcKZS#Fzp()WgX{d%rxFTE1wcnLc)I$z JtaD0e0sub-W`_U( diff --git a/mods/farming/textures/farming_tomato_6.png b/mods/farming/textures/farming_tomato_6.png deleted file mode 100644 index 0135cb53beaee8d64cf0e39ce57bafabecedd70b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmV1wBo#8Bznu=<=V)-qia7Mqkx zEdBwpAfciZxAz{4HbpBEi!+^^H|LkGbI2OEjRWWdJZDDu*RP1LLGZoT?fRLU$5i=F44hY9O?q44qdivT}n%bArT#Jg~ z5z=#~0$?SxQVB3hjbp=k=C<|m?v=&8Nd;Kko7Aq(ChELW)1m-OZw)FyA!l>2a3S&S zalOeGa2*#h3N1%;el9$x1QyyP6-9+jPVMx3HDF*~F+0hP;UBBJ(_L#1EG zRt`7Msw$`lI9Ry&^k^m`+B@pU`iM_{h}oz%w3d&{J0jrm3DK1i{Tg9S06-}XkG~GZ zB^YSLN@l%A_P)EKkv0YY^l+Ns8=eSVd$kH8j`v=G09l|0;AD{q_g}PIydph#NF#PH$+i&(I z3YDN2QmJ`57I0t!dL}|qDm71o?huspH3P+-%n3zdcP0o*&k@Ew&b(pf`X#_24RZDS_hy0od5s;07*qo IM6N<$f&{?&$N&HU diff --git a/mods/farming/textures/farming_tomato_8.png b/mods/farming/textures/farming_tomato_8.png deleted file mode 100644 index 0b490257f0dab5ec4a4d4e67775159ea75594e3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 510 zcmVH;LN@>a0cS}>K~y+TwUWI~!!QuXyD+eI zB8lC^B_VY@GL#9aZvaTBYNrN_RSggs6nn!*{k*7aCyUCq=pQ-T!=N zyY??+{RU)x4#wsnPC~MM+Pw^hH=SMUZsNr9A}WjEA3+;GE#9$9n?NGrBW}SWO5x}( z19@e{*oB-jP}6m>4Ma!O)r7+v&tbtbm7kd%V7YsAQ_70+zEBp)ykr=os%Ep+QC1@VtQ#wbaH8_f0+cnIQk0e^10q&wmu zFC!?%9Ms4hoDF@)pBw!`i?Mb5(5LRSU0LMo+-WzY*(s<=dl89ot$o{E+U08ek!WXK zz=r;YKN8-I8Z&4O%@{W2XZ(?*KEz@i(rsW2i@Z0?29#U{CQAK~lrG@J$TH61**oy9 zxK<1OxblH{iS7nmcaK4`LVqhR`S`x|%j~tr=e|Nr#m|NU1oRGu7C6zVnU^<&`3Fyv=l*YN^q5re0zpUXO@ GgeCyv?@1N_ diff --git a/mods/farming/textures/farming_tool_bronzehoe.png b/mods/farming/textures/farming_tool_bronzehoe.png deleted file mode 100644 index ef07a80a4b5d4a4a7e8360863147c1c01cceb1e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}NPtg>>x6IT|NsAQD93B4$Y-V` zV67@(ttsNHFYcx*>Tk*$XepE9DLl=Oe{-z#zGQ`inc9cTbaH8#Np!rNCL4H7c$|j$+0P>l{$UdT;yk4ZInNgqIb78> zYu}}-Yjk0m$MP#&JXbhZNP^&&i9Z^8&VIPf${NS?h3~*4H=s2Pp00i_>zopr0L^e- A+5i9m diff --git a/mods/farming/textures/farming_tool_diamondhoe.png b/mods/farming/textures/farming_tool_diamondhoe.png deleted file mode 100644 index 093acb821c6a8da2e1ec642f0f0401fa01b3f587..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!M}SX=D}!$7|NsAm%S&}9^cl+W z8Y=RcDG6As3Rr83I4)V_v~;nvzPR(!#csNyUTaqRoAL%)$^>rO5V&Pij;C<$g>wa$ zFP7iD-u3o1`}*2ypqWf1L4H89%O;<-0P-R|T^vIyZpEJQ6l+ira6WiJ!=igZ!T;G- z7xuVq`n{DS#8{)^()8~Y(;rICeR+e$&a1F6n{Aq*?>06bt03Ob_k^_y7HTiQBgS-x lbq5&682o5Fse9oK+o^3#pNh?erT{Hr@O1TaS?83{1OPfLR!RT> diff --git a/mods/farming/textures/farming_tool_mesehoe.png b/mods/farming/textures/farming_tool_mesehoe.png deleted file mode 100644 index ffd597a49544f1a65c7ebf8466d9949720badf42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!eSlAh>xo5q|Ns9tl;bs2WIX+IQxMyB~PQ%96t;@=9}p{tEFG;u~%{E-e4| b@CEzcwM+}0=9Omx&1dj*^>bP0l+XkKCcsp* diff --git a/mods/farming/textures/farming_tool_steelhoe.png b/mods/farming/textures/farming_tool_steelhoe.png deleted file mode 100644 index 893a6958e4b4d2763513392378c2e1fe92cd2ac8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!eSlAh>jG=O|Ns9R%JCX1@|h_K zSgQ(HYl=AQi@WKH`kV3wTFT^j3h&*!_sp3yj~+dG{P^*+XV2chfB*UO=kMRY12rlv z`8*G36jMo%AJE9M$!9Hqybw!wLZNn(b-`tCzVFXNC64T9aO~-Gwq^as`jzb~o1v7&mSd9J Z{;g7H>h2IuS_L$p!PC{xWt~$(69CsBRk{EG diff --git a/mods/farming/textures/farming_tool_stonehoe.png b/mods/farming/textures/farming_tool_stonehoe.png deleted file mode 100644 index 4f8dade01c39dad208f481013cffc14369eeb91a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}RDe&2>jqc8|Ns9R%JCX1@|h_K zSgQ(HYl_&Z2srDDyXlJhoAL%)$|NTzr=+B$rKRO~3g_hHeI=6ciN|m6es1 zmzP&mR8&@0R##Wo)YR11*EcjYG&MCXo3?H>&=#hWAU~jOWs}cZfb8^iaSV|Nk3D0~ z)Sw{3axu`bDe2t3|Fgst>h9*nZFJc$c<|cXaQ+7NjOV2jfM3|Ns9R%JCX1@|h_K zSgQ(HYl=AQi@WKH`kV3wTFOM)ibvVh@`s7rMpSxcnX)^z7+~IgsCLR z4`^7~#t_#CmVH Q15Ib}boFyt=akR{0M|c8ZvX%Q diff --git a/mods/farming/textures/farming_trellis.png b/mods/farming/textures/farming_trellis.png deleted file mode 100644 index 855b932608cdcc2e22e7751858e4d0014b721735..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv=>VS)S4Rd07h@SObLkj&)f7LS zj6nVVBHN`6K5N>8n{0mQ0F^P81o;IsI6S+N2IQ1^x;TbtoKH?*U@~LwV-QGbXe`=l z^4+Z8sC-Am>`w0v?+u>;7#+*Z=EaM zw?66EcHjN$UFP>Vu3EMD;^DZZlbjwsdT{x8)Akkdd)7v7THv>8y4&_8*2j(=oHc9m z$z9o7wY5`$rZAQS`2{mLJiCzwlo8NZu>H-brP(K~|(phXOxu6{1-oD!M<;EG@u diff --git a/mods/farming/textures/farming_wheat_1.png b/mods/farming/textures/farming_wheat_1.png deleted file mode 100644 index c16ad94ba4e9989dd795c452559376ea2137d78b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=9Yr1Ue5HHSX6f+M=Q~ zYo{boh_NKdFPOpM*^M+HN8HoJF@)oKvP8xM1|=4W84^4a5|S(;3~VV3TOtB)Z38M{ N@O1TaS?83{1OQMF9ZdiL diff --git a/mods/farming/textures/farming_wheat_2.png b/mods/farming/textures/farming_wheat_2.png deleted file mode 100644 index baddb4c544c6ea55d23c5dec5462e351c0f80c54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ1=3wxO(*WOis%vDe8I1J zrB3l;b^H6RpMVmKB|(0{3=Yq3qyahVo-U3d9M_W<=yNa#vhn!vF!7w>VdLV_abQz! jW}J`^;*pRTP{6<-pT?xP*61c5Pz!^ntDnm{r-UW|z&Rvh diff --git a/mods/farming/textures/farming_wheat_3.png b/mods/farming/textures/farming_wheat_3.png deleted file mode 100644 index 36ebb1929de7851303f7b7da7a46fe831765608f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU1=7oRg-u%NdiX-lntjog zlXa)B_1J%|{C~fqJ5Y|XB*-tA!Qt7BG$6;x)5S4_<9hM}Mh^x-Mjjm=CZ07sjC?$2 z9N3hd873r@1SF&t7$gX!gm@&B2n3{Pr0E1ChzWS42qXmt1cU?xurVyGV&j}_c4jru OGzL#sKbLh*2~7aHK`<)- diff --git a/mods/farming/textures/farming_wheat_4.png b/mods/farming/textures/farming_wheat_4.png deleted file mode 100644 index 735ed7772e5ed4e8ecf29004ce2fc92fc3001247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeX1=8yeCePUzxb3x$}4MW-^nS{=7dR2o)#&6-Tm*+8s;xLd_unYEgOKA OF?hQAxvX9s(+5ED7=pW^j0RBMrzY^mK6y;kcfx zz^0S%ASuBkAtC7j!z70^W@heYh6$G+95`@J@4(R$7ZeUWIPqe^fpZT64k?^iG2y@q zg#{-J<`yTY8L2jYFgCPWYsLW_)yD%7EVQ;MLk?xjf`9ed6rv>PMO`bP0l+XkKd0|`D diff --git a/mods/farming/textures/farming_wheat_7.png b/mods/farming/textures/farming_wheat_7.png deleted file mode 100644 index cc26ca96990f96f8fe71d5c3eed9d0eea3bb7c2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VW1=42^r0?G1yl-9Ds>LRk zj^=EhYw_T6>gAKMhqp$qS!#Crc>12re#f@OT}v_e094Ib666=m;PC858j#cI>Eal| zaXqzTBQKMoi1Xix@0<#cx*IU@hS*8nQV|kjb-khBePQ`x+dQTzflFvXs>=mhV;2emCjG1i2d=>Yi4QG+X_?w&uF`J&|NjKx2-V2i> z8I~wss2>uhpfH0;Q;cQ6mTSUj*^G3scIec@IkN4fjwkQ5J3rKu+S3!)(;3JQS_PpA z-;0E(n_uCPBcg(a93^6ni1$PrHQeA-jcoLXQ_goZLEjMb50^^>=YLuCB>(^b07*qo IM6N<$f*<&P1^@s6 diff --git a/mods/farming/textures/farming_wheat_seed.png b/mods/farming/textures/farming_wheat_seed.png deleted file mode 100644 index a9031fba979d5fd323ce9f5200f6ede53b2e733f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ^~o&Uwme~4v(x#*or@>< z%7V@L&K@&PuV1Rg~;HfM?GGmNJaLK%Y3 kFmc!!9azVD)2D`kVexq;Szopr0Jyg)f&c&j diff --git a/mods/farming/textures/vessels_drinking_cup.png b/mods/farming/textures/vessels_drinking_cup.png deleted file mode 100644 index 2eba2321a5cf7650e0f3c0ced4896138f1da997e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b;OkH}&M25w;xW@MN(M*=9wUgGKN z%6^Z7jaSIrGOINgC}ia6;uyklJvm{4fPu8MwzM>Zq>jS8Zl);@4>V0b$Z_Rh5=+P# mg+m7(aF}&mJnGue$jGpSjrr{wFMmy-ZU#?RKbLh*2~7Ypr#ry_ diff --git a/mods/farming/todo.md b/mods/farming/todo.md deleted file mode 100644 index 55870270..00000000 --- a/mods/farming/todo.md +++ /dev/null @@ -1,12 +0,0 @@ -* [x] orange trees from farming_plus -* [ ] optional - cocoa sapling -* [x] banana trees from farming_plus -* [x] carrot_seed -* [x] orange_seed -* [x] tomato_seed -* [x] potatoe_seed -* [x] rhubarb_seed -* [x] raspberry_seed -* [x] strawberry_seed -* [x] pumpkin_seed -* [x] aliases diff --git a/mods/farming/tomato.lua b/mods/farming/tomato.lua deleted file mode 100644 index 4ff6b643..00000000 --- a/mods/farming/tomato.lua +++ /dev/null @@ -1,86 +0,0 @@ - ---[[ - Textures edited from: - http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1288375-food-plus-mod-more-food-than-you-can-imagine-v2-9) -]] - -minetest.register_craftitem("farming:tomato_seed", { - description = "Tomato Seeds", - inventory_image = "farming_tomato_seed.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:tomato_1") - end -}) - --- tomato -minetest.register_craftitem("farming:tomato", { - description = "Tomato", - inventory_image = "farming_tomato.png", - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:tomato_1") - end, - on_use = minetest.item_eat(4), -}) - --- tomato definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_tomato_1.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "", - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:tomato_1", table.copy(crop_def)) - --- stage2 -crop_def.tiles = {"farming_tomato_2.png"} -minetest.register_node("farming:tomato_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_tomato_3.png"} -minetest.register_node("farming:tomato_3", table.copy(crop_def)) - --- stage 4 -crop_def.tiles = {"farming_tomato_4.png"} -minetest.register_node("farming:tomato_4", table.copy(crop_def)) - --- stage 5 -crop_def.tiles = {"farming_tomato_5.png"} -minetest.register_node("farming:tomato_5", table.copy(crop_def)) - --- stage 6 -crop_def.tiles = {"farming_tomato_6.png"} -minetest.register_node("farming:tomato_6", table.copy(crop_def)) - --- stage 7 -crop_def.tiles = {"farming_tomato_7.png"} -crop_def.drop = { - items = { - {items = {'farming:tomato'}, rarity = 1}, - {items = {'farming:tomato_seed'}, rarity = 1}, - {items = {'farming:tomato'}, rarity = 3}, - } -} -minetest.register_node("farming:tomato_7", table.copy(crop_def)) - --- stage 8 (final) -crop_def.tiles = {"farming_tomato_8.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:tomato 3'}, rarity = 1}, - {items = {'farming:tomato_seed 4'}, rarity = 1}, - {items = {'farming:tomato 3'}, rarity = 2}, - } -} -minetest.register_node("farming:tomato_8", table.copy(crop_def)) diff --git a/mods/farming/wheat.lua b/mods/farming/wheat.lua deleted file mode 100644 index 72d65c42..00000000 --- a/mods/farming/wheat.lua +++ /dev/null @@ -1,152 +0,0 @@ - --- wheat seeds -minetest.register_node("farming:seed_wheat", { - description = "Wheat Seed", - tiles = {"farming_wheat_seed.png"}, - inventory_image = "farming_wheat_seed.png", - wield_image = "farming_wheat_seed.png", - drawtype = "signlike", - groups = {seed = 1, snappy = 3, attached_node = 1}, - paramtype = "light", - paramtype2 = "wallmounted", - walkable = false, - sunlight_propagates = true, - selection_box = farming.select, - on_place = function(itemstack, placer, pointed_thing) - return farming.place_seed(itemstack, placer, pointed_thing, "farming:wheat_1") - end, -}) - --- harvested wheat -minetest.register_craftitem("farming:wheat", { - description = "Wheat", - inventory_image = "farming_wheat.png", -}) - --- straw -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_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"}, - } -}) - --- flour -minetest.register_craftitem("farming:flour", { - description = "Flour", - inventory_image = "farming_flour.png", -}) - -minetest.register_craft({ - type = "shapeless", - output = "farming:flour", - recipe = {"farming:wheat", "farming:wheat", "farming:wheat", "farming:wheat"} -}) - --- bread -minetest.register_craftitem("farming:bread", { - description = "Bread", - inventory_image = "farming_bread.png", - on_use = minetest.item_eat(5), -}) - -minetest.register_craft({ - type = "cooking", - cooktime = 15, - output = "farming:bread", - recipe = "farming:flour" -}) - --- wheat definition -local crop_def = { - drawtype = "plantlike", - tiles = {"farming_wheat_1.png"}, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - buildable_to = true, - drop = "", - selection_box = farming.select, - groups = { - snappy = 3, flammable = 2, plant = 1, attached_node = 1, - not_in_creative_inventory = 1, growing = 1 - }, - sounds = default.node_sound_leaves_defaults() -} - --- stage 1 -minetest.register_node("farming:wheat_1", table.copy(crop_def)) - --- stage 2 -crop_def.tiles = {"farming_wheat_2.png"} -minetest.register_node("farming:wheat_2", table.copy(crop_def)) - --- stage 3 -crop_def.tiles = {"farming_wheat_3.png"} -minetest.register_node("farming:wheat_3", table.copy(crop_def)) - --- stage 4 -crop_def.tiles = {"farming_wheat_4.png"} -minetest.register_node("farming:wheat_4", table.copy(crop_def)) - --- stage 5 -crop_def.tiles = {"farming_wheat_5.png"} -crop_def.drop = { - items = { - {items = {'farming:wheat'}, rarity = 2}, - {items = {'farming:seed_wheat'}, rarity = 2}, - } -} -minetest.register_node("farming:wheat_5", table.copy(crop_def)) - --- stage 6 -crop_def.tiles = {"farming_wheat_6.png"} -crop_def.drop = { - items = { - {items = {'farming:wheat'}, rarity = 2}, - {items = {'farming:seed_wheat'}, rarity = 1}, - } -} -minetest.register_node("farming:wheat_6", table.copy(crop_def)) - --- stage 7 -crop_def.tiles = {"farming_wheat_7.png"} -crop_def.drop = { - items = { - {items = {'farming:wheat'}, rarity = 1}, - {items = {'farming:wheat'}, rarity = 3}, - {items = {'farming:seed_wheat'}, rarity = 1}, - {items = {'farming:seed_wheat'}, rarity = 3}, - } -} -minetest.register_node("farming:wheat_7", table.copy(crop_def)) - --- stage 8 (final) -crop_def.tiles = {"farming_wheat_8.png"} -crop_def.groups.growing = 0 -crop_def.drop = { - items = { - {items = {'farming:wheat'}, rarity = 1}, - {items = {'farming:wheat'}, rarity = 3}, - {items = {'farming:seed_wheat'}, rarity = 1}, - {items = {'farming:seed_wheat'}, rarity = 3}, - } -} -minetest.register_node("farming:wheat_8", table.copy(crop_def)) From 1f17a8b1b27f59dcc67b717a0309aded1991c982 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Fri, 8 Jul 2016 15:41:37 +0100 Subject: [PATCH 136/383] merge upstream commit: Default/trees: Faster way to detect snow around pine saplings --- mods/default/trees.lua | 31 ++++--------------------------- 1 file changed, 4 insertions(+), 27 deletions(-) diff --git a/mods/default/trees.lua b/mods/default/trees.lua index 1b062660..1e0df1bc 100644 --- a/mods/default/trees.lua +++ b/mods/default/trees.lua @@ -27,33 +27,10 @@ end -- 'is snow nearby' function local function is_snow_nearby(pos) - local x, y, z = pos.x, pos.y, pos.z - local c_snow = minetest.get_content_id("default:snow") - local c_snowblock = minetest.get_content_id("default:snowblock") - local c_dirtsnow = minetest.get_content_id("default:dirt_with_snow") - - local vm = minetest.get_voxel_manip() - local minp, maxp = vm:read_from_map( - {x = x - 1, y = y - 1, z = z - 1}, - {x = x + 1, y = y + 1, z = z + 1} - ) - local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp}) - local data = vm:get_data() - - for yy = y - 1, y + 1 do - for zz = z - 1, z + 1 do - local vi = a:index(x - 1, yy, zz) - for xx = x - 1, x + 1 do - local nodid = data[vi] - if nodid == c_snow or nodid == c_snowblock or nodid == c_dirtsnow then - return true - end - vi = vi + 1 - end - end - end - - return false + return #minetest.find_nodes_in_area( + {x = pos.x - 1, y = pos.y - 1, z = pos.z - 1}, + {x = pos.x + 1, y = pos.y + 1, z = pos.z + 1}, + {"default:snow", "default:snowblock", "default:dirt_with_snow"}) > 0 end From 4f419d3953b3122f452ac195dfb933f3ed135bf3 Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 8 Jul 2016 00:51:54 +0200 Subject: [PATCH 137/383] merge upstream commit: Doors: Fix trapdoor crash on can_dig with nil-player --- mods/doors/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index ae41f2dd..0f72a321 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -543,8 +543,8 @@ function doors.register_trapdoor(name, def) return true end local meta = minetest.get_meta(pos) - local pn = player:get_player_name() - return meta:get_string("doors_owner") == pn + local player_name = player and player:get_player_name() + return meta:get_string("doors_owner") == player_name end def.on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) From 26a00db1c1f12792fe8cbb0c523ca300a4c20302 Mon Sep 17 00:00:00 2001 From: Tim Date: Mon, 11 Jul 2016 17:50:19 +0200 Subject: [PATCH 138/383] merge upstream commit: Doors: Fix missing node parameter passing --- mods/doors/init.lua | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 0f72a321..1e682e1d 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -25,16 +25,16 @@ function doors.get(pos) if self:state() then return false end - return _doors.door_toggle(self.pos, player) + return _doors.door_toggle(self.pos, nil, player) end, close = function(self, player) if not self:state() then return false end - return _doors.door_toggle(self.pos, player) + return _doors.door_toggle(self.pos, nil, player) end, toggle = function(self, player) - return _doors.door_toggle(self.pos, player) + return _doors.door_toggle(self.pos, nil, player) end, state = function(self) local state = minetest.get_meta(self.pos):get_int("state") @@ -49,19 +49,19 @@ function doors.get(pos) if self:state() then return false end - return _doors.trapdoor_toggle(self.pos, player) + return _doors.trapdoor_toggle(self.pos, nil, player) end, close = function(self, player) if not self:state() then return false end - return _doors.trapdoor_toggle(self.pos, player) + return _doors.trapdoor_toggle(self.pos, nil, player) end, toggle = function(self, player) - return _doors.trapdoor_toggle(self.pos, player) + return _doors.trapdoor_toggle(self.pos, nil, player) end, state = function(self) - return node_name:sub(-5) == "_open" + return minetest.get_node(self.pos).name:sub(-5) == "_open" end } else @@ -131,6 +131,7 @@ local transform = { function _doors.door_toggle(pos, node, clicker) local meta = minetest.get_meta(pos) + node = node or minetest.get_node(pos) local def = minetest.registered_nodes[node.name] local name = def.door.name @@ -508,6 +509,7 @@ end ----trapdoor---- function _doors.trapdoor_toggle(pos, node, clicker) + node = node or minetest.get_node(pos) if clicker and not minetest.check_player_privs(clicker, "protection_bypass") then local meta = minetest.get_meta(pos) local owner = meta:get_string("doors_owner") From 5b36a03f022d7e7a737f968f810c6fd219409722 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Fri, 20 May 2016 11:40:15 +0100 Subject: [PATCH 139/383] merge upstream commit: Beds: Save respawn position when entering bed, only read bed spawns once --- mods/beds/functions.lua | 6 +----- mods/beds/spawns.lua | 2 ++ 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua index afc8e15a..c383a3f2 100644 --- a/mods/beds/functions.lua +++ b/mods/beds/functions.lua @@ -130,7 +130,6 @@ end function beds.skip_night() minetest.set_timeofday(0.23) - beds.set_spawns() end function beds.on_rightclick(pos, player) @@ -149,6 +148,7 @@ function beds.on_rightclick(pos, player) -- move to bed if not beds.player[name] then lay_down(player, ppos, pos) + beds.set_spawns() -- save respawn positions when entering bed else lay_down(player, nil, nil, false) end @@ -174,10 +174,6 @@ end -- Callbacks -minetest.register_on_joinplayer(function(player) - beds.read_spawns() -end) - -- respawn player at bed if enabled and valid position is found minetest.register_on_respawnplayer(function(player) if not enable_respawn then diff --git a/mods/beds/spawns.lua b/mods/beds/spawns.lua index 48b8a669..2e27f21a 100644 --- a/mods/beds/spawns.lua +++ b/mods/beds/spawns.lua @@ -37,6 +37,8 @@ function beds.read_spawns() end end +beds.read_spawns() + function beds.save_spawns() if not beds.spawn then return From 0c3d4135e1160b001fcec0167031e705b653d151 Mon Sep 17 00:00:00 2001 From: Tim Date: Sun, 26 Jun 2016 13:34:14 +0200 Subject: [PATCH 140/383] merge upstream commit: Remove unused and clean up missused variable-value assignments. --- mods/beds/functions.lua | 2 +- mods/beds/spawns.lua | 2 - mods/boats | 1 - mods/boats/init.lua | 249 ++++++++++++++++++++++++ mods/bones/init.lua | 1 - mods/bucket/init.lua | 3 +- mods/creative/init.lua | 1 - mods/default/craftitems.lua | 4 +- mods/default/furnace.lua | 3 +- mods/default/trees.lua | 10 +- mods/doors/init.lua | 7 +- mods/farming | 1 - mods/farming/api.lua | 364 ++++++++++++++++++++++++++++++++++++ mods/tnt/init.lua | 16 +- 14 files changed, 634 insertions(+), 30 deletions(-) delete mode 160000 mods/boats create mode 100644 mods/boats/init.lua delete mode 160000 mods/farming create mode 100644 mods/farming/api.lua diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua index c383a3f2..96cebe81 100644 --- a/mods/beds/functions.lua +++ b/mods/beds/functions.lua @@ -100,7 +100,7 @@ end local function update_formspecs(finished) local ges = #minetest.get_connected_players() - local form_n = "" + local form_n local is_majority = (ges / 2) < player_in_bed if finished then diff --git a/mods/beds/spawns.lua b/mods/beds/spawns.lua index 2e27f21a..6b1f4041 100644 --- a/mods/beds/spawns.lua +++ b/mods/beds/spawns.lua @@ -32,8 +32,6 @@ function beds.read_spawns() beds.save_spawns() os.rename(file, file .. ".backup") file = org_file - else - spawns = {} end end diff --git a/mods/boats b/mods/boats deleted file mode 160000 index a7534e93..00000000 --- a/mods/boats +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a7534e938834c1a0322e49df796f613ca1f55880 diff --git a/mods/boats/init.lua b/mods/boats/init.lua new file mode 100644 index 00000000..caaef578 --- /dev/null +++ b/mods/boats/init.lua @@ -0,0 +1,249 @@ +-- +-- 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) + self.object:setyaw(clicker:get_look_yaw() - math.pi / 2) + 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 + -- delay remove to ensure player is detached + minetest.after(0.1, function() + self.object:remove() + end) + if not minetest.setting_getbool("creative_mode") then + local inv = puncher:get_inventory() + if inv:room_for_item("main", "boats:boat") then + inv:add_item("main", "boats:boat") + else + minetest.add_item(self.object:getpos(), "boats:boat") + end + 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, + + on_place = function(itemstack, placer, pointed_thing) + 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 + minetest.add_entity(pointed_thing.under, "boats:boat") + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end, +}) + + +minetest.register_craft({ + output = "boats:boat", + recipe = { + {"", "", "" }, + {"group:wood", "", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, + }, +}) diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 10b98e36..a55e340d 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -174,7 +174,6 @@ minetest.register_on_dieplayer(function(player) pos.z = math.floor(pos.z+0.5) local param2 = minetest.dir_to_facedir(player:get_look_dir()) local player_name = player:get_player_name() - local player_inv = player:get_inventory() if (not may_replace(pos, player)) then if (may_replace({x=pos.x, y=pos.y+1, z=pos.z}, player)) then diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index ad5e309c..3770be6a 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -80,8 +80,9 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name else -- not buildable to; place the liquid above -- check if the node above can be replaced + lpos = pointed_thing.above - local node = minetest.get_node_or_nil(lpos) + node = minetest.get_node_or_nil(lpos) local above_ndef = node and minetest.registered_nodes[node.name] if not above_ndef or not above_ndef.buildable_to then diff --git a/mods/creative/init.lua b/mods/creative/init.lua index 0f5bd364..5ea8d195 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -197,7 +197,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) creative.update_creative_inventory(player_name) creative.set_creative_formspec(player, 0) else - local formspec = player:get_inventory_formspec() local start_i = player_inventory[player_name].start_i or 0 if fields.creative_prev then diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index 2fe59784..d821af06 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -15,7 +15,7 @@ local lpp = 14 -- Lines per book's page local function book_on_use(itemstack, user) local player_name = user:get_player_name() local data = minetest.deserialize(itemstack:get_metadata()) - local formspec, title, text, owner = "", "", "", player_name + local title, text, owner = "", "", player_name local page, page_max, lines, string = 1, 1, {}, "" if data then @@ -38,6 +38,7 @@ local function book_on_use(itemstack, user) end end + local formspec if owner == player_name then formspec = "size[8,8]" .. default.gui_bg .. default.gui_bg_img .. @@ -152,7 +153,6 @@ minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv return end - local copy = ItemStack("default:book_written") local original local index for i = 1, player:get_inventory():get_size("craft") do diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index 3047dc41..b5bca889 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -111,7 +111,6 @@ local function furnace_node_timer(pos, elapsed) local inv = meta:get_inventory() local srclist = inv:get_list("src") local fuellist = inv:get_list("fuel") - local dstlist = inv:get_list("dst") -- -- Cooking @@ -172,7 +171,7 @@ local function furnace_node_timer(pos, elapsed) -- Update formspec, infotext and node -- local formspec = inactive_formspec - local item_state = "" + local item_state local item_percent = 0 if cookable then item_percent = math.floor(src_time / cooked.time * 100) diff --git a/mods/default/trees.lua b/mods/default/trees.lua index 1e0df1bc..07071c74 100644 --- a/mods/default/trees.lua +++ b/mods/default/trees.lua @@ -176,8 +176,8 @@ function default.grow_tree(pos, is_apple_tree, bad) local vm = minetest.get_voxel_manip() local minp, maxp = vm:read_from_map( - {x = pos.x - 2, y = pos.y, z = pos.z - 2}, - {x = pos.x + 2, y = pos.y + height + 1, z = pos.z + 2} + {x = x - 2, y = y, z = z - 2}, + {x = x + 2, y = y + height + 1, z = z + 2} ) local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp}) local data = vm:get_data() @@ -211,8 +211,8 @@ function default.grow_jungle_tree(pos, bad) local vm = minetest.get_voxel_manip() local minp, maxp = vm:read_from_map( - {x = pos.x - 3, y = pos.y - 1, z = pos.z - 3}, - {x = pos.x + 3, y = pos.y + height + 1, z = pos.z + 3} + {x = x - 3, y = y - 1, z = z - 3}, + {x = x + 3, y = y + height + 1, z = z + 3} ) local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp}) local data = vm:get_data() @@ -331,7 +331,7 @@ function default.grow_pine_tree(pos, snow) end end - local dev = 2 + dev = 2 for yy = my + 1, my + 2 do for zz = z - dev, z + dev do local vi = a:index(x - dev, yy, zz) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 1e682e1d..f39cedff 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -156,7 +156,6 @@ function _doors.door_toggle(pos, node, clicker) end end - local old = state -- until Lua-5.2 we have no bitwise operators :( if state % 2 == 1 then state = state - 1 @@ -186,7 +185,6 @@ end local function on_place_node(place_to, newnode, placer, oldnode, itemstack, pointed_thing) -- Run script hook - local _, callback for _, callback in ipairs(core.registered_on_placenodes) do -- Deepcopy pos, node and pointed_thing because callback can modify them local place_to_copy = {x = place_to.x, y = place_to.y, z = place_to.z} @@ -250,7 +248,7 @@ function doors.register(name, def) inventory_image = def.inventory_image, on_place = function(itemstack, placer, pointed_thing) - local pos = nil + local pos if not pointed_thing.type == "node" then return itemstack @@ -314,7 +312,6 @@ function doors.register(name, def) meta:set_int("state", state) if def.protected then - local pn = placer:get_player_name() meta:set_string("doors_owner", pn) meta:set_string("infotext", "Owned by " .. pn) end @@ -347,7 +344,7 @@ function doors.register(name, def) return true end local meta = minetest.get_meta(pos) - local name = "" + local name if digger then name = digger:get_player_name() end diff --git a/mods/farming b/mods/farming deleted file mode 160000 index f93811a8..00000000 --- a/mods/farming +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f93811a8ab8345e453b962620d997c736b02a8ff diff --git a/mods/farming/api.lua b/mods/farming/api.lua new file mode 100644 index 00000000..901f7245 --- /dev/null +++ b/mods/farming/api.lua @@ -0,0 +1,364 @@ + +-- Wear out hoes, place soil +-- TODO Ignore group:flower +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, wear out item 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 + itemstack:add_wear(65535/(uses-1)) + 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 + }) + -- 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 + minetest.swap_node(pos, {name = def.next_plant}) + 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 + minetest.swap_node(pos, {name = def.next_plant}) + + -- 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 + + -- Register seed + local lbm_nodes = {mname .. ":seed_" .. pname} + local g = {seed = 1, snappy = 3, attached_node = 1} + 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", + 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({ + dug = {name = "default_grass_footstep", gain = 0.2}, + place = {name = "default_place_node", gain = 0.25}, + }), + + on_place = function(itemstack, placer, pointed_thing) + 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", + }) + + -- Register growing steps + for i = 1, def.steps do + local drop = { + items = { + {items = {mname .. ":" .. pname}, rarity = 9 - i}, + {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, + {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, + {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 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", + 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/tnt/init.lua b/mods/tnt/init.lua index 18bd9263..a356fb17 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -150,7 +150,7 @@ local function entity_physics(pos, radius, drops) local dir = vector.normalize(vector.subtract(obj_pos, pos)) local moveoff = vector.multiply(dir, dist + 1.0) local newpos = vector.add(pos, moveoff) - local newpos = vector.add(newpos, {x = 0, y = 0.2, z = 0}) + newpos = vector.add(newpos, {x = 0, y = 0.2, z = 0}) obj:setpos(newpos) obj:set_hp(obj:get_hp() - damage) @@ -258,7 +258,7 @@ function tnt.burn(pos) end local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast) - local pos = vector.round(pos) + pos = vector.round(pos) -- scan for adjacent TNT nodes first, and enlarge the explosion local vm1 = VoxelManip() local p1 = vector.subtract(pos, 2) @@ -295,11 +295,11 @@ local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast) -- perform the explosion local vm = VoxelManip() local pr = PseudoRandom(os.time()) - local p1 = vector.subtract(pos, radius) - local p2 = vector.add(pos, radius) - local minp, maxp = vm:read_from_map(p1, p2) - local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp}) - local data = vm:get_data() + p1 = vector.subtract(pos, radius) + p2 = vector.add(pos, radius) + minp, maxp = vm:read_from_map(p1, p2) + a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp}) + data = vm:get_data() local drops = {} local on_blast_queue = {} @@ -512,7 +512,7 @@ minetest.register_craft({ }) function tnt.register_tnt(def) - local name = "" + local name if not def.name:find(':') then name = "tnt:" .. def.name else From d7b337eae2cf7ffda6ff613d437c1d99bee0d791 Mon Sep 17 00:00:00 2001 From: Tim Date: Sun, 26 Jun 2016 14:46:15 +0200 Subject: [PATCH 141/383] Stop shadowing upvalues and definitions. --- mods/beds/api.lua | 8 ++++---- mods/creative/init.lua | 19 ++++++++++--------- mods/doors/init.lua | 6 +++--- mods/fire/init.lua | 4 ++-- mods/tnt/init.lua | 10 +++++----- 5 files changed, 24 insertions(+), 23 deletions(-) diff --git a/mods/beds/api.lua b/mods/beds/api.lua index d640a311..3624ea45 100644 --- a/mods/beds/api.lua +++ b/mods/beds/api.lua @@ -59,8 +59,8 @@ function beds.register_bed(name, def) return itemstack end - local def = minetest.registered_nodes[minetest.get_node(pos).name] - if not def or not def.buildable_to then + local node_def = minetest.registered_nodes[minetest.get_node(pos).name] + if not node_def or not node_def.buildable_to then return itemstack end @@ -113,8 +113,8 @@ function beds.register_bed(name, def) end local newp = vector.add(pos, minetest.facedir_to_dir(new_param2)) local node3 = minetest.get_node_or_nil(newp) - local def = node3 and minetest.registered_nodes[node3.name] - if not def or not def.buildable_to then + local node_def = node3 and minetest.registered_nodes[node3.name] + if not node_def or not node_def.buildable_to then return false end if minetest.is_protected(newp, user:get_player_name()) then diff --git a/mods/creative/init.lua b/mods/creative/init.lua index 5ea8d195..3b0076c1 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -5,15 +5,16 @@ local player_inventory = {} local creative_mode = minetest.setting_getbool("creative_mode") -- Create detached creative inventory after loading all mods -creative.init_creative_inventory = function(player) - local player_name = player:get_player_name() - player_inventory[player_name] = {} - player_inventory[player_name].size = 0 - player_inventory[player_name].filter = "" - player_inventory[player_name].start_i = 1 - player_inventory[player_name].tab_id = 2 +creative.init_creative_inventory = function(owner) + local owner_name = owner:get_player_name() + player_inventory[owner_name] = { + size = 0, + filter = "", + start_i = 1, + tab_id = 2, + } - minetest.create_detached_inventory("creative_" .. player_name, { + minetest.create_detached_inventory("creative_" .. owner_name, { allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) if creative_mode and not to_list == "main" then return count @@ -45,7 +46,7 @@ creative.init_creative_inventory = function(player) end, }) - creative.update_creative_inventory(player_name) + creative.update_creative_inventory(owner_name) --print("creative inventory size: " .. player_inventory[player_name].size) end diff --git a/mods/doors/init.lua b/mods/doors/init.lua index f39cedff..7e587dcf 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -344,11 +344,11 @@ function doors.register(name, def) return true end local meta = minetest.get_meta(pos) - local name + local owner_name if digger then - name = digger:get_player_name() + owner_name = digger:get_player_name() end - return meta:get_string("doors_owner") == name + return meta:get_string("doors_owner") == owner_name end if not def.sounds then diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 08b53a89..90e2f0a8 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -284,8 +284,8 @@ else local p = minetest.find_node_near(p0, 1, {"group:flammable"}) if p then -- remove flammable nodes around flame - local node = minetest.get_node(p) - local def = minetest.registered_nodes[node.name] + local flammable_node = minetest.get_node(p) + local def = minetest.registered_nodes[flammable_node.name] if def.on_burn then def.on_burn(p) else diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index a356fb17..4a704cc4 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -7,7 +7,7 @@ local loss_prob = {} loss_prob["default:cobble"] = 3 loss_prob["default:dirt"] = 4 -local radius = tonumber(minetest.setting_get("tnt_radius") or 3) +local tnt_radius = tonumber(minetest.setting_get("tnt_radius") or 3) -- Fill a list with data for content IDs, after all nodes are registered local cid_data = {} @@ -342,10 +342,10 @@ local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast) end end - for _, data in ipairs(on_blast_queue) do - local dist = math.max(1, vector.distance(data.pos, pos)) + for _, queued_data in ipairs(on_blast_queue) do + local dist = math.max(1, vector.distance(queued_data.pos, pos)) local intensity = (radius * radius) / (dist * dist) - local node_drops = data.on_blast(data.pos, intensity) + local node_drops = queued_data.on_blast(queued_data.pos, intensity) if node_drops then for _, item in ipairs(node_drops) do add_drop(drops, item) @@ -586,6 +586,6 @@ end tnt.register_tnt({ name = "tnt:tnt", description = "TNT", - radius = radius, + radius = tnt_radius, }) From 23544869e3260c9045c59b8b415b9996e11aa2ca Mon Sep 17 00:00:00 2001 From: Tim Date: Mon, 11 Jul 2016 15:11:57 +0200 Subject: [PATCH 142/383] Clean up fire ABM parameters. --- mods/fire/init.lua | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 90e2f0a8..34613da5 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -226,10 +226,10 @@ minetest.register_abm({ interval = 3, chance = 1, catch_up = false, - action = function(p0, node, _, _) - minetest.remove_node(p0) + action = function(pos, node, active_object_count, active_object_count_wider) + minetest.remove_node(pos) minetest.sound_play("fire_extinguish_flame", - {pos = p0, max_hear_distance = 16, gain = 0.25}) + {pos = pos, max_hear_distance = 16, gain = 0.25}) end, }) @@ -245,9 +245,7 @@ if minetest.setting_getbool("disable_fire") then interval = 7, chance = 1, catch_up = false, - action = function(p0, node, _, _) - minetest.remove_node(p0) - end, + action = minetest.remove_node, }) else @@ -260,12 +258,12 @@ else interval = 7, chance = 12, catch_up = false, - action = function(p0, node, _, _) + action = function(pos, node, active_object_count, active_object_count_wider) -- If there is water or stuff like that around node, don't ignite - if minetest.find_node_near(p0, 1, {"group:puts_out_fire"}) then + if minetest.find_node_near(pos, 1, {"group:puts_out_fire"}) then return end - local p = minetest.find_node_near(p0, 1, {"air"}) + local p = minetest.find_node_near(pos, 1, {"air"}) if p then minetest.set_node(p, {name = "fire:basic_flame"}) end @@ -280,8 +278,8 @@ else interval = 5, chance = 18, catch_up = false, - action = function(p0, node, _, _) - local p = minetest.find_node_near(p0, 1, {"group:flammable"}) + action = function(pos, node, active_object_count, active_object_count_wider) + local p = minetest.find_node_near(pos, 1, {"group:flammable"}) if p then -- remove flammable nodes around flame local flammable_node = minetest.get_node(p) @@ -309,13 +307,13 @@ minetest.register_abm({ neighbors = {"air"}, interval = 5, chance = 10, - action = function(p0, node, _, _) + action = function(pos, node, active_object_count, active_object_count_wider) local reg = minetest.registered_nodes[node.name] if not reg or not reg.groups.igniter or reg.groups.igniter < 2 then return end local d = reg.groups.igniter - local p = minetest.find_node_near(p0, d, {"group:flammable"}) + local p = minetest.find_node_near(pos, d, {"group:flammable"}) if p then -- If there is water or stuff like that around flame, don't ignite if fire.flame_should_extinguish(p) then From 77648aac8e62f78c9be2f5d2ea8e01b46bce95bc Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 16 Jul 2016 16:40:51 +0200 Subject: [PATCH 143/383] hopefully readd submodule boats and farming --- .gitmodules | 2 +- mods/boats | 1 + mods/boats/init.lua | 249 ----------------------------- mods/farming | 1 + mods/farming/api.lua | 364 ------------------------------------------- 5 files changed, 3 insertions(+), 614 deletions(-) create mode 160000 mods/boats delete mode 100644 mods/boats/init.lua create mode 160000 mods/farming delete mode 100644 mods/farming/api.lua diff --git a/.gitmodules b/.gitmodules index 1bb07f71..224741f1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "mods/boats"] path = mods/boats - url = https://github.com/tenplus1/boats.git + url = https://git.tchncs.de/Illuna-Minetest/boats.git [submodule "mods/illuna"] path = mods/illuna url = https://git.tchncs.de/Illuna-Minetest/illuna.git 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/init.lua b/mods/boats/init.lua deleted file mode 100644 index caaef578..00000000 --- a/mods/boats/init.lua +++ /dev/null @@ -1,249 +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) - self.object:setyaw(clicker:get_look_yaw() - math.pi / 2) - 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 - -- delay remove to ensure player is detached - minetest.after(0.1, function() - self.object:remove() - end) - if not minetest.setting_getbool("creative_mode") then - local inv = puncher:get_inventory() - if inv:room_for_item("main", "boats:boat") then - inv:add_item("main", "boats:boat") - else - minetest.add_item(self.object:getpos(), "boats:boat") - end - 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, - - on_place = function(itemstack, placer, pointed_thing) - 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 - minetest.add_entity(pointed_thing.under, "boats:boat") - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - return itemstack - end, -}) - - -minetest.register_craft({ - output = "boats:boat", - recipe = { - {"", "", "" }, - {"group:wood", "", "group:wood"}, - {"group:wood", "group:wood", "group:wood"}, - }, -}) diff --git a/mods/farming b/mods/farming new file mode 160000 index 00000000..f93811a8 --- /dev/null +++ b/mods/farming @@ -0,0 +1 @@ +Subproject commit f93811a8ab8345e453b962620d997c736b02a8ff diff --git a/mods/farming/api.lua b/mods/farming/api.lua deleted file mode 100644 index 901f7245..00000000 --- a/mods/farming/api.lua +++ /dev/null @@ -1,364 +0,0 @@ - --- Wear out hoes, place soil --- TODO Ignore group:flower -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, wear out item 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 - itemstack:add_wear(65535/(uses-1)) - 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 - }) - -- 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 - minetest.swap_node(pos, {name = def.next_plant}) - 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 - minetest.swap_node(pos, {name = def.next_plant}) - - -- 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 - - -- Register seed - local lbm_nodes = {mname .. ":seed_" .. pname} - local g = {seed = 1, snappy = 3, attached_node = 1} - 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", - 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({ - dug = {name = "default_grass_footstep", gain = 0.2}, - place = {name = "default_place_node", gain = 0.25}, - }), - - on_place = function(itemstack, placer, pointed_thing) - 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", - }) - - -- Register growing steps - for i = 1, def.steps do - local drop = { - items = { - {items = {mname .. ":" .. pname}, rarity = 9 - i}, - {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, - {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, - {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 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", - 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 From 52f509bad1149a7943057a86b38e90c532e8babd Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 16 Jul 2016 20:37:52 +0200 Subject: [PATCH 144/383] .gitmodules: fix duplicate submodule death_messages --- .gitmodules | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 224741f1..117c23bb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,9 +4,6 @@ [submodule "mods/illuna"] path = mods/illuna url = https://git.tchncs.de/Illuna-Minetest/illuna.git -[submodule "mods/death_message"] - path = mods/death_messages - url = https://git.tchncs.de/Illuna-Minetest/death_message.git [submodule "mods/wine"] path = mods/wine url = https://github.com/tenplus1/wine From 6d418e996203e651a5ff40426d7234988386bd54 Mon Sep 17 00:00:00 2001 From: adrido Date: Tue, 12 Jul 2016 11:02:01 +0200 Subject: [PATCH 145/383] merge upstream: Beds: Only register respawn callbacks if respawn is enabled --- mods/beds/functions.lua | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua index 96cebe81..5eed27d9 100644 --- a/mods/beds/functions.lua +++ b/mods/beds/functions.lua @@ -173,19 +173,18 @@ end -- Callbacks - --- respawn player at bed if enabled and valid position is found -minetest.register_on_respawnplayer(function(player) - if not enable_respawn then - return false - end - local name = player:get_player_name() - local pos = beds.spawn[name] or nil - if pos then - player:setpos(pos) - return true - end -end) +-- Only register respawn callback if respawn enabled +if enable_respawn then + -- respawn player at bed if enabled and valid position is found + minetest.register_on_respawnplayer(function(player) + local name = player:get_player_name() + local pos = beds.spawn[name] + if pos then + player:setpos(pos) + return true + end + end) +end minetest.register_on_leaveplayer(function(player) local name = player:get_player_name() From e45386a0697b668173663c6a8398e8a1032c792d Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Wed, 13 Jul 2016 19:24:49 +0100 Subject: [PATCH 146/383] merge upstream: Doors: Make door groups consistent with corresponding materials --- mods/doors/init.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 7e587dcf..0d3fd23f 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -425,7 +425,7 @@ doors.register("door_wood", { tiles = {{ name = "doors_door_wood.png", backface_culling = true }}, description = "Wooden Door", inventory_image = "doors_item_wood.png", - groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, recipe = { {"group:wood", "group:wood"}, {"group:wood", "group:wood"}, @@ -438,7 +438,7 @@ doors.register("door_steel", { description = "Steel Door", inventory_image = "doors_item_steel.png", protected = true, - groups = {snappy = 1, cracky = 1, level = 2}, + groups = {cracky = 1, level = 2}, sounds = default.node_sound_stone_defaults(), sound_open = "doors_steel_door_open", sound_close = "doors_steel_door_close", @@ -453,7 +453,7 @@ doors.register("door_glass", { tiles = {"doors_door_glass.png"}, description = "Glass Door", inventory_image = "doors_item_glass.png", - groups = {snappy=1, cracky=1, oddly_breakable_by_hand=3}, + groups = {cracky=3, oddly_breakable_by_hand=3}, sounds = default.node_sound_glass_defaults(), sound_open = "doors_glass_door_open", sound_close = "doors_glass_door_close", @@ -468,7 +468,7 @@ doors.register("door_obsidian_glass", { tiles = {"doors_door_obsidian_glass.png"}, description = "Obsidian Glass Door", inventory_image = "doors_item_obsidian_glass.png", - groups = {snappy=1, cracky=1, oddly_breakable_by_hand=3}, + groups = {cracky=3}, sounds = default.node_sound_glass_defaults(), sound_open = "doors_glass_door_open", sound_close = "doors_glass_door_close", @@ -632,7 +632,7 @@ doors.register_trapdoor("doors:trapdoor", { wield_image = "doors_trapdoor.png", tile_front = "doors_trapdoor.png", tile_side = "doors_trapdoor_side.png", - groups = {snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=2, door=1}, + groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, door = 1}, }) doors.register_trapdoor("doors:trapdoor_steel", { @@ -645,7 +645,7 @@ doors.register_trapdoor("doors:trapdoor_steel", { sounds = default.node_sound_stone_defaults(), sound_open = "doors_steel_door_open", sound_close = "doors_steel_door_close", - groups = {snappy=1, cracky=1, level=2, door=1}, + groups = {cracky = 1, level = 2, door = 1}, }) minetest.register_craft({ From 6195b23ea523b8ac809e0b794f2b4656f12e8df7 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 16 Jul 2016 23:31:30 +0200 Subject: [PATCH 147/383] add .gitlab-ci.yml --- .gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..73fc7ca0 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,3 @@ +syntax: + script: + - luac5.1 -s -p mods/*/*.lua \ No newline at end of file From f8a71dff2dd5da1543b0a38ce194ada403749605 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 16 Jul 2016 23:46:36 +0200 Subject: [PATCH 148/383] update readme --- README.txt | 53 ----------------------------------------------------- readme.md | 8 ++++++++ 2 files changed, 8 insertions(+), 53 deletions(-) delete mode 100644 README.txt create mode 100644 readme.md diff --git a/README.txt b/README.txt deleted file mode 100644 index b59b7f94..00000000 --- a/README.txt +++ /dev/null @@ -1,53 +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!) - -License of source code ----------------------- -Copyright (C) 2010-2012 celeron55, Perttu Ahola -See README.txt in each mod directory for information about other authors. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as published by -the Free Software Foundation; either version 2.1 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -License of media (textures and sounds) --------------------------------------- -Copyright (C) 2010-2012 celeron55, Perttu Ahola -See README.txt in each mod directory for information about other authors. - -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -http://creativecommons.org/licenses/by-sa/3.0/ - -License of menu/header.png -Copyright (C) 2015 paramat CC BY-SA 3.0 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) From b4519760c0b34f58e4c8a83748bb899b31f338a6 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 19 Jul 2016 23:02:48 +0200 Subject: [PATCH 149/383] update submodule plantlife_modpack --- mods/plantlife_modpack | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/plantlife_modpack b/mods/plantlife_modpack index b7f394c5..515f2ac4 160000 --- a/mods/plantlife_modpack +++ b/mods/plantlife_modpack @@ -1 +1 @@ -Subproject commit b7f394c5fe2cbecaff6bbc012d42b497327850b3 +Subproject commit 515f2ac456e0b3a8571cc9a233651b2275e59a9a From 709b1c09177f3fa4967d40597c92ffce4d69ef5a Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 19 Jul 2016 23:06:40 +0200 Subject: [PATCH 150/383] gitlab-ci: checkout submodules before running luac --- .gitlab-ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 73fc7ca0..bd73a918 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,3 +1,5 @@ syntax: script: - - luac5.1 -s -p mods/*/*.lua \ No newline at end of file + - git submodule init + - git submodule update + - luac5.1 -s -p mods/*/*.lua From 39615a3403cfc4d61ff7d3c274dde59331ce503d Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 20 Jul 2016 13:58:55 +0200 Subject: [PATCH 151/383] update submodule plantlife_modpack --- mods/plantlife_modpack | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/plantlife_modpack b/mods/plantlife_modpack index 515f2ac4..e882ed34 160000 --- a/mods/plantlife_modpack +++ b/mods/plantlife_modpack @@ -1 +1 @@ -Subproject commit 515f2ac456e0b3a8571cc9a233651b2275e59a9a +Subproject commit e882ed349125a7e6072d158a9b457510fddaa2ac From de8dc7afb10be0cf55085b50c1f1e6f2975f4fb0 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 20 Jul 2016 23:46:21 +0200 Subject: [PATCH 152/383] update game name to illuna --- game.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 052f9aec6e6d3f28f80b72d8e7dab261886c4821 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 24 Jul 2016 13:47:49 +0200 Subject: [PATCH 153/383] update submodule mobs_redo, 3d_armor, mobs_monster --- mods/3d_armor | 2 +- mods/mobs_monster | 2 +- mods/mobs_redo | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/3d_armor b/mods/3d_armor index ac414d3d..456c84e9 160000 --- a/mods/3d_armor +++ b/mods/3d_armor @@ -1 +1 @@ -Subproject commit ac414d3df3bf34cc060f0eede40dc7a1e392f300 +Subproject commit 456c84e93ea03fcae24e53145d45808ec70d6896 diff --git a/mods/mobs_monster b/mods/mobs_monster index 08152762..3d03e45d 160000 --- a/mods/mobs_monster +++ b/mods/mobs_monster @@ -1 +1 @@ -Subproject commit 081527629e6ab472937f8e97d4c646cb62b0a18f +Subproject commit 3d03e45d1cca8d0446ee4357af5d5fe226c89287 diff --git a/mods/mobs_redo b/mods/mobs_redo index 80ba7db8..a470ac7c 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit 80ba7db8ba91d12c274a31eca8778338a120b8b5 +Subproject commit a470ac7cc1786c188866ca57d4a0d13e3e8f37d0 From 0f691b22119fcc8bdec7a0660b3e86bfcbb31bae Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 26 Jul 2016 09:52:42 +0200 Subject: [PATCH 154/383] update submodule hudbars --- mods/hudbars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/hudbars b/mods/hudbars index 58a5fe3e..29cf605e 160000 --- a/mods/hudbars +++ b/mods/hudbars @@ -1 +1 @@ -Subproject commit 58a5fe3e2e90ca768f429f6313b476314f890806 +Subproject commit 29cf605e066240a7a83be6a54f9446d43b9e2672 From 81ca075cd8d7501869d8c19fd1166049aeaa54d2 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 28 Jul 2016 22:53:25 +0200 Subject: [PATCH 155/383] add mod bows to submodules --- .gitmodules | 4 ++++ mods/bows | 1 + 2 files changed, 5 insertions(+) create mode 160000 mods/bows diff --git a/.gitmodules b/.gitmodules index 117c23bb..4cf253b2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -58,3 +58,7 @@ [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 diff --git a/mods/bows b/mods/bows new file mode 160000 index 00000000..5147471c --- /dev/null +++ b/mods/bows @@ -0,0 +1 @@ +Subproject commit 5147471cd97f0f6af52f82de9d39225be87f33a2 From 46fab9037592886c1e7fbe9b9bc54f3913a49aea Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 28 Jul 2016 23:31:10 +0200 Subject: [PATCH 156/383] update submodule bows --- mods/bows | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/bows b/mods/bows index 5147471c..e054dee4 160000 --- a/mods/bows +++ b/mods/bows @@ -1 +1 @@ -Subproject commit 5147471cd97f0f6af52f82de9d39225be87f33a2 +Subproject commit e054dee4ae0be385585a3f66432bf763de0a5470 From ed68401f07599cff3cfaee005873334ee1b117dd Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 29 Jul 2016 17:12:29 +0200 Subject: [PATCH 157/383] give_initial_stuff: add wooden bow and arrows --- mods/give_initial_stuff/depends.txt | 5 ++++- mods/give_initial_stuff/init.lua | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/mods/give_initial_stuff/depends.txt b/mods/give_initial_stuff/depends.txt index 3a7daa1d..d8a81cff 100644 --- a/mods/give_initial_stuff/depends.txt +++ b/mods/give_initial_stuff/depends.txt @@ -1,2 +1,5 @@ default - +bows +xdecor +3d_armor +shields diff --git a/mods/give_initial_stuff/init.lua b/mods/give_initial_stuff/init.lua index 2cb17686..4ad7a1bb 100644 --- a/mods/give_initial_stuff/init.lua +++ b/mods/give_initial_stuff/init.lua @@ -8,8 +8,8 @@ minetest.register_on_newplayer(function(player) 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', '') - player:get_inventory():add_item('main', '') - player:get_inventory():add_item('main', '') + 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') From 2fe3f456244335d7ceaa306fb5a5fe3435a4e4d1 Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 29 Jul 2016 18:52:06 +0200 Subject: [PATCH 158/383] update submodule wardrobe --- mods/wardrobe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/wardrobe b/mods/wardrobe index f0e32308..f20f233b 160000 --- a/mods/wardrobe +++ b/mods/wardrobe @@ -1 +1 @@ -Subproject commit f0e32308d06726489670b76bd4d1b9605b17e250 +Subproject commit f20f233b84ebafb7addb97e0a400ee5b1893f622 From cf669d3703a00e658874ee985cf7b732b9c5bb62 Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 29 Jul 2016 19:08:43 +0200 Subject: [PATCH 159/383] update submodule wardrobe --- mods/wardrobe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/wardrobe b/mods/wardrobe index f20f233b..4f969138 160000 --- a/mods/wardrobe +++ b/mods/wardrobe @@ -1 +1 @@ -Subproject commit f20f233b84ebafb7addb97e0a400ee5b1893f622 +Subproject commit 4f9691383cc5fc443e00d01482dd3b425e61b22e From d0f4f39a0e435e5af4ecca1facd48beab08329d3 Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 29 Jul 2016 22:40:44 +0200 Subject: [PATCH 160/383] update submodule bows --- mods/bows | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/bows b/mods/bows index e054dee4..819daa52 160000 --- a/mods/bows +++ b/mods/bows @@ -1 +1 @@ -Subproject commit e054dee4ae0be385585a3f66432bf763de0a5470 +Subproject commit 819daa52f1c8e1621489a5f8d73ad9a29e6efa4e From c391fc56685169714f1d880b44985cf22c033171 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 31 Jul 2016 00:19:03 +0200 Subject: [PATCH 161/383] update submodule wardrobe --- mods/wardrobe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/wardrobe b/mods/wardrobe index 4f969138..71135fc2 160000 --- a/mods/wardrobe +++ b/mods/wardrobe @@ -1 +1 @@ -Subproject commit 4f9691383cc5fc443e00d01482dd3b425e61b22e +Subproject commit 71135fc29026647be78daa9d8f554793771d4fe6 From 8c8b3f97219deb84467e203cf10a28a7356a7565 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 2 Aug 2016 18:16:31 +0200 Subject: [PATCH 162/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 0ee41e0d..fed78cca 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 0ee41e0d8329787d8c0ae57d8d06ccecd5a6b402 +Subproject commit fed78cca4b6a8624e1d5582c4c372c27062e837b From 3bcf0a93f41fc1c350df94a92eead1b15097182c Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 2 Aug 2016 18:20:19 +0200 Subject: [PATCH 163/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index fed78cca..e473c4da 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit fed78cca4b6a8624e1d5582c4c372c27062e837b +Subproject commit e473c4da3d3ce84befb3fcd8d484b9f673df91c0 From 82ece0559d246ecd27c923dde69194d68d3056c4 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 2 Aug 2016 19:39:23 +0200 Subject: [PATCH 164/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index e473c4da..da7aaf6c 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit e473c4da3d3ce84befb3fcd8d484b9f673df91c0 +Subproject commit da7aaf6c28095fad973baedffd93382abb38fef0 From fe1f3f59d747b4852543f2d5092e841f02fb470e Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 2 Aug 2016 22:26:28 +0200 Subject: [PATCH 165/383] update/fix wooden trapdoor recipe --- mods/doors/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 0d3fd23f..dfa9464d 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -651,8 +651,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', ''}, {'', '', ''}, } }) From f3513e297b67de21609a6f30af336206f4540e5b Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 3 Aug 2016 00:10:37 +0200 Subject: [PATCH 166/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index da7aaf6c..db98507d 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit da7aaf6c28095fad973baedffd93382abb38fef0 +Subproject commit db98507d31a98d52be1d7f927d94702562916ac0 From e4a23c029a88db85c90d2ebcfdb873e16d746260 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 3 Aug 2016 00:44:05 +0200 Subject: [PATCH 167/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index db98507d..9402b69c 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit db98507d31a98d52be1d7f927d94702562916ac0 +Subproject commit 9402b69c0e3440cd02de697742909ff083c743e0 From 67931a0ede5a2919d7364f3dbd389b3f007eb57a Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 3 Aug 2016 23:21:44 +0200 Subject: [PATCH 168/383] replace submodule mobs_monster with our forked one --- .gitmodules | 6 +++--- mods/mobs_monster | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index 4cf253b2..0a7893b8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,9 +16,6 @@ [submodule "mods/mobs_animal"] path = mods/mobs_animal url = https://git.tchncs.de/Illuna-Minetest/mobs_animal.git -[submodule "mods/mobs_monster"] - path = mods/mobs_monster - url = https://github.com/tenplus1/mobs_monster [submodule "mods/farming"] path = mods/farming url = https://git.tchncs.de/Illuna-Minetest/farming.git @@ -62,3 +59,6 @@ path = mods/bows url = https://git.tchncs.de/Illuna-Minetest/bows branch = illuna +[submodule "mods/mobs_monster"] + path = mods/mobs_monster + url = https://git.tchncs.de/Illuna-Minetest/mobs_monster diff --git a/mods/mobs_monster b/mods/mobs_monster index 3d03e45d..97fad4d7 160000 --- a/mods/mobs_monster +++ b/mods/mobs_monster @@ -1 +1 @@ -Subproject commit 3d03e45d1cca8d0446ee4357af5d5fe226c89287 +Subproject commit 97fad4d782e7d1bfac13ac28b8717fb46eb4ecea From 9e9c70782ed0163c930c27c866fc92d5428702b7 Mon Sep 17 00:00:00 2001 From: Milan* Date: Thu, 4 Aug 2016 12:38:22 +0200 Subject: [PATCH 169/383] update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bd73a918..00059617 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,6 @@ syntax: script: - git submodule init + - git submodule sync - git submodule update - luac5.1 -s -p mods/*/*.lua From dd938f306f7dcab9207a95ab2bd5697a266b058a Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 8 Aug 2016 17:38:45 +0200 Subject: [PATCH 170/383] update submodule farming --- mods/farming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming b/mods/farming index f93811a8..de0e7dcc 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit f93811a8ab8345e453b962620d997c736b02a8ff +Subproject commit de0e7dcc328df01e4934378efefb0cdd7a373e38 From d6b4fda256d908fb08cd9f8ed796354a42f21c97 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 11 Aug 2016 14:33:30 +0200 Subject: [PATCH 171/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 9402b69c..b544316a 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 9402b69c0e3440cd02de697742909ff083c743e0 +Subproject commit b544316aea4b6914d13ba53ad83091fadd09936d From 9dec8f4b01a42f77ff160a4608fe6768b9bd2cfd Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 11 Aug 2016 22:02:42 +0200 Subject: [PATCH 172/383] add submodule pkarcs --- .gitmodules | 3 +++ mods/pkarcs | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/pkarcs diff --git a/.gitmodules b/.gitmodules index 0a7893b8..384a47c4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -62,3 +62,6 @@ [submodule "mods/mobs_monster"] path = mods/mobs_monster url = https://git.tchncs.de/Illuna-Minetest/mobs_monster +[submodule "mods/pkarcs"] + path = mods/pkarcs + url = https://git.tchncs.de/Illuna-Minetest/pkarcs diff --git a/mods/pkarcs b/mods/pkarcs new file mode 160000 index 00000000..f521e018 --- /dev/null +++ b/mods/pkarcs @@ -0,0 +1 @@ +Subproject commit f521e0188620802c80f22766ccb6ff3ce41d4708 From 4aea8a4092decaf14be515f8d9f1617b2a51437b Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 13 Aug 2016 22:02:24 +0200 Subject: [PATCH 173/383] update submodule pkarcs --- mods/pkarcs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/pkarcs b/mods/pkarcs index f521e018..737ad730 160000 --- a/mods/pkarcs +++ b/mods/pkarcs @@ -1 +1 @@ -Subproject commit f521e0188620802c80f22766ccb6ff3ce41d4708 +Subproject commit 737ad730536621b150e91c9f829d4a5ec2f0ba7b From 3850f9a008a523d4c9c2669cc78a43d234e58b12 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 13 Aug 2016 22:03:12 +0200 Subject: [PATCH 174/383] add submodule columnia --- .gitmodules | 3 +++ mods/columnia | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/columnia diff --git a/.gitmodules b/.gitmodules index 384a47c4..30bc9739 100644 --- a/.gitmodules +++ b/.gitmodules @@ -65,3 +65,6 @@ [submodule "mods/pkarcs"] path = mods/pkarcs url = https://git.tchncs.de/Illuna-Minetest/pkarcs +[submodule "mods/columnia"] + path = mods/columnia + url = https://git.tchncs.de/Illuna-Minetest/columnia diff --git a/mods/columnia b/mods/columnia new file mode 160000 index 00000000..2e91b7ea --- /dev/null +++ b/mods/columnia @@ -0,0 +1 @@ +Subproject commit 2e91b7ea177157fc3a5693549ac5c0ddb97e151b From a1931623016e0dc62b53b5c8777335dc4eaaa45d Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 15 Aug 2016 09:15:04 +0200 Subject: [PATCH 175/383] update submodule columnia, pkarcs --- mods/columnia | 2 +- mods/pkarcs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/columnia b/mods/columnia index 2e91b7ea..245eb3c7 160000 --- a/mods/columnia +++ b/mods/columnia @@ -1 +1 @@ -Subproject commit 2e91b7ea177157fc3a5693549ac5c0ddb97e151b +Subproject commit 245eb3c703655abbb33ddd21ee8eb1b9e27bcbe6 diff --git a/mods/pkarcs b/mods/pkarcs index 737ad730..80f9ea5c 160000 --- a/mods/pkarcs +++ b/mods/pkarcs @@ -1 +1 @@ -Subproject commit 737ad730536621b150e91c9f829d4a5ec2f0ba7b +Subproject commit 80f9ea5c64d547b15978edcd09743a866d8fbf0c From 3dfd1e2b6f46d21dbbb79d53771943b6c284825c Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 21 Aug 2016 10:42:49 +0200 Subject: [PATCH 176/383] update submodule caverealms --- mods/caverealms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/caverealms b/mods/caverealms index a76f218d..be67d107 160000 --- a/mods/caverealms +++ b/mods/caverealms @@ -1 +1 @@ -Subproject commit a76f218dba0eefdbd9834be6eb719af42f3c2c21 +Subproject commit be67d10792ce97dfddf29dfc0fb0180a24cfd955 From ae354791d490fae2c7b365c98ed4a8848348e57e Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 21 Aug 2016 19:43:42 +0200 Subject: [PATCH 177/383] update submodule columnia --- mods/columnia | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/columnia b/mods/columnia index 245eb3c7..c3a57b9e 160000 --- a/mods/columnia +++ b/mods/columnia @@ -1 +1 @@ -Subproject commit 245eb3c703655abbb33ddd21ee8eb1b9e27bcbe6 +Subproject commit c3a57b9e17bdca5679366fab1518d19d01fd433f From b0bc1af42a263e0e0f0a44e20e1d9e1ea08c70f6 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 25 Aug 2016 15:16:46 +0200 Subject: [PATCH 178/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index b544316a..60fe9391 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit b544316aea4b6914d13ba53ad83091fadd09936d +Subproject commit 60fe9391c2f7eb5970bc5640a62ddfd69e0283f3 From 55bdc674bae65c57ab2f21154ab88d5397de7643 Mon Sep 17 00:00:00 2001 From: Thomas--S Date: Sun, 17 Jul 2016 18:52:42 +0200 Subject: [PATCH 179/383] cherry-pick 3661cb61e37ee6b7a8818f7a28e9102fb0674e54..79dbafc13b256a38c13d7abd2ea7af0f50e64394 --- mods/doors/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index dfa9464d..60f81e07 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -533,6 +533,10 @@ function _doors.trapdoor_toggle(pos, node, clicker) end function doors.register_trapdoor(name, def) + if not name:find(":") then + name = "doors:" .. name + end + local name_closed = name local name_opened = name.."_open" From 9fb3a1960b087b871ea40208f736737eb42be334 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 1 Sep 2016 14:08:58 +0200 Subject: [PATCH 180/383] re-add farming, bones --- .gitmodules | 6 ++++++ mods/boats | 1 + mods/farming | 1 + 3 files changed, 8 insertions(+) create mode 160000 mods/boats create mode 160000 mods/farming diff --git a/.gitmodules b/.gitmodules index 2b7a65dc..4f311509 100644 --- a/.gitmodules +++ b/.gitmodules @@ -62,3 +62,9 @@ [submodule "mods/columnia"] path = mods/columnia url = https://git.tchncs.de/Illuna-Minetest/columnia +[submodule "mods/farming"] + path = mods/farming + url = https://git.tchncs.de/Illuna-Minetest/farming +[submodule "mods/boats"] + path = mods/boats + url = https://git.tchncs.de/Illuna-Minetest/boats 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/farming b/mods/farming new file mode 160000 index 00000000..de0e7dcc --- /dev/null +++ b/mods/farming @@ -0,0 +1 @@ +Subproject commit de0e7dcc328df01e4934378efefb0cdd7a373e38 From 930d201f39be0ecd1e8613dee90e17a074640876 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 1 Sep 2016 14:22:49 +0200 Subject: [PATCH 181/383] bones: fix mergeconflict --- mods/bones/init.lua | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 13af52b5..20ae55e0 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -207,17 +207,11 @@ minetest.register_on_dieplayer(function(player) drop(pos, ItemStack("bones:bones")) return end -<<<<<<< HEAD - - minetest.set_node(pos, {name="bones:bones", param2=param2}) - - minetest.chat_send_player(player_name, "Your stuff is waiting for you at "..minetest.pos_to_string(pos).. ". Go and grab it! ;-)") - minetest.log("action", player_name.." left their bones at "..minetest.pos_to_string(pos)) -======= local param2 = minetest.dir_to_facedir(player:get_look_dir()) minetest.set_node(pos, {name = "bones:bones", param2 = param2}) ->>>>>>> 5e9e3f7e84fafd6ece535b1c7aff3b9ea4e6405b + minetest.chat_send_player(player_name, "Your stuff is waiting for you at "..minetest.pos_to_string(pos).. ". Go and grab it! ;-)") + 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() From f2553fc3ccfa2e9861c3c9194879708734de1c6b Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 1 Sep 2016 14:45:02 +0200 Subject: [PATCH 182/383] fence: add missing textures --- .../textures/default_fence_acacia_wood.png | Bin 0 -> 232 bytes .../default/textures/default_fence_aspen_wood.png | Bin 0 -> 450 bytes .../default/textures/default_fence_junglewood.png | Bin 0 -> 231 bytes mods/default/textures/default_fence_overlay.png.1 | Bin 0 -> 219 bytes mods/default/textures/default_fence_pine_wood.png | Bin 0 -> 233 bytes mods/default/textures/default_fence_wood.png | Bin 0 -> 230 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/default/textures/default_fence_acacia_wood.png create mode 100644 mods/default/textures/default_fence_aspen_wood.png create mode 100644 mods/default/textures/default_fence_junglewood.png create mode 100644 mods/default/textures/default_fence_overlay.png.1 create mode 100644 mods/default/textures/default_fence_pine_wood.png create mode 100644 mods/default/textures/default_fence_wood.png diff --git a/mods/default/textures/default_fence_acacia_wood.png b/mods/default/textures/default_fence_acacia_wood.png new file mode 100644 index 0000000000000000000000000000000000000000..3b973f34fbaf1d6d9351fe4e24b3da9e614ff666 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYjZ>9K){rdHk(p>FJJmvd zx|8-yC+#^-TAMxe_xc*|@He{o`^IIU;wDcQ#}JO|qNfeH4mpUhT!>tgG&R(|qW`_v zNzNmeN+-x1a9*-?OZ=1Ny&SJK|K8@|`OLN_^lpu3i^TQZ7mT9Q^weFS?JW6{88U70 zOw-TzOdmfj-w--+#paBn^%fKO&7HDbbWn& z>~rq5xcz!#aWHH4;v<4UQs@N$I!jTrL&C{1)w*OCGJm{71S1e_Lg!BaB=ajz603xV zAGd8CU`^8zsM#R^E1jbbK7o*aQ;Z@Y1z>tK$2O(UyI8t~nw@$X<8a0hTEc!TZBr6X zj#>Zt?Kd`?4N?4|T?ZqY`k5$JgQQYtDXTp99zYI26f1}de^}1 z%cRaybe497Z!;l;?G@|nVc0}B2fY>v>-9S%^Q&P3H);QaF*QNZ4Ov;}Rzj>2%0mBh zV7Kp8sVP@ad^|b#`eT(K7kA$VZ`>u&*%E6Se*OIJeOl=pxv!>M+J*m(Wubc{pU=MZ s`tLp1)^AMhzic}X%EwjFef4ep1?f_*GKfbTk^lez07*qoM6N<$f|}jMmH+?% literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_fence_junglewood.png b/mods/default/textures/default_fence_junglewood.png new file mode 100644 index 0000000000000000000000000000000000000000..c390941ce54ff75c8b4c2b4ffcbbe4fc040f8088 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYl@?%-6Jk^qXE9Y~H&f-b z)Znwy;nv?13a2N9MFk!yUWuCMzbcVBms zaK>vZj+c8~ysTe$JowiAWd5bQX$dpTAL!nG=B(7AbNd4GGM(72wj;$aBbFbG=zDkX zO#XEr-TTe@Z633)CYk=5GsTA?B}}mKI7Xa3%Q_ZmbBZJtqYQFvls=l+>`)4-BUj5CiVJH_AX>9fI(u=7R`@MS$ z!tQvx>?+<>x_oZsB-f8G(q1W^C^v|j{JD6ugz~9ntXI0h gRn$^wUH(M--J3)mdKI;Vst02}LGZ2$lO literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_fence_wood.png b/mods/default/textures/default_fence_wood.png new file mode 100644 index 0000000000000000000000000000000000000000..1e76430d2f54f3b259598fb396df4aaf8b30b39e GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYZOyb<*60=PtXh{~5M-~s zu+F0~*?4ZHYiG7?vbR=yw(ZwzhqeM0H+Z@@hHzXL?Kb2(w_*wCU=;m z*XQ-k{~ai%)VSJcr}BNjhrXKIR?Td@5te)P$>Od29Stwu86PUVs<^v& Date: Thu, 1 Sep 2016 16:12:43 +0200 Subject: [PATCH 183/383] update submodule bows --- mods/bows | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/bows b/mods/bows index 819daa52..5013537e 160000 --- a/mods/bows +++ b/mods/bows @@ -1 +1 @@ -Subproject commit 819daa52f1c8e1621489a5f8d73ad9a29e6efa4e +Subproject commit 5013537e24f526fbae97a6693a08d6eff7f8cd9b From 56534d5147afe3e6f58a64c65cca56566677ca73 Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 2 Sep 2016 14:06:13 +0200 Subject: [PATCH 184/383] update submodule mobs_redo --- mods/mobs_redo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_redo b/mods/mobs_redo index a470ac7c..2aa6227f 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit a470ac7cc1786c188866ca57d4a0d13e3e8f37d0 +Subproject commit 2aa6227f0a03d20a6c4733f74c46612bd33e0be1 From 35cfb2e4c5c2b8640d8286c9565a89fc3828540b Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 3 Sep 2016 11:04:56 +0200 Subject: [PATCH 185/383] tnt: do not check for tnt enabled for serving recipe --- mods/tnt/init.lua | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 01758cd1..a9c86526 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -492,15 +492,14 @@ minetest.register_craft({ recipe = {"default:coal_lump", "default:gravel"} }) -if enable_tnt then - minetest.register_craft({ - output = "tnt:tnt", - recipe = { - {"", "group:wood", ""}, - {"group:wood", "tnt:gunpowder", "group:wood"}, - {"", "group:wood", ""} - } - }) +minetest.register_craft({ + output = "tnt:tnt", + recipe = { + {"", "group:wood", ""}, + {"group:wood", "tnt:gunpowder", "group:wood"}, + {"", "group:wood", ""} + } +}) minetest.register_abm({ label = "TNT ignition", @@ -510,7 +509,6 @@ if enable_tnt then chance = 1, action = tnt.burn, }) -end function tnt.register_tnt(def) local name From f9f75ade7689100a053507733f5d88bcc2c71500 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 3 Sep 2016 11:09:36 +0200 Subject: [PATCH 186/383] update submodule columnia --- mods/columnia | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/columnia b/mods/columnia index c3a57b9e..e5f5bd31 160000 --- a/mods/columnia +++ b/mods/columnia @@ -1 +1 @@ -Subproject commit c3a57b9e17bdca5679366fab1518d19d01fd433f +Subproject commit e5f5bd3168419ee5519e75dc8c9ed2e63c740df9 From ebe850969c4e702c2a1b6501ad351e0a6e910005 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 3 Sep 2016 11:15:35 +0200 Subject: [PATCH 187/383] fix submodule columnia --- .gitmodules | 6 +++--- mods/columnia | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index 4f311509..f7540d48 100644 --- a/.gitmodules +++ b/.gitmodules @@ -59,12 +59,12 @@ [submodule "mods/pkarcs"] path = mods/pkarcs url = https://git.tchncs.de/Illuna-Minetest/pkarcs -[submodule "mods/columnia"] - path = mods/columnia - url = https://git.tchncs.de/Illuna-Minetest/columnia [submodule "mods/farming"] path = mods/farming url = https://git.tchncs.de/Illuna-Minetest/farming [submodule "mods/boats"] path = mods/boats url = https://git.tchncs.de/Illuna-Minetest/boats +[submodule "mods/columnia"] + path = mods/columnia + url = https://git.tchncs.de/Illuna-Minetest/columnia diff --git a/mods/columnia b/mods/columnia index e5f5bd31..d19ac06a 160000 --- a/mods/columnia +++ b/mods/columnia @@ -1 +1 @@ -Subproject commit e5f5bd3168419ee5519e75dc8c9ed2e63c740df9 +Subproject commit d19ac06a5e1715e7bd157859405e09f83c1f7a13 From 1ff31ee41c673e4e245ad30ff40bc1e0a4bc2d12 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 4 Sep 2016 23:41:00 +0200 Subject: [PATCH 188/383] add submodule technic_chests --- .gitmodules | 3 +++ mods/technic_chests | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/technic_chests diff --git a/.gitmodules b/.gitmodules index 4f311509..53e4b54d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -68,3 +68,6 @@ [submodule "mods/boats"] path = mods/boats url = https://git.tchncs.de/Illuna-Minetest/boats +[submodule "mods/technic_chests"] + path = mods/technic_chests + url = https://git.tchncs.de/Illuna-Minetest/technic_chests 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 From 903f6cb2e3e88341bc7f0135426111726fa5dc64 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 6 Sep 2016 17:27:12 +0200 Subject: [PATCH 189/383] nyancat: add some more aliases --- mods/nyancat/init.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/nyancat/init.lua b/mods/nyancat/init.lua index 677ed50a..2e64bc12 100644 --- a/mods/nyancat/init.lua +++ b/mods/nyancat/init.lua @@ -81,5 +81,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 From 4973e2921bab989a5fbb6b147c04fd95ab4cb0ef Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 6 Sep 2016 21:00:24 +0200 Subject: [PATCH 190/383] update submodule columnia --- mods/columnia | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/columnia b/mods/columnia index d19ac06a..50ea97ac 160000 --- a/mods/columnia +++ b/mods/columnia @@ -1 +1 @@ -Subproject commit d19ac06a5e1715e7bd157859405e09f83c1f7a13 +Subproject commit 50ea97ac54bca6c9313910bf9daa9f376c6d7311 From f678ef9fb8f4e1c06837ec4abe35998018bd8a8a Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 6 Sep 2016 21:05:15 +0200 Subject: [PATCH 191/383] replace submodule columnia --- mods/columnia | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/columnia b/mods/columnia index 50ea97ac..7a538423 160000 --- a/mods/columnia +++ b/mods/columnia @@ -1 +1 @@ -Subproject commit 50ea97ac54bca6c9313910bf9daa9f376c6d7311 +Subproject commit 7a5384239d0e86b126cd873c5585061fb8926add From 6369809bfd1af9259c0b18e43881aa69d12d35ed Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 14 Sep 2016 09:11:57 +0200 Subject: [PATCH 192/383] update submodule mobs_monster, xdecor --- mods/mobs_monster | 2 +- mods/xdecor | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/mobs_monster b/mods/mobs_monster index 97fad4d7..14d0ea47 160000 --- a/mods/mobs_monster +++ b/mods/mobs_monster @@ -1 +1 @@ -Subproject commit 97fad4d782e7d1bfac13ac28b8717fb46eb4ecea +Subproject commit 14d0ea47a98881b589684920ce658b299df46322 diff --git a/mods/xdecor b/mods/xdecor index e0f401ba..dbef5947 160000 --- a/mods/xdecor +++ b/mods/xdecor @@ -1 +1 @@ -Subproject commit e0f401bad71cc7ac8739251464902c921feba184 +Subproject commit dbef5947bf143986bd85083c3cf1b37ba076073e From 9e3cdbfa3f10b17dca1fe7534e638afd1ebe1192 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 14 Sep 2016 09:16:23 +0200 Subject: [PATCH 193/383] update submodule mobs_monster --- mods/mobs_monster | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_monster b/mods/mobs_monster index 14d0ea47..6b7c5ea9 160000 --- a/mods/mobs_monster +++ b/mods/mobs_monster @@ -1 +1 @@ -Subproject commit 14d0ea47a98881b589684920ce658b299df46322 +Subproject commit 6b7c5ea990999de385a9e9eda8cc08f1ce12c00e From b86541f77ed950ad281afac480d568a7fcbd612b Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 14 Sep 2016 19:02:37 +0200 Subject: [PATCH 194/383] add submodule coloured_nametag --- .gitmodules | 3 +++ mods/coloured_nametag | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/coloured_nametag diff --git a/.gitmodules b/.gitmodules index 21c3b3e4..2b2a50bc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -71,3 +71,6 @@ [submodule "mods/columnia"] path = mods/columnia url = https://git.tchncs.de/Illuna-Minetest/columnia +[submodule "mods/coloured_nametag"] + path = mods/coloured_nametag + url = https://github.com/Amaz1/coloured_nametag diff --git a/mods/coloured_nametag b/mods/coloured_nametag new file mode 160000 index 00000000..c50a4ca8 --- /dev/null +++ b/mods/coloured_nametag @@ -0,0 +1 @@ +Subproject commit c50a4ca893e5383d75ff274533327a5faf20b1b7 From 2dda8597b7f56473b8e0b9fef1a15ae814aac208 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 14 Sep 2016 19:22:09 +0200 Subject: [PATCH 195/383] add mod random_messages --- mods/random_messages/depends.txt | 1 + mods/random_messages/init.lua | 141 +++++++++++++++++++++++++++++++ mods/random_messages/readme.md | 17 ++++ 3 files changed, 159 insertions(+) create mode 100644 mods/random_messages/depends.txt create mode 100644 mods/random_messages/init.lua create mode 100644 mods/random_messages/readme.md diff --git a/mods/random_messages/depends.txt b/mods/random_messages/depends.txt new file mode 100644 index 00000000..4ad96d51 --- /dev/null +++ b/mods/random_messages/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/random_messages/init.lua b/mods/random_messages/init.lua new file mode 100644 index 00000000..64d75065 --- /dev/null +++ b/mods/random_messages/init.lua @@ -0,0 +1,141 @@ +--[[ +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",300) + minetest.setting_save(); + return 300 +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() + random_messages.messages = { + "# Illuna-Notes: Soup is very useful to fight hunger, everyone should have some.", + "# Illuna-Notes: Meet your fellows on our Mumbleserver at tchncs.de", + "# Illuna-Notes: Enjoy Illuna? Invite your friends today!", + "# Illuna-Notes: Have something to share? Create and join discussion at the Illuna forum: https://forum.illuna-minetest.tk!", + "# Illuna-Notes: Sell and buy stuff on the Illuna marketplace. It is below the spawnhouse." + } +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 From 1a6e9cb3b2d02ed3e4a9e230bbb31c8c0e59d7d1 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 14 Sep 2016 20:21:00 +0200 Subject: [PATCH 196/383] random_messages: increase message interval --- mods/random_messages/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/random_messages/init.lua b/mods/random_messages/init.lua index 64d75065..056e9e00 100644 --- a/mods/random_messages/init.lua +++ b/mods/random_messages/init.lua @@ -27,9 +27,9 @@ function table.random( t ) end function random_messages.initialize() --Set the interval in minetest.conf. - minetest.setting_set("random_messages_interval",300) + minetest.setting_set("random_messages_interval",1800) minetest.setting_save(); - return 300 + return 1800 end function random_messages.set_interval() --Read the interval from minetest.conf(set it if it doesn'st exist) From 4cb83e53ef38c2ab181fcbf95b221558fbc8df4f Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 15 Sep 2016 11:25:29 +0200 Subject: [PATCH 197/383] update submodule darkage --- mods/darkage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/darkage b/mods/darkage index 272e10fc..3d7d76d4 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit 272e10fc3d59e1f5dc05ebc2ec1bd2b46f8d725b +Subproject commit 3d7d76d4b4becaa00bb658769fa6dde4e2eafe96 From c3bf0db6cc7eaf30e345b3f2188ad4658fd22f63 Mon Sep 17 00:00:00 2001 From: ClaudiusMinimus Date: Sun, 18 Sep 2016 13:59:25 -0600 Subject: [PATCH 198/383] feat: adding billboard module, nothing super here yet --- .gitmodules | 3 +++ billboard | 1 + 2 files changed, 4 insertions(+) create mode 160000 billboard diff --git a/.gitmodules b/.gitmodules index 30bc9739..a6f20314 100644 --- a/.gitmodules +++ b/.gitmodules @@ -68,3 +68,6 @@ [submodule "mods/columnia"] path = mods/columnia url = https://git.tchncs.de/Illuna-Minetest/columnia +[submodule "billboard"] + path = billboard + url = https://github.com/ClaudiusMinimus/billboard.git diff --git a/billboard b/billboard new file mode 160000 index 00000000..2c083369 --- /dev/null +++ b/billboard @@ -0,0 +1 @@ +Subproject commit 2c083369c92bd6845feebbdb47b79bf890f1fd7a From 966376cce7bfd6d043e23c2148fff03df2993a6f Mon Sep 17 00:00:00 2001 From: ClaudiusMinimus Date: Sun, 18 Sep 2016 14:12:40 -0600 Subject: [PATCH 199/383] chore: moved billboard to the correct location --- .gitmodules | 3 +++ billboard => mods/billboard | 0 2 files changed, 3 insertions(+) rename billboard => mods/billboard (100%) diff --git a/.gitmodules b/.gitmodules index a6f20314..3c482226 100644 --- a/.gitmodules +++ b/.gitmodules @@ -71,3 +71,6 @@ [submodule "billboard"] path = billboard url = https://github.com/ClaudiusMinimus/billboard.git +[submodule "mods/billboard"] + path = mods/billboard + url = git@github.com:ClaudiusMinimus/billboard.git diff --git a/billboard b/mods/billboard similarity index 100% rename from billboard rename to mods/billboard From 62f6f3c8580b2c62ee18c0bef42332936671f0bd Mon Sep 17 00:00:00 2001 From: ClaudiusMinimus Date: Thu, 22 Sep 2016 22:01:29 -0600 Subject: [PATCH 200/383] feat: hemp bags for all! (must accept bags PR first) --- .gitmodules | 3 +++ mods/bags | 2 +- mods/hemp | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) create mode 160000 mods/hemp diff --git a/.gitmodules b/.gitmodules index 3c482226..35d1d2a5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -74,3 +74,6 @@ [submodule "mods/billboard"] path = mods/billboard url = git@github.com:ClaudiusMinimus/billboard.git +[submodule "mods/hemp"] + path = mods/hemp + url = https://github.com/pithydon/hemp.git diff --git a/mods/bags b/mods/bags index b073bcb7..b99fb8a1 160000 --- a/mods/bags +++ b/mods/bags @@ -1 +1 @@ -Subproject commit b073bcb760328654e9d73e61bf950a56d8adbbb5 +Subproject commit b99fb8a1c7f7a763efd77b293efb867552ad1ce1 diff --git a/mods/hemp b/mods/hemp new file mode 160000 index 00000000..bb111244 --- /dev/null +++ b/mods/hemp @@ -0,0 +1 @@ +Subproject commit bb1112449e8462e386b0bf0b6c1481b0b6e7d2ca From ca34223c212cdf795304ee340f85619e4e2c358b Mon Sep 17 00:00:00 2001 From: ClaudiusMinimus Date: Thu, 22 Sep 2016 22:14:09 -0600 Subject: [PATCH 201/383] chore: premature submodule removed --- .gitmodules | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.gitmodules b/.gitmodules index 35d1d2a5..0d53cb5e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -68,12 +68,6 @@ [submodule "mods/columnia"] path = mods/columnia url = https://git.tchncs.de/Illuna-Minetest/columnia -[submodule "billboard"] - path = billboard - url = https://github.com/ClaudiusMinimus/billboard.git -[submodule "mods/billboard"] - path = mods/billboard - url = git@github.com:ClaudiusMinimus/billboard.git [submodule "mods/hemp"] path = mods/hemp url = https://github.com/pithydon/hemp.git From e695ad8c698a42dc8a14fe67aa381b06492db095 Mon Sep 17 00:00:00 2001 From: ClaudiusMinimus Date: Thu, 22 Sep 2016 22:19:19 -0600 Subject: [PATCH 202/383] chore: removing billboard (premature) --- mods/billboard | 1 - 1 file changed, 1 deletion(-) delete mode 160000 mods/billboard diff --git a/mods/billboard b/mods/billboard deleted file mode 160000 index 2c083369..00000000 --- a/mods/billboard +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2c083369c92bd6845feebbdb47b79bf890f1fd7a From bc675ab2ae530ff4e4d4b132d59f0aaa310bb50a Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 25 Sep 2016 20:15:58 +0200 Subject: [PATCH 203/383] re-add bags submodule --- .gitmodules | 6 +++--- mods/bags | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index 43eed417..d00ac2a2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -40,9 +40,6 @@ [submodule "mods/ctravelnet"] path = mods/ctravelnet url = https://git.tchncs.de/Illuna-Minetest/ctravelnet.git -[submodule "mods/bags"] - path = mods/bags - url = https://git.tchncs.de/Illuna-Minetest/bags.git [submodule "mods/cottages"] path = mods/cottages url = https://git.tchncs.de/Illuna-Minetest/cottages.git/ @@ -78,3 +75,6 @@ path = mods/coloured_nametag url = https://github.com/Amaz1/coloured_nametag +[submodule "mods/bags"] + path = mods/bags + url = https://git.tchncs.de/Illuna-Minetest/bags diff --git a/mods/bags b/mods/bags index b99fb8a1..66f4c912 160000 --- a/mods/bags +++ b/mods/bags @@ -1 +1 @@ -Subproject commit b99fb8a1c7f7a763efd77b293efb867552ad1ce1 +Subproject commit 66f4c912502a49137f19cb431491895c264ecc5c From c3ebda901dfe6ac1dc996d0b9ca49f0f2027f8da Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 25 Sep 2016 20:17:28 +0200 Subject: [PATCH 204/383] update submodule bags --- mods/bags | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/bags b/mods/bags index 66f4c912..78067127 160000 --- a/mods/bags +++ b/mods/bags @@ -1 +1 @@ -Subproject commit 66f4c912502a49137f19cb431491895c264ecc5c +Subproject commit 78067127510351651e0bf578d1556466da0bcb16 From c24359be944189ee05104462d994706fafedede9 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 29 Sep 2016 17:54:33 +0200 Subject: [PATCH 205/383] add submodule homedecor_modpack --- .gitmodules | 3 +++ mods/homedecor_modpack | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/homedecor_modpack diff --git a/.gitmodules b/.gitmodules index d00ac2a2..46d2a2fb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -78,3 +78,6 @@ [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 diff --git a/mods/homedecor_modpack b/mods/homedecor_modpack new file mode 160000 index 00000000..6b396cf1 --- /dev/null +++ b/mods/homedecor_modpack @@ -0,0 +1 @@ +Subproject commit 6b396cf1506b3a294bf476a61955ffa37eb25706 From 13e888f4cc10ef1ecceb928f2936c6bb211fd866 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 29 Sep 2016 17:56:19 +0200 Subject: [PATCH 206/383] update submodule mobs_redo --- mods/mobs_redo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_redo b/mods/mobs_redo index 2aa6227f..03e96f30 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit 2aa6227f0a03d20a6c4733f74c46612bd33e0be1 +Subproject commit 03e96f30175dfaf34a6635de0db3f566eb68f722 From d3aa8407c706e6b475674960ebe64dc309ccf7eb Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 30 Sep 2016 22:23:38 +0200 Subject: [PATCH 207/383] update submodule farming --- mods/farming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming b/mods/farming index de0e7dcc..36caba64 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit de0e7dcc328df01e4934378efefb0cdd7a373e38 +Subproject commit 36caba64eea3a027a9f39f7cf22b5487543fdd17 From f2b8e5e0aa9d41ccfd6d5e2cc2e54b3b84ae1f93 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 1 Oct 2016 15:47:32 +0200 Subject: [PATCH 208/383] update submodule hudbars --- mods/hudbars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/hudbars b/mods/hudbars index 29cf605e..ce39f64e 160000 --- a/mods/hudbars +++ b/mods/hudbars @@ -1 +1 @@ -Subproject commit 29cf605e066240a7a83be6a54f9446d43b9e2672 +Subproject commit ce39f64ea7b3cfd1488f0da42dcaad934b04334c From 5a5fcca6188604c0fbfcfd72ba0c1bdce0d3f0e2 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 2 Oct 2016 20:18:23 +0200 Subject: [PATCH 209/383] initial stuff: add two small fly potions --- mods/give_initial_stuff/depends.txt | 1 + mods/give_initial_stuff/init.lua | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/give_initial_stuff/depends.txt b/mods/give_initial_stuff/depends.txt index d8a81cff..9457c1dc 100644 --- a/mods/give_initial_stuff/depends.txt +++ b/mods/give_initial_stuff/depends.txt @@ -3,3 +3,4 @@ bows xdecor 3d_armor shields +magical_potion diff --git a/mods/give_initial_stuff/init.lua b/mods/give_initial_stuff/init.lua index 4ad7a1bb..c412f1e3 100644 --- a/mods/give_initial_stuff/init.lua +++ b/mods/give_initial_stuff/init.lua @@ -7,7 +7,7 @@ minetest.register_on_newplayer(function(player) 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', '') + 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') From f669a27cf8c6e27d5cdd7763dc40b86de5d947e4 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 2 Oct 2016 20:48:31 +0200 Subject: [PATCH 210/383] add submodule magical_potion --- .gitmodules | 3 +++ mods/magical_potion | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/magical_potion diff --git a/.gitmodules b/.gitmodules index 46d2a2fb..4decce08 100644 --- a/.gitmodules +++ b/.gitmodules @@ -81,3 +81,6 @@ [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 diff --git a/mods/magical_potion b/mods/magical_potion new file mode 160000 index 00000000..b021ec46 --- /dev/null +++ b/mods/magical_potion @@ -0,0 +1 @@ +Subproject commit b021ec466d42854ef1a8fd9629136c48ac3080eb From 50a4c0cd3667b6b1547c19582b35a8b9eba40302 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 2 Oct 2016 20:50:35 +0200 Subject: [PATCH 211/383] add submodule playereffects --- .gitmodules | 3 +++ mods/playereffects | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/playereffects diff --git a/.gitmodules b/.gitmodules index 4decce08..4fa77948 100644 --- a/.gitmodules +++ b/.gitmodules @@ -84,3 +84,6 @@ [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 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 From 1e40c3a10b9da3fc7811f683bba298bc1a633b9e Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 3 Oct 2016 13:32:53 +0200 Subject: [PATCH 212/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 60fe9391..268dbd53 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 60fe9391c2f7eb5970bc5640a62ddfd69e0283f3 +Subproject commit 268dbd5383b9f5b75206ac944340aba504f3a18f From 97e8cd86e38ef2c39dafec1f714c040710aba677 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 3 Oct 2016 15:23:00 +0200 Subject: [PATCH 213/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 268dbd53..6bee8cc2 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 268dbd5383b9f5b75206ac944340aba504f3a18f +Subproject commit 6bee8cc2241fdf6a3aaf4e45231dfc2733f582e8 From 9555d928ceecaa74b000b35d89b43fa9883ed568 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 3 Oct 2016 17:43:44 +0200 Subject: [PATCH 214/383] update submodule xdecor --- mods/xdecor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/xdecor b/mods/xdecor index dbef5947..9c6da347 160000 --- a/mods/xdecor +++ b/mods/xdecor @@ -1 +1 @@ -Subproject commit dbef5947bf143986bd85083c3cf1b37ba076073e +Subproject commit 9c6da3477ce01c3c369c53507d36b1fa3d6a81b5 From ce1cccfbde2d2415c4f9b3f7553adb31692f3610 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 4 Oct 2016 16:24:41 +0200 Subject: [PATCH 215/383] update submodule magical_potion --- mods/magical_potion | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/magical_potion b/mods/magical_potion index b021ec46..967f2d0d 160000 --- a/mods/magical_potion +++ b/mods/magical_potion @@ -1 +1 @@ -Subproject commit b021ec466d42854ef1a8fd9629136c48ac3080eb +Subproject commit 967f2d0d5c635836fa56bdbc0d62fa5d23556959 From a5601fb41affc4c109ecdf1221204cfcaaf5c321 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 4 Oct 2016 22:01:37 +0200 Subject: [PATCH 216/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 6bee8cc2..080f75fd 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 6bee8cc2241fdf6a3aaf4e45231dfc2733f582e8 +Subproject commit 080f75fd17249722ecb656a410f002aa562e6b49 From 902b90492e9c3730b62106928d727b43439d92dc Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 6 Oct 2016 11:31:40 +0200 Subject: [PATCH 217/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 6bee8cc2..36b7290a 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 6bee8cc2241fdf6a3aaf4e45231dfc2733f582e8 +Subproject commit 36b7290a836e5cadeffa5cc3326c704accf615f2 From 4667fc2d42948ee25e777e3c881db202d0f1ac14 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 6 Oct 2016 18:12:45 +0200 Subject: [PATCH 218/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 36b7290a..dc15d51b 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 36b7290a836e5cadeffa5cc3326c704accf615f2 +Subproject commit dc15d51bddeeb1649ccd2b3c08197fc553536a47 From 28da5d53b5b6ef1443b6aa56f6379c87e1c8b484 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 6 Oct 2016 20:11:01 +0200 Subject: [PATCH 219/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 36b7290a..54b6bbcb 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 36b7290a836e5cadeffa5cc3326c704accf615f2 +Subproject commit 54b6bbcb8bb10ab916617b78707108ad82a63e83 From 2551e094654c5886c22e606cfcec1aaa0a9cca0b Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 8 Oct 2016 12:27:02 +0200 Subject: [PATCH 220/383] update submodule hudbars --- mods/hudbars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/hudbars b/mods/hudbars index ce39f64e..e9bfd222 160000 --- a/mods/hudbars +++ b/mods/hudbars @@ -1 +1 @@ -Subproject commit ce39f64ea7b3cfd1488f0da42dcaad934b04334c +Subproject commit e9bfd2221f8b68ccbdb8a44155a8c51a54eaaec4 From 8f56ce63cc43a930212b169315f4759fe349124c Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 8 Oct 2016 12:54:14 +0200 Subject: [PATCH 221/383] add submodule mtcandy and mtfoods --- .gitmodules | 6 ++++++ mods/mtcandy | 1 + mods/mtfoods | 1 + 3 files changed, 8 insertions(+) create mode 160000 mods/mtcandy create mode 160000 mods/mtfoods diff --git a/.gitmodules b/.gitmodules index 4fa77948..843bac44 100644 --- a/.gitmodules +++ b/.gitmodules @@ -87,3 +87,9 @@ [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 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 From 22eb17677005bf766103aaab37c02a937c1471ce Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 8 Oct 2016 19:48:31 +0200 Subject: [PATCH 222/383] update submodule farming --- mods/farming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming b/mods/farming index 36caba64..3d19dd76 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit 36caba64eea3a027a9f39f7cf22b5487543fdd17 +Subproject commit 3d19dd76a0dabc109c288cddc7e21d73cd413eef From 9bf9da8072c4a86b4a9a24d692e3be7c9cd5c4b5 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 10 Oct 2016 00:12:24 +0200 Subject: [PATCH 223/383] adjust gui colors --- mods/default/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/default/init.lua b/mods/default/init.lua index 594ea36a..672cf54e 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[#00000079;#8EACE522;#141318;#8EACE599;#8EACE521]" function default.get_hotbar_bg(x,y) local out = "" From 062642045c7439fffe954aab20a52c7c89db4970 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 10 Oct 2016 09:42:51 +0200 Subject: [PATCH 224/383] default: add mossystone and mossystonebrick --- mods/default/functions.lua | 8 ++++++-- mods/default/nodes.lua | 15 +++++++++++++++ mods/default/textures/default_mossystone.png | Bin 0 -> 689 bytes .../textures/default_mossystone_brick.png | Bin 0 -> 702 bytes 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 mods/default/textures/default_mossystone.png create mode 100644 mods/default/textures/default_mossystone_brick.png diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 867d6bc0..282b33b0 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -429,14 +429,18 @@ minetest.register_abm({ minetest.register_abm({ label = "Moss growth", - nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble"}, + nodenames = {"default:cobble", "default:stonebrick", "stairs:slab_cobble", "stairs:stair_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/nodes.lua b/mods/default/nodes.lua index 79aea5bb..468d628a 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -220,6 +220,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"}, @@ -228,6 +236,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", diff --git a/mods/default/textures/default_mossystone.png b/mods/default/textures/default_mossystone.png new file mode 100644 index 0000000000000000000000000000000000000000..97258f094b01c71c6519d454a6c4c5883f2a8212 GIT binary patch literal 689 zcmV;i0#5yjP)e)O-~b16o%h3oi>DW z?+g?OZKMT_;zvjfNX8u|mW2z9tveJ7?)fpsKfr>h8(N7ggE3eoVM0no7cOcvEgvmO zL1yj<)Q)pqTti4atMieZ^PKmkxtVDq3NEY^dv6@rRR91o+8BUBu%Qwaq-g*&&N*XD z+nJaw59xjFxz4m2bHm7WrVGJFA=m(5m}cI$^S&J_Tg~d_)9!EDa@UrT>hAllw})&~ zUTZd+FHb(^I@6c@9wK`2t2m->{~jCGDXiW4V01*I_Z!1#Kq3Hu)VsnDmenmGMBcXn zjOg2`e)DssK^LE<0i37jhT%GnBK|-0JDUjr2q&bJ0Avujj$@eS!r{t%G6O((p6j|Y z2)JPgA#?yst@W6dR7aF7uImDLRxN~LZ6N&dPXXX3vbsga)Roz;2_b~Kz&T$yTmdkj z%sh{mrfQ?Y^He9RTSP=pax+p&83YwAzv=gfVr>-GWGkSs=GTwU9xIORkC)<{b6qV4 zkP5N`x&{XT^1hwbE$EQ_Z!6nJ#nGfwX}llBfo;?5<44L=wcD>B$E@UdDX#FTR; z#)J_6emFl!#N)#A04zq<0LWJGz`d!o0YGyz(*THwF;=VB0lbNPc^JMerR1CoAe)Pe>F|9LK+JcK+?G zZ+1+jwRByS@?UBf(IA2di!Lh(U81Bqb*xJeor<6kqH96Wp>7FM2M?khs)Hy78H%-P zl+uo_vFe){cV^vr9Ucuq-_v`)?~e~(zCZHf`Lmnv9s{`5auI*^WaYJ-G63w`-kpxi z07f=O0bDAdAdep0|N1Ql!1cVUL<0YaQo6gl3xE(pDFu*QUXE27rqgD>rfG*#DN5;% zHTG6)p9+G25aN1XP%b-;1J0+KR>{@7_0syl|KNx!#2Dk8^TtUjBVBh~S4H>?#A@`BjvD}OFFx(r$u%`vW8bN`!^6c_Vu4&6zT!BJ zh~fJ_06iWr6bhfax3k4A0A8sym0l4GgTK3F02BJc1*w-v(uBSsjDZ84_nHUi=01&u zvrsX#)kg>smJDD>?h~KrVS5`6V`efbYsQ(MEpFgNWyCV+bjbNH<<0xr%93KY`6&Q} zt*y~u`rvl_Sa4WXRaH?mRSnAJ$@-kEYFfb2*#ZZb#k;OUx1I{D Date: Mon, 10 Oct 2016 09:56:39 +0200 Subject: [PATCH 225/383] add missing stone definition --- mods/default/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 282b33b0..9ca83db2 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -429,7 +429,7 @@ minetest.register_abm({ minetest.register_abm({ label = "Moss growth", - nodenames = {"default:cobble", "default:stonebrick", "stairs:slab_cobble", "stairs:stair_cobble"}, + nodenames = {"default:stone", "default:cobble", "default:stonebrick", "stairs:slab_cobble", "stairs:stair_cobble"}, neighbors = {"group:water"}, interval = 16, chance = 200, From 49b31b2a30485236addae8582f9d4561db7292f2 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 10 Oct 2016 10:27:35 +0200 Subject: [PATCH 226/383] tnt: increase tnt fuse timer --- mods/tnt/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index a9c86526..a7477273 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -576,7 +576,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) nodeupdate(pos) end, }) From 51c774dda11e8decefb990606e2a1761abd84bd4 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 10 Oct 2016 12:32:20 +0200 Subject: [PATCH 227/383] update main inventory slot background colors --- mods/default/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/default/init.lua b/mods/default/init.lua index 672cf54e..0f1e2c68 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[#00000079;#8EACE522;#141318;#8EACE599;#8EACE521]" +default.gui_slots = "listcolors[#79777639;#8EACE542;#141318;#8EACE599;#8EACE521]" function default.get_hotbar_bg(x,y) local out = "" From 07f0ffedb901c86362aebfc1774556d767ffbb4c Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 10 Oct 2016 12:37:28 +0200 Subject: [PATCH 228/383] update submodule darkage --- mods/darkage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/darkage b/mods/darkage index 3d7d76d4..f87f7ad0 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit 3d7d76d4b4becaa00bb658769fa6dde4e2eafe96 +Subproject commit f87f7ad00d458a1dcb4755d73bd6d4b52b2233db From 942b4bfe71a173df0696c6a8c5a01d34cdafa4b2 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 11 Oct 2016 10:55:28 +0200 Subject: [PATCH 229/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 54b6bbcb..b3f383ba 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 54b6bbcb8bb10ab916617b78707108ad82a63e83 +Subproject commit b3f383ba90c2bb8dc50485ee0e75e68315b782f0 From 00a01063e4849c80dcb7a11be0bd0ba2b40b4dd3 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 11 Oct 2016 10:59:22 +0200 Subject: [PATCH 230/383] add submodule dragons --- .gitmodules | 3 +++ mods/dragons | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/dragons diff --git a/.gitmodules b/.gitmodules index 843bac44..d3a940fe 100644 --- a/.gitmodules +++ b/.gitmodules @@ -93,3 +93,6 @@ [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 diff --git a/mods/dragons b/mods/dragons new file mode 160000 index 00000000..fba75e74 --- /dev/null +++ b/mods/dragons @@ -0,0 +1 @@ +Subproject commit fba75e74bd20b0b14dfce1649c82c4a26ccfb244 From c557fdfde4105edcd2aebfebede6cc6f48dab453 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 11 Oct 2016 11:09:32 +0200 Subject: [PATCH 231/383] random_messages: update default interval --- mods/random_messages/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/random_messages/init.lua b/mods/random_messages/init.lua index 056e9e00..e68e58be 100644 --- a/mods/random_messages/init.lua +++ b/mods/random_messages/init.lua @@ -27,7 +27,7 @@ function table.random( t ) end function random_messages.initialize() --Set the interval in minetest.conf. - minetest.setting_set("random_messages_interval",1800) + minetest.setting_set("random_messages_interval",7200) minetest.setting_save(); return 1800 end From 11ef0a7e88cc7f96772c0a24b273c67f4b13bf74 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 11 Oct 2016 12:46:48 +0200 Subject: [PATCH 232/383] update submodule dragons --- mods/dragons | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/dragons b/mods/dragons index fba75e74..d7747ce7 160000 --- a/mods/dragons +++ b/mods/dragons @@ -1 +1 @@ -Subproject commit fba75e74bd20b0b14dfce1649c82c4a26ccfb244 +Subproject commit d7747ce79ad25ac765b7335a8fa2ee8cb96213c0 From e31ba2e66bc2840c3efbc88626b26cb26a0af4f8 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 11 Oct 2016 14:34:03 +0200 Subject: [PATCH 233/383] add submodule teleport_potion --- .gitmodules | 3 +++ mods/teleport_potion | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/teleport_potion diff --git a/.gitmodules b/.gitmodules index d3a940fe..865baa88 100644 --- a/.gitmodules +++ b/.gitmodules @@ -96,3 +96,6 @@ [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 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 From c7344abe8787635a9ce38401105d2abd6065f0a0 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 11 Oct 2016 14:51:52 +0200 Subject: [PATCH 234/383] update submodule dragons --- mods/dragons | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/dragons b/mods/dragons index d7747ce7..3ec7c621 160000 --- a/mods/dragons +++ b/mods/dragons @@ -1 +1 @@ -Subproject commit d7747ce79ad25ac765b7335a8fa2ee8cb96213c0 +Subproject commit 3ec7c621f0416f8b9b4cbd74620d07321cdaa313 From 6888cb1e8ab4157c48d4858b8e1c966339f4029c Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 11 Oct 2016 14:54:24 +0200 Subject: [PATCH 235/383] update submodule dragons --- mods/dragons | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/dragons b/mods/dragons index 3ec7c621..778778db 160000 --- a/mods/dragons +++ b/mods/dragons @@ -1 +1 @@ -Subproject commit 3ec7c621f0416f8b9b4cbd74620d07321cdaa313 +Subproject commit 778778dbe21e908a44bf1a3713fc57885908e754 From 6036fbe34058bf3fc3ba12d24a43b3976a2cd898 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 12 Oct 2016 22:52:13 +0200 Subject: [PATCH 236/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index b3f383ba..283c9f6b 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit b3f383ba90c2bb8dc50485ee0e75e68315b782f0 +Subproject commit 283c9f6b143d44c3ed46f7aafc5c8e560417dc0a From 59ae1f22905e02e74368fdde33ae25b5c023244f Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 15 Oct 2016 14:48:32 +0200 Subject: [PATCH 237/383] update submodule darkage --- mods/darkage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/darkage b/mods/darkage index f87f7ad0..671daf9d 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit f87f7ad00d458a1dcb4755d73bd6d4b52b2233db +Subproject commit 671daf9de1bb36e3695a398c99dfd85b23347fcb From 28229343d12b6c0deb2ec19b5589a2b341e6dd5c Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 15 Oct 2016 22:19:23 +0200 Subject: [PATCH 238/383] update submodule darkage --- mods/darkage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/darkage b/mods/darkage index 671daf9d..bc70e874 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit 671daf9de1bb36e3695a398c99dfd85b23347fcb +Subproject commit bc70e87480cf5568694d95c202a3e4011d28e485 From 428bfbdfe06dc983ef6fff6b5380f205a712a19c Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 17 Oct 2016 22:09:59 +0200 Subject: [PATCH 239/383] doors: update wooden trapdoor recipe --- mods/doors/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 0888077f..dd54722f 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -638,8 +638,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', ''}, {'', '', ''}, } }) From bf60a9f459da7cbf62ee1cdaf91acfe81f83b30b Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 17 Oct 2016 23:54:59 +0200 Subject: [PATCH 240/383] add mod smartshop --- mods/smartshop/Readme.txt | 14 ++ mods/smartshop/depends.txt | 1 + mods/smartshop/init.lua | 267 +++++++++++++++++++++++++++++++++++++ 3 files changed, 282 insertions(+) create mode 100644 mods/smartshop/Readme.txt create mode 100644 mods/smartshop/depends.txt create mode 100644 mods/smartshop/init.lua 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/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 From e1ebbc2c6a021ab3b71332fb1c144e98d4a385f5 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 18 Oct 2016 08:09:07 +0200 Subject: [PATCH 241/383] update submodule darkage --- mods/darkage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/darkage b/mods/darkage index bc70e874..3c4f1555 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit bc70e87480cf5568694d95c202a3e4011d28e485 +Subproject commit 3c4f1555951d068bef423336a42d0698018e8971 From ff17a25bc27b0ade7a32b6fb4e79adbaa4314627 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 18 Oct 2016 08:24:08 +0200 Subject: [PATCH 242/383] tnt: add group gunpowder to gunpowder --- mods/tnt/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index a7477273..1b20d146 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -489,6 +489,7 @@ minetest.register_node("tnt:gunpowder_burning", { minetest.register_craft({ output = "tnt:gunpowder", type = "shapeless", + groups = {gunpowder = 1}, recipe = {"default:coal_lump", "default:gravel"} }) From 2b767592e0f1d2acd385865c3a4b16e96c030557 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 23 Oct 2016 09:54:25 +0200 Subject: [PATCH 243/383] update submodule darkage --- mods/darkage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/darkage b/mods/darkage index 3c4f1555..dc50293e 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit 3c4f1555951d068bef423336a42d0698018e8971 +Subproject commit dc50293e4181040e298abc9af9bba52153c087c6 From 8c3b812779ba000263cf4739752d51edbc12e8b1 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 23 Oct 2016 10:06:53 +0200 Subject: [PATCH 244/383] update submodule darkage --- mods/darkage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/darkage b/mods/darkage index dc50293e..3b55927f 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit dc50293e4181040e298abc9af9bba52153c087c6 +Subproject commit 3b55927f5365ce9c71d92d0071bfa5fa8c9dab55 From 6417b1322cda880b5db52d708faf0d534d0e229d Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 23 Oct 2016 12:27:31 +0200 Subject: [PATCH 245/383] add submodule halloween_mobs --- .gitmodules | 3 +++ mods/halloween_mobs | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/halloween_mobs diff --git a/.gitmodules b/.gitmodules index 865baa88..e866e2e5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -99,3 +99,6 @@ [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 diff --git a/mods/halloween_mobs b/mods/halloween_mobs new file mode 160000 index 00000000..dd7acf7a --- /dev/null +++ b/mods/halloween_mobs @@ -0,0 +1 @@ +Subproject commit dd7acf7a97ad45a8ef0bbd2fb0a0624768c38be7 From d84dd3e81a1ccfc5ebc98291bda42cb415854f80 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 24 Oct 2016 08:40:39 +0200 Subject: [PATCH 246/383] update submodule mobs_redo --- mods/mobs_redo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_redo b/mods/mobs_redo index 03e96f30..62fc9bcb 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit 03e96f30175dfaf34a6635de0db3f566eb68f722 +Subproject commit 62fc9bcb7f3b5f459f4f01b34a9e693b86717794 From 31f05fe9d4d02afb147c4a7d2ae6dc8a5e307332 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 24 Oct 2016 08:42:08 +0200 Subject: [PATCH 247/383] update submodule mobs_monster --- mods/mobs_monster | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_monster b/mods/mobs_monster index 6b7c5ea9..8b49ed3e 160000 --- a/mods/mobs_monster +++ b/mods/mobs_monster @@ -1 +1 @@ -Subproject commit 6b7c5ea990999de385a9e9eda8cc08f1ce12c00e +Subproject commit 8b49ed3eb5cfb66f899cf593de7aefb139a98592 From 8789812b275a4e4535a26501773a3c2d4d6aa3b3 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 24 Oct 2016 09:56:57 +0200 Subject: [PATCH 248/383] update submodule mobs_animal --- mods/mobs_animal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_animal b/mods/mobs_animal index 11b16633..d1f5d5dd 160000 --- a/mods/mobs_animal +++ b/mods/mobs_animal @@ -1 +1 @@ -Subproject commit 11b16633e54637b86ba44c442f2568ae2cf1e28e +Subproject commit d1f5d5dd407d8fe44d9ef43141099484a4f16d8d From 1824f68aa2254a9cff1c016a65525bc1da1f8397 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 24 Oct 2016 10:14:16 +0200 Subject: [PATCH 249/383] update submodule darkage --- mods/darkage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/darkage b/mods/darkage index 3b55927f..4a3f6ff7 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit 3b55927f5365ce9c71d92d0071bfa5fa8c9dab55 +Subproject commit 4a3f6ff796c0bbabe9858efc0ca942f018d75bf5 From 388bdca60fea46b3494865f30cf5e418c2c2533a Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 24 Oct 2016 10:18:03 +0200 Subject: [PATCH 250/383] replace submodule mobs_monster --- .gitmodules | 6 +++--- mods/mobs_monster | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index e866e2e5..c7713bd0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -50,9 +50,6 @@ path = mods/bows url = https://git.tchncs.de/Illuna-Minetest/bows branch = illuna -[submodule "mods/mobs_monster"] - path = mods/mobs_monster - url = https://git.tchncs.de/Illuna-Minetest/mobs_monster [submodule "mods/pkarcs"] path = mods/pkarcs url = https://git.tchncs.de/Illuna-Minetest/pkarcs @@ -102,3 +99,6 @@ [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 diff --git a/mods/mobs_monster b/mods/mobs_monster index 8b49ed3e..6b7c5ea9 160000 --- a/mods/mobs_monster +++ b/mods/mobs_monster @@ -1 +1 @@ -Subproject commit 8b49ed3eb5cfb66f899cf593de7aefb139a98592 +Subproject commit 6b7c5ea990999de385a9e9eda8cc08f1ce12c00e From f12b2204a1e97add817c99e649f2229745e96c3b Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 24 Oct 2016 10:36:05 +0200 Subject: [PATCH 251/383] update submodule mobs_monster --- mods/mobs_monster | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_monster b/mods/mobs_monster index 6b7c5ea9..85b88993 160000 --- a/mods/mobs_monster +++ b/mods/mobs_monster @@ -1 +1 @@ -Subproject commit 6b7c5ea990999de385a9e9eda8cc08f1ce12c00e +Subproject commit 85b8899395f1178ab5091cedbe70bb9d26093647 From c1d65f8eccc25a7f74ef84b9777023280fcd81ac Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 24 Oct 2016 20:30:24 +0200 Subject: [PATCH 252/383] update submodule dragons --- mods/dragons | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/dragons b/mods/dragons index 778778db..819744c4 160000 --- a/mods/dragons +++ b/mods/dragons @@ -1 +1 @@ -Subproject commit 778778dbe21e908a44bf1a3713fc57885908e754 +Subproject commit 819744c4952bc3ae5a599f75bb64b179fa2b72a5 From 95fbe591d09da227ed328cd0632fef72dcb6ed65 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 26 Oct 2016 09:06:43 +0200 Subject: [PATCH 253/383] update submodule dragons --- mods/dragons | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/dragons b/mods/dragons index 819744c4..aa7a3a47 160000 --- a/mods/dragons +++ b/mods/dragons @@ -1 +1 @@ -Subproject commit 819744c4952bc3ae5a599f75bb64b179fa2b72a5 +Subproject commit aa7a3a476f169358e09f6c1faaa272befbef1b8f From 515aee5ae36fc57e64cc7d101b341b2c620d25ef Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 26 Oct 2016 15:26:13 +0200 Subject: [PATCH 254/383] update submodule dragons --- mods/dragons | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/dragons b/mods/dragons index aa7a3a47..9a106c0c 160000 --- a/mods/dragons +++ b/mods/dragons @@ -1 +1 @@ -Subproject commit aa7a3a476f169358e09f6c1faaa272befbef1b8f +Subproject commit 9a106c0c400befc485d1d520cb778a0737a1a01e From 0677c537488cbecf30117999ae267302ec6cd0be Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 26 Oct 2016 23:14:41 +0200 Subject: [PATCH 255/383] update submodule mobs_redo --- mods/mobs_redo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_redo b/mods/mobs_redo index 62fc9bcb..31db77ba 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit 62fc9bcb7f3b5f459f4f01b34a9e693b86717794 +Subproject commit 31db77bab3ef8cd3f63fe1e30d301d9dd944c964 From 309a6018e8720b178145d11014e9ec2e64b3581a Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 28 Oct 2016 07:55:02 +0200 Subject: [PATCH 256/383] update submodule halloween_mobs --- mods/halloween_mobs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/halloween_mobs b/mods/halloween_mobs index dd7acf7a..c094ff75 160000 --- a/mods/halloween_mobs +++ b/mods/halloween_mobs @@ -1 +1 @@ -Subproject commit dd7acf7a97ad45a8ef0bbd2fb0a0624768c38be7 +Subproject commit c094ff7538812c1e9a7e9c584f541dbead6e1237 From d4277305bb579c4d72f72eddbacf9c4a44c90321 Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 28 Oct 2016 19:35:02 +0200 Subject: [PATCH 257/383] update submodule bows --- mods/bows | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/bows b/mods/bows index 5013537e..4b693ac6 160000 --- a/mods/bows +++ b/mods/bows @@ -1 +1 @@ -Subproject commit 5013537e24f526fbae97a6693a08d6eff7f8cd9b +Subproject commit 4b693ac6ef474c4154678efa058c5897a14c1ca4 From 91f96c4e45f65b744389fc2d836e13d216554234 Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 28 Oct 2016 23:49:49 +0200 Subject: [PATCH 258/383] update submodule dragons --- mods/dragons | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/dragons b/mods/dragons index 9a106c0c..23fb2d3b 160000 --- a/mods/dragons +++ b/mods/dragons @@ -1 +1 @@ -Subproject commit 9a106c0c400befc485d1d520cb778a0737a1a01e +Subproject commit 23fb2d3b3add43fb6f13348d449d20a22609c01c From 3f0f4f20774d4a69f55222a5682e659706fbb7ea Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 1 Nov 2016 13:05:12 +0100 Subject: [PATCH 259/383] random_messages: colorize --- mods/random_messages/init.lua | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/mods/random_messages/init.lua b/mods/random_messages/init.lua index e68e58be..6a37e39c 100644 --- a/mods/random_messages/init.lua +++ b/mods/random_messages/init.lua @@ -46,12 +46,14 @@ function random_messages.check_params(name,func,params) end function random_messages.read_messages() + local mc = core.colorize + local mcc = "#A3B5CB" random_messages.messages = { - "# Illuna-Notes: Soup is very useful to fight hunger, everyone should have some.", - "# Illuna-Notes: Meet your fellows on our Mumbleserver at tchncs.de", - "# Illuna-Notes: Enjoy Illuna? Invite your friends today!", - "# Illuna-Notes: Have something to share? Create and join discussion at the Illuna forum: https://forum.illuna-minetest.tk!", - "# Illuna-Notes: Sell and buy stuff on the Illuna marketplace. It is below the spawnhouse." + mc(mcc, "# Illuna-Notes: Soup is very useful to fight hunger, everyone should have some."), + mc(mcc, "# Illuna-Notes: Meet your fellows on our Mumbleserver at tchncs.de"), + mc(mcc, "# Illuna-Notes: Enjoy Illuna? Invite your friends today!"), + mc(mcc, "# Illuna-Notes: Have something to share? Join https://community.illuna-minetest.tk today!"), + mc(mcc, "# Illuna-Notes: Sell and buy stuff on the Illuna marketplace. It is below the spawnhouse."), } end From 4710abeb388edb676136fff0dd5fcb38fb904927 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 1 Nov 2016 13:07:51 +0100 Subject: [PATCH 260/383] update submodule dragons --- mods/dragons | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/dragons b/mods/dragons index 23fb2d3b..6a9a3189 160000 --- a/mods/dragons +++ b/mods/dragons @@ -1 +1 @@ -Subproject commit 23fb2d3b3add43fb6f13348d449d20a22609c01c +Subproject commit 6a9a3189cd3767e06984cf295e67c6b19ac9a7ab From 3fceb5dd905a9103f1e04f7c7a297b2b871fb11a Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 2 Nov 2016 09:08:52 +0100 Subject: [PATCH 261/383] add submodule ranks --- .gitmodules | 3 +++ mods/ranks | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/ranks diff --git a/.gitmodules b/.gitmodules index c7713bd0..7f8cae2d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -102,3 +102,6 @@ [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 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 From 88414c678be316c0a811fd6bbd03e8fedba10347 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 2 Nov 2016 09:09:16 +0100 Subject: [PATCH 262/383] drop submodule coloured_nametag --- .gitmodules | 4 ---- mods/coloured_nametag | 1 - 2 files changed, 5 deletions(-) delete mode 160000 mods/coloured_nametag diff --git a/.gitmodules b/.gitmodules index 7f8cae2d..d04bd023 100644 --- a/.gitmodules +++ b/.gitmodules @@ -68,10 +68,6 @@ [submodule "mods/hemp"] path = mods/hemp url = https://github.com/pithydon/hemp.git -[submodule "mods/coloured_nametag"] - path = mods/coloured_nametag - url = https://github.com/Amaz1/coloured_nametag - [submodule "mods/bags"] path = mods/bags url = https://git.tchncs.de/Illuna-Minetest/bags diff --git a/mods/coloured_nametag b/mods/coloured_nametag deleted file mode 160000 index c50a4ca8..00000000 --- a/mods/coloured_nametag +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c50a4ca893e5383d75ff274533327a5faf20b1b7 From 41d7066d5decc9275066cd0b62ac0ec8254d3fcd Mon Sep 17 00:00:00 2001 From: tchncs Date: Fri, 4 Nov 2016 13:47:00 +0100 Subject: [PATCH 263/383] update submodule halloween_mobs --- mods/halloween_mobs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/halloween_mobs b/mods/halloween_mobs index c094ff75..a78da495 160000 --- a/mods/halloween_mobs +++ b/mods/halloween_mobs @@ -1 +1 @@ -Subproject commit c094ff7538812c1e9a7e9c584f541dbead6e1237 +Subproject commit a78da495d0d2882516e6a56cce7ba2e2b7f5b6f3 From ed777e4148071e2f0a8c170f97ba913f23e6cfa4 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 6 Nov 2016 17:35:40 +0100 Subject: [PATCH 264/383] update submodule pkarcs --- mods/pkarcs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/pkarcs b/mods/pkarcs index 80f9ea5c..a0281ae2 160000 --- a/mods/pkarcs +++ b/mods/pkarcs @@ -1 +1 @@ -Subproject commit 80f9ea5c64d547b15978edcd09743a866d8fbf0c +Subproject commit a0281ae20225533c9b97c676dcde8c8f4382ddbc From 87e517d3861b576cb908503d96363d4992378889 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 6 Nov 2016 20:56:35 +0100 Subject: [PATCH 265/383] update submodule homedecor_modpack --- mods/homedecor_modpack | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/homedecor_modpack b/mods/homedecor_modpack index 6b396cf1..8638435b 160000 --- a/mods/homedecor_modpack +++ b/mods/homedecor_modpack @@ -1 +1 @@ -Subproject commit 6b396cf1506b3a294bf476a61955ffa37eb25706 +Subproject commit 8638435b42ab57d50a3f5ec229d3821e659cf828 From 4acf7e7adf267b23b2e11d26740d0b7fbcc2702e Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 8 Nov 2016 11:02:02 +0100 Subject: [PATCH 266/383] add submodule another_charcoal --- .gitmodules | 3 +++ mods/another_charcoal | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/another_charcoal diff --git a/.gitmodules b/.gitmodules index d04bd023..9eb607c9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -101,3 +101,6 @@ [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 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 From 01d543f37712f75275ce0f89ff982cd786c143e5 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 8 Nov 2016 23:19:56 +0100 Subject: [PATCH 267/383] add bone and bonemeal --- mods/bonemeal/depends.txt | 2 + mods/bonemeal/init.lua | 195 ++++++++++++++++++++++++++++ mods/bonemeal/textures/bonemeal.png | Bin 0 -> 186 bytes mods/default/craftitems.lua | 5 + mods/default/nodes.lua | 8 ++ 5 files changed, 210 insertions(+) create mode 100644 mods/bonemeal/depends.txt create mode 100644 mods/bonemeal/init.lua create mode 100644 mods/bonemeal/textures/bonemeal.png diff --git a/mods/bonemeal/depends.txt b/mods/bonemeal/depends.txt new file mode 100644 index 00000000..2717befb --- /dev/null +++ b/mods/bonemeal/depends.txt @@ -0,0 +1,2 @@ +default +dye diff --git a/mods/bonemeal/init.lua b/mods/bonemeal/init.lua new file mode 100644 index 00000000..272e35bb --- /dev/null +++ b/mods/bonemeal/init.lua @@ -0,0 +1,195 @@ +-- This mod cutted out from ethereal: https://github.com/tenplus1/ethereal +-- + +minetest.register_craft({ + type = "shapeless", + output = 'default: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 + elseif 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 diff --git a/mods/bonemeal/textures/bonemeal.png b/mods/bonemeal/textures/bonemeal.png new file mode 100644 index 0000000000000000000000000000000000000000..f141263050deb0b33da6e60aa72dc8be63378ebb GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?bO)b$43CSocZaRDR=BKY8 z9cn*#0;L#Bg8YIR9G=}s19BogT^vI=uKS+5&D&tW!Fu5~ufkiVB=H418m9eCpET)* zLd~25s*FFnHa9+s=@FV-yYS~q{ Date: Tue, 8 Nov 2016 23:21:45 +0100 Subject: [PATCH 268/383] default: add bone texture :cat2: --- mods/default/textures/bone.png | Bin 0 -> 148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/default/textures/bone.png diff --git a/mods/default/textures/bone.png b/mods/default/textures/bone.png new file mode 100644 index 0000000000000000000000000000000000000000..d86e7bea632b7f989a10ad21ba29f4debbe53c6a GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|t_%$66~#q=|NZvhey9x; zWGo5t3ubV5b|VeQvGjCt4B@z*oY26qj7`9h(W5|@QBb?F Date: Tue, 8 Nov 2016 23:29:54 +0100 Subject: [PATCH 269/383] bonemeal: typofix, and add missing craftitem :cat2: --- mods/bonemeal/init.lua | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/mods/bonemeal/init.lua b/mods/bonemeal/init.lua index 272e35bb..13a5e5d4 100644 --- a/mods/bonemeal/init.lua +++ b/mods/bonemeal/init.lua @@ -112,7 +112,7 @@ local function growth(pointed_thing) end -- grow default tree - elseif node.name == "default:sapling" + if node.name == "default:sapling" and enough_height(pos, 7) then default.grow_new_apple_tree(pos) @@ -193,3 +193,34 @@ local function growth(pointed_thing) end end end + +-- bonemeal item +minetest.register_craftitem("ethereal:bonemeal", { + description = S("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, +}) From 432d463f0f61a0dc739b574e73d261ace1b4dce3 Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 8 Nov 2016 23:32:34 +0100 Subject: [PATCH 270/383] bonemeal: no intllib support for now --- mods/bonemeal/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/bonemeal/init.lua b/mods/bonemeal/init.lua index 13a5e5d4..30e871cd 100644 --- a/mods/bonemeal/init.lua +++ b/mods/bonemeal/init.lua @@ -195,8 +195,8 @@ local function growth(pointed_thing) end -- bonemeal item -minetest.register_craftitem("ethereal:bonemeal", { - description = S("Bone Meal"), +minetest.register_craftitem("default:bonemeal", { + description = "Bone Meal", inventory_image = "bonemeal.png", on_use = function(itemstack, user, pointed_thing) From 05123247cb59cd619321634205ac6a40944c6efd Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 8 Nov 2016 23:40:10 +0100 Subject: [PATCH 271/383] bonemeal: add bonemeal_particle texture --- mods/bonemeal/textures/bonemeal_particle.png | Bin 0 -> 116 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mods/bonemeal/textures/bonemeal_particle.png diff --git a/mods/bonemeal/textures/bonemeal_particle.png b/mods/bonemeal/textures/bonemeal_particle.png new file mode 100644 index 0000000000000000000000000000000000000000..71ef90f8155d14b78236a1bb3ad25e4cdd145f8d GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1p#0(_&p3JWWQak}ZA+D*q>9!@d=~vU={e4$t zq)-PGXDkWw3ubV5b|VeQ5%Y9$4B@z*{2(ELLCKV@Z6~jS&>2<+feOa1E{1(xKotz0 Lu6{1-oD!M Date: Sat, 8 Oct 2016 18:02:14 +0100 Subject: [PATCH 272/383] creative: update to github.com/minetest/minetest_game state --- mods/creative/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/creative/init.lua b/mods/creative/init.lua index cc7f81c8..5688a7f4 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -125,7 +125,8 @@ creative.set_creative_formspec = function(player, start_i) tooltip[creative_clear;Reset] listring[current_player;main] ]] .. - "field[0.3,3.5;2.2,1;creative_filter;;" .. minetest.formspec_escape(inv.filter) .. ";false]" .. + "field[0.3,3.5;2.2,1;creative_filter;;" .. minetest.formspec_escape(inv.filter) .. "]" .. + "field_close_on_enter[creative_filter;false]" .. "listring[detached:creative_" .. player_name .. ";main]" .. "tabheader[0,0;creative_tabs;Crafting,All,Nodes,Tools,Items;" .. tostring(inv.tab_id) .. ";true;false]" .. "list[detached:creative_" .. player_name .. ";main;0,0;8,3;" .. tostring(start_i) .. "]" .. From 6157cfca59e0315cad160684be4c88677df272a6 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 10 Nov 2016 18:21:29 +0100 Subject: [PATCH 273/383] screwdriver: add diamond and mithril --- mods/screwdriver/init.lua | 48 +++++++++++++++++- .../textures/screwdriver_diamond.png | Bin 0 -> 377 bytes .../textures/screwdriver_mithril.png | Bin 0 -> 354 bytes 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 mods/screwdriver/textures/screwdriver_diamond.png create mode 100644 mods/screwdriver/textures/screwdriver_mithril.png diff --git a/mods/screwdriver/init.lua b/mods/screwdriver/init.lua index e73b618f..17c1ce16 100644 --- a/mods/screwdriver/init.lua +++ b/mods/screwdriver/init.lua @@ -88,7 +88,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", @@ -102,6 +102,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", @@ -111,6 +138,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 0000000000000000000000000000000000000000..4fe385828629465dc8b2b0c15b3187f8e8c954a5 GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)2#X*k2S6pp2S=8gO65JzE@-eg0}hb`zF0%b$enUFnLmn!1a*S9echD z9R4>)%WV>mgZYcAo1eQ#9%|9sV86WUBap+B_3Ri=U+}GezgK+vtA3JUhT?X=d8r!z z>$)AILz@&22K=!1WHSJQ0{=G&KR&#&Y+k%rw7GAc6|>&-4G)YGPQUfEak-aXLAnfhlq8um3zxz?AUy z`Tza<6nze5ef|I1idkac-yeqqu1h*>@}6<;URFwu*8Kw@@Zs%odA6=SiIes|s{j4z z@_$V}{>g7dr${puclK+^$2CiQl-y+URq^n@zsDuw?CMW%c9u#p3Z)D5a`M0z1_&j4C|NQvm n4Eu*(bzNTrpDNEV^I&3lBw5)hbk)EV=ye89S3j3^P6 Date: Thu, 10 Nov 2016 23:01:37 +0100 Subject: [PATCH 274/383] update messages --- mods/random_messages/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/random_messages/init.lua b/mods/random_messages/init.lua index 6a37e39c..f042c6ba 100644 --- a/mods/random_messages/init.lua +++ b/mods/random_messages/init.lua @@ -54,6 +54,8 @@ function random_messages.read_messages() mc(mcc, "# Illuna-Notes: Enjoy Illuna? Invite your friends today!"), mc(mcc, "# Illuna-Notes: Have something to share? Join https://community.illuna-minetest.tk 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? Stucking water or lava? Use /mapfix to fix it!"), } end From 98987f57dc7fc3c81aa70a3444f7df089c631a33 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 10 Nov 2016 23:02:54 +0100 Subject: [PATCH 275/383] update submodule homedecor_modpack --- mods/homedecor_modpack | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/homedecor_modpack b/mods/homedecor_modpack index 8638435b..6b396cf1 160000 --- a/mods/homedecor_modpack +++ b/mods/homedecor_modpack @@ -1 +1 @@ -Subproject commit 8638435b42ab57d50a3f5ec229d3821e659cf828 +Subproject commit 6b396cf1506b3a294bf476a61955ffa37eb25706 From 09b7047cde16a0d402ffeea3e8abc3ad1415ad81 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 10 Nov 2016 23:03:22 +0100 Subject: [PATCH 276/383] typofix :cat2: --- mods/bonemeal/init.lua | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mods/bonemeal/init.lua b/mods/bonemeal/init.lua index 30e871cd..28f9faca 100644 --- a/mods/bonemeal/init.lua +++ b/mods/bonemeal/init.lua @@ -2,8 +2,7 @@ -- minetest.register_craft({ - type = "shapeless", - output = 'default:bonemeal 4', + output = "bonemeal:bonemeal 4", recipe = { {'default:bone'}, {'default:mese_crystal_fragment'}, @@ -195,7 +194,7 @@ local function growth(pointed_thing) end -- bonemeal item -minetest.register_craftitem("default:bonemeal", { +minetest.register_craftitem("bonemeal:bonemeal", { description = "Bone Meal", inventory_image = "bonemeal.png", From 4cbef55586d9208a60741ece3847e3c195b77b2d Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 14 Nov 2016 10:01:31 +0100 Subject: [PATCH 277/383] update submodule mobs_redo --- mods/mobs_redo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_redo b/mods/mobs_redo index 31db77ba..9990b12a 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit 31db77bab3ef8cd3f63fe1e30d301d9dd944c964 +Subproject commit 9990b12a1237e95bbf68ebc0abdf633403a64178 From 8fdd3f40e582e47fdd8b8e2feaf190cdf5b0c8fa Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 14 Nov 2016 11:47:09 +0100 Subject: [PATCH 278/383] fix stupid cherry-pick conflict --- .gitmodules | 27 +++++++++++++++++++++++++++ mods/golems | 1 + 2 files changed, 28 insertions(+) create mode 160000 mods/golems diff --git a/.gitmodules b/.gitmodules index 9eb607c9..81bb16b4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -98,9 +98,36 @@ [submodule "mods/mobs_monster"] path = mods/mobs_monster url = https://git.tchncs.de/Illuna-Minetest/mobs_monster +<<<<<<< HEAD [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/protector"] + path = mods/protector + url = https://github.com/tenplus1/protector +[submodule "mods/irc"] + path = mods/irc + url = https://github.com/minetest-mods/irc +[submodule "mods/ethereal"] + path = mods/ethereal + url = https://git.tchncs.de/Illuna-Minetest/ethereal +[submodule "mods/technic"] + path = mods/technic + url = https://git.tchncs.de/Illuna-Minetest/technic +[submodule "mods/markers"] + path = mods/markers + url = https://github.com/Sokomine/markers +[submodule "mods/areas"] + path = mods/areas + url = https://github.com/ShadowNinja/areas +[submodule "mods/pipeworks"] + path = mods/pipeworks + url = https://github.com/minetest-mods/pipeworks/ +[submodule "mods/golems"] + path = mods/golems + url = https://git.tchncs.de/Illuna-Minetest/golems +>>>>>>> d8502f7... add submodule golems diff --git a/mods/golems b/mods/golems new file mode 160000 index 00000000..b39a9c79 --- /dev/null +++ b/mods/golems @@ -0,0 +1 @@ +Subproject commit b39a9c79f7d3cb40d285a0d9c496b1b5d62f6cad From 618af2fef549d35aed467e50a800d308b5bde181 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 14 Nov 2016 11:50:35 +0100 Subject: [PATCH 279/383] really fix stupid cherry-pick conflict on adding submodule golems --- .gitmodules | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/.gitmodules b/.gitmodules index 81bb16b4..53cd107e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -98,36 +98,12 @@ [submodule "mods/mobs_monster"] path = mods/mobs_monster url = https://git.tchncs.de/Illuna-Minetest/mobs_monster -<<<<<<< HEAD [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/protector"] - path = mods/protector - url = https://github.com/tenplus1/protector -[submodule "mods/irc"] - path = mods/irc - url = https://github.com/minetest-mods/irc -[submodule "mods/ethereal"] - path = mods/ethereal - url = https://git.tchncs.de/Illuna-Minetest/ethereal -[submodule "mods/technic"] - path = mods/technic - url = https://git.tchncs.de/Illuna-Minetest/technic -[submodule "mods/markers"] - path = mods/markers - url = https://github.com/Sokomine/markers -[submodule "mods/areas"] - path = mods/areas - url = https://github.com/ShadowNinja/areas -[submodule "mods/pipeworks"] - path = mods/pipeworks - url = https://github.com/minetest-mods/pipeworks/ [submodule "mods/golems"] path = mods/golems url = https://git.tchncs.de/Illuna-Minetest/golems ->>>>>>> d8502f7... add submodule golems From d249c7dd9d7af290fbf843a7a24144b52f9e2a39 Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 14 Nov 2016 12:57:16 +0100 Subject: [PATCH 280/383] update submodule golems --- mods/golems | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/golems b/mods/golems index b39a9c79..a9a7d96b 160000 --- a/mods/golems +++ b/mods/golems @@ -1 +1 @@ -Subproject commit b39a9c79f7d3cb40d285a0d9c496b1b5d62f6cad +Subproject commit a9a7d96bf40c8ba25777eed977356d631bb8f53c From 69923324fd9f410563110b3860cc1d700dc19c83 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 27 Nov 2016 00:35:38 +0100 Subject: [PATCH 281/383] update submodule illuna --- .gitmodules | 3 +++ mods/illuna | 2 +- mods/shadow | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) create mode 160000 mods/shadow diff --git a/.gitmodules b/.gitmodules index 53cd107e..f26764bc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -107,3 +107,6 @@ [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 diff --git a/mods/illuna b/mods/illuna index 283c9f6b..6d207c93 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 283c9f6b143d44c3ed46f7aafc5c8e560417dc0a +Subproject commit 6d207c93d72413d17c7a952fb912d556d5bd4dbd 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 From 530b601709f0ebdca493d59ade3db9e696b25b6e Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 4 Dec 2016 23:38:54 +0100 Subject: [PATCH 282/383] experimental: add submodule chat_bubbles :o --- .gitmodules | 3 +++ mods/chat_bubbles | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/chat_bubbles diff --git a/.gitmodules b/.gitmodules index f26764bc..d8501ade 100644 --- a/.gitmodules +++ b/.gitmodules @@ -110,3 +110,6 @@ [submodule "mods/shadow"] path = mods/shadow url = https://git.tchncs.de/Illuna-Minetest/shadow +[submodule "mods/chat_bubbles"] + path = mods/chat_bubbles + url = https://github.com/jordan4ibanez/Chat-Bubbles diff --git a/mods/chat_bubbles b/mods/chat_bubbles new file mode 160000 index 00000000..48fb8b16 --- /dev/null +++ b/mods/chat_bubbles @@ -0,0 +1 @@ +Subproject commit 48fb8b16b297d3742205ad8f430d8eb8b39cee8d From 4e28d90d068df6e8fa5e90f07927feb017633dce Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 13 Dec 2016 19:26:05 +0100 Subject: [PATCH 283/383] flowers should be a lightsource --- mods/flowers/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index c60d0897..980dff6c 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 = { From b733b1971d86bc74d19abf48b44c20e0ec53f65c Mon Sep 17 00:00:00 2001 From: tchncs Date: Tue, 13 Dec 2016 21:55:05 +0100 Subject: [PATCH 284/383] update submodule darkage --- mods/darkage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/darkage b/mods/darkage index 4a3f6ff7..08515f7d 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit 4a3f6ff796c0bbabe9858efc0ca942f018d75bf5 +Subproject commit 08515f7d0da99f36dab22cf7143237398bbe51b7 From 09edb7daec2cb1719567bb6f3db9ac9297495eeb Mon Sep 17 00:00:00 2001 From: Milan* Date: Mon, 19 Dec 2016 20:02:41 +0100 Subject: [PATCH 285/383] add submodule craftguide --- .gitmodules | 3 +++ mods/craftguide | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/craftguide diff --git a/.gitmodules b/.gitmodules index d8501ade..4c2416f8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -113,3 +113,6 @@ [submodule "mods/chat_bubbles"] path = mods/chat_bubbles url = https://github.com/jordan4ibanez/Chat-Bubbles +[submodule "mods/craftguide"] + path = mods/craftguide + url = https://github.com/minetest-mods/craftguide diff --git a/mods/craftguide b/mods/craftguide new file mode 160000 index 00000000..d0b3cf28 --- /dev/null +++ b/mods/craftguide @@ -0,0 +1 @@ +Subproject commit d0b3cf2887238275894b067f929f6c00a5d221a1 From d909616c1a52afbbfae0029ef35871ae2e61aae7 Mon Sep 17 00:00:00 2001 From: Milan* Date: Mon, 19 Dec 2016 20:15:49 +0100 Subject: [PATCH 286/383] update submodule xdecor add submodule moreblocks --- .gitmodules | 3 +++ mods/moreblocks | 1 + mods/xdecor | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) create mode 160000 mods/moreblocks diff --git a/.gitmodules b/.gitmodules index 4c2416f8..9bd2292b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -116,3 +116,6 @@ [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 diff --git a/mods/moreblocks b/mods/moreblocks new file mode 160000 index 00000000..01b411c7 --- /dev/null +++ b/mods/moreblocks @@ -0,0 +1 @@ +Subproject commit 01b411c753697049b1f37c0f49abc1d216b432e6 diff --git a/mods/xdecor b/mods/xdecor index 9c6da347..0a9928c3 160000 --- a/mods/xdecor +++ b/mods/xdecor @@ -1 +1 @@ -Subproject commit 9c6da3477ce01c3c369c53507d36b1fa3d6a81b5 +Subproject commit 0a9928c36633c9d0ff55044eec1884805258730e From 7ec3f4dfa6826d1a041bab98ac8f9c6bc098c74d Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 24 Dec 2016 13:42:43 +0100 Subject: [PATCH 287/383] add submodule scaffolding --- .gitmodules | 3 +++ mods/scaffolding | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/scaffolding diff --git a/.gitmodules b/.gitmodules index 9bd2292b..2907fdec 100644 --- a/.gitmodules +++ b/.gitmodules @@ -119,3 +119,6 @@ [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 diff --git a/mods/scaffolding b/mods/scaffolding new file mode 160000 index 00000000..56498271 --- /dev/null +++ b/mods/scaffolding @@ -0,0 +1 @@ +Subproject commit 56498271709febcfe7d05515298ab7fa189a4399 From 5e9318c595e8ee8b212b161424c962d4b2f8e2cd Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 24 Dec 2016 13:44:59 +0100 Subject: [PATCH 288/383] update submodule craftguide --- mods/craftguide | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/craftguide b/mods/craftguide index d0b3cf28..d2f49eb5 160000 --- a/mods/craftguide +++ b/mods/craftguide @@ -1 +1 @@ -Subproject commit d0b3cf2887238275894b067f929f6c00a5d221a1 +Subproject commit d2f49eb5890090b669916bd6a39975d238f9db24 From 5e568f9ead344967345ae7d15583508bf387fa6b Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 24 Dec 2016 18:01:14 +0100 Subject: [PATCH 289/383] random_messages: message improvements and more messages --- mods/random_messages/init.lua | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/mods/random_messages/init.lua b/mods/random_messages/init.lua index f042c6ba..5039ca2a 100644 --- a/mods/random_messages/init.lua +++ b/mods/random_messages/init.lua @@ -50,12 +50,15 @@ function random_messages.read_messages() local mcc = "#A3B5CB" random_messages.messages = { mc(mcc, "# Illuna-Notes: Soup is very useful to fight hunger, everyone should have some."), - mc(mcc, "# Illuna-Notes: Meet your fellows on our Mumbleserver at tchncs.de"), - mc(mcc, "# Illuna-Notes: Enjoy Illuna? Invite your friends today!"), - mc(mcc, "# Illuna-Notes: Have something to share? Join https://community.illuna-minetest.tk today!"), + 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 it."), + 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? Stucking water or lava? Use /mapfix to fix it!"), + 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? Stucking 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 less 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 From 18af6ba2f6c36ba96a4d0ad79a656589d707308c Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 24 Dec 2016 18:14:17 +0100 Subject: [PATCH 290/383] random_messages: little spelling improvement --- mods/random_messages/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/random_messages/init.lua b/mods/random_messages/init.lua index 5039ca2a..7f5e2442 100644 --- a/mods/random_messages/init.lua +++ b/mods/random_messages/init.lua @@ -49,9 +49,9 @@ function random_messages.read_messages() local mc = core.colorize local mcc = "#A3B5CB" random_messages.messages = { - mc(mcc, "# Illuna-Notes: Soup is very useful to fight hunger, everyone should have some."), + 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 it."), + 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."), From e8025240f31fa592f565cbf9903893b9f3b148f3 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sun, 25 Dec 2016 21:05:47 +0100 Subject: [PATCH 291/383] random_messages: little spelling fix (thanks to noob101) --- mods/random_messages/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/random_messages/init.lua b/mods/random_messages/init.lua index 7f5e2442..596564d1 100644 --- a/mods/random_messages/init.lua +++ b/mods/random_messages/init.lua @@ -55,7 +55,7 @@ function random_messages.read_messages() 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? Stucking water or lava? Use /mapfix to fix it!"), + 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 less 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."), From 7aa53925480398cb26b0505d6da0d46d69d78363 Mon Sep 17 00:00:00 2001 From: Milan* Date: Mon, 2 Jan 2017 15:54:37 +0100 Subject: [PATCH 292/383] update submodule pkarcs --- mods/pkarcs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/pkarcs b/mods/pkarcs index a0281ae2..f21b57b0 160000 --- a/mods/pkarcs +++ b/mods/pkarcs @@ -1 +1 @@ -Subproject commit a0281ae20225533c9b97c676dcde8c8f4382ddbc +Subproject commit f21b57b01fde750fcc267b36ecacaf9080f7c138 From 39e2bbeeaac01f42624f9cbbdf0858cbc4dc18ba Mon Sep 17 00:00:00 2001 From: Milan* Date: Mon, 2 Jan 2017 22:04:55 +0100 Subject: [PATCH 293/383] update submodule darkage update submodule xdecor --- mods/darkage | 2 +- mods/xdecor | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/darkage b/mods/darkage index 08515f7d..60b3dd0a 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit 08515f7d0da99f36dab22cf7143237398bbe51b7 +Subproject commit 60b3dd0ae7bbe2d173410895401b8e590715a8b2 diff --git a/mods/xdecor b/mods/xdecor index 0a9928c3..14407e56 160000 --- a/mods/xdecor +++ b/mods/xdecor @@ -1 +1 @@ -Subproject commit 0a9928c36633c9d0ff55044eec1884805258730e +Subproject commit 14407e56917e04d51c835c8fbd8e46bc2f474bef From 8bf39a4afe58dea7d2b7a8889f30228e190a6d42 Mon Sep 17 00:00:00 2001 From: Milan* Date: Fri, 6 Jan 2017 19:02:23 +0100 Subject: [PATCH 294/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 6d207c93..6f95f465 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 6d207c93d72413d17c7a952fb912d556d5bd4dbd +Subproject commit 6f95f465cd19a567851abd08293584b91970a1c0 From 9b61e716b9ec6512cc0ec03aaa82d6c1f502c35c Mon Sep 17 00:00:00 2001 From: Milan* Date: Tue, 10 Jan 2017 22:44:34 +0100 Subject: [PATCH 295/383] update submodule plantlife_modpack --- mods/plantlife_modpack | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/plantlife_modpack b/mods/plantlife_modpack index e882ed34..0447eca4 160000 --- a/mods/plantlife_modpack +++ b/mods/plantlife_modpack @@ -1 +1 @@ -Subproject commit e882ed349125a7e6072d158a9b457510fddaa2ac +Subproject commit 0447eca445a242321284de55040d57b9d0e49be7 From b3d9025652c08ac1ada0af76804374f6a643d186 Mon Sep 17 00:00:00 2001 From: Milan* Date: Wed, 11 Jan 2017 17:25:50 +0100 Subject: [PATCH 296/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 6f95f465..146453b4 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 6f95f465cd19a567851abd08293584b91970a1c0 +Subproject commit 146453b486bc80556be794d71424ccd3a9064e74 From c377d5c72d5cc464ec7cd481cb72111c25455194 Mon Sep 17 00:00:00 2001 From: Milan* Date: Wed, 11 Jan 2017 17:37:42 +0100 Subject: [PATCH 297/383] update submodule pkarcs --- mods/pkarcs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/pkarcs b/mods/pkarcs index f21b57b0..bb5471c5 160000 --- a/mods/pkarcs +++ b/mods/pkarcs @@ -1 +1 @@ -Subproject commit f21b57b01fde750fcc267b36ecacaf9080f7c138 +Subproject commit bb5471c5259453860fd8413fda184adf70a80624 From e7579e1db2fa1c60e807dcee3c42c5e350af8032 Mon Sep 17 00:00:00 2001 From: tchncs Date: Wed, 11 Jan 2017 19:00:14 +0100 Subject: [PATCH 298/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 146453b4..ee519b8f 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 146453b486bc80556be794d71424ccd3a9064e74 +Subproject commit ee519b8f8d37adb0652d3ccdd8ca6c3c493f5e49 From 04960cf161537ea1e37da2c81ba2b88c7deca3b6 Mon Sep 17 00:00:00 2001 From: Milan* Date: Wed, 11 Jan 2017 22:23:11 +0100 Subject: [PATCH 299/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index ee519b8f..9a4e7824 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit ee519b8f8d37adb0652d3ccdd8ca6c3c493f5e49 +Subproject commit 9a4e782473e8426c4a18a14a373a086e95d28832 From 2d67527804782386f90802b3c530a0b537e059ad Mon Sep 17 00:00:00 2001 From: Milan* Date: Wed, 11 Jan 2017 22:56:12 +0100 Subject: [PATCH 300/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 9a4e7824..1c141cde 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 9a4e782473e8426c4a18a14a373a086e95d28832 +Subproject commit 1c141cdeedafdde91fb9ec74d0c29979c33f0382 From e2bc895435238994af45ccd7ea928a4e6abed81c Mon Sep 17 00:00:00 2001 From: Milan* Date: Wed, 11 Jan 2017 23:05:30 +0100 Subject: [PATCH 301/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 1c141cde..3fc62f4c 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 1c141cdeedafdde91fb9ec74d0c29979c33f0382 +Subproject commit 3fc62f4c8e246ab0606ad625d1787dfd4c8c067d From 9c4b57d12012ab344431d969731e45fb3ca5cc91 Mon Sep 17 00:00:00 2001 From: Milan* Date: Wed, 11 Jan 2017 23:57:47 +0100 Subject: [PATCH 302/383] update submodule scaffolding --- mods/scaffolding | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/scaffolding b/mods/scaffolding index 56498271..9e47250b 160000 --- a/mods/scaffolding +++ b/mods/scaffolding @@ -1 +1 @@ -Subproject commit 56498271709febcfe7d05515298ab7fa189a4399 +Subproject commit 9e47250b387953043733ace606b25f51c399ef46 From 0556645aaded1454fbb2443ff5289fedada66aa7 Mon Sep 17 00:00:00 2001 From: Milan* Date: Thu, 12 Jan 2017 08:29:14 +0100 Subject: [PATCH 303/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 3fc62f4c..ac52a77a 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 3fc62f4c8e246ab0606ad625d1787dfd4c8c067d +Subproject commit ac52a77a405c1a464ee0c9063580cc1faf2108dd From a7b0e1ea36a83faeb5ec23ebfc0bea9d34a63529 Mon Sep 17 00:00:00 2001 From: Milan* Date: Thu, 12 Jan 2017 11:00:37 +0100 Subject: [PATCH 304/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index ac52a77a..eab11b00 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit ac52a77a405c1a464ee0c9063580cc1faf2108dd +Subproject commit eab11b003409782f2e2ff45dbf57ad4c37237aa9 From e435d9c1ad1aca0b27952909d07c5e3caf09957e Mon Sep 17 00:00:00 2001 From: Milan* Date: Thu, 12 Jan 2017 22:08:01 +0100 Subject: [PATCH 305/383] pre-add playerskins mod --- mods/playerskins/depends.txt | 1 + mods/playerskins/init.lua | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 mods/playerskins/depends.txt create mode 100644 mods/playerskins/init.lua diff --git a/mods/playerskins/depends.txt b/mods/playerskins/depends.txt new file mode 100644 index 00000000..331d858c --- /dev/null +++ b/mods/playerskins/depends.txt @@ -0,0 +1 @@ +default \ No newline at end of file diff --git a/mods/playerskins/init.lua b/mods/playerskins/init.lua new file mode 100644 index 00000000..0134a2f8 --- /dev/null +++ b/mods/playerskins/init.lua @@ -0,0 +1,36 @@ +-- thanks for the support from tenplus1, kaeza and Shara <3 +-- +-- this is a kind of pre-version of the Illuna skinmod. +-- it is supposed to work together with a skinserver later. +-- since it is very basic and kindly rewritten by tenplus1, +-- i didn't yet decide about any license and so on. + +-- get mod textures path +local path = minetest.get_modpath("playerskins") .. "/textures/" + +-- this function runs every time player joins game +minetest.register_on_joinplayer(function(player) + + -- get player name from player object + local name = player:get_player_name() + + -- make name lower case and add .png extension + name = name:lower() .. ".png" + + -- set skin to default + local skin = "character.png" + + -- check if texture exists and set new skin + local f = io.open(path .. name, "r") + if f then + skin = name -- set new skin name + f:close() -- close file + + -- apply player texture + minetest.after(1, function() + player:set_properties({ + textures = {skin}, + }) + end) + end +end) From 02df980c1a0e833b4af239857f26e9ed562d44c7 Mon Sep 17 00:00:00 2001 From: tchncs Date: Thu, 12 Jan 2017 22:47:08 +0100 Subject: [PATCH 306/383] update submodule wardrobe --- mods/wardrobe | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/wardrobe b/mods/wardrobe index 71135fc2..2d50e4a1 160000 --- a/mods/wardrobe +++ b/mods/wardrobe @@ -1 +1 @@ -Subproject commit 71135fc29026647be78daa9d8f554793771d4fe6 +Subproject commit 2d50e4a1d0a8b471acbf110846bb6e187ea126b8 From 107ff57b734c1f125c1ce9295ed7961d9f607f1a Mon Sep 17 00:00:00 2001 From: Milan* Date: Fri, 13 Jan 2017 09:11:52 +0100 Subject: [PATCH 307/383] make it compatible with 3d_armor --- mods/playerskins/depends.txt | 4 +++- mods/playerskins/init.lua | 23 +++++++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/mods/playerskins/depends.txt b/mods/playerskins/depends.txt index 331d858c..b9c14495 100644 --- a/mods/playerskins/depends.txt +++ b/mods/playerskins/depends.txt @@ -1 +1,3 @@ -default \ No newline at end of file +default +character_creator? +3d_armor? diff --git a/mods/playerskins/init.lua b/mods/playerskins/init.lua index 0134a2f8..b1cb52e9 100644 --- a/mods/playerskins/init.lua +++ b/mods/playerskins/init.lua @@ -2,7 +2,7 @@ -- -- this is a kind of pre-version of the Illuna skinmod. -- it is supposed to work together with a skinserver later. --- since it is very basic and kindly rewritten by tenplus1, +-- since it is very basic and the base kindly rewritten by tenplus1, -- i didn't yet decide about any license and so on. -- get mod textures path @@ -13,7 +13,7 @@ minetest.register_on_joinplayer(function(player) -- get player name from player object local name = player:get_player_name() - + -- make name lower case and add .png extension name = name:lower() .. ".png" @@ -25,12 +25,23 @@ minetest.register_on_joinplayer(function(player) if f then skin = name -- set new skin name f:close() -- close file - + -- apply player texture minetest.after(1, function() - player:set_properties({ + if minetest.get_modpath("3d_armor") then + minetest.after(1, function(player) + if not player then + return + end + local name = player:get_player_name() + armor.textures[player:get_player_name()].skin = skin + armor:set_player_armor(player) + end, player) + else + player:set_properties({ textures = {skin}, }) - end) + end + end) end -end) +end) From 10da2b2f32619f52569f7f6610cd089415606f58 Mon Sep 17 00:00:00 2001 From: Milan* Date: Fri, 13 Jan 2017 20:49:05 +0100 Subject: [PATCH 308/383] move playerskins out of the subgame --- mods/playerskins/depends.txt | 3 --- mods/playerskins/init.lua | 48 ------------------------------------ 2 files changed, 51 deletions(-) delete mode 100644 mods/playerskins/depends.txt delete mode 100644 mods/playerskins/init.lua diff --git a/mods/playerskins/depends.txt b/mods/playerskins/depends.txt deleted file mode 100644 index b9c14495..00000000 --- a/mods/playerskins/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -character_creator? -3d_armor? diff --git a/mods/playerskins/init.lua b/mods/playerskins/init.lua deleted file mode 100644 index 745d651f..00000000 --- a/mods/playerskins/init.lua +++ /dev/null @@ -1,48 +0,0 @@ --- thanks for the support from tenplus1, kaeza and Shara <3 --- --- this is a kind of pre-version of the Illuna skinmod. --- it is supposed to work together with a skinserver later. --- since it is very basic and the base kindly rewritten by tenplus1, --- i didn't yet decide about any license and so on. - --- get mod textures path -local path = minetest.get_modpath("playerskins") .. "/textures/" - --- this function runs every time player joins game -minetest.register_on_joinplayer(function(player) - - -- get player name from player object - local name = player:get_player_name() - - -- make name lower case and add .png extension - name = name:lower() .. ".png" - - -- set skin to default - local skin = "character.png" - - -- check if texture exists and set new skin - local f = io.open(path .. name, "r") - if f then - skin = name -- set new skin name - f:close() -- close file - - -- apply player texture - minetest.after(1, function() - if minetest.get_modpath("3d_armor") then - -- FIXME: after function is a placeholder to validate function - minetest.after(0, function(player) - if not player then - return - end - local name = player:get_player_name() - armor.textures[player:get_player_name()].skin = skin - armor:set_player_armor(player) - end, player) - else - player:set_properties({ - textures = {skin}, - }) - end - end) - end -end) From 6351951dab29330c4fba396ee021c1a5530bedd8 Mon Sep 17 00:00:00 2001 From: Milan* Date: Fri, 13 Jan 2017 22:11:36 +0100 Subject: [PATCH 309/383] add submodule playerskins --- .gitmodules | 3 +++ mods/playerskins | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/playerskins diff --git a/.gitmodules b/.gitmodules index 2907fdec..ae1566aa 100644 --- a/.gitmodules +++ b/.gitmodules @@ -122,3 +122,6 @@ [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 diff --git a/mods/playerskins b/mods/playerskins new file mode 160000 index 00000000..67e6d60a --- /dev/null +++ b/mods/playerskins @@ -0,0 +1 @@ +Subproject commit 67e6d60af2805ee11f7beef5ae58bc12bd11bdc9 From 34cead08e09ccd82355b32f9fd68b36a8e621820 Mon Sep 17 00:00:00 2001 From: Milan* Date: Fri, 13 Jan 2017 23:01:48 +0100 Subject: [PATCH 310/383] little spelling fix by noob101 --- mods/random_messages/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/random_messages/init.lua b/mods/random_messages/init.lua index 596564d1..baf09603 100644 --- a/mods/random_messages/init.lua +++ b/mods/random_messages/init.lua @@ -57,7 +57,7 @@ function random_messages.read_messages() 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 less pipes on your machines as possible."), + 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 From 35c0025fdafaab94cfca59235c86f70c3dd87374 Mon Sep 17 00:00:00 2001 From: Milan* Date: Fri, 13 Jan 2017 23:02:33 +0100 Subject: [PATCH 311/383] update submodule playerskins --- mods/playerskins | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/playerskins b/mods/playerskins index 67e6d60a..1d8d9a2d 160000 --- a/mods/playerskins +++ b/mods/playerskins @@ -1 +1 @@ -Subproject commit 67e6d60af2805ee11f7beef5ae58bc12bd11bdc9 +Subproject commit 1d8d9a2db8d85ba0c18aa83f0e3ff40ac7ca9d52 From f0d43fc90f59cf1c1e0e7d4b974b8b0820ae326e Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 14 Jan 2017 22:44:36 +0100 Subject: [PATCH 312/383] bones: colorize message, colorize infotext for fresh bones (infotext not yet working) --- mods/bones/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 26ca0486..f77bb9d6 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -210,7 +210,7 @@ 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, "Your stuff is waiting for you at "..minetest.pos_to_string(pos).. ". Go and grab it! ;-)") + minetest.chat_send_player(player_name, core.colorize("#F6A10A", "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) @@ -235,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) @@ -245,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) From 4a8c50c713dd37c82ac266a446911ae192258a85 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 14 Jan 2017 22:46:41 +0100 Subject: [PATCH 313/383] bones: position msg should have # Illuna: tag --- mods/bones/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/bones/init.lua b/mods/bones/init.lua index f77bb9d6..5f2da4a9 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -210,7 +210,7 @@ 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", "Your stuff is waiting for you at "..minetest.pos_to_string(pos).. ". Hurry. ;-)")) + 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) From 379775ff26cc0f90a3ba27f4918ad3272a9fa40c Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 14 Jan 2017 22:53:09 +0100 Subject: [PATCH 314/383] update submodule death_messages --- mods/death_messages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/death_messages b/mods/death_messages index 32f96793..23c57bf0 160000 --- a/mods/death_messages +++ b/mods/death_messages @@ -1 +1 @@ -Subproject commit 32f967935fa71c6bd103d107117168a86a3ec21e +Subproject commit 23c57bf000ce48a00c3991d8ef8f011e8c6cf75b From 697c850eeef9de2f1615d2057aabb3467f0f3f10 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sun, 22 Jan 2017 19:33:04 +0100 Subject: [PATCH 315/383] add submodule mycastle --- .gitmodules | 3 +++ mods/mycastle | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/mycastle diff --git a/.gitmodules b/.gitmodules index ae1566aa..3c9ea570 100644 --- a/.gitmodules +++ b/.gitmodules @@ -125,3 +125,6 @@ [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 diff --git a/mods/mycastle b/mods/mycastle new file mode 160000 index 00000000..3a00c181 --- /dev/null +++ b/mods/mycastle @@ -0,0 +1 @@ +Subproject commit 3a00c181820d566440eff84e6d80f84266e13045 From 2f283e7f62923242ae4081222d895deee6b180d9 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 22 Jan 2017 19:53:17 +0100 Subject: [PATCH 316/383] update submodule mycastle --- mods/mycastle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mycastle b/mods/mycastle index 3a00c181..4ede4e87 160000 --- a/mods/mycastle +++ b/mods/mycastle @@ -1 +1 @@ -Subproject commit 3a00c181820d566440eff84e6d80f84266e13045 +Subproject commit 4ede4e873f5b8a8e57278fa24c4c3adbd4dee571 From 72e1f5e4774be6ad7aa97ceef5ccad8621f6d4ca Mon Sep 17 00:00:00 2001 From: Milan* Date: Sun, 22 Jan 2017 20:02:33 +0100 Subject: [PATCH 317/383] update submodule mycastle --- mods/mycastle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mycastle b/mods/mycastle index 4ede4e87..2768e5d2 160000 --- a/mods/mycastle +++ b/mods/mycastle @@ -1 +1 @@ -Subproject commit 4ede4e873f5b8a8e57278fa24c4c3adbd4dee571 +Subproject commit 2768e5d2b2479dc4857a402649c0e1e7d7686f4f From 836800af9823a5b95becfd41598417ebc618f5b9 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sun, 22 Jan 2017 20:07:30 +0100 Subject: [PATCH 318/383] update submodule mycastle --- mods/mycastle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mycastle b/mods/mycastle index 2768e5d2..68e51973 160000 --- a/mods/mycastle +++ b/mods/mycastle @@ -1 +1 @@ -Subproject commit 2768e5d2b2479dc4857a402649c0e1e7d7686f4f +Subproject commit 68e51973685072c1dc63496265e5036618e66ac5 From 2cb0531fd8a81b9119994a45e9e8539621b7ff65 Mon Sep 17 00:00:00 2001 From: Milan* Date: Wed, 25 Jan 2017 13:44:46 +0100 Subject: [PATCH 319/383] drop submodule chat_bubbles --- .gitmodules | 3 --- mods/chat_bubbles | 1 - 2 files changed, 4 deletions(-) delete mode 160000 mods/chat_bubbles diff --git a/.gitmodules b/.gitmodules index 3c9ea570..b76071d6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -110,9 +110,6 @@ [submodule "mods/shadow"] path = mods/shadow url = https://git.tchncs.de/Illuna-Minetest/shadow -[submodule "mods/chat_bubbles"] - path = mods/chat_bubbles - url = https://github.com/jordan4ibanez/Chat-Bubbles [submodule "mods/craftguide"] path = mods/craftguide url = https://github.com/minetest-mods/craftguide diff --git a/mods/chat_bubbles b/mods/chat_bubbles deleted file mode 160000 index 48fb8b16..00000000 --- a/mods/chat_bubbles +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 48fb8b16b297d3742205ad8f430d8eb8b39cee8d From fc30a565308338520560622a30f265174abf5c4f Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 28 Jan 2017 20:29:08 +0100 Subject: [PATCH 320/383] update submodule darkage --- mods/darkage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/darkage b/mods/darkage index 60b3dd0a..1dc60cb9 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit 60b3dd0ae7bbe2d173410895401b8e590715a8b2 +Subproject commit 1dc60cb951fb04950ceca99ced6efa28a9b320f2 From d25a700fe2778ff4c4dde8ec199332222c83b0cc Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 28 Jan 2017 21:10:35 +0100 Subject: [PATCH 321/383] update submodule darkage --- mods/darkage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/darkage b/mods/darkage index 1dc60cb9..085f052b 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit 1dc60cb951fb04950ceca99ced6efa28a9b320f2 +Subproject commit 085f052b5a185348a4b47cbfb7fba28f50e9a82e From 6a70c71c1d71e64eaf91785a8f516f1bd7adef93 Mon Sep 17 00:00:00 2001 From: Milan* Date: Fri, 3 Feb 2017 20:13:36 +0100 Subject: [PATCH 322/383] add mod hellochat --- mods/hellochat/depends.txt | 0 mods/hellochat/init.lua | 14 ++++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 mods/hellochat/depends.txt create mode 100644 mods/hellochat/init.lua 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..3fd54f53 --- /dev/null +++ b/mods/hellochat/init.lua @@ -0,0 +1,14 @@ +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, so you need to do a few steps in order to play here. :-)")) + minetest.chat_send_player(player, core.colorize(color, "# Illuna: 1. Read our rules (how boring) at https://illuna.rocks/rules")) + minetest.chat_send_player(player, core.colorize(color, "# Illuna: 2. Join our community at https://meet.illuna.rocks and introduce yourself.")) + minetest.chat_send_player(player, core.colorize(color, "# Illuna: This is our way to protect the players, you'll love how secure this world is. ;-)")) + minetest.chat_send_player(player, core.colorize("#C3E9FF", "# Illuna: Our you just try our public servers at port 30001 and 30002... .")) + end +end) From ddacc7f7bdfcb56ae6b926fdbe6d7acf70c26d23 Mon Sep 17 00:00:00 2001 From: Milan* Date: Wed, 8 Feb 2017 08:34:49 +0100 Subject: [PATCH 323/383] hellochat: typofix :o --- mods/hellochat/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/hellochat/init.lua b/mods/hellochat/init.lua index 3fd54f53..032a0ede 100644 --- a/mods/hellochat/init.lua +++ b/mods/hellochat/init.lua @@ -9,6 +9,6 @@ minetest.register_on_joinplayer(function(player) minetest.chat_send_player(player, core.colorize(color, "# Illuna: 1. Read our rules (how boring) at https://illuna.rocks/rules")) minetest.chat_send_player(player, core.colorize(color, "# Illuna: 2. Join our community at https://meet.illuna.rocks and introduce yourself.")) minetest.chat_send_player(player, core.colorize(color, "# Illuna: This is our way to protect the players, you'll love how secure this world is. ;-)")) - minetest.chat_send_player(player, core.colorize("#C3E9FF", "# Illuna: Our you just try our public servers at port 30001 and 30002... .")) + minetest.chat_send_player(player, core.colorize("#C3E9FF", "# Illuna: Or you just try our public servers at port 30001 and 30002... .")) end end) From 93dacbe3b6a73337287e8c940c6e6be3ca686ed1 Mon Sep 17 00:00:00 2001 From: Milan* Date: Fri, 3 Mar 2017 09:04:16 +0100 Subject: [PATCH 324/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index eab11b00..3fe3f3c3 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit eab11b003409782f2e2ff45dbf57ad4c37237aa9 +Subproject commit 3fe3f3c35ac6d2c899a84ef91564511782c87341 From 1a1c312ce9bdd314cda116ab32656767b46301be Mon Sep 17 00:00:00 2001 From: tchncs Date: Sat, 4 Mar 2017 09:33:41 +0100 Subject: [PATCH 325/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 3fe3f3c3..6ef3a208 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 3fe3f3c35ac6d2c899a84ef91564511782c87341 +Subproject commit 6ef3a208e0415449e32e4d22c31bafc65be72d0d From a51503382e28e7461474dfc017988144e3314fe9 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 13:11:53 +0100 Subject: [PATCH 326/383] re-add submodule boats+farming --- .gitmodules | 6 ++++++ mods/boats | 1 + mods/farming | 1 + 3 files changed, 8 insertions(+) create mode 160000 mods/boats create mode 160000 mods/farming diff --git a/.gitmodules b/.gitmodules index 9687d01b..abd0ad0f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -119,3 +119,9 @@ [submodule "mods/mycastle"] path = mods/mycastle url = https://git.tchncs.de/Illuna-Minetest/mycastle +[submodule "mods/farming"] + path = mods/farming + url = https://git.tchncs.de/Illuna-Minetest/farming +[submodule "mods/boats"] + path = mods/boats + url = https://git.tchncs.de/Illuna-Minetest/boats 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/farming b/mods/farming new file mode 160000 index 00000000..cac6a518 --- /dev/null +++ b/mods/farming @@ -0,0 +1 @@ +Subproject commit cac6a518ca8652744d5aeb1bae5652b5d1895429 From 3fee3fb7ad5e941a617bd2257629aec6ae824a07 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 15:55:47 +0100 Subject: [PATCH 327/383] update submodule 3d_armor --- mods/3d_armor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/3d_armor b/mods/3d_armor index 456c84e9..6661ec0b 160000 --- a/mods/3d_armor +++ b/mods/3d_armor @@ -1 +1 @@ -Subproject commit 456c84e93ea03fcae24e53145d45808ec70d6896 +Subproject commit 6661ec0b4060d62b358f93336ca1cabba8e8cf2e From 059eb337208dd9aa3fffaeb51a42c42987dbbe72 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 15:57:03 +0100 Subject: [PATCH 328/383] update submodule craftguide --- mods/craftguide | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/craftguide b/mods/craftguide index d2f49eb5..9510ed7d 160000 --- a/mods/craftguide +++ b/mods/craftguide @@ -1 +1 @@ -Subproject commit d2f49eb5890090b669916bd6a39975d238f9db24 +Subproject commit 9510ed7daa6075f7f2b3c694ed2f34677f3216fe From dec211728c3905d07034ea47fabf27c68d0d3cdd Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 15:58:36 +0100 Subject: [PATCH 329/383] update submodule hemp --- mods/hemp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/hemp b/mods/hemp index bb111244..b6971d6f 160000 --- a/mods/hemp +++ b/mods/hemp @@ -1 +1 @@ -Subproject commit bb1112449e8462e386b0bf0b6c1481b0b6e7d2ca +Subproject commit b6971d6fb00cadc04d36670ca3dfe319fc618f83 From c69bf1db9195b900852c30a24d0fcf69736b36a9 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 16:08:10 +0100 Subject: [PATCH 330/383] update submodule mobs_animal --- mods/mobs_animal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_animal b/mods/mobs_animal index d1f5d5dd..5687ef41 160000 --- a/mods/mobs_animal +++ b/mods/mobs_animal @@ -1 +1 @@ -Subproject commit d1f5d5dd407d8fe44d9ef43141099484a4f16d8d +Subproject commit 5687ef419465e69676df777f8f12a1b08738b26c From 854157fdcd2f4c8ef8fc9c543ef878935f6945df Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 16:13:20 +0100 Subject: [PATCH 331/383] update submodule mobs_monster --- mods/mobs_monster | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_monster b/mods/mobs_monster index 85b88993..780258a3 160000 --- a/mods/mobs_monster +++ b/mods/mobs_monster @@ -1 +1 @@ -Subproject commit 85b8899395f1178ab5091cedbe70bb9d26093647 +Subproject commit 780258a388a0b29fc864068d2705125a48a3ef8c From f02147dc939cf4320e42a42b9b2a2bf8da956554 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 16:13:55 +0100 Subject: [PATCH 332/383] update submodule mobs_redo --- mods/mobs_redo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_redo b/mods/mobs_redo index 9990b12a..aa591925 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit 9990b12a1237e95bbf68ebc0abdf633403a64178 +Subproject commit aa591925b11e19db50ca1d7e5a3e64c8ff2b7dc2 From 6b31849f870648198d4e6b1f33a39a7e634186fd Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 16:15:29 +0100 Subject: [PATCH 333/383] update submodule wine --- mods/wine | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/wine b/mods/wine index 4953c57d..769f2bb6 160000 --- a/mods/wine +++ b/mods/wine @@ -1 +1 @@ -Subproject commit 4953c57dc8df31fe68e8986bb84565431ebe4406 +Subproject commit 769f2bb6e8f32880f5d044ad70f8b8fba8a85ff4 From 859e4905d535c8de99515d218767b4f810da75e1 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 16:15:51 +0100 Subject: [PATCH 334/383] update submodule worldedit --- mods/worldedit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/worldedit b/mods/worldedit index 5afea424..56f77a2f 160000 --- a/mods/worldedit +++ b/mods/worldedit @@ -1 +1 @@ -Subproject commit 5afea424ba4cf233fb2f7fe48072d4b11e7584da +Subproject commit 56f77a2f278f6ca1731c1f0efe5026ff5c9f4735 From a4ccae425f22c112ae97c6d9b9501551ef815931 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 16:22:21 +0100 Subject: [PATCH 335/383] update submodule xdecor --- mods/xdecor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/xdecor b/mods/xdecor index 14407e56..03ab06ef 160000 --- a/mods/xdecor +++ b/mods/xdecor @@ -1 +1 @@ -Subproject commit 14407e56917e04d51c835c8fbd8e46bc2f474bef +Subproject commit 03ab06efae7a71140318e2304411c33f61c91737 From 0027981e116cc93b2a2f244f3d161b943375d1a7 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 16:26:58 +0100 Subject: [PATCH 336/383] add submodule mesecons --- .gitmodules | 3 +++ mods/mods/mesecons | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/mods/mesecons diff --git a/.gitmodules b/.gitmodules index abd0ad0f..3c8060bf 100644 --- a/.gitmodules +++ b/.gitmodules @@ -125,3 +125,6 @@ [submodule "mods/boats"] path = mods/boats url = https://git.tchncs.de/Illuna-Minetest/boats +[submodule "mods/mods/mesecons"] + path = mods/mods/mesecons + url = https://git.tchncs.de/Illuna-Minetest/mesecons diff --git a/mods/mods/mesecons b/mods/mods/mesecons new file mode 160000 index 00000000..02d01931 --- /dev/null +++ b/mods/mods/mesecons @@ -0,0 +1 @@ +Subproject commit 02d01931f313b480e4130ccc631710c893a6409c From 6d38b85d1525b02c381e8863b97a99717a35e5be Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 20:14:53 +0100 Subject: [PATCH 337/383] update submodule mesecons --- .gitmodules | 4 ++-- mods/mesecons | 1 + mods/mods/mesecons | 1 - 3 files changed, 3 insertions(+), 3 deletions(-) create mode 160000 mods/mesecons delete mode 160000 mods/mods/mesecons diff --git a/.gitmodules b/.gitmodules index 3c8060bf..ba2d5fb3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -125,6 +125,6 @@ [submodule "mods/boats"] path = mods/boats url = https://git.tchncs.de/Illuna-Minetest/boats -[submodule "mods/mods/mesecons"] - path = mods/mods/mesecons +[submodule "mods/mesecons"] + path = mods/mesecons url = https://git.tchncs.de/Illuna-Minetest/mesecons 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/mods/mesecons b/mods/mods/mesecons deleted file mode 160000 index 02d01931..00000000 --- a/mods/mods/mesecons +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 02d01931f313b480e4130ccc631710c893a6409c From f82c07f45d8e887010a294c6893160d2cf33f9e8 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 21:00:07 +0100 Subject: [PATCH 338/383] add submodule pipeworks this also updates pipeworks on the server --- .gitmodules | 3 +++ mods/pipeworks | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/pipeworks diff --git a/.gitmodules b/.gitmodules index ba2d5fb3..3349b19c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -128,3 +128,6 @@ [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/ 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 From 7c867746e8a09b76d42d42bbfa25975fdd1877c3 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 21:01:30 +0100 Subject: [PATCH 339/383] add submodule arrow_signs this also updates arrow_signs on the server --- .gitmodules | 3 +++ mods/arrow_signs | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/arrow_signs diff --git a/.gitmodules b/.gitmodules index 3349b19c..cca4a3e5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -131,3 +131,6 @@ [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 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 From 87acf37fa6744d9fc4528c11ce08472e6289ba88 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 21:02:31 +0100 Subject: [PATCH 340/383] add submodule biome_lib this also updates biome_lib on the server --- .gitmodules | 3 +++ mods/biome_lib | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/biome_lib diff --git a/.gitmodules b/.gitmodules index cca4a3e5..8cd5ea42 100644 --- a/.gitmodules +++ b/.gitmodules @@ -134,3 +134,6 @@ [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 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 From a5f735581c93c6946110e901701a13f25efed788 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 21:03:44 +0100 Subject: [PATCH 341/383] add submodule bitchange --- .gitmodules | 3 +++ mods/bitchange | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/bitchange diff --git a/.gitmodules b/.gitmodules index 8cd5ea42..058a86dd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -137,3 +137,6 @@ [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 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 From 70b00efd1c480492d7c5fad55b4b94e133b79665 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 21:06:30 +0100 Subject: [PATCH 342/383] add submodule bridges --- .gitmodules | 3 +++ mods/bridges | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/bridges diff --git a/.gitmodules b/.gitmodules index 058a86dd..cb5f2809 100644 --- a/.gitmodules +++ b/.gitmodules @@ -140,3 +140,6 @@ [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 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 From 46c2516c93129870675730a60aba0a2ffda060d1 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 21:08:06 +0100 Subject: [PATCH 343/383] add submodule cannons --- .gitmodules | 3 +++ mods/cannons | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/cannons diff --git a/.gitmodules b/.gitmodules index cb5f2809..e1849356 100644 --- a/.gitmodules +++ b/.gitmodules @@ -143,3 +143,6 @@ [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 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 From 9e7bcacdf263d41a1731461ced3c9a86fd3336c1 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 21:09:12 +0100 Subject: [PATCH 344/383] add submodule character_creator this also updates character_creator on the server --- .gitmodules | 3 +++ mods/character_creator | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/character_creator diff --git a/.gitmodules b/.gitmodules index e1849356..8ee14763 100644 --- a/.gitmodules +++ b/.gitmodules @@ -146,3 +146,6 @@ [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 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 From 68fcbfcf9ed86ba47a1975384a331f643814158f Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 21:13:11 +0100 Subject: [PATCH 345/383] add submodule christmas_craft this also updates christmas_craft on the server --- .gitmodules | 3 +++ mods/christmas_craft | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/christmas_craft diff --git a/.gitmodules b/.gitmodules index 8ee14763..109fadc0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -149,3 +149,6 @@ [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 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 From 700a62c22d716cb4bc000a5ecf0e1ef7e0469971 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 21:14:31 +0100 Subject: [PATCH 346/383] add submodule xconnected --- .gitmodules | 3 +++ mods/xconnected | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/xconnected diff --git a/.gitmodules b/.gitmodules index 109fadc0..c28d7935 100644 --- a/.gitmodules +++ b/.gitmodules @@ -152,3 +152,6 @@ [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 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 From 4998cc8765071f32454bc38753ec09f99c981799 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 21:16:03 +0100 Subject: [PATCH 347/383] add submodule medieval_craft this also updates medieval_craft on the server --- .gitmodules | 3 +++ mods/medieval_craft | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/medieval_craft diff --git a/.gitmodules b/.gitmodules index c28d7935..aecbebb0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -155,3 +155,6 @@ [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 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 From 18d1a9d2fbb3f646f590bc7c6a20c0b4ee3c5adc Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 21:17:47 +0100 Subject: [PATCH 348/383] add submodule mini_sun --- .gitmodules | 3 +++ mods/mini_sun | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/mini_sun diff --git a/.gitmodules b/.gitmodules index aecbebb0..5738f5fe 100644 --- a/.gitmodules +++ b/.gitmodules @@ -158,3 +158,6 @@ [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 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 From 538896d3eebd3ff7eaa651bbf56d4beab469a0bb Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 21:19:47 +0100 Subject: [PATCH 349/383] add submodule moreores --- .gitmodules | 3 +++ mods/moreores | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/moreores diff --git a/.gitmodules b/.gitmodules index 5738f5fe..5ea3549b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -161,3 +161,6 @@ [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 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 From d9446e98be346b883af2016314c2937e4e9ca048 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 11 Mar 2017 21:21:54 +0100 Subject: [PATCH 350/383] add submodule moretrees this also updates moretrees on the server --- .gitmodules | 3 +++ mods/moretrees | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/moretrees diff --git a/.gitmodules b/.gitmodules index 5ea3549b..a71e3225 100644 --- a/.gitmodules +++ b/.gitmodules @@ -164,3 +164,6 @@ [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 diff --git a/mods/moretrees b/mods/moretrees new file mode 160000 index 00000000..f83f167d --- /dev/null +++ b/mods/moretrees @@ -0,0 +1 @@ +Subproject commit f83f167d18843517a3751cacdb00ebd3393a2183 From 5d524af1ea5f568da6613bf77283214f739376ab Mon Sep 17 00:00:00 2001 From: Milan* Date: Sun, 12 Mar 2017 11:32:09 +0100 Subject: [PATCH 351/383] re-add submodules farming, boats --- .gitmodules | 6 ++++++ mods/boats | 1 + mods/farming | 1 + 3 files changed, 8 insertions(+) create mode 160000 mods/boats create mode 160000 mods/farming diff --git a/.gitmodules b/.gitmodules index 0b4a87b5..0be048bb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -161,3 +161,9 @@ [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 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/farming b/mods/farming new file mode 160000 index 00000000..cac6a518 --- /dev/null +++ b/mods/farming @@ -0,0 +1 @@ +Subproject commit cac6a518ca8652744d5aeb1bae5652b5d1895429 From 60dfd9087b5c73c094f68658aa694dde77c4a9e2 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sun, 12 Mar 2017 11:57:05 +0100 Subject: [PATCH 352/383] update submodule darkage --- mods/darkage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/darkage b/mods/darkage index 085f052b..8cb39e2b 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit 085f052b5a185348a4b47cbfb7fba28f50e9a82e +Subproject commit 8cb39e2b6d25809f0222451f6cdda495d64d7aa9 From 64f4f5c05f9253a620a49e374d9123e4407e3895 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sun, 12 Mar 2017 11:59:56 +0100 Subject: [PATCH 353/383] update submodule farming --- mods/farming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming b/mods/farming index cac6a518..f51fe428 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit cac6a518ca8652744d5aeb1bae5652b5d1895429 +Subproject commit f51fe4286f770510892b228656efaf8263bac38f From 98e64b823ea2b8118eb3fa3832a7f39cb77e8fc9 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sun, 12 Mar 2017 12:34:24 +0100 Subject: [PATCH 354/383] update submodule farming --- mods/farming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming b/mods/farming index f51fe428..13f99d40 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit f51fe4286f770510892b228656efaf8263bac38f +Subproject commit 13f99d40497be9784be996f54c0a19c92fc331ad From 38320f8ebb5150f84b2a30e43328744c2435cfd6 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sun, 12 Mar 2017 16:35:47 +0100 Subject: [PATCH 355/383] update submodule illuna --- mods/illuna | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/illuna b/mods/illuna index 6ef3a208..4c0d9336 160000 --- a/mods/illuna +++ b/mods/illuna @@ -1 +1 @@ -Subproject commit 6ef3a208e0415449e32e4d22c31bafc65be72d0d +Subproject commit 4c0d933695217b67c0bf9236394280145ba41e57 From f431e56cd92c2b8a1f25493a8c88223e84dce1c9 Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 12 Mar 2017 17:24:25 +0100 Subject: [PATCH 356/383] add submodule inspector --- .gitmodules | 3 +++ mods/inspector | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/inspector diff --git a/.gitmodules b/.gitmodules index 0be048bb..4005bc90 100644 --- a/.gitmodules +++ b/.gitmodules @@ -167,3 +167,6 @@ [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 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 From 640c518c1ad4e4b0f9279460259b3e22cb01386c Mon Sep 17 00:00:00 2001 From: tchncs Date: Sun, 12 Mar 2017 18:10:41 +0100 Subject: [PATCH 357/383] replace submodule mobs_redo --- .gitmodules | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 4005bc90..bcd73b6a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,9 +7,6 @@ [submodule "mods/death_messages"] path = mods/death_messages url = https://git.tchncs.de/Illuna-Minetest/death_messages.git -[submodule "mods/mobs_redo"] - path = mods/mobs_redo - url = https://github.com/tenplus1/mobs_redo [submodule "mods/mobs_animal"] path = mods/mobs_animal url = https://git.tchncs.de/Illuna-Minetest/mobs_animal.git @@ -170,3 +167,6 @@ [submodule "mods/inspector"] path = mods/inspector url = https://github.com/minetest-mods/inspector +[submodule "mods/mobs_redo"] + path = mods/mobs_redo + url = https://git.tchncs.de/Illuna-Minetest/mobs_redo From 138bb6de3d1c21157e36d41e08b80d3953dea965 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sun, 12 Mar 2017 18:16:23 +0100 Subject: [PATCH 358/383] update submodule mobs_redo --- mods/mobs_redo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_redo b/mods/mobs_redo index aa591925..f0410732 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit aa591925b11e19db50ca1d7e5a3e64c8ff2b7dc2 +Subproject commit f0410732d4e2a9c9bca6f5ade76832382f4ec116 From e8b2d29012d9635f1578e7f308b54ca6ee101c3d Mon Sep 17 00:00:00 2001 From: Milan* Date: Wed, 15 Mar 2017 08:32:48 +0100 Subject: [PATCH 359/383] update submodule moretrees --- mods/moretrees | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/moretrees b/mods/moretrees index f83f167d..2967c107 160000 --- a/mods/moretrees +++ b/mods/moretrees @@ -1 +1 @@ -Subproject commit f83f167d18843517a3751cacdb00ebd3393a2183 +Subproject commit 2967c107d8e90a531ded53357e83ef904c3ea6cd From 732154e4e08baed6314a77a710798eff030040ca Mon Sep 17 00:00:00 2001 From: tchncs Date: Mon, 15 May 2017 11:12:00 +0200 Subject: [PATCH 360/383] update submodule darkage --- mods/darkage | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/darkage b/mods/darkage index 8cb39e2b..4552ac28 160000 --- a/mods/darkage +++ b/mods/darkage @@ -1 +1 @@ -Subproject commit 8cb39e2b6d25809f0222451f6cdda495d64d7aa9 +Subproject commit 4552ac282c9162a5ab74731a5e3db3cb22ba3218 From c3c9a92035ac7d53f3e5a9a64244153b381493a5 Mon Sep 17 00:00:00 2001 From: Milan* Date: Thu, 3 Aug 2017 23:02:47 +0200 Subject: [PATCH 361/383] update submodule homedecor_modpack --- mods/homedecor_modpack | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/homedecor_modpack b/mods/homedecor_modpack index 6b396cf1..3aa09519 160000 --- a/mods/homedecor_modpack +++ b/mods/homedecor_modpack @@ -1 +1 @@ -Subproject commit 6b396cf1506b3a294bf476a61955ffa37eb25706 +Subproject commit 3aa0951941929707c280c66d9c600eded3bbbf63 From 3c307a4383fbf44e64d79aa6d9033b0664b456e1 Mon Sep 17 00:00:00 2001 From: Milan Date: Fri, 4 Aug 2017 17:15:31 +0200 Subject: [PATCH 362/383] update submodule moreblocks --- mods/moreblocks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/moreblocks b/mods/moreblocks index 01b411c7..fbfb079f 160000 --- a/mods/moreblocks +++ b/mods/moreblocks @@ -1 +1 @@ -Subproject commit 01b411c753697049b1f37c0f49abc1d216b432e6 +Subproject commit fbfb079f54e90618a0578ff33092c97c8b015cb9 From 24a7814c2c025bf93e1decf936e2df05069ff172 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 2 Sep 2017 23:05:11 +0200 Subject: [PATCH 363/383] add submodule sneak_glitch --- .gitmodules | 3 +++ mods/sneak_glitch | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/sneak_glitch diff --git a/.gitmodules b/.gitmodules index bcd73b6a..f2335fbf 100644 --- a/.gitmodules +++ b/.gitmodules @@ -170,3 +170,6 @@ [submodule "mods/mobs_redo"] path = mods/mobs_redo url = https://git.tchncs.de/Illuna-Minetest/mobs_redo +[submodule "mods/sneak_glitch"] + path = mods/sneak_glitch + url = https://github.com/SmallJoker/sneak_glitch 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 From 54ecd4eecc86e1a16056f4e027a5e3d060aaa219 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 9 Sep 2017 18:34:07 +0200 Subject: [PATCH 364/383] update submodule farming --- mods/farming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming b/mods/farming index 13f99d40..cf46b630 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit 13f99d40497be9784be996f54c0a19c92fc331ad +Subproject commit cf46b630ae74228e7020263c658d0c0d6a738223 From 90523b962d41472ddf261e284cd531cbbc23334a Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 9 Sep 2017 19:23:27 +0200 Subject: [PATCH 365/383] update submodule mycastle --- mods/mycastle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mycastle b/mods/mycastle index 68e51973..4c21ab4a 160000 --- a/mods/mycastle +++ b/mods/mycastle @@ -1 +1 @@ -Subproject commit 68e51973685072c1dc63496265e5036618e66ac5 +Subproject commit 4c21ab4a5e168b1e5b170099eb399becb0f8923d From 94ca78e36e4ec1afe029b6e2155c0d9a5a6f3f91 Mon Sep 17 00:00:00 2001 From: Milan* Date: Mon, 11 Sep 2017 22:41:16 +0200 Subject: [PATCH 366/383] update submodule plantlife_modpack --- mods/plantlife_modpack | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/plantlife_modpack b/mods/plantlife_modpack index 0447eca4..ad1b08ea 160000 --- a/mods/plantlife_modpack +++ b/mods/plantlife_modpack @@ -1 +1 @@ -Subproject commit 0447eca445a242321284de55040d57b9d0e49be7 +Subproject commit ad1b08ea0a492bb7361e89d45428c605795ec87d From 0f0486b4742c95fd31c663ba354e8d9d6688612c Mon Sep 17 00:00:00 2001 From: Milan* Date: Mon, 11 Sep 2017 22:52:50 +0200 Subject: [PATCH 367/383] update submodule moreblocks --- mods/moreblocks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/moreblocks b/mods/moreblocks index fbfb079f..df8c150c 160000 --- a/mods/moreblocks +++ b/mods/moreblocks @@ -1 +1 @@ -Subproject commit fbfb079f54e90618a0578ff33092c97c8b015cb9 +Subproject commit df8c150c9a7867dc5b5168ef28d690a033c3f594 From 8b93aa91011d86ad75ed32f008ba5111ac1de739 Mon Sep 17 00:00:00 2001 From: Milan* Date: Mon, 11 Sep 2017 22:56:26 +0200 Subject: [PATCH 368/383] update submodule homedecor_modpack --- mods/homedecor_modpack | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/homedecor_modpack b/mods/homedecor_modpack index 3aa09519..f41f09c0 160000 --- a/mods/homedecor_modpack +++ b/mods/homedecor_modpack @@ -1 +1 @@ -Subproject commit 3aa0951941929707c280c66d9c600eded3bbbf63 +Subproject commit f41f09c0050ced284f04cf40083ee42d5ee6a333 From 755c4c70670e4b353bc9968368530a23d1722fa3 Mon Sep 17 00:00:00 2001 From: Milan* Date: Mon, 11 Sep 2017 22:57:47 +0200 Subject: [PATCH 369/383] update hellochat --- mods/hellochat/init.lua | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/mods/hellochat/init.lua b/mods/hellochat/init.lua index 032a0ede..49b7899d 100644 --- a/mods/hellochat/init.lua +++ b/mods/hellochat/init.lua @@ -5,10 +5,8 @@ minetest.register_on_joinplayer(function(player) -- 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, so you need to do a few steps in order to play here. :-)")) - minetest.chat_send_player(player, core.colorize(color, "# Illuna: 1. Read our rules (how boring) at https://illuna.rocks/rules")) - minetest.chat_send_player(player, core.colorize(color, "# Illuna: 2. Join our community at https://meet.illuna.rocks and introduce yourself.")) - minetest.chat_send_player(player, core.colorize(color, "# Illuna: This is our way to protect the players, you'll love how secure this world is. ;-)")) - minetest.chat_send_player(player, core.colorize("#C3E9FF", "# Illuna: Or you just try our public servers at port 30001 and 30002... .")) + 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) From 0b607ab7415b7924151a79b3360bb54ef6c39558 Mon Sep 17 00:00:00 2001 From: Milan* Date: Mon, 11 Sep 2017 23:48:45 +0200 Subject: [PATCH 370/383] update submodule mobs_animal --- mods/mobs_animal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_animal b/mods/mobs_animal index 5687ef41..80b157eb 160000 --- a/mods/mobs_animal +++ b/mods/mobs_animal @@ -1 +1 @@ -Subproject commit 5687ef419465e69676df777f8f12a1b08738b26c +Subproject commit 80b157eb20d814513a67c1bd65501ebdd71a05ca From c4be1410e10c3a03b6d7eb68fce8b99f5df6b7cf Mon Sep 17 00:00:00 2001 From: Milan* Date: Mon, 11 Sep 2017 23:49:08 +0200 Subject: [PATCH 371/383] update submodule mobs_redo --- mods/mobs_redo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_redo b/mods/mobs_redo index f0410732..95a2e8a4 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit f0410732d4e2a9c9bca6f5ade76832382f4ec116 +Subproject commit 95a2e8a47e4ab430e793e22deed8eb5635f27b89 From f698a4124253bd9cdf9dc8275852709562bf4b68 Mon Sep 17 00:00:00 2001 From: Milan* Date: Wed, 13 Sep 2017 11:48:38 +0200 Subject: [PATCH 372/383] update submodule farming --- mods/farming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming b/mods/farming index cf46b630..7f3a4700 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit cf46b630ae74228e7020263c658d0c0d6a738223 +Subproject commit 7f3a4700e56a775175b00ec4cf8bb92d43389740 From cd4c19b76b39a3c52bf4a54f5bb4e1ba50498e86 Mon Sep 17 00:00:00 2001 From: Milan* Date: Wed, 13 Sep 2017 11:51:52 +0200 Subject: [PATCH 373/383] update submodule mobs_monster --- mods/mobs_monster | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/mobs_monster b/mods/mobs_monster index 780258a3..a6e291bf 160000 --- a/mods/mobs_monster +++ b/mods/mobs_monster @@ -1 +1 @@ -Subproject commit 780258a388a0b29fc864068d2705125a48a3ef8c +Subproject commit a6e291bf4cd26b676f28650269b5160a328686f8 From 74e6f1bf0ea01b3c338ab57e1b939669c3f0c747 Mon Sep 17 00:00:00 2001 From: Milan Date: Wed, 13 Sep 2017 11:55:49 +0200 Subject: [PATCH 374/383] fix submodule mobs_animal --- .gitmodules | 6 +++--- mods/mobs_animal | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index f2335fbf..78bf6daf 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,9 +7,6 @@ [submodule "mods/death_messages"] path = mods/death_messages url = https://git.tchncs.de/Illuna-Minetest/death_messages.git -[submodule "mods/mobs_animal"] - path = mods/mobs_animal - url = https://git.tchncs.de/Illuna-Minetest/mobs_animal.git [submodule "mods/worldedit"] path = mods/worldedit url = https://github.com/Uberi/Minetest-WorldEdit @@ -173,3 +170,6 @@ [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 diff --git a/mods/mobs_animal b/mods/mobs_animal index 80b157eb..51ac8cc9 160000 --- a/mods/mobs_animal +++ b/mods/mobs_animal @@ -1 +1 @@ -Subproject commit 80b157eb20d814513a67c1bd65501ebdd71a05ca +Subproject commit 51ac8cc9302637c95867a86264cac004e3426325 From 199b9fb4c240ab734ec6d4cb69849356596eb94e Mon Sep 17 00:00:00 2001 From: Milan Date: Wed, 13 Sep 2017 11:56:53 +0200 Subject: [PATCH 375/383] fix submodule mobs_redo --- .gitmodules | 6 +++--- mods/mobs_redo | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index 78bf6daf..b546a66f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -164,12 +164,12 @@ [submodule "mods/inspector"] path = mods/inspector url = https://github.com/minetest-mods/inspector -[submodule "mods/mobs_redo"] - path = mods/mobs_redo - url = https://git.tchncs.de/Illuna-Minetest/mobs_redo [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 diff --git a/mods/mobs_redo b/mods/mobs_redo index 95a2e8a4..622d04b9 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit 95a2e8a47e4ab430e793e22deed8eb5635f27b89 +Subproject commit 622d04b9e3bc9285ea6250d25d4d7f1dc0e2d471 From 363dcb8fd23163b5b70226eaf286b6c6250c89d0 Mon Sep 17 00:00:00 2001 From: Milan* Date: Wed, 13 Sep 2017 19:13:30 +0200 Subject: [PATCH 376/383] increase leafdecay radius for acacia --- mods/default/nodes.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index d6f2d3a8..b7274c81 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -2219,7 +2219,7 @@ end default.register_leafdecay({ trunks = {"default:acacia_tree"}, leaves = {"default:acacia_leaves"}, - radius = 2, + radius = 3, }) default.register_leafdecay({ From d311dc50c6fb35700afdee87e9049e444e22557a Mon Sep 17 00:00:00 2001 From: Milan* Date: Wed, 13 Sep 2017 19:31:29 +0200 Subject: [PATCH 377/383] update submodule farming --- mods/farming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming b/mods/farming index 7f3a4700..4e3ed4f1 160000 --- a/mods/farming +++ b/mods/farming @@ -1 +1 @@ -Subproject commit 7f3a4700e56a775175b00ec4cf8bb92d43389740 +Subproject commit 4e3ed4f1a01d7c2225ac348c5c6be457e2ac9038 From c5b236bb7c4bbee6b2183748704300a60cdf4778 Mon Sep 17 00:00:00 2001 From: Milan Date: Tue, 9 Jan 2018 22:36:00 +0100 Subject: [PATCH 378/383] make irc a submodule --- .gitmodules | 3 +++ mods/irc | 1 + 2 files changed, 4 insertions(+) create mode 160000 mods/irc diff --git a/.gitmodules b/.gitmodules index b546a66f..52180557 100644 --- a/.gitmodules +++ b/.gitmodules @@ -173,3 +173,6 @@ [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/mods/irc b/mods/irc new file mode 160000 index 00000000..d4724a80 --- /dev/null +++ b/mods/irc @@ -0,0 +1 @@ +Subproject commit d4724a8090f3bf5d4ebeccb848af9af17a252d5d From ec1d74478eb624c184c5c5e2217e6b2be2cacd8a Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 13 Jan 2018 15:28:54 +0100 Subject: [PATCH 379/383] remove fire abm's update mobs_{redo,animal} --- mods/fire/init.lua | 19 ++++++++++++------- mods/mobs_animal | 2 +- mods/mobs_redo | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/mods/fire/init.lua b/mods/fire/init.lua index a846b289..5fc51b7b 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,13 @@ minetest.register_abm({ -- Enable the following ABMs according to 'enable fire' setting +<<<<<<< HEAD local fire_enabled = minetest.setting_getbool("enable_fire") +======= +--[[ +local fire_enabled = minetest.settings:get_bool("enable_fire") +>>>>>>> 2e47e09... fire: remove fire abm's, make fire nodes last 20-30 seconds 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 +361,4 @@ else -- Fire enabled end, }) -end +end]] diff --git a/mods/mobs_animal b/mods/mobs_animal index 51ac8cc9..80b157eb 160000 --- a/mods/mobs_animal +++ b/mods/mobs_animal @@ -1 +1 @@ -Subproject commit 51ac8cc9302637c95867a86264cac004e3426325 +Subproject commit 80b157eb20d814513a67c1bd65501ebdd71a05ca diff --git a/mods/mobs_redo b/mods/mobs_redo index 622d04b9..95a2e8a4 160000 --- a/mods/mobs_redo +++ b/mods/mobs_redo @@ -1 +1 @@ -Subproject commit 622d04b9e3bc9285ea6250d25d4d7f1dc0e2d471 +Subproject commit 95a2e8a47e4ab430e793e22deed8eb5635f27b89 From af2a921a305a1055a33d9ac5679348da4755c172 Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 13 Jan 2018 20:59:00 +0100 Subject: [PATCH 380/383] update submodule hudbars --- mods/hudbars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/hudbars b/mods/hudbars index e9bfd222..8d864a49 160000 --- a/mods/hudbars +++ b/mods/hudbars @@ -1 +1 @@ -Subproject commit e9bfd2221f8b68ccbdb8a44155a8c51a54eaaec4 +Subproject commit 8d864a49548457ccb3944a62b6a4338f962d4c64 From 68cb28f2586f8af5c7eee365d044a86452498f6f Mon Sep 17 00:00:00 2001 From: Milan* Date: Sat, 13 Jan 2018 23:40:57 +0100 Subject: [PATCH 381/383] update submodule death_messages --- mods/death_messages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/death_messages b/mods/death_messages index 23c57bf0..b84a287d 160000 --- a/mods/death_messages +++ b/mods/death_messages @@ -1 +1 @@ -Subproject commit 23c57bf000ce48a00c3991d8ef8f011e8c6cf75b +Subproject commit b84a287dddf3ee57fa8178cf8504a4180b60f28a From 47e91698cb0dc16774bc3ebf11d97e227e235d08 Mon Sep 17 00:00:00 2001 From: Milan Date: Tue, 16 Jan 2018 18:49:43 +0100 Subject: [PATCH 382/383] update submodule death_messages --- mods/death_messages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/death_messages b/mods/death_messages index 23c57bf0..b84a287d 160000 --- a/mods/death_messages +++ b/mods/death_messages @@ -1 +1 @@ -Subproject commit 23c57bf000ce48a00c3991d8ef8f011e8c6cf75b +Subproject commit b84a287dddf3ee57fa8178cf8504a4180b60f28a From bc70d2dec77e46a224c6a7005e80aeae1e28dcd1 Mon Sep 17 00:00:00 2001 From: Milan Date: Wed, 17 Jan 2018 10:39:25 +0100 Subject: [PATCH 383/383] ooops --- mods/fire/init.lua | 5 ----- 1 file changed, 5 deletions(-) diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 5fc51b7b..fb3aca3f 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -288,13 +288,8 @@ minetest.register_abm({ -- Enable the following ABMs according to 'enable fire' setting -<<<<<<< HEAD - -local fire_enabled = minetest.setting_getbool("enable_fire") -======= --[[ local fire_enabled = minetest.settings:get_bool("enable_fire") ->>>>>>> 2e47e09... fire: remove fire abm's, make fire nodes last 20-30 seconds if fire_enabled == nil then -- New setting not specified, check for old setting. -- If old setting is also not specified, 'not nil' is true.