From 90f24e312d41b59b98fe78e2ed0979aacb17eeb9 Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 17 May 2016 01:34:52 +0100 Subject: [PATCH 001/196] Default: Remove unnecessary infotexts for chests and signs --- mods/default/nodes.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index d494e1af..a97a30fa 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1447,7 +1447,6 @@ minetest.register_node("default:chest", { on_construct = function(pos) local meta = minetest.get_meta(pos) meta:set_string("formspec", chest_formspec) - meta:set_string("infotext", "Chest") local inv = meta:get_inventory() inv:set_size("main", 8*4) end, @@ -1498,7 +1497,6 @@ minetest.register_node("default:chest_locked", { end, on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("infotext", "Locked Chest") meta:set_string("owner", "") local inv = meta:get_inventory() inv:set_size("main", 8 * 4) @@ -1636,7 +1634,6 @@ local function register_sign(material, desc, def) --local n = minetest.get_node(pos) local meta = minetest.get_meta(pos) meta:set_string("formspec", "field[text;;${text}]") - meta:set_string("infotext", "\"\"") end, on_receive_fields = function(pos, formname, fields, sender) --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields)) From b1e0864cf195d65142ef361fc287c09eaa8f2667 Mon Sep 17 00:00:00 2001 From: red-001 Date: Thu, 19 May 2016 19:40:13 +0100 Subject: [PATCH 002/196] 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 b9422ed44e0a175278cd7e49909b385a94380e11 Mon Sep 17 00:00:00 2001 From: Thomas--S Date: Thu, 19 May 2016 20:43:46 +0200 Subject: [PATCH 003/196] 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 004/196] 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 d8daee7e477ad23affe0b510a86663802099e711 Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 21 May 2016 03:32:50 +0100 Subject: [PATCH 005/196] 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 3e5f3f28d2dea61f0bebd11785d9f1f139441904 Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 21 May 2016 03:49:28 +0100 Subject: [PATCH 006/196] 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 fc902a77de1e54b85076b2a0682fb30dd70359dc Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sat, 21 May 2016 23:15:59 -0700 Subject: [PATCH 007/196] Boats: Lower boat collision box top Standing on a boat makes you appear to "hover" over it since this collision box is way too high. Lower it so that it's low enough to look normal when walking on top of a boat --- mods/boats/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/boats/init.lua b/mods/boats/init.lua index f8d0ccb4..f481b2a3 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -34,7 +34,7 @@ end local boat = { physical = true, - collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.3, 0.5}, + collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.15, 0.5}, visual = "mesh", mesh = "boats_boat.obj", textures = {"default_wood.png"}, From 70ef7864c1533cc50ef1da95985ff6b741778066 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Mon, 22 Feb 2016 22:28:17 -0800 Subject: [PATCH 008/196] Farming: Convert plants to use node timers This PR requires @minetest/minetest#3677 Farming and plant growth has traditionally in minetest been implemented using ABM's. These ABM's periodically tick and cause plants to grow. The way these ABM's work has several side effects that can be considered harmful. Not to mention a comprehensive list of downsides here, but ABM's are chance-dependent. That results in the chance that some nodes potentially never get processed by the ABM action, and others get processed always. One can easily find this effect by planting a large field of crops, and seeing that some nodes are fully grown really fast, and some just won't make it to fully grown status even after hours or play time. One could solve the problem by making the ABM's slower, and giving them a 100% of action, but this would cause the entire field to grow a step instantly at ABM intervals, and is both ugly, and a large number of node updates that needs to be sent out to each client. Very un-ideal. With NodeTimers though, each node will see a separate node timer event, and they will likely not coalesce. This means that we can stop relying on chance to distribute plant growth, and assign a single timer event to grow the plant to the next phase. Due to the timer implementation, we won't ever miss a growth event, and we can re-scehdule them until the plant has reached full size. Previously, plants would attempt to grow every 9 seconds, with a chance of 1/20. This means typically, a plant would need 9*20 seconds to grow 1 phase, and since there are 8 steps, a typical plant growth would require 9*20*8 ABM node events. (spread out over 9*8 ABM actual underlying events per block, roughly). because plants are likely not growing to full for a very long time due to statistics working against it (5% of the crops take 20x longer than the median to grow to full, we'd be seeing ABMs fire possibly up to 9*20*8*20 with a 95% confidence interval (the actual math is likely off, but the scale should be correct). That's incredibly wasteful. We'd reach those conditions easily with 20 plant nodes. Now, after we convert to NodeTimers, each plant node will see exactly 8 NodeTimer events, and no more. This scales lineairly per plant. I've tuned the growth rate of crops to be mature in just under 3 whole days. That's about 1hr of game time. Previously, about half the crops would grow to full in under 2 days, but many plants would still not be mature by the end of day 3. This is more consistent. An additional problem in the farming mod was that the final fully-grown plant was also included in the ABM, causing infinite more ABM's even after the entire field had grown to completion. Now, we're left with the problem that none of the pre-existing plants have actual node timers started on them, and we do not want a new ABM to fix this issue, since that would be wasteful. Fortunately, there is now an LBM concept, and we can use it to assure that NodeTimers on crop nodes are properly started, and only have to do the actual conversion once per block, ever. We want to provide a fairly similar growth rate after this conversion and as such I've resorted to modelling some statistical data. For this I created a virtual 32x32 crop field with 9 steps (8 transitions) as is the default wheat crop. We then apply a step where 1 in 20 plants in the field grows a step (randomly chosen) and count the number of steps needed to get to 25%, 50, 75% and 95% grown. The resulting data looks as follows: 25% - ~120 steps * 9 sec / abm = 1080s 50% - ~152 steps = 1368s 75% - ~194 steps = 1746s 95% - ~255 steps = 2295s Next, we want to create a model where the chance that a crop grows is 100% every node timer. Since there will only be 8 steps ever, we want the slowest crops to grow in intervals of ~ 2300 / 8 seconds and the fastest 1/4 of crops to grow 1080 / 8 seconds intervals. We can roughly compare this to a normal distribution with a median of 1400 with a stddev of ~350 (thick fingering this one here). The rest is a bit of thick-fingering to get similar growth rates, taking into account that ABM's fire regularly so if they're missed it's fairly painless, but our timers are going to be 1-2 minutes apart at minimum. I calculate the timer should be around 150s median, and experimented with several jitter ranges. Eventually I settled for now on [80,200] with a redo of [40,80], meaning that each growth step at minimum takes (80 to 200) seconds, and if a negative growth condition was found (darkness, soil not wet, etc), then the growth step is retried every (40 to 80) seconds. The end result is a growth period from seed to full in ~ 2.25 minetest days. This is a little bit shorter than the current growth rate but the chances you'll miss timer ticks is a bit larger, so in normal gameplay it should be fairly comparable. A side effect is that fields grow to full yield fairly quickly after crops make it to mature growth, and no crops are mature a very long time before the majority grows to full. The spread and view over a growing field is also fairly even, there's no large updates with plenty of nodes. Just a node here or there every second or so in large fields. Ultimately, we get rid of ABM rollercoasters that cause tens of node updates every 9 seconds. This will help multiplayer servers likely a lot. --- mods/farming/api.lua | 172 ++++++++++++++++++++++++++----------------- 1 file changed, 105 insertions(+), 67 deletions(-) diff --git a/mods/farming/api.lua b/mods/farming/api.lua index 68f7be75..e25d5b91 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -1,3 +1,4 @@ + -- Wear out hoes, place soil -- TODO Ignore group:flower farming.hoe_on_use = function(itemstack, user, pointed_thing, uses) @@ -9,11 +10,11 @@ farming.hoe_on_use = function(itemstack, user, pointed_thing, uses) 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 @@ -21,23 +22,23 @@ farming.hoe_on_use = function(itemstack, user, pointed_thing, uses) 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 @@ -47,14 +48,13 @@ farming.hoe_on_use = function(itemstack, user, pointed_thing, uses) 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 @@ -119,6 +119,15 @@ farming.register_hoe = function(name, def) 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 @@ -129,10 +138,10 @@ farming.place_seed = function(itemstack, placer, pointed_thing, plantname) 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 @@ -142,7 +151,6 @@ farming.place_seed = function(itemstack, placer, pointed_thing, plantname) return end - -- return if any of the nodes is not registered if not minetest.registered_nodes[under.name] then return @@ -150,30 +158,86 @@ farming.place_seed = function(itemstack, placer, pointed_thing, plantname) 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] @@ -200,6 +264,7 @@ farming.register_plant = function(name, def) 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 @@ -228,6 +293,10 @@ farming.register_plant = function(name, def) 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 @@ -237,7 +306,7 @@ farming.register_plant = function(name, def) }) -- Register growing steps - for i=1,def.steps do + for i = 1, def.steps do local drop = { items = { {items = {mname .. ":" .. pname}, rarity = 9 - i}, @@ -248,6 +317,16 @@ farming.register_plant = function(name, def) } 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, @@ -262,61 +341,20 @@ farming.register_plant = function(name, def) }, groups = nodegroups, sounds = default.node_sound_leaves_defaults(), + next_plant = next_plant, + on_timer = farming.grow_plant, + minlight = def.minlight, + maxlight = def.maxlight, }) end - -- Growing ABM - minetest.register_abm({ - nodenames = {"group:" .. pname, "group:seed"}, - neighbors = {"group:soil"}, - interval = 9, - chance = 20, + -- replacement LBM for pre-nodetimer plants + minetest.register_lbm({ + name = "farming:start_nodetimer_" .. mname .. "_" .. pname, + nodenames = lbm_nodes, 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 + tick_again(pos) + end, }) -- Return From e0cb3fce02d172e477ed8bee3735fc7a13ed58c4 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sun, 6 Mar 2016 21:39:07 -0800 Subject: [PATCH 009/196] 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 a97a30fa..9c1dc447 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 d61803b65f22b5cd32f7938c64578b04dd437154 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sat, 12 Mar 2016 20:19:37 -0800 Subject: [PATCH 010/196] Fire: move fire node removal out of ABM. Because the fire nodes are not removed 100% when there are no more burnable nodes nearby, they can potentially stay around for very, very long times, leading to ABM trains every 5 seconds for no good reason (only 1 in 16 will be removed every interval). A much better method to remove fire nodes is to remove them by timer, and give removal a 100% chance if no flammable nodes are adjacent. This makes fire cleanup a lot faster and more natural, and will reduce the amount of ABM hits making fire overall more responsive. We also remove the 1 in 4 chance and fold the removal of flammable nodes into the ABM chance. There's some low hanging fruit cleanups in here as well. --- 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 37347d40f4668ab2ed2e231e3008fd0bbb947df5 Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 24 May 2016 05:29:30 +0100 Subject: [PATCH 011/196] Default: Bookshelf has 2 openings instead of 4 Make rotatable with 'paramtype2 = facedir' --- 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 9c1dc447..3b6e0b1d 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1586,7 +1586,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 541b2d79c7813663feaa50c64151c175aef0f95f Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 22 May 2016 00:54:57 +0100 Subject: [PATCH 012/196] Default: New mese texture. Add missing texture credits Mese texture is a classic-mese-yellow version of celeron55's texture used in MTv0.4.0 Add missing texture credits for mese crystal and mese crystal fragment --- mods/default/README.txt | 3 +++ mods/default/textures/default_mese_block.png | Bin 224 -> 188 bytes 2 files changed, 3 insertions(+) diff --git a/mods/default/README.txt b/mods/default/README.txt index 8e72ca5e..051af060 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -58,6 +58,8 @@ VanessaE (WTFPL): default_desert_sand.png default_desert_stone.png default_sand.png + default_mese_crystal.png + default_mese_crystal_fragment.png Calinou (CC BY-SA): default_brick.png @@ -121,6 +123,7 @@ paramat (CC BY-SA 3.0): default_grass.png default_grass_side.png default_snow_side.png + default_mese_block.png brunob.santos (CC BY-SA 4.0): default_desert_cobble.png diff --git a/mods/default/textures/default_mese_block.png b/mods/default/textures/default_mese_block.png index 2e6895d370621397b51f5e960bb04ece03971345..e30994e21c3104b547ef397a1fa7e01dc956b8c5 100644 GIT binary patch delta 172 zcmaFBxQB6qL_HHT0|P_ST=7ppiYLG)#C6#+hBIdvo;_pu|DT~r^}8KVoU_0qvY3H^ z?+6GpPSxg<1`4v5c>21sKVX$$v69y)wJHJ%IeWS|hHzX@zVZM6fBUxb*Wdo9RP4>Z z>eUv$UaY`q&kLrFTN>7cuWnf5-YsPzdG9~77Ncr$yum>gxq^d{J`SqE&d!G!{!Z7Z U7Qd-|0cakBr>mdKI;Vst0H0?)dH?_b delta 208 zcmV;>05AW%0pJ0U7=Hu<0002(-QrRJ0016POjJd}!~p;Q1?A`f$jSiWf1?cMl z`TPa(^aR@70PQl@MgRZ+eMv+?R0!8&P;mhRPX-SKafKiT24MzQ1tx|jwlrY|M}-L! zgculufg+I#LTrh`4DJdN3POy6%|IzZg(e1uVg|=R(Lm9PQc0j Date: Sun, 29 May 2016 16:46:34 -0700 Subject: [PATCH 013/196] Doors: Pass pointed_thing to on_rightclick() callback This is an omission technicality. The callee should be able to trust this isn't `nil` --- 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 6386684f3efd07443cc4ae25b0b3da22cfabaa33 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 5 May 2016 00:55:56 +0100 Subject: [PATCH 014/196] Fire: Ignite tnt, gunpowder, permanent flame above coalblock Enable ignition of tnt, gunpowder and permanent flame above coalblock using flint and steel Override coalblock to remove flame above when dug Add depends.txt for default mod --- 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 dcf2465441c69550b4a41f8446abdc3981bd5a85 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sat, 28 May 2016 23:21:54 -0700 Subject: [PATCH 015/196] Farming: allow LBM's for other mods as well. Fixes #1114 --- mods/farming/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming/api.lua b/mods/farming/api.lua index e25d5b91..966910f6 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -350,7 +350,7 @@ farming.register_plant = function(name, def) -- replacement LBM for pre-nodetimer plants minetest.register_lbm({ - name = "farming:start_nodetimer_" .. mname .. "_" .. pname, + name = ":" .. mname .. ":start_nodetimer_" .. pname, nodenames = lbm_nodes, action = function(pos, node) tick_again(pos) From b5ea7d17b26f84d5a37b03c27d95b4583e6767c0 Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 5 Jun 2016 17:21:15 +0100 Subject: [PATCH 016/196] 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 2199be51087d0d9661d1b3f80c0bb2a55410458b Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Mon, 30 May 2016 12:03:55 -0700 Subject: [PATCH 017/196] Stairs: Add mossy cobble slab and stair Allow water to turn cobble slab and stairs to turn into mossy versions. There is no crafting recipe for mossy stairs and mossy slabs, the stair/slab API has been modified to allow for a recipeitem that is `nil`, which will omit adding a crafting recipe for these two items. The API documentation is updated. The slabs and stairs will turn mossy when water is adjacent, just like cobblestone. You can either farm mossy versions by placing them in water for a while, then collecting them, or run water over your craft. --- 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 7e594b31..f3bb97cd 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -466,12 +466,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 7c28fa4f..2195e4d4 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -87,24 +87,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 @@ -218,12 +220,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 @@ -310,6 +314,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 da0fe31443df586198c1265d08deb5458017e664 Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 14 Jun 2016 21:16:22 +0100 Subject: [PATCH 018/196] Boats: Raise collisionbox top surface to fix boat behaviour Lowering the top surface to be level with the boat top somehow causes the boat to fall through world if underwater. Revert to previous position that is needed for correct behaviour --- mods/boats/init.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/boats/init.lua b/mods/boats/init.lua index f481b2a3..0097a57a 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -34,7 +34,9 @@ end local boat = { physical = true, - collisionbox = {-0.5, -0.35, -0.5, 0.5, 0.15, 0.5}, + -- 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"}, From 50eb07981366ec4e7682c3bf292f74c321e8de99 Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 14 Jun 2016 21:44:49 +0100 Subject: [PATCH 019/196] Creative: Add missing 'formspec_escape' to fix bug Symbols used in search caused the game to hang with a grey screen, for example searching for 'diamond;ingot' --- mods/creative/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/creative/init.lua b/mods/creative/init.lua index 0f5bd364..7f952d32 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -124,7 +124,7 @@ 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;;" .. inv.filter .. "]" .. + "field[0.3,3.5;2.2,1;creative_filter;;" .. minetest.formspec_escape(inv.filter) .. "]" .. "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 ba1ae07b4a7b59fd27614b3d93ddc7faca28e3cf Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sun, 29 May 2016 13:45:18 -0700 Subject: [PATCH 020/196] Default: Make brick and plank nodes rotatable Allow many crafted nodes to be rotated in any way possible. These blocks all have slab and stair versions, which can create awkward patterns if placed together. By allowing these to be rotated players can create new patterns and appearances that were not before possible. Since this wasn't possible before, there won't be any effect to existing builds, as param2 should always be '0'. The current screwdriver mod also refuses to rotate and alter param2, so this is safe to enable from now on. Personally, since these are all *crafted* nodes to begin with, it should be apparent that they can be rotated to begin with, but I can see people may disagree from a simplicity perspective. It also may affect param2 usage that other mods rely on, although I'm not aware of any mods that do this. --- mods/default/nodes.lua | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 3b6e0b1d..dcd92ecc 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}, @@ -1815,6 +1833,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 5775c9147c71c3a110d8106afc281a1a5935219f Mon Sep 17 00:00:00 2001 From: cd2 Date: Sat, 11 Jun 2016 18:50:22 +0200 Subject: [PATCH 021/196] Farming: Add negative fall_damage_add_percent to straw This doubles the fall height without damage to 11 nodes. --- mods/farming/nodes.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua index b55a1aaa..c011df1e 100644 --- a/mods/farming/nodes.lua +++ b/mods/farming/nodes.lua @@ -89,7 +89,7 @@ minetest.register_node("farming:straw", { description = "Straw", tiles = {"farming_straw.png"}, is_ground_content = false, - groups = {snappy=3, flammable=4}, + groups = {snappy=3, flammable=4, fall_damage_add_percent=-30}, sounds = default.node_sound_leaves_defaults(), }) From 3e9afe097c74b0dd32d3983a3de37c66946a42d3 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sat, 12 Mar 2016 16:12:37 -0800 Subject: [PATCH 022/196] Doors: Clean up nodedef usage Allows for more properties to be passed through. Somewhat simplifies the code as well. --- 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 e0bec501f224dbe93387c709c8257b90ae25dda7 Mon Sep 17 00:00:00 2001 From: Yutao Yuan Date: Fri, 17 Jun 2016 22:47:43 +0800 Subject: [PATCH 023/196] Flowers: Fix misaligned waterlily texture Previously waterlily has misaligned top and bottom textures and looks different when viewed from below. This also hides the flower in bottom 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 1fafed33873ab499d9c0c44068fb2addee25b3e3 Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 19 Jun 2016 05:27:06 +0100 Subject: [PATCH 024/196] Default: Remove mortar from stone brick, desert stone brick --- .../textures/default_desert_stone_brick.png | Bin 611 -> 552 bytes mods/default/textures/default_stone_brick.png | Bin 583 -> 545 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/default/textures/default_desert_stone_brick.png b/mods/default/textures/default_desert_stone_brick.png index 42d9f2773dd0c41bf16a81105810dce86084a3ac..941523ecc070604a7a2604851414280aa37ed474 100644 GIT binary patch delta 499 zcmVF|OLEjO5Pj{)`uHm=BadxaQaoaz!6azWrS5)uuRo&euU|~>0CYZNgmhG% zv~nDHp|yl2)bcd|)Nduhw(j+7wFZ zgxlx_z`bb!D4x$0FF0eJ4_j?c@&BeLx0dIL5r{x6Je_t&TSEO`gKwQ@rN{xC;#qo8NC1kn zLh!i~r-;t^MBh7~0qk-$O9Z;J%R)s&0QFzib*XBR%be}IAtBk#_8}rh0Kg9z0PWyg p7v3%Etv0vX5GczCz-DIv`~mAK`ywamaBctq002ovPDHLkV1m+d=_LRF delta 559 zcmV+~0?_@a1mgsdKY!l{5EK;)^qnj;00064Nkl2Mxd!2&hjwtIKjLdQ7J?IK-x~t0+Wz^_m4Y)*R7g?DBXvO7^+N&>Q9>Y4V{Bac z05?sn6f7ZhgY^LbW*L8Xb-wF000IFxdy!EJ&eN3ToS)!d81$md0nBq*NU_|vQB{=* zguqsf`nB9dMt=Z>U;v&rjj|5F;6?zFGXU$h|M>cX{a)`bii{ZYGqDf-C%i|w#MBp&dxG%%At~?l7dCLZm`{8dpD=aaG5OvaS?7_Dr%Q_%M1e xSrT)2RVd}7_kXtgO7hWrmLwTZVNRc9SwcSID z9*XuKTJ$>$6zFgH5fr&JmTUuxP4OWF5qnri$Q~A$ea!C8vOm9nb!`VAk0ai!QVKvR zWsXqxd^(G+?Y6r;fDmJC4BnZw_IkYnV2oL70sMV@6abua0DnHL*8p}84^&+nzuRJ+PWqdYIDw|ltiV} zYPs~@TWg6708KcwEr9d+3_wb0v{q7ylrtrU5RBII#UVz5M(Z+702t?tGcmmu@4ePK z41pHNIlsKTlz-`_>D~Pu03{XUtnYhaO!f1}cdZQo#!#sWKzBTS`}*bI(-VLY0x7Gt z1|T-u-7pM9HjX0zRaK|cX|Z6N%@#n+dET=&MgUl?R@cjgalT%!ZCwMHUMKVRM7o4A zM)39r#yN>Y`h*w;?_JYeFP9MG`}d2!@9(9YG4Z98@?|(44hN(4JYfhSrzGZTO3*8m zR7y&U%oB1-0K{s!Bz$>(c1?3@u5Smprcp{srM&l4DR%ok08+i}jsWtQV@#hvermg8 i+a39WQ*+yOrIi1r`0=pcmt^z+0000v1jhuBKY!l{5EC#Yvhddr0005zNklfjN6r5z8*omF&mRt8+ zp>nANsN#l@_yr(-9})-t4(buwihgL@Zq+v1#ED}kip}9cgirIH=lP9iqVM0nZZn9Ds2c>$-WUo<4qfzq!4m9D?^!6~=T@O7`>DDYa%>w)gj|)#~x7y1Ke1o&Ouf zh}s$BoFj{^wIr`BOCptJNy%!hS!c|8y(U{ICZ2LPIDaYS-F8b&vXRQgyW?Z$+%OEB za{!$4s@k!Hz1Z6WB7~5pDUGFRnj{IMb#2#Cc1lXqn`OGR&e4-E4-O~|08P`dv-9&j z%K@0)gb=jW#`H?5-t=wT0{C%q()Ya(;_s)GQe^N9ilXq|UvD-_DFEL4`6@}0Ki(lL VXQqJ Date: Mon, 20 Jun 2016 18:05:07 +0300 Subject: [PATCH 025/196] Default: Fix character model uv-mapping Arm and leg textures are now edge-consistent --- 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 01:41:26 +0100 Subject: [PATCH 026/196] 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 2195e4d4..8a4ebdad 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -89,7 +89,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, ""}, @@ -99,7 +99,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 9d6df824d6062fdf8bfd7c6c204753f13b3b1ac7 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 23 Jun 2016 04:37:19 +0100 Subject: [PATCH 027/196] 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 051af060..41dd1eb0 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -114,6 +114,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 dcd92ecc..494a4cb1 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 028/196] 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 22dc7b2d9e14e0cca72ff7518c60584f9ea5800d Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 26 Jun 2016 03:11:42 +0100 Subject: [PATCH 029/196] 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 8a4ebdad..4a15b5a6 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -328,6 +328,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"}, @@ -349,13 +356,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"}, @@ -363,6 +377,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"}, @@ -377,6 +398,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 983af7b1c0a01436fe38111d5aed664e4765d7ea Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 26 Jun 2016 03:57:30 +0100 Subject: [PATCH 030/196] Stairs: Code cleanup, fix various errors Improve registration format Fix groups not matching corresponding full node Improve some descriptions --- 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 4a15b5a6..faaa92b3 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -256,8 +256,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 @@ -265,184 +265,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 6bf552eb10ff4ecdf27324d2a4d6a19a83b92a75 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Wed, 18 May 2016 08:18:59 +0100 Subject: [PATCH 031/196] Creative: Document creative.formspec_add in game_api.txt --- game_api.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/game_api.txt b/game_api.txt index 93cf0527..ca090c4b 100644 --- a/game_api.txt +++ b/game_api.txt @@ -61,6 +61,11 @@ Beds API } } +Creative API +------------ + +A global string called `creative.formspec_add` was added which allows mods to add additional formspec elements onto the default creative inventory formspec to be drawn after each update. + Doors API --------- From be918d2d98b5af15f0d99b271e1e29e5c53fac2c Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sun, 22 May 2016 10:31:21 +0100 Subject: [PATCH 032/196] 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 f15f35c6042e61f27c32eaad5d24a1b9c143110e Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Mon, 23 May 2016 08:02:48 +0100 Subject: [PATCH 033/196] 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 84e4ae1881504153f7c3c9011fc612bb1d0469a6 Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 21 Jun 2016 22:53:09 +0100 Subject: [PATCH 034/196] 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 f796194c6959ca4e560bfcb03f173e06a94755de Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 23 Jun 2016 03:06:57 +0100 Subject: [PATCH 035/196] Doors: Add dedicated sounds for glass doors Changed node sounds for steel door/trapdoor to stone defaults instead of wood defaults --- 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 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 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 15b82f5b03228f0ded4760ed17934a726ca0003b Mon Sep 17 00:00:00 2001 From: HybridDog Date: Mon, 27 Jun 2016 14:02:44 +0200 Subject: [PATCH 036/196] 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 1231f726280decf506d36a25d5494302ebb31818 Mon Sep 17 00:00:00 2001 From: HybridDog Date: Mon, 27 Jun 2016 14:04:35 +0200 Subject: [PATCH 037/196] 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 55fd28608339cd4fddfc3a378dec10dbc8ab7bda Mon Sep 17 00:00:00 2001 From: Thomas--S Date: Thu, 30 Jun 2016 19:08:55 +0200 Subject: [PATCH 038/196] 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 f4f9e58ef2b537a65654c76ad99486cf4e7e497a Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 30 Jun 2016 22:16:46 +0100 Subject: [PATCH 039/196] Flowers: Make waterlily floodable When waterlilies are placed near river water source make flowing river water remove waterlilies instead of flowing around them in an ugly way --- mods/flowers/init.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index 2f3cfe1b..2de575fe 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 80d49095f5decc3407275016612abc275da601a9 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sun, 3 Jul 2016 17:40:43 +0100 Subject: [PATCH 040/196] Tidy sethome code, add global functions, round coords to 1 decimal - Global functions sethome.set(name, pos) , sethome.get(name) and sethome.go(name) - Tidy: trim coords to one decimal place and write to table and output table in one go. - Add error checking - Add t4im's homepos loader --- 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 21b457c9e1df74f6e0a38bf44eaf6f3a05bdf232 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Fri, 1 Jul 2016 17:45:24 +0200 Subject: [PATCH 041/196] Bucket: Correct liquid placing in protected areas - Placing liquid inside a protected area no longer returns an empty bucket - Remove on_place function, tidy up code, return proper itemstack - Shorten code (changes from HybridDog/patch-35) --- 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 1886d293d750425e250d65270385b30515d20f26 Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 2 Jul 2016 04:10:29 +0100 Subject: [PATCH 042/196] Default/mapgen: Clean up ore registrations Re-order registrations Add and improve comments Change sand blob ymax to 0 as sand does not always rise above 0 Remove dirt blobs from sandstone as it is unsuitable for many sandstone biomes and ugly in stony sandstone desert Change ymax of first iron region to 0 --- 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 d476d017a497fad925ef4cab75694be045b78dbe Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 3 Jul 2016 07:33:48 +0100 Subject: [PATCH 043/196] Default/mapgen: Add ores above y = 1024 Each ore's rarity is equal to that occuring below 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 d42f77cc5fd0d45997adfded2f26882e5328ff77 Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 3 Jul 2016 08:52:53 +0100 Subject: [PATCH 044/196] Default/mapgen: Simplify iron ore registrations Preserve overlapping registrations of large and small clusters below y = -64 but now extend the small clusters up to y = 0 (the previous highest iron ore level) in a similar to way to coal --- 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 c5b0fe72ea47c9c2ede2d0097e53e6c0a7c514f6 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Mon, 4 Jul 2016 09:12:37 +0100 Subject: [PATCH 045/196] Game_api.txt: Add API information for sethome functions - Documentation for sethome.get, sethome.set and sethome.go --- game_api.txt | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/game_api.txt b/game_api.txt index ca090c4b..e80b2043 100644 --- a/game_api.txt +++ b/game_api.txt @@ -338,6 +338,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 98551edd942f1dd7a2c597e4ac4ba6504ebcdd93 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Mon, 4 Jul 2016 11:59:07 +0100 Subject: [PATCH 046/196] 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 e80b2043..e04a33b4 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 497e6f6257d3f126fb4c578e84fb79e3d31b5c46 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Mon, 27 Jun 2016 16:45:40 +0200 Subject: [PATCH 047/196] TNT: When disabled leave some useful functionality enabled - Only remove the TNT craft recipe, tnt:tnt node and the ABM - Leave tnt:tnt_burning available for explosions in 3rd party mods --- mods/tnt/init.lua | 93 ++++++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 46 deletions(-) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 9fd97f49..a481ae95 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -1,10 +1,8 @@ tnt = {} --- 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 +-- Default to enabled when in singleplayer +local enable_tnt = minetest.setting_getbool("enable_tnt") +if enable_tnt == nil + enable_tnt = minetest.is_singleplayer() end -- loss probabilities array (one in X will be lost) @@ -492,28 +490,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 = "" @@ -530,30 +530,32 @@ 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 - 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) + 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 minetest.register_node(":" .. name .. "_burning", { tiles = { @@ -590,4 +592,3 @@ tnt.register_tnt({ description = "TNT", radius = radius, }) - From f17d7911737ea553fa63aeaafa9ef5b7a60d608d Mon Sep 17 00:00:00 2001 From: paramat Date: Wed, 6 Jul 2016 17:14:39 +0100 Subject: [PATCH 048/196] 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 60f6564c753494dcb8597ba8d67a4202cc8601c4 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 7 Jul 2016 17:25:42 +0100 Subject: [PATCH 049/196] 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 494a4cb1..bfc0898e 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}, }) @@ -1862,7 +1862,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 3d44804074035efcc88d6dfde6b06ec276ffe5ca Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 7 Jul 2016 17:48:02 +0100 Subject: [PATCH 050/196] Doors: Code cleanup Remove spaces inside curly brackets Split lines over 90 columns --- 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 fe450b4144cfe93136849ea2c9713cce3dd21aa6 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 5 Jul 2016 19:30:33 +0200 Subject: [PATCH 051/196] 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 5644ab4bd37b7bbbb7d911c95b41f6d55c428301 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 5 Jul 2016 19:36:36 +0200 Subject: [PATCH 052/196] 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 e38099225c9265c1c9cb88ff49613432a3848372 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 7 Jul 2016 18:56:43 +0100 Subject: [PATCH 053/196] TNT: Add missing 'then' --- mods/tnt/init.lua | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index a481ae95..e343d055 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -1,7 +1,8 @@ tnt = {} + -- Default to enabled when in singleplayer local enable_tnt = minetest.setting_getbool("enable_tnt") -if enable_tnt == nil +if enable_tnt == nil then enable_tnt = minetest.is_singleplayer() end @@ -82,7 +83,6 @@ local function add_drop(drops, item) end end - local function destroy(drops, npos, cid, c_air, c_fire, on_blast_queue, ignore_protection, ignore_on_blast) if not ignore_protection and minetest.is_protected(npos, "") then return cid @@ -106,7 +106,6 @@ local function destroy(drops, npos, cid, c_air, c_fire, on_blast_queue, ignore_p end 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 From 71c7e21669cfb0b9499a3e376ef2f763b94c960b Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 1 Jul 2016 22:43:02 +0200 Subject: [PATCH 054/196] Always return the leftover ItemStack for on_place and on_rightclick --- mods/beds/api.lua | 3 ++- mods/boats/init.lua | 4 ++-- mods/default/nodes.lua | 3 ++- mods/doors/init.lua | 9 ++++++--- mods/farming/api.lua | 14 +++++++------- mods/flowers/init.lua | 2 +- 6 files changed, 20 insertions(+), 15 deletions(-) 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/init.lua b/mods/boats/init.lua index 0097a57a..db8258bc 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -224,10 +224,10 @@ minetest.register_craftitem("boats:boat", { on_place = function(itemstack, placer, pointed_thing) if pointed_thing.type ~= "node" then - return + return itemstack end if not is_water(pointed_thing.under) then - return + return itemstack end pointed_thing.under.y = pointed_thing.under.y + 0.5 minetest.add_entity(pointed_thing.under, "boats:boat") diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index bfc0898e..86d5565c 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1612,7 +1612,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( @@ -1621,6 +1621,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/api.lua b/mods/farming/api.lua index 966910f6..69c6769b 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -133,10 +133,10 @@ farming.place_seed = function(itemstack, placer, pointed_thing, plantname) local pt = pointed_thing -- check if pointing at a node if not pt then - return + return itemstack end if pt.type ~= "node" then - return + return itemstack end local under = minetest.get_node(pt.under) @@ -153,25 +153,25 @@ farming.place_seed = function(itemstack, placer, pointed_thing, plantname) -- return if any of the nodes is not registered if not minetest.registered_nodes[under.name] then - return + return itemstack end if not minetest.registered_nodes[above.name] then - return + return itemstack end -- check if pointing at the top of the node if pt.above.y ~= pt.under.y+1 then - return + 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 + return itemstack end -- check if pointing at soil if minetest.get_item_group(under.name, "soil") < 2 then - return + return itemstack end -- add the node and remove 1 item from the itemstack diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index 2de575fe..2ec661e1 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 594365310db712595446b4a0fcb1be31160c2f25 Mon Sep 17 00:00:00 2001 From: Tim Date: Sat, 2 Jul 2016 02:30:45 +0200 Subject: [PATCH 055/196] 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 f1f96dbe6b2af33f669283252861e1cb74eef496 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Fri, 8 Jul 2016 15:41:37 +0100 Subject: [PATCH 056/196] Default/trees: Faster way to detect snow around pine saplings Instead of using voxelmanip use 'find nodes in area' instead --- 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 fcceec0e8ce94babaaabb4ec8fe4676213ad82ab Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 8 Jul 2016 00:51:54 +0200 Subject: [PATCH 057/196] Doors: Fix trapdoor crash on can_dig with nil-player (e.g. minetest.dig_node) --- 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 07141b4a2ea4892c55b1ea7d10e85e05bd73113b Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 9 Jul 2016 19:23:54 +0100 Subject: [PATCH 058/196] Bones: New textures --- mods/bones/README.txt | 2 +- mods/bones/textures/bones_bottom.png | Bin 181 -> 740 bytes mods/bones/textures/bones_front.png | Bin 183 -> 655 bytes mods/bones/textures/bones_rear.png | Bin 187 -> 637 bytes mods/bones/textures/bones_side.png | Bin 188 -> 700 bytes mods/bones/textures/bones_top.png | Bin 182 -> 644 bytes 6 files changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/bones/README.txt b/mods/bones/README.txt index b40a384d..cf99bc8b 100644 --- a/mods/bones/README.txt +++ b/mods/bones/README.txt @@ -14,4 +14,4 @@ http://creativecommons.org/licenses/by-sa/3.0/ Authors of media files ---------------------- -Bad_Command_ +All textures: paramat diff --git a/mods/bones/textures/bones_bottom.png b/mods/bones/textures/bones_bottom.png index ada72ceaee53f83beb0963a5e5788ed423c7155b..859c6bbe243f4f1f7397a95007df53e52432a00b 100644 GIT binary patch delta 727 zcmV;|0x12p0ptac8Gix*005AYXf^-<010qNS#tmY3ljhU3ljkVnw%H_000McNliru z;0Fm32Or2&&XfQE0)t6JK~yNuC6P@}t56t(-*Vu1THs27B9us)YD^OwLl=!Jw_W+0 zUAS{q<40@^nnJ3E2rYzfdceErdS;$XW;(aGw{aYMp2u~k#yQP#~U0sD?cra8|rK;*?vq8OH zk6{=^QL3tPT{j4VG);@5I6FHtP4oHrxoMj3@9(y4i=rrsqGK2a03=DGC`w(|JkJwC z%CaPc^!xp~u74jM9t1%EfHX}30O`8E-EMVV*EDUlS`CN8lamvcW%v7i6h(i3f5YJr zV=M^5(a{kAAW;;1z20~{K0iMP0L!xSJa3w2v)M?Jlq3nqagC+k z?{+(k@!Q)QrL-)|BuQ-Bj-n`vq9jS;I7SE!1_O@cP=B}EbzRrC?bT{kRh1wJFE1~h zPN!*_10DeKJkPSM+wHb(izbsv+qMkDNRosQ;(2~Hn`K${`}>PAPSf;|q?EEOD~ci$ zhM{FyudlDi$H%_!13*y}gb>3pT-OBvK@g_XDF9?y1^^w~ws*T-zu$j+e4I|FEXz_# zlOz#E5q|&FEgoCX>klF9?F7 zD1?yFXyp68VHkIJcMQ+->-C!F`8bYE)11%e08rpK&h_>6<>jU4d50M+%c|=d0MKHw zsOwsiB$j2rzP{ey-zlZ4s&X9Xd0r3%nx+*+;W!SZ^xwaK{{aJoU*GftL`MJs002ov JPDHLkV1lspOD6yT delta 164 zcmV;V09*g$1+@W?8Gi!+001a04^sdD01r@1R7C&)03972Jv}|Ar>ET9+)_}sWB>pF zVM#nfl=5YcA+76Bs&EMswF={|-Ps+$ zR&HNZ19lIFC32^cp!ZNH*zRKFw|g|ur2n4*-4BSN4bOdI%OcR+p{xYHo77ZArRFQTet^`347rucn z;S=~aeT^=X3Y}@vIU(>W`G

T!D_Y2<#N$z^l&)L=kw$7`2GFOIj`62 zyWLI*f*{CdvtM6dSFu=3k|aV%5CoQGZMR#`^B800a=B0_e0+TT{{AkP%k%ln7-Nh@ zG))5l*L4XYVSgB6j1fY2(4DDcDpSn5($hkrS$sx`jUFRUK2tL!*Co&a$R>a zndrJcolY-3aLy^Er_*V_-%G;%X0s9L2ZO!!Vsr%d)&!EM~JA=RBLuDvDy;_IA6?<#LQM(=<8f b$z<{m*nc9f1|MgS00000NkvXXu0mjfRY)cr delta 166 zcmV;X09pT!1-Ai^8Gi!+001a04^sdD01r@1R7C&)03972Jv}|Ar>ET9+)_}sWB>pF zV@X6oRCob3ivg;|01U#C`0jt^zp_8ENW>y68>>k~o&`oBEefSBm;Cm7)G7=f*fj&# z>MLr%^5A3)yMosV+P=jR6udn0uBkAb4K%-x3`jlpNDTj%E+5Al?y^xaWagBlKM>CW U_tR6pjsO4v07*qoM6N<$f>%mGP5=M^ diff --git a/mods/bones/textures/bones_rear.png b/mods/bones/textures/bones_rear.png index 8e1ac10b4f0ee0956c6e19a6ca4d75c2d8f2c783..4cfe236d5d6017af2f7879cbc0ba8b1d8434b6e4 100644 GIT binary patch delta 623 zcmV-#0+9W?0sRD!8Gix*005AYXf^-<010qNS#tmY3ljhU3ljkVnw%H_000McNliru z;0Fm303nW}Z(-)WIoocxN`I*=%WT_ze0&73+wJb} z?{~Xhk|aWio12>~%lf`|UHAO_{45B9!{Ok09)OpZ7XZ)C&y2Bg9DU#a{QP8$<#`Su zilU+@tYH`kAr}`H<2V8UP?lw$=bUrSxl*cWnyRX_)=82mrHB#5aXg#N%zLp|^nEX- z9ERcj{T;yF-G3c`q9_0m$8pNC6hcfNIOlEKc3o!_0E7?#x~|h&Tc^`$Hk$=Ouv{(; z9)NYmFv0&Z-2Mj>+9=j0RVm9_kG{CEdZ;o zYv1?dIKH~NGWd8rQc7Ld{rdVcoz-e(mIh!k#)nF;58OG=U_`c5=BZL4T zZQI(mJ)h5~;0PhMZR5ZC`S}q-P)gV9wPh@;s)}=NaND+&QYqzrzn_*4g21FnjM-h+ z)ph;w@Myp}kD}=N`x^jbY|1`OQ`dFh-rg+7andw(97ieTdER=x29PAlX0y4yy`60E zecuF1mdoYu?=NG_^SnII&Dn)vcsw4`9LJf@=YQRUCKpFI_qPB5002ov JPDHLkV1jt?Er|dC delta 170 zcmV;b09F6}1iJx{8Gi!+001a04^sdD01r@1R7C&)03972Jv}|Ar>ET9+)_}sWB>pF zXGugsRCoau%K-`iF%ZJQB=-MrzFTZr84zLFSWUWkPhb?%;)>MWCCAh{2-Y_10c_=# z@ZQ@=&MrSNED_Zo1Z}*c$K#}Kj4|?lJ772)Xb0EHfS#8ykRvNLP?uxf_->p&QVU-K~z%|zNHjY)%{L=i!exG1g!LFmfg z?804FEm}|{N*byXNScJncPHwiKj7YHdkzl=&ffj~eU@cG5PyiGcyn_D0Q33$>gsAf zpL?EX7{=-8X%GZ;U7Mzf5aOGr`TqXabsZs86vg}dds&v7&4w{{d3hPf@vhJ`jizbq z^_uVXdK|~8s@gQoYPE`@D9`h%s*aD3Ez5d-e(t*N>+9?1=clTws;c%((*yuYsj8}N z+e(szF|O+xV}Cpt4BEDx&1QrU0Lb$k0C>YNHk*xM7`m>%zP^q|qr<~PK@hgvZJMUP zzrUl=2q8oW+27v>0A7~mUa#jk&dJFM0NA!&mSxv<>-D;eSvRMS)W4`~G6FfPZm!cb6oI zU>FAcA9Z$y0^Etv)RmX970GKh5)c!E>%?}gvheITrM%j0I=t}ZjvN} z!C+AFL^B@QS zpsFg{w%fJ^0Dd~1wr$(*_XR=t{QP`-dt;1gnkXiUVh{vT6zRHNRh8#?jIo1*gFg_# VJXL%dq$B_U002ovPDHLkV1g1+N%#N& delta 171 zcmV;c0960H1-t=}8Gi!+001a04^sdD01r@1R7C&)03972Jv}|Ar>ET9+)_}sWB>pF zXh}ptRCoa$ivbEiQ3!+7b^kMe-XB4v4Pn_>O(OD*+>Jt76nDMg61;cs2f@0VHGr+2 z7W&bz%`S{#cZl9af;Lt>fkMHCapcIR!nm{Xw+Z`6a4%-qAtd(D|LJn9$0fYsR8Gix*005AYXf^-<010qNS#tmY3ljhU3ljkVnw%H_000McNliru z;0Fm32q5{b|7HLH0wYO8K~yNub&|hI>_8aBPxcN=Ff$}U!ff0kQ3hFXg-sz=TDXmc zMS3g22k?=61WOx1Yy~Te6{c7RLb64OFf$T#!CMS$aq*sRn17GoIo}^o2m!!a%Q*+I zSS&c_LWs6)*X#9awE{36kGHqC+qNx=;?L*j=kD(A-rnADIMiDI{QQi^<1h?gUS4Li zSy2?$+N!F8Ab5Lw^E{6L7!HR@sXWi`?(XoL&d<-SwRxUfYX@g%XLVh3&X>z2{-Z3* zf*=6U_dVg9D}SZl-`^>vWm#&i8DqD%w*aoMuNh;EvDIpo=Xu+<0Lb(6vtys0o&r!x zZNTgGT5H{P-RtWsA>{k}JC0-GKKi~_N@=Z)F^&X)b8d{Os_Nq6;_>mZD2lqSz3FsX z*R?B>Qo7QQj}HJ*6uIZs)z#P6SJO13(P#jGQtJD@?|=IM=JWY{K98a(iXtIIS(X6m zx=xa$ZQG`4NF2v~-*e8L$-~3LriYE;WHMPUmj?$2*4jZBhEht#*l09z4vy-Q+}zv% zNRote-ZYKY+M|>*#@v|i@9%%z!{z0r%j2MMZBR<3l*h-%CnqOTN-5=ZIu$}lDYGo2 zl%{E#rf;d2Bncs;>$<-0H=+MgS(ZT%xD|Oqh%`+Xi-o&NW6b{kzEX-1VvO;9KaOLq zHGrzBwzjqgS(X6^!;o{nv$F%>>FJ3OQWOQH^yuhF2w{xrx^6O=93CG21$LPQQWkH8 QTL1t607*qoM6N<$f^qmUi2wiq delta 165 zcmV;W09yZq1-1c@8Gi!+001a04^sdD01r@1R7C&)03972Jv}|Ar>ET9+)_}sWB>pF zVo5|nRCobR&e4fQQ3%D*B-{RL9u5PKyFk#NAi}b-nnWb&0i%!>-6>VL1n;O-821CP zmD@Y20lN=|CGw(?p!cCr@ES4l&3!b`r2jnw`u-t?w%2nx)*f)XYE%rFIVI^28;=4a T4BWyh00000NkvXXu0mjfi(^4Z From b74954969cb9268c553f2dcdde672e268ba032c1 Mon Sep 17 00:00:00 2001 From: Tim Date: Mon, 11 Jul 2016 17:50:19 +0200 Subject: [PATCH 059/196] 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 d7a74560072b0e2c2b0f35b49cbd46a0a1852a4a Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Fri, 20 May 2016 11:40:15 +0100 Subject: [PATCH 060/196] Beds: Save respawn position when entering bed, only read bed spawns once No longer require night to be skipped for resawn position to be saved Remove constant beds.read_spawns() calls when a player joins as this is only required 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 4473627de04ab3b0dddd740ea963281460cff8cf Mon Sep 17 00:00:00 2001 From: Tim Date: Sun, 26 Jun 2016 13:34:14 +0200 Subject: [PATCH 061/196] Remove unused and clean up missused variable-value assignments. * Unused variables * Unused values (assigned to variables, but overwritten before use) * Defining already defined variables instead of reassigning to them. --- mods/beds/functions.lua | 2 +- mods/beds/spawns.lua | 2 -- mods/boats/init.lua | 2 +- 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/api.lua | 2 -- mods/tnt/init.lua | 16 ++++++++-------- 12 files changed, 22 insertions(+), 31 deletions(-) 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/init.lua b/mods/boats/init.lua index db8258bc..caaef578 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -167,7 +167,7 @@ function boat.on_step(self, dtime) local p = self.object:getpos() p.y = p.y - 0.5 - local new_velo = {x = 0, y = 0, z = 0} + 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] diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 661bbab8..08a422d0 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 7f952d32..abb11aa5 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/api.lua b/mods/farming/api.lua index 69c6769b..901f7245 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -319,11 +319,9 @@ farming.register_plant = function(name, def) 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 diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index e343d055..023a39b1 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -153,7 +153,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) @@ -261,7 +261,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) @@ -298,11 +298,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 = {} @@ -515,7 +515,7 @@ if enable_tnt then end function tnt.register_tnt(def) - local name = "" + local name if not def.name:find(':') then name = "tnt:" .. def.name else From 30b0a155fb1f116a6fe51cdf482cc5d8e653f503 Mon Sep 17 00:00:00 2001 From: Tim Date: Sun, 26 Jun 2016 14:46:15 +0200 Subject: [PATCH 062/196] 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 abb11aa5..1e7b4087 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 023a39b1..c5aa95c9 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -12,7 +12,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 = {} @@ -345,10 +345,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) @@ -589,5 +589,5 @@ end tnt.register_tnt({ name = "tnt:tnt", description = "TNT", - radius = radius, + radius = tnt_radius, }) From 9524ff67a320dfebf9bb551e67711b922ee37963 Mon Sep 17 00:00:00 2001 From: Tim Date: Mon, 11 Jul 2016 15:11:57 +0200 Subject: [PATCH 063/196] 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 d89bb69a22e7abe90c80e827e07ea20a2c633a35 Mon Sep 17 00:00:00 2001 From: adrido Date: Tue, 12 Jul 2016 11:02:01 +0200 Subject: [PATCH 064/196] 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 0bd13d11cf9ac03de3a53611105ed880b2285322 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Wed, 13 Jul 2016 19:24:49 +0100 Subject: [PATCH 065/196] 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 3661cb61e37ee6b7a8818f7a28e9102fb0674e54 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Mon, 11 Jul 2016 17:55:17 +0100 Subject: [PATCH 066/196] Move nyancats into a separate mod Nyancats are independent in the default mod. Nothing else uses them or their code. Separating it into a separate mod makes it easier for subgames to remove them. It also makes it easier for a mod to depend on nyancats, as lots of subgames don't have them. Default/mapgen.lua: Register biomes, ores and decorations in singlenode mapgen. These were never disabled anyway because singlenode was removed from the world creation menu. --- game_api.txt | 12 +++ mods/default/README.txt | 4 - mods/default/aliases.lua | 3 - mods/default/crafting.lua | 13 --- mods/default/mapgen.lua | 63 +------------ mods/default/nodes.lua | 25 ------ mods/nyancat/README.txt | 29 ++++++ mods/nyancat/depends.txt | 1 + mods/nyancat/init.lua | 84 ++++++++++++++++++ .../textures/default_nc_back.png | Bin .../textures/default_nc_front.png | Bin .../textures/default_nc_rb.png | Bin .../textures/default_nc_side.png | Bin 13 files changed, 129 insertions(+), 105 deletions(-) create mode 100644 mods/nyancat/README.txt create mode 100644 mods/nyancat/depends.txt create mode 100644 mods/nyancat/init.lua rename mods/{default => nyancat}/textures/default_nc_back.png (100%) rename mods/{default => nyancat}/textures/default_nc_front.png (100%) rename mods/{default => nyancat}/textures/default_nc_rb.png (100%) rename mods/{default => nyancat}/textures/default_nc_side.png (100%) diff --git a/game_api.txt b/game_api.txt index e04a33b4..581d76cc 100644 --- a/game_api.txt +++ b/game_api.txt @@ -250,6 +250,18 @@ Give Initial Stuff API ^ str is a comma separated list of initial stuff ^ Adds items to the list of items to be given +Nyancat API +----------- + +`nyancat.place(pos, facedir, length)` + +^ Place a cat at `pos` facing `facedir` with tail length `length` + Only accepts facedir 0-3, if facedir > 3 then it will be interpreted as facedir = 0 + +`nyancat.generate(minp, maxp, seed)` + +^ Called by `minetest.register_on_generated`. To disable nyancat generation, + you can redefine nyancat.generate() to be an empty function TNT API ---------- diff --git a/mods/default/README.txt b/mods/default/README.txt index 41dd1eb0..85c5a4ef 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -51,10 +51,6 @@ RealBadAngel's animated water (WTFPL): default_water_flowing_animated.png VanessaE (WTFPL): - default_nc_back.png - default_nc_front.png - default_nc_rb.png - default_nc_side.png default_desert_sand.png default_desert_stone.png default_sand.png diff --git a/mods/default/aliases.lua b/mods/default/aliases.lua index 63fe59b2..1259ac0e 100644 --- a/mods/default/aliases.lua +++ b/mods/default/aliases.lua @@ -39,8 +39,6 @@ minetest.register_alias("locked_chest", "default:chest_locked") minetest.register_alias("cobble", "default:cobble") minetest.register_alias("mossycobble", "default:mossycobble") minetest.register_alias("steelblock", "default:steelblock") -minetest.register_alias("nyancat", "default:nyancat") -minetest.register_alias("nyancat_rainbow", "default:nyancat_rainbow") minetest.register_alias("sapling", "default:sapling") minetest.register_alias("apple", "default:apple") @@ -77,4 +75,3 @@ minetest.register_alias("default:pinewood", "default:pine_wood") minetest.register_alias("default:ladder", "default:ladder_wood") minetest.register_alias("default:sign_wall", "default:sign_wall_wood") - diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua index 3bfce07c..1151f47b 100644 --- a/mods/default/crafting.lua +++ b/mods/default/crafting.lua @@ -888,18 +888,6 @@ minetest.register_craft({ burntime = 30, }) -minetest.register_craft({ - type = "fuel", - recipe = "default:nyancat", - burntime = 1, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:nyancat_rainbow", - burntime = 1, -}) - minetest.register_craft({ type = "fuel", recipe = "group:sapling", @@ -935,4 +923,3 @@ minetest.register_craft({ recipe = "default:dry_grass_1", burntime = 2, }) - diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index 7d0b0fd4..52aa294c 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -49,7 +49,7 @@ function default.register_ores() -- Clay -- This first to avoid clay in sand blobs - minetest.register_ore({ + minetest.register_ore({ ore_type = "blob", ore = "default:clay", wherein = {"default:sand"}, @@ -70,7 +70,7 @@ function default.register_ores() -- Sand - minetest.register_ore({ + minetest.register_ore({ ore_type = "blob", ore = "default:sand", wherein = {"default:stone", "default:sandstone", @@ -1464,73 +1464,16 @@ function default.register_decorations() end --- --- Generate nyan cats --- - --- All mapgens except singlenode - -function default.make_nyancat(pos, facedir, length) - local tailvec = {x = 0, y = 0, z = 0} - if facedir == 0 then - tailvec.z = 1 - elseif facedir == 1 then - tailvec.x = 1 - elseif facedir == 2 then - tailvec.z = -1 - elseif facedir == 3 then - tailvec.x = -1 - else - facedir = 0 - tailvec.z = 1 - end - local p = {x = pos.x, y = pos.y, z = pos.z} - minetest.set_node(p, {name = "default:nyancat", param2 = facedir}) - for i = 1, length do - p.x = p.x + tailvec.x - p.z = p.z + tailvec.z - minetest.set_node(p, {name = "default:nyancat_rainbow", param2 = facedir}) - end -end - -function default.generate_nyancats(minp, maxp, seed) - local height_min = -31000 - local height_max = -32 - if maxp.y < height_min or minp.y > height_max then - return - end - local y_min = math.max(minp.y, height_min) - local y_max = math.min(maxp.y, height_max) - local volume = (maxp.x - minp.x + 1) * (y_max - y_min + 1) * (maxp.z - minp.z + 1) - local pr = PseudoRandom(seed + 9324342) - local max_num_nyancats = math.floor(volume / (16 * 16 * 16)) - for i = 1, max_num_nyancats do - if pr:next(0, 1000) == 0 then - local x0 = pr:next(minp.x, maxp.x) - local y0 = pr:next(minp.y, maxp.y) - local z0 = pr:next(minp.z, maxp.z) - local p0 = {x = x0, y = y0, z = z0} - default.make_nyancat(p0, pr:next(0, 3), pr:next(3, 15)) - end - end -end - - -- -- Detect mapgen to select functions -- --- Mods using singlenode mapgen can call these functions to enable --- the use of minetest.generate_ores or minetest.generate_decorations - 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_name ~= "singlenode" then +else default.register_biomes() default.register_ores() default.register_decorations() - minetest.register_on_generated(default.generate_nyancats) end diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 86d5565c..31e063d4 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -178,8 +178,6 @@ Misc ---- default:cloud -default:nyancat -default:nyancat_rainbow --]] @@ -1902,26 +1900,3 @@ minetest.register_node("default:cloud", { sounds = default.node_sound_defaults(), groups = {not_in_creative_inventory = 1}, }) - -minetest.register_node("default:nyancat", { - description = "Nyan Cat", - tiles = {"default_nc_side.png", "default_nc_side.png", "default_nc_side.png", - "default_nc_side.png", "default_nc_back.png", "default_nc_front.png"}, - paramtype2 = "facedir", - groups = {cracky = 2}, - is_ground_content = false, - legacy_facedir_simple = true, - sounds = default.node_sound_defaults(), -}) - -minetest.register_node("default:nyancat_rainbow", { - description = "Nyan Cat Rainbow", - tiles = { - "default_nc_rb.png^[transformR90", "default_nc_rb.png^[transformR90", - "default_nc_rb.png", "default_nc_rb.png" - }, - paramtype2 = "facedir", - groups = {cracky = 2}, - is_ground_content = false, - sounds = default.node_sound_defaults(), -}) diff --git a/mods/nyancat/README.txt b/mods/nyancat/README.txt new file mode 100644 index 00000000..95850c92 --- /dev/null +++ b/mods/nyancat/README.txt @@ -0,0 +1,29 @@ +Minetest Game mod: nyancat +========================== + +License of source code: +----------------------- +Copyright (C) 2011-2012 celeron55, Perttu Ahola + +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. + +http://www.gnu.org/licenses/lgpl-2.1.html + +License of media (textures and sounds) +-------------------------------------- +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +http://creativecommons.org/licenses/by-sa/3.0/ + +Authors of media files +----------------------- +Everything not listed in here: +Copyright (C) 2010-2012 celeron55, Perttu Ahola + +VanessaE (WTFPL): + default_nc_back.png + default_nc_front.png + default_nc_rb.png + default_nc_side.png diff --git a/mods/nyancat/depends.txt b/mods/nyancat/depends.txt new file mode 100644 index 00000000..4ad96d51 --- /dev/null +++ b/mods/nyancat/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/nyancat/init.lua b/mods/nyancat/init.lua new file mode 100644 index 00000000..6c1d9036 --- /dev/null +++ b/mods/nyancat/init.lua @@ -0,0 +1,84 @@ +minetest.register_node("nyancat:nyancat", { + description = "Nyan Cat", + tiles = {"default_nc_side.png", "default_nc_side.png", "default_nc_side.png", + "default_nc_side.png", "default_nc_back.png", "default_nc_front.png"}, + paramtype2 = "facedir", + groups = {cracky = 2}, + is_ground_content = false, + legacy_facedir_simple = true, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("nyancat:nyancat_rainbow", { + description = "Nyan Cat Rainbow", + tiles = { + "default_nc_rb.png^[transformR90", "default_nc_rb.png^[transformR90", + "default_nc_rb.png", "default_nc_rb.png" + }, + paramtype2 = "facedir", + groups = {cracky = 2}, + is_ground_content = false, + sounds = default.node_sound_defaults(), +}) + +minetest.register_craft({ + type = "fuel", + recipe = "nyancat:nyancat", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "nyancat:nyancat_rainbow", + burntime = 1, +}) + +nyancat = {} + +function nyancat.place(pos, facedir, length) + if facedir > 3 then + facedir = 0 + end + local tailvec = minetest.facedir_to_dir(facedir) + local p = {x = pos.x, y = pos.y, z = pos.z} + minetest.set_node(p, {name = "nyancat:nyancat", param2 = facedir}) + for i = 1, length do + p.x = p.x + tailvec.x + p.z = p.z + tailvec.z + minetest.set_node(p, {name = "nyancat:nyancat_rainbow", param2 = facedir}) + end +end + +function nyancat.generate(minp, maxp, seed) + local height_min = -31000 + local height_max = -32 + if maxp.y < height_min or minp.y > height_max then + return + end + local y_min = math.max(minp.y, height_min) + local y_max = math.min(maxp.y, height_max) + local volume = (maxp.x - minp.x + 1) * (y_max - y_min + 1) * (maxp.z - minp.z + 1) + local pr = PseudoRandom(seed + 9324342) + local max_num_nyancats = math.floor(volume / (16 * 16 * 16)) + for i = 1, max_num_nyancats do + if pr:next(0, 1000) == 0 then + local x0 = pr:next(minp.x, maxp.x) + local y0 = pr:next(minp.y, maxp.y) + local z0 = pr:next(minp.z, maxp.z) + local p0 = {x = x0, y = y0, z = z0} + nyancat.place(p0, pr:next(0, 3), pr:next(3, 15)) + end + end +end + +minetest.register_on_generated(function(minp, maxp, seed) + nyancat.generate(minp, maxp, seed) +end) + +-- Legacy +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") +default.make_nyancat = nyancat.place +default.generate_nyancats = nyancat.generate diff --git a/mods/default/textures/default_nc_back.png b/mods/nyancat/textures/default_nc_back.png similarity index 100% rename from mods/default/textures/default_nc_back.png rename to mods/nyancat/textures/default_nc_back.png diff --git a/mods/default/textures/default_nc_front.png b/mods/nyancat/textures/default_nc_front.png similarity index 100% rename from mods/default/textures/default_nc_front.png rename to mods/nyancat/textures/default_nc_front.png diff --git a/mods/default/textures/default_nc_rb.png b/mods/nyancat/textures/default_nc_rb.png similarity index 100% rename from mods/default/textures/default_nc_rb.png rename to mods/nyancat/textures/default_nc_rb.png diff --git a/mods/default/textures/default_nc_side.png b/mods/nyancat/textures/default_nc_side.png similarity index 100% rename from mods/default/textures/default_nc_side.png rename to mods/nyancat/textures/default_nc_side.png From 9862bbc8e5bdb7ce1fd1878c6f40c23c2a3fbb72 Mon Sep 17 00:00:00 2001 From: Thomas--S Date: Sun, 17 Jul 2016 18:52:42 +0200 Subject: [PATCH 067/196] Doors: Same naming for trapdoors as for doors This makes register_trapdoor act the same as the register_door. If `name` isn't prefixed, it will be prefixed with "doors:". --- mods/doors/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 0d3fd23f..914e385f 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 f018e06d9b7c8e8b14034c4dc8ac2dcffe5e0eab Mon Sep 17 00:00:00 2001 From: Thomas--S Date: Sun, 17 Jul 2016 20:37:29 +0200 Subject: [PATCH 068/196] Doors: Fix trapdoor on_blast Removing the node above was an error and is unnecessary --- mods/doors/init.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 914e385f..abd24bde 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -576,7 +576,6 @@ 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} end end From 1a2eb89f17d1228d81b44516c62cabfe13d093c3 Mon Sep 17 00:00:00 2001 From: paramat Date: Mon, 18 Jul 2016 22:50:00 +0100 Subject: [PATCH 069/196] Default/trees: Update to 'get_mapgen_setting()' --- mods/default/trees.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/default/trees.lua b/mods/default/trees.lua index 07071c74..dbcdcfaf 100644 --- a/mods/default/trees.lua +++ b/mods/default/trees.lua @@ -43,12 +43,12 @@ function default.grow_sapling(pos) return end - local mapgen = minetest.get_mapgen_params().mgname + local mg_name = minetest.get_mapgen_setting("mg_name") 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 + if mg_name == "v6" then default.grow_tree(pos, random(1, 4) == 1) else default.grow_new_apple_tree(pos) @@ -56,7 +56,7 @@ function default.grow_sapling(pos) 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 + if mg_name == "v6" then default.grow_jungle_tree(pos) else default.grow_new_jungle_tree(pos) @@ -65,7 +65,7 @@ function default.grow_sapling(pos) 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 + if mg_name == "v6" then default.grow_pine_tree(pos, snow) elseif snow then default.grow_new_snowy_pine_tree(pos) From 79dbafc13b256a38c13d7abd2ea7af0f50e64394 Mon Sep 17 00:00:00 2001 From: paramat Date: Mon, 18 Jul 2016 23:07:11 +0100 Subject: [PATCH 070/196] Nyancat: Fix texture names --- mods/nyancat/README.txt | 8 ++++---- mods/nyancat/init.lua | 9 +++++---- .../{default_nc_back.png => nyancat_back.png} | Bin .../{default_nc_front.png => nyancat_front.png} | Bin .../{default_nc_rb.png => nyancat_rainbow.png} | Bin .../{default_nc_side.png => nyancat_side.png} | Bin 6 files changed, 9 insertions(+), 8 deletions(-) rename mods/nyancat/textures/{default_nc_back.png => nyancat_back.png} (100%) rename mods/nyancat/textures/{default_nc_front.png => nyancat_front.png} (100%) rename mods/nyancat/textures/{default_nc_rb.png => nyancat_rainbow.png} (100%) rename mods/nyancat/textures/{default_nc_side.png => nyancat_side.png} (100%) diff --git a/mods/nyancat/README.txt b/mods/nyancat/README.txt index 95850c92..2e7de71d 100644 --- a/mods/nyancat/README.txt +++ b/mods/nyancat/README.txt @@ -23,7 +23,7 @@ Everything not listed in here: Copyright (C) 2010-2012 celeron55, Perttu Ahola VanessaE (WTFPL): - default_nc_back.png - default_nc_front.png - default_nc_rb.png - default_nc_side.png + nyancat_front.png + nyancat_back.png + nyancat_side.png + nyancat_rainbow.png diff --git a/mods/nyancat/init.lua b/mods/nyancat/init.lua index 6c1d9036..677ed50a 100644 --- a/mods/nyancat/init.lua +++ b/mods/nyancat/init.lua @@ -1,7 +1,7 @@ minetest.register_node("nyancat:nyancat", { description = "Nyan Cat", - tiles = {"default_nc_side.png", "default_nc_side.png", "default_nc_side.png", - "default_nc_side.png", "default_nc_back.png", "default_nc_front.png"}, + tiles = {"nyancat_side.png", "nyancat_side.png", "nyancat_side.png", + "nyancat_side.png", "nyancat_back.png", "nyancat_front.png"}, paramtype2 = "facedir", groups = {cracky = 2}, is_ground_content = false, @@ -12,8 +12,9 @@ minetest.register_node("nyancat:nyancat", { minetest.register_node("nyancat:nyancat_rainbow", { description = "Nyan Cat Rainbow", tiles = { - "default_nc_rb.png^[transformR90", "default_nc_rb.png^[transformR90", - "default_nc_rb.png", "default_nc_rb.png" + "nyancat_rainbow.png^[transformR90", + "nyancat_rainbow.png^[transformR90", + "nyancat_rainbow.png" }, paramtype2 = "facedir", groups = {cracky = 2}, diff --git a/mods/nyancat/textures/default_nc_back.png b/mods/nyancat/textures/nyancat_back.png similarity index 100% rename from mods/nyancat/textures/default_nc_back.png rename to mods/nyancat/textures/nyancat_back.png diff --git a/mods/nyancat/textures/default_nc_front.png b/mods/nyancat/textures/nyancat_front.png similarity index 100% rename from mods/nyancat/textures/default_nc_front.png rename to mods/nyancat/textures/nyancat_front.png diff --git a/mods/nyancat/textures/default_nc_rb.png b/mods/nyancat/textures/nyancat_rainbow.png similarity index 100% rename from mods/nyancat/textures/default_nc_rb.png rename to mods/nyancat/textures/nyancat_rainbow.png diff --git a/mods/nyancat/textures/default_nc_side.png b/mods/nyancat/textures/nyancat_side.png similarity index 100% rename from mods/nyancat/textures/default_nc_side.png rename to mods/nyancat/textures/nyancat_side.png From 72f4c6be483a52a1ad56c7de5a75f56938ef7db1 Mon Sep 17 00:00:00 2001 From: Thomas--S Date: Mon, 18 Jul 2016 07:14:01 +0200 Subject: [PATCH 071/196] Doors: Fix orientations of trapdoor textures --- mods/doors/init.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index abd24bde..20dbb855 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -603,8 +603,10 @@ 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 .. '^[transformFY', + def.tile_side, def.tile_side, + def.tile_side, def.tile_side} def_opened.node_box = { type = "fixed", @@ -617,7 +619,8 @@ function doors.register_trapdoor(name, def) 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 .. '^[transform46', + def.tile_front .. '^[transform6'} def_opened.drop = name_closed def_opened.groups.not_in_creative_inventory = 1 From db129f4ca077f5b3dbdb524511bedd13bc9207f3 Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 19 Jul 2016 22:26:02 +0100 Subject: [PATCH 072/196] Flowers: Fix waterlily on-place itemstack code Add 'record_protection_violation()' --- mods/flowers/init.lua | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index 2ec661e1..83a05fad 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -243,16 +243,20 @@ minetest.register_node("flowers:waterlily", { local def = minetest.registered_nodes[node] local player_name = placer:get_player_name() - if def and def.liquidtype == "source" and minetest.get_item_group(node, "water") > 0 then + if def and def.liquidtype == "source" and + minetest.get_item_group(node, "water") > 0 then if not minetest.is_protected(pos, player_name) then - minetest.set_node(pos, {name = "flowers:waterlily", param2 = math.random(0, 3)}) + minetest.set_node(pos, {name = "flowers:waterlily", + param2 = math.random(0, 3)}) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end else - minetest.chat_send_player(player_name, "This area is protected") - end - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() + minetest.chat_send_player(player_name, "Node is protected") + minetest.record_protection_violation(pos, player_name) end end + return itemstack end }) From 2df7ce20dd8290b677cc32c4b4a1bde3654c137f Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Mon, 21 Mar 2016 21:22:26 +0000 Subject: [PATCH 073/196] Bones: Ability to change bones mode. Tidy up code Add 'bones_mode' setting to minetest.conf -> Modes: bones, drop, keep Remove table 'bones' Add minetest.conf.example description Remove protection check from may_replace --- minetest.conf.example | 6 ++ mods/bones/init.lua | 148 +++++++++++++++++++++++------------------- 2 files changed, 88 insertions(+), 66 deletions(-) diff --git a/minetest.conf.example b/minetest.conf.example index 813f1957..d6e00000 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -5,6 +5,12 @@ # Whether creative mode (fast digging of all blocks, unlimited resources) should be enabled #creative_mode = false +# Sets the behaviour of the inventory items when a player dies. +# "bones": Store all items inside a bone node but drop items if inside protected area +# "drop": Drop all items on the ground +# "keep": Player keeps all items +#bones_mode = "bones" + # The time in seconds after which the bones of a dead player can be looted by everyone # 0 to disable #share_bones_time = 1200 diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 08a422d0..a39b23d4 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -1,7 +1,5 @@ -- Minetest 0.4 mod: bones --- See README.txt for licensing and other information. - -bones = {} +-- See README.txt for licensing and other information. local function is_owner(pos, name) local owner = minetest.get_meta(pos):get_string("owner") @@ -11,7 +9,7 @@ local function is_owner(pos, name) return false end -bones.bones_formspec = +local bones_formspec = "size[8,9]" .. default.gui_bg .. default.gui_bg_img .. @@ -37,12 +35,12 @@ minetest.register_node("bones:bones", { "bones_front.png" }, paramtype2 = "facedir", - groups = {dig_immediate=2}, + groups = {dig_immediate = 2}, sounds = default.node_sound_dirt_defaults({ - footstep = {name="default_gravel_footstep", gain=0.5}, - dug = {name="default_gravel_footstep", gain=1.0}, + footstep = {name = "default_gravel_footstep", gain = 0.5}, + dug = {name = "default_gravel_footstep", gain = 1.0}, }), - + can_dig = function(pos, player) local inv = minetest.get_meta(pos):get_inventory() local name = "" @@ -51,46 +49,46 @@ minetest.register_node("bones:bones", { end return is_owner(pos, name) and inv:is_empty("main") end, - + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) if is_owner(pos, player:get_player_name()) then return count end return 0 end, - + allow_metadata_inventory_put = function(pos, listname, index, stack, player) return 0 end, - + allow_metadata_inventory_take = function(pos, listname, index, stack, player) if is_owner(pos, player:get_player_name()) then return stack:get_count() end return 0 end, - + on_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) if meta:get_inventory():is_empty("main") then minetest.remove_node(pos) end end, - + on_punch = function(pos, node, player) - if(not is_owner(pos, player:get_player_name())) then + if not is_owner(pos, player:get_player_name()) then return end - - if(minetest.get_meta(pos):get_string("infotext") == "") then + + if minetest.get_meta(pos):get_string("infotext") == "" then return end - + local inv = minetest.get_meta(pos):get_inventory() local player_inv = player:get_inventory() local has_space = true - - for i=1,inv:get_size("main") do + + for i = 1, inv:get_size("main") do local stk = inv:get_stack("main", i) if player_inv:room_for_item("main", stk) then inv:set_stack("main", i, nil) @@ -100,7 +98,7 @@ minetest.register_node("bones:bones", { break end end - + -- remove bones if player emptied them if has_space then if player_inv:room_for_item("main", {name = "bones:bones"}) then @@ -111,12 +109,12 @@ minetest.register_node("bones:bones", { minetest.remove_node(pos) end end, - + on_timer = function(pos, elapsed) local meta = minetest.get_meta(pos) local time = meta:get_int("time") + elapsed if time >= share_bones_time then - meta:set_string("infotext", meta:get_string("owner").."'s old bones") + meta:set_string("infotext", meta:get_string("owner") .. "'s old bones") meta:set_string("owner", "") else meta:set_int("time", time) @@ -131,13 +129,9 @@ local function may_replace(pos, player) local node_name = minetest.get_node(pos).name local node_definition = minetest.registered_nodes[node_name] - -- if the node is unknown, we let the protection mod decide - -- this is consistent with when a player could dig or not dig it - -- unknown decoration would often be removed - -- while unknown building materials in use would usually be left + -- if the node is unknown, we return false if not node_definition then - -- only replace nodes that are not protected - return not minetest.is_protected(pos, player:get_player_name()) + return false end -- allow replacing air and liquids @@ -157,70 +151,92 @@ local function may_replace(pos, player) return node_definition.buildable_to and not minetest.is_protected(pos, player:get_player_name()) end +local drop = function(pos, itemstack) + local obj = core.add_item(pos, itemstack:take_item(itemstack:get_count())) + if obj then + obj:setvelocity({ + x = math.random(-10, 10) / 9, + y = 5, + z = math.random(-10, 10) / 9, + }) + end +end + minetest.register_on_dieplayer(function(player) - if minetest.setting_getbool("creative_mode") then + + local bones_mode = minetest.setting_get("bones_mode") or "bones" + if bones_mode ~= "bones" and bones_mode ~= "drop" and bones_mode ~= "keep" then + bones_mode = "bones" + end + + -- return if keep inventory set or in creative mode + if bones_mode == "keep" or minetest.setting_getbool("creative_mode") then return end - + local player_inv = player:get_inventory() if player_inv:is_empty("main") and player_inv:is_empty("craft") then return end - local pos = player:getpos() - pos.x = math.floor(pos.x+0.5) - pos.y = math.floor(pos.y+0.5) - pos.z = math.floor(pos.z+0.5) - local param2 = minetest.dir_to_facedir(player:get_look_dir()) + local pos = vector.round(player:getpos()) local player_name = player:get_player_name() - if (not may_replace(pos, player)) then - if (may_replace({x=pos.x, y=pos.y+1, z=pos.z}, player)) then - -- drop one node above if there's space - -- this should solve most cases of protection related deaths in which players dig straight down - -- yet keeps the bones reachable - pos.y = pos.y+1 - else - -- drop items instead of delete - for i=1,player_inv:get_size("main") do - minetest.add_item(pos, player_inv:get_stack("main", i)) - end - for i=1,player_inv:get_size("craft") do - minetest.add_item(pos, player_inv:get_stack("craft", i)) - end - -- empty lists main and craft - player_inv:set_list("main", {}) - player_inv:set_list("craft", {}) - return - end + -- check if it's possible to place bones, if not go 1 higher + if bones_mode == "bones" and not may_replace(pos, player) then + pos.y = pos.y + 1 end - - minetest.set_node(pos, {name="bones:bones", param2=param2}) - + + -- still cannot place bones? change mode to 'drop' + if bones_mode == "bones" and not may_replace(pos, player) then + bones_mode = "drop" + end + + if bones_mode == "drop" then + + -- drop inventory items + for i = 1, player_inv:get_size("main") do + drop(pos, player_inv:get_stack("main", i)) + end + player_inv:set_list("main", {}) + + -- drop crafting grid items + for i = 1, player_inv:get_size("craft") do + drop(pos, player_inv:get_stack("craft", i)) + end + player_inv:set_list("craft", {}) + + drop(pos, ItemStack("bones:bones")) + return + end + + local param2 = minetest.dir_to_facedir(player:get_look_dir()) + minetest.set_node(pos, {name = "bones:bones", param2 = param2}) + local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - inv:set_size("main", 8*4) + inv:set_size("main", 8 * 4) inv:set_list("main", player_inv:get_list("main")) - - for i=1,player_inv:get_size("craft") do + + for i = 1, player_inv:get_size("craft") do local stack = player_inv:get_stack("craft", i) if inv:room_for_item("main", stack) then inv:add_item("main", stack) else --drop if no space left - minetest.add_item(pos, stack) + drop(pos, stack) end end - + player_inv:set_list("main", {}) player_inv:set_list("craft", {}) - - meta:set_string("formspec", bones.bones_formspec) + + meta:set_string("formspec", bones_formspec) 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", 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) From 0ac096991c51d664007ebb53b8117baca0271459 Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 19 Jul 2016 01:01:59 +0100 Subject: [PATCH 074/196] Default: Prevent placing sapling if grown tree intersects protection Add a global 'intersects protection' function to functions.lua for checking if a specified volume intersects with a protected volume. A 3D lattice of points are checked with an adjustable interval. Add a global 'sapling on place' function to avoid duplicated code in nodes.lua. --- mods/default/functions.lua | 40 +++++++++++++++ mods/default/nodes.lua | 101 +++++++++++++++++++++++++++++++------ mods/default/trees.lua | 46 +++++++++++++++++ 3 files changed, 172 insertions(+), 15 deletions(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index f3bb97cd..a98d091f 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -481,3 +481,43 @@ minetest.register_abm({ end end }) + + +-- +-- Checks if specified volume intersects a protected volume +-- + +function default.intersects_protection(minp, maxp, player_name, interval) + -- 'interval' is the largest allowed interval for the 3D lattice of checks + + -- Compute the optimal float step 'd' for each axis so that all corners and + -- borders are checked. 'd' will be smaller or equal to 'interval'. + -- Subtracting 1e-4 ensures that the max co-ordinate will be reached by the + -- for loop (which might otherwise not be the case due to rounding errors). + local d = {} + for _, c in pairs({"x", "y", "z"}) do + if maxp[c] > minp[c] then + d[c] = (maxp[c] - minp[c]) / math.ceil((maxp[c] - minp[c]) / interval) - 1e-4 + elseif maxp[c] == minp[c] then + d[c] = 1 -- Any value larger than 0 to avoid division by zero + else -- maxp[c] < minp[c], print error and treat as protection intersected + minetest.log("error", "maxp < minp in 'default.intersects_protection()'") + return true + end + end + + for zf = minp.z, maxp.z, d.z do + local z = math.floor(zf + 0.5) + for yf = minp.y, maxp.y, d.y do + local y = math.floor(yf + 0.5) + for xf = minp.x, maxp.x, d.x do + local x = math.floor(xf + 0.5) + if minetest.is_protected({x = x, y = y, z = z}, player_name) then + return true + end + end + end + end + + return false +end diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 31e063d4..05d9f32d 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -500,9 +500,6 @@ minetest.register_node("default:sapling", { 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} @@ -510,6 +507,23 @@ minetest.register_node("default:sapling", { groups = {snappy = 2, dig_immediate = 3, flammable = 2, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), + + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(2400,4800)) + end, + + on_place = function(itemstack, placer, pointed_thing) + itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, + "default:sapling", + -- minp, maxp to be checked, relative to sapling pos + -- minp_relative.y = 1 because sapling pos has been checked + {x = -2, y = 1, z = -2}, + {x = 2, y = 6, z = 2}, + -- maximum interval of interior volume check + 4) + + return itemstack + end, }) minetest.register_node("default:leaves", { @@ -624,9 +638,6 @@ minetest.register_node("default:junglesapling", { 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 +645,23 @@ minetest.register_node("default:junglesapling", { groups = {snappy = 2, dig_immediate = 3, flammable = 2, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), + + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(2400,4800)) + end, + + on_place = function(itemstack, placer, pointed_thing) + itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, + "default:junglesapling", + -- minp, maxp to be checked, relative to sapling pos + -- minp_relative.y = 1 because sapling pos has been checked + {x = -2, y = 1, z = -2}, + {x = 2, y = 15, z = 2}, + -- maximum interval of interior volume check + 4) + + return itemstack + end, }) @@ -691,9 +719,6 @@ minetest.register_node("default:pine_sapling", { 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} @@ -701,6 +726,23 @@ minetest.register_node("default:pine_sapling", { groups = {snappy = 2, dig_immediate = 3, flammable = 2, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), + + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(2400,4800)) + end, + + on_place = function(itemstack, placer, pointed_thing) + itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, + "default:pine_sapling", + -- minp, maxp to be checked, relative to sapling pos + -- minp_relative.y = 1 because sapling pos has been checked + {x = -2, y = 1, z = -2}, + {x = 2, y = 12, z = 2}, + -- maximum interval of interior volume check + 4) + + return itemstack + end, }) @@ -758,9 +800,6 @@ minetest.register_node("default:acacia_sapling", { 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} @@ -768,6 +807,23 @@ minetest.register_node("default:acacia_sapling", { groups = {snappy = 2, dig_immediate = 3, flammable = 2, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), + + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(2400,4800)) + end, + + on_place = function(itemstack, placer, pointed_thing) + itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, + "default:acacia_sapling", + -- minp, maxp to be checked, relative to sapling pos + -- minp_relative.y = 1 because sapling pos has been checked + {x = -4, y = 1, z = -4}, + {x = 4, y = 6, z = 4}, + -- maximum interval of interior volume check + 4) + + return itemstack + end, }) minetest.register_node("default:aspen_tree", { @@ -824,9 +880,6 @@ minetest.register_node("default:aspen_sapling", { 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} @@ -834,7 +887,25 @@ minetest.register_node("default:aspen_sapling", { groups = {snappy = 2, dig_immediate = 3, flammable = 2, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), + + on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(2400,4800)) + end, + + on_place = function(itemstack, placer, pointed_thing) + itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, + "default:aspen_sapling", + -- minp, maxp to be checked, relative to sapling pos + -- minp_relative.y = 1 because sapling pos has been checked + {x = -2, y = 1, z = -2}, + {x = 2, y = 12, z = 2}, + -- maximum interval of interior volume check + 4) + + return itemstack + end, }) + -- -- Ores -- diff --git a/mods/default/trees.lua b/mods/default/trees.lua index dbcdcfaf..7df35666 100644 --- a/mods/default/trees.lua +++ b/mods/default/trees.lua @@ -418,6 +418,7 @@ function default.grow_new_acacia_tree(pos) path, "random", nil, false) end + -- New aspen tree function default.grow_new_aspen_tree(pos) @@ -426,3 +427,48 @@ function default.grow_new_aspen_tree(pos) minetest.place_schematic({x = pos.x - 2, y = pos.y - 1, z = pos.z - 2}, path, "0", nil, false) end + + +-- +-- Sapling 'on place' function to check protection of node and resulting tree volume +-- + +function default.sapling_on_place(itemstack, placer, pointed_thing, + sapling_name, minp_relative, maxp_relative, interval) + -- Position of sapling + local pos = pointed_thing.under + local node = minetest.get_node(pos) + local pdef = minetest.registered_nodes[node.name] + if not pdef or not pdef.buildable_to then + pos = pointed_thing.above + node = minetest.get_node(pos) + pdef = minetest.registered_nodes[node.name] + if not pdef or not pdef.buildable_to then + return itemstack + end + end + + local player_name = placer:get_player_name() + -- Check sapling position for protection + if minetest.is_protected(pos, player_name) then + minetest.record_protection_violation(pos, player_name) + return itemstack + end + -- Check tree volume for protection + if not default.intersects_protection( + vector.add(pos, minp_relative), + vector.add(pos, maxp_relative), + player_name, + interval) then + minetest.set_node(pos, {name = sapling_name}) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + else + minetest.record_protection_violation(pos, player_name) + -- Print extra information to explain + minetest.chat_send_player(player_name, "Tree will intersect protection") + end + + return itemstack +end From ea49eb3f3d4bc910da3101d3fd1038e4c2242fbe Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Mon, 25 Jul 2016 17:42:42 +0200 Subject: [PATCH 075/196] Beds, boats: Replace deprecated get_look_yaw/set_look_yaw --- mods/beds/functions.lua | 4 ++-- mods/boats/init.lua | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua index 5eed27d9..b1c2c977 100644 --- a/mods/beds/functions.lua +++ b/mods/beds/functions.lua @@ -70,7 +70,7 @@ local function lay_down(player, pos, bed_pos, state, skip) -- physics, eye_offset, etc player:set_eye_offset({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0}) - player:set_look_yaw(math.random(1, 180) / 100) + player:set_look_horizontal(math.random(1, 180) / 100) default.player_attached[name] = false player:set_physics_override(1, 1, 1) hud_flags.wielditem = true @@ -85,7 +85,7 @@ local function lay_down(player, pos, bed_pos, state, skip) -- physics, eye_offset, etc player:set_eye_offset({x = 0, y = -13, z = 0}, {x = 0, y = 0, z = 0}) local yaw, param2 = get_look_yaw(bed_pos) - player:set_look_yaw(yaw) + player:set_look_horizontal(yaw) local dir = minetest.facedir_to_dir(param2) local p = {x = bed_pos.x + dir.x / 2, y = bed_pos.y, z = bed_pos.z + dir.z / 2} player:set_physics_override(0, 0, 0) diff --git a/mods/boats/init.lua b/mods/boats/init.lua index caaef578..37cb916b 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -79,7 +79,7 @@ function boat.on_rightclick(self, clicker) minetest.after(0.2, function() default.player_set_animation(clicker, "sit" , 30) end) - self.object:setyaw(clicker:get_look_yaw() - math.pi / 2) + self.object:setyaw(clicker:get_look_horizontal() - math.pi / 2) end end From 4fba897a96a0fdd113632bc82a99a530c42e5c73 Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 30 Jul 2016 01:49:49 +0100 Subject: [PATCH 076/196] Bones: Improve bones textures Add mouth, remove jaw shadow, shade eyesockets. Darker shading for spine and rotate texture using ^[transform2 instead of inverting texture. Use 'node sound gravel defaults' for sounds. --- mods/bones/init.lua | 7 ++----- mods/bones/textures/bones_front.png | Bin 655 -> 656 bytes mods/bones/textures/bones_top.png | Bin 644 -> 662 bytes 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/mods/bones/init.lua b/mods/bones/init.lua index a39b23d4..8c355426 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -27,7 +27,7 @@ local share_bones_time_early = tonumber(minetest.setting_get("share_bones_time_e minetest.register_node("bones:bones", { description = "Bones", tiles = { - "bones_top.png", + "bones_top.png^[transform2", "bones_bottom.png", "bones_side.png", "bones_side.png", @@ -36,10 +36,7 @@ minetest.register_node("bones:bones", { }, paramtype2 = "facedir", groups = {dig_immediate = 2}, - sounds = default.node_sound_dirt_defaults({ - footstep = {name = "default_gravel_footstep", gain = 0.5}, - dug = {name = "default_gravel_footstep", gain = 1.0}, - }), + sounds = default.node_sound_gravel_defaults(), can_dig = function(pos, player) local inv = minetest.get_meta(pos):get_inventory() diff --git a/mods/bones/textures/bones_front.png b/mods/bones/textures/bones_front.png index bfec3a11637e8d96a6d53d775085cabf20cd1241..1e52437017beddaad8f4febf9427cb5e95b81ce0 100644 GIT binary patch delta 602 zcmV-g0;THHmp65kTWSV9+n}6Mk<9ITeluD&+HoIQ0 zUteE8KR=htrBbThZZ8&#R1n8;u~>Y6f8W~K+0itOa~{XB>$>y#JPboAWvx~#m&?!3 z&tG3(2%6Dw{6?^eJu!r!C+un*2~MwUkgepA;f00S*=#OVHf~rvss${=H>>#?d|RVJc^<; zbUvTg7K=r-S{)1qdwY8T2qA=!^zaXFwOVOt0GUpwvwvEx3WdVsDr<#L>JN~vX8LI~3|d%d2<7<+qrV~qK} zUoMxs-BT_A$8kvlI-vA>$?8&@i80@l~ToGkr3i} o-h4hUl}b`d$8nTWySuyp07^y~%YEn0RR91007*qoM6N<$g5TsR{{R30 delta 601 zcmV-f0;c_t1&;-gL4OGmFdteH(D?uW0xn5JK~yNuby3Y~>OdI%OcR+p{xYHo77ZAr zRFQTet^`347rucn;S=~aeT^=hzrfI6GTB%fQ+xC55)3j(bdVduJ!D_Y2<#N$z^l&)L z=kw$7`2GFOIj`62yWLI*f*{CdvtM6dSFu=3k|aV%5CoQGZMR#`^B800a=B0_e0+TT z{{AkP%k%ln7-Nh@G))5l*L4XYVHjeJ5kkK2BZM-UOc;hQFE82(4DDcDpSn5($hkrS$sx`jUFR zUK2tL!*Co&a$R>andrJcolY-3aLy^Er_*V_-%G;%X0s9L2ZOPWm$sMYBdoW03!GI_ka8SK9kA3y}iA@zNXXZzx@3C z{ESAU=jUet&~;t*JWo-So0}WXxj6ruVYytYs)`V5G#U}ZFc3l*W3djURIElR-E207 zVTexi`MhOWl}bfI2nm0dWxc<@1HkR=tt`s`5Rb!!Vsr%d)&!EM~JA=RBLuDvDy; n_IA6?<#LQM(=<8f$z<{m*nc9f1|MgS00000NkvXXu0mjf<~JVP diff --git a/mods/bones/textures/bones_top.png b/mods/bones/textures/bones_top.png index 29320ce99b2d04e6aea36fa90c8c9336858ceb69..198a8a2ddeb5de43a9579e6ba2ed5eff001b3876 100644 GIT binary patch delta 608 zcmV-m0-yba1(pSnL4O_r5iVA{33dPg0yRlQK~yNubyB}-`cM=;wm0@dZbi636DVnr z;9x_kgF}ZxKqw9l4t)XNzz6Ulx_0X1?$EWxH^^e3hy{C9Qb|*h>#ZiO`|9( zl}h=1UI_8=@$vin`}6Z7rM$krPLf0s(lj*;W3gDEEXxo=XJ=M(Hk&HP7)Md$`+m;zJYCm?5RT(KK0Y3G zxVgEZlxmu0S=I^XJPbp}ao*qGm8$Eyiq~v5m4lRWwOSnxhxK}mOw$B_IF2pL0suAc zd_D(&*Vk9ox!>;rV7uL(pP!>7No?B=g24Cv+uPeprGG*Q>G%6;o0L*Qi066Z@mL4} z0EiI67;|0s<>kfmyfjT!0RTMD0|48$0bn+pDG+V9TTRn0E-s{$wrz9HIp_bz<(xCd z5JIMDVvHM&MowK(*L6b3)6>(@EpX{JiWia&$6soEFy%K%jIM; uky09lp=lap?ECw>R4VOuJN0>mLg5coB@Z+lWlxy^0000_8aBPxcN=Ff$}U!ff0k zQ3hFXg-sz=TDXmcMS3g22k?=61WOx1Yy~Te6{c7RLb64OFf$T#!CMS$aq*sRn2+B% z-ycs10l-?zIR~&-B220x%wrx3{<3wk?X{&wuCV=kD(A-rnADIMiDI z{QQi^<1h?gUS4LiSy2?$+N!F8Ab5Lw^E{6L7!HR@sXWi`?(XoL&d<-SwRxUfYX@g% zXLVh3&X>z2{-Z3*f*=6U_dVg9E2ZAw-zlYKS!%5rW4E`r0IsjE8DosG)oPXJdE2%C z$n*2FW1pU$0)J3SZNTgGT5H{P-RtWsA>{k}JC0-GKKi~_N@=Z)F^&X)b8d{Os_Nq6 z;_>mZD2lqSz3FsX*R?B>Qo7QQj}HJ*6uIZs)z#P6SJO13(P#jGQtJD@@B0Ae^Z9%} zkD@4wA|XUsmH_IyPLiZ;+oowq9LIg%bIzT~!^6X-hkuRXWHMPUmj?$2*4jZBhEht# z*l09z4vy-Q+}zv%NRote-ZYKY+M|>*#@v|i@9%%z!{z0r%j2MMZBR<3l*h-%CnqOT zN-5=ZIu$}lDYGo2l%{E#rm2@C2_dBGy1wr>q5n}?mO&7>6?sC4G))(ag}X{)%>Mqq zQi>2_j7RZ(KaOLqHGrzBwzjqgS(X6^!;o{nv$F%>>FJ3OQWOQH^yuhF2w{xrx^6O= c93CG21$LPQQWkH8TL1t607*qoM6N<$f^M!VPyhe` From 00c2dde4ea0d08224235649af25d23a4c49b15b3 Mon Sep 17 00:00:00 2001 From: Tim Date: Sat, 30 Jul 2016 14:21:30 +0200 Subject: [PATCH 077/196] Doors: Fix potential crashes, code improvements Fix crash when doors are placed under unknown nodes. Share a can_dig among doors, that does not crash on nil-player. Only set can_dig if we actually protect the door. --- mods/doors/init.lua | 45 ++++++++++++++------------------------------- 1 file changed, 14 insertions(+), 31 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 20dbb855..88849652 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -203,6 +203,14 @@ local function on_place_node(place_to, newnode, end end +local function can_dig_door(pos, digger) + local digger_name = digger and digger:get_player_name() + if digger_name and minetest.get_player_privs(digger_name).protection_bypass then + return true + end + return minetest.get_meta(pos):get_string("doors_owner") == digger_name +end + function doors.register(name, def) if not name:find(":") then name = "doors:" .. name @@ -273,8 +281,10 @@ function doors.register(name, def) 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 top_node = minetest.get_node_or_nil(above) + local topdef = top_node and minetest.registered_nodes[top_node.name] + + if not topdef or not topdef.buildable_to then return itemstack end @@ -336,21 +346,6 @@ function doors.register(name, def) end def.recipe = nil - local can_dig = function(pos, digger) - if not def.protected then - return true - end - if minetest.check_player_privs(digger, "protection_bypass") then - return true - end - local meta = minetest.get_meta(pos) - local owner_name - if digger then - owner_name = digger:get_player_name() - end - return meta:get_string("doors_owner") == owner_name - end - if not def.sounds then def.sounds = default.node_sound_wood_defaults() end @@ -379,14 +374,12 @@ function doors.register(name, def) minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) nodeupdate({x = pos.x, y = pos.y + 1, z = pos.z}) end - def.can_dig = function(pos, player) - return can_dig(pos, player) - end def.on_rotate = function(pos, node, user, mode, new_param2) return false end if def.protected then + def.can_dig = can_dig_door def.on_blast = function() end else def.on_blast = function(pos, intensity) @@ -540,16 +533,6 @@ function doors.register_trapdoor(name, def) local name_closed = name 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 - return true - end - local meta = minetest.get_meta(pos) - 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) _doors.trapdoor_toggle(pos, node, clicker) return itemstack @@ -560,9 +543,9 @@ function doors.register_trapdoor(name, def) def.paramtype = "light" def.paramtype2 = "facedir" def.is_ground_content = false - def.can_dig = check_player_priv if def.protected then + def.can_dig = can_dig_door def.after_place_node = function(pos, placer, itemstack, pointed_thing) local pn = placer:get_player_name() local meta = minetest.get_meta(pos) From 265c40b5584661bd51087dcf755195c8ef11a4a4 Mon Sep 17 00:00:00 2001 From: paramat Date: Wed, 3 Aug 2016 01:35:20 +0100 Subject: [PATCH 078/196] Doors: Trim open fence gate collision box Previously, the collision box extended into an empty node, causing falling node objects to land on the open gate but not transform back into normal nodes. Now fallng node objects will fall through and either side of the end of the open gate and transform back. --- 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 88849652..3e67ef44 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -706,7 +706,7 @@ function doors.register_fencegate(name, def) fence_open.collision_box = { type = "fixed", fixed = {{-1/2, -1/2, -1/4, -3/8, 1/2, 1/4}, - {-5/8, -3/8, -14/16, -3/8, 3/8, 0}}, + {-5/8, -3/8, -1/2, -3/8, 3/8, 0}}, } minetest.register_node(":" .. name .. "_closed", fence_closed) From 6c83ea0b482545517632907498eecec9c7e6012f Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Wed, 3 Aug 2016 09:10:09 +0100 Subject: [PATCH 079/196] TNT: Fix bug with huge stacks This fixes the TNT bug that can crash game when blowing up a container which holds huge stacks above the norm... e.g. give yourself 65535 snow, place in chest, blow up, stalled! --- 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 c5aa95c9..2e82c4ed 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -47,7 +47,7 @@ end local function eject_drops(drops, pos, radius) local drop_pos = vector.new(pos) for _, item in pairs(drops) do - local count = item:get_count() + local count = math.min(item:get_count(), 99) while count > 0 do local take = math.max(1,math.min(radius * radius, count, From 60cf3f85b6e661482ec2705cadbdc1b04e388d19 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 2 Aug 2016 20:10:57 +0200 Subject: [PATCH 080/196] Doors: Allow the screwdriver to rotate doors around y-axis. Keep other axis' disabled to prevent the hidden placeholder node to become irremovable to players. --- mods/doors/init.lua | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 3e67ef44..b4cf90ff 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -374,9 +374,7 @@ function doors.register(name, def) minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) nodeupdate({x = pos.x, y = pos.y + 1, z = pos.z}) end - def.on_rotate = function(pos, node, user, mode, new_param2) - return false - end + def.on_rotate = screwdriver and screwdriver.rotate_simple or false if def.protected then def.can_dig = can_dig_door From 20fa037313d681e5986708b60c1143081aaad318 Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 5 Aug 2016 12:14:33 +0200 Subject: [PATCH 081/196] Screwdriver: disallow rotation with `on_rotate = false` Other screwdriver mods, or mods that cause rotation, might operate without the screwdriver mod loaded and have `screwdriver.disallow` unavailable. This allows nodes to default to full-disallow rather than full-rotation in such a situation. --- game_api.txt | 2 +- mods/screwdriver/init.lua | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/game_api.txt b/game_api.txt index 581d76cc..2f0715f8 100644 --- a/game_api.txt +++ b/game_api.txt @@ -348,7 +348,7 @@ To use it, add the `on_screwdriver` function to the node definition. * `new_param2` the new value of param2 that would have been set if on_rotate wasn't there * return value: false to disallow rotation, nil to keep default behaviour, true to allow it but to indicate that changed have already been made (so the screwdriver will wear out) - * use `on_rotate = screwdriver.disallow` to always disallow rotation + * use `on_rotate = false` to always disallow rotation * use `on_rotate = screwdriver.rotate_simple` to allow only face rotation diff --git a/mods/screwdriver/init.lua b/mods/screwdriver/init.lua index 5e6df62f..e73b618f 100644 --- a/mods/screwdriver/init.lua +++ b/mods/screwdriver/init.lua @@ -64,6 +64,7 @@ screwdriver.handler = function(itemstack, user, pointed_thing, mode, uses) end else if not ndef or not ndef.paramtype2 == "facedir" or + ndef.on_rotate == false or (ndef.drawtype == "nodebox" and not ndef.node_box.type == "fixed") or node.param2 == nil then From b408e9cce608fd8988d1112a61cb315e18dcff25 Mon Sep 17 00:00:00 2001 From: Tim Date: Sun, 26 Jun 2016 17:12:40 +0200 Subject: [PATCH 082/196] Let Travis-CI automatically run luacheck on the game --- .luacheckrc | 17 +++++++++++++++++ .travis.yml | 14 ++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 .luacheckrc create mode 100644 .travis.yml diff --git a/.luacheckrc b/.luacheckrc new file mode 100644 index 00000000..f087d303 --- /dev/null +++ b/.luacheckrc @@ -0,0 +1,17 @@ +unused_args = false +allow_defined_top = true + +read_globals = { + "DIR_DELIM", + "minetest", "core", + "dump", + "vector", "nodeupdate", + "VoxelManip", "VoxelArea", + "PseudoRandom", "ItemStack", +} + +-- Overwrites minetest.handle_node_drops +files["mods/creative/init.lua"].globals = { "minetest" } + +-- Don't report on legacy definitions of globals. +files["mods/default/legacy.lua"].global = false diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..805fe08c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,14 @@ +language: generic + +branches: + only: + - master + +sudo: required + +before_install: + - sudo apt-get update + - sudo apt-get install -y luarocks + - sudo luarocks install luacheck + +script: luacheck --no-color ./mods From 76211624acb92bad1a933fd040bedf05c87c06e5 Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 5 Aug 2016 14:55:43 +0200 Subject: [PATCH 083/196] Use minetest instead of core namespace, discourage via luacheck --- mods/bones/init.lua | 2 +- mods/bucket/init.lua | 2 +- mods/doors/init.lua | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 8c355426..2a54ee06 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -149,7 +149,7 @@ local function may_replace(pos, player) end local drop = function(pos, itemstack) - local obj = core.add_item(pos, itemstack:take_item(itemstack:get_count())) + local obj = minetest.add_item(pos, itemstack:take_item(itemstack:get_count())) if obj then obj:setvelocity({ x = math.random(-10, 10) / 9, diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index 3770be6a..a7cb0f27 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -141,7 +141,7 @@ minetest.register_craftitem("bucket:bucket_empty", { else local pos = user:getpos() pos.y = math.floor(pos.y + 0.5) - core.add_item(pos, liquiddef.itemname) + minetest.add_item(pos, liquiddef.itemname) end -- set to return empty buckets minus 1 diff --git a/mods/doors/init.lua b/mods/doors/init.lua index b4cf90ff..86f5f7e7 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -185,7 +185,7 @@ end local function on_place_node(place_to, newnode, placer, oldnode, itemstack, pointed_thing) -- Run script hook - for _, callback in ipairs(core.registered_on_placenodes) do + for _, callback in ipairs(minetest.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 = From 14b99a72a90bcfe6712caa5c50255bce2e880b37 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Thu, 4 Aug 2016 10:22:41 +0100 Subject: [PATCH 084/196] Tnt: Limit blown up dropped stacks to stack_max This replaces the hardcoded 99 item limit and instead uses the get_stack_max() limit for each item. --- 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 2e82c4ed..3a397a78 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -47,7 +47,7 @@ end local function eject_drops(drops, pos, radius) local drop_pos = vector.new(pos) for _, item in pairs(drops) do - local count = math.min(item:get_count(), 99) + local count = math.min(item:get_count(), item:get_stack_max()) while count > 0 do local take = math.max(1,math.min(radius * radius, count, From 61a197ffd87aa0f813479012f93cc5965eb9017d Mon Sep 17 00:00:00 2001 From: DonBatman Date: Sun, 7 Aug 2016 17:23:44 -0700 Subject: [PATCH 085/196] Changed snow nodebox to 'walkable = false' Allows walking in, and prevents being trapped in, 2 node high spaces. Simulates player's feet sinking into snow. Easier jumping up onto nodes with snow. --- mods/default/nodes.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 05d9f32d..5bf5458c 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -422,6 +422,7 @@ minetest.register_node("default:snow", { paramtype = "light", buildable_to = true, floodable = true, + walkable = false, drawtype = "nodebox", node_box = { type = "fixed", From 619ac5269393534c3f8ad8229514b17aa47eb513 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Mon, 8 Aug 2016 10:56:13 +0100 Subject: [PATCH 086/196] Add labels to ABMs Useful for searches and the mod profiler. --- mods/default/functions.lua | 7 +++++++ mods/farming/nodes.lua | 1 + mods/fire/init.lua | 4 ++++ mods/flowers/init.lua | 2 ++ mods/stairs/init.lua | 1 + mods/tnt/init.lua | 1 + 6 files changed, 16 insertions(+) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index a98d091f..07f358cb 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -111,6 +111,7 @@ default.cool_lava = function(pos, node) end minetest.register_abm({ + label = "Lava cooling", nodenames = {"default:lava_source", "default:lava_flowing"}, neighbors = {"group:water"}, interval = 1, @@ -189,6 +190,7 @@ function default.grow_papyrus(pos, node) end minetest.register_abm({ + label = "Grow cactus", nodenames = {"default:cactus"}, neighbors = {"group:sand"}, interval = 12, @@ -199,6 +201,7 @@ minetest.register_abm({ }) minetest.register_abm({ + label = "Grow papyrus", nodenames = {"default:papyrus"}, neighbors = {"default:dirt", "default:dirt_with_grass"}, interval = 14, @@ -303,6 +306,7 @@ default.after_place_leaves = function(pos, placer, itemstack, pointed_thing) end minetest.register_abm({ + label = "Leaf decay", nodenames = {"group:leafdecay"}, neighbors = {"air", "group:liquid"}, -- A low interval and a high inverse chance spreads the load @@ -384,6 +388,7 @@ minetest.register_abm({ -- minetest.register_abm({ + label = "Grass spread", nodenames = {"default:dirt"}, neighbors = { "default:dirt_with_grass", @@ -440,6 +445,7 @@ minetest.register_abm({ -- minetest.register_abm({ + label = "Grass covered", nodenames = { "default:dirt_with_grass", "default:dirt_with_dry_grass", @@ -466,6 +472,7 @@ minetest.register_abm({ -- minetest.register_abm({ + label = "Moss growth", nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble"}, neighbors = {"group:water"}, interval = 16, diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua index c011df1e..9fa66c30 100644 --- a/mods/farming/nodes.lua +++ b/mods/farming/nodes.lua @@ -94,6 +94,7 @@ minetest.register_node("farming:straw", { }) minetest.register_abm({ + label = "Farming soil", nodenames = {"group:field"}, interval = 15, chance = 4, diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 34613da5..3e04264e 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -221,6 +221,7 @@ end -- Extinguish all flames quickly with water, snow, ice minetest.register_abm({ + label = "Extinguish flame", nodenames = {"fire:basic_flame", "fire:permanent_flame"}, neighbors = {"group:puts_out_fire"}, interval = 3, @@ -241,6 +242,7 @@ if minetest.setting_getbool("disable_fire") then -- Remove basic flames only minetest.register_abm({ + label = "Remove disabled fire", nodenames = {"fire:basic_flame"}, interval = 7, chance = 1, @@ -253,6 +255,7 @@ else -- Ignite neighboring nodes, add basic flames minetest.register_abm({ + label = "Ignite flame", nodenames = {"group:flammable"}, neighbors = {"group:igniter"}, interval = 7, @@ -273,6 +276,7 @@ else -- Remove flammable nodes minetest.register_abm({ + label = "Remove flammable nodes", nodenames = {"fire:basic_flame"}, neighbors = "group:flammable", interval = 5, diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index 83a05fad..8cf7ade2 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -110,6 +110,7 @@ function flowers.flower_spread(pos, node) end minetest.register_abm({ + label = "Flower spread", nodenames = {"group:flora"}, neighbors = {"default:dirt_with_grass", "default:dirt_with_dry_grass", "default:desert_sand"}, @@ -167,6 +168,7 @@ minetest.register_node("flowers:mushroom_brown", { -- Mushroom spread and death minetest.register_abm({ + label = "Mushroom spread", nodenames = {"flowers:mushroom_brown", "flowers:mushroom_red"}, interval = 11, chance = 50, diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index faaa92b3..001640fa 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -236,6 +236,7 @@ end if replace then minetest.register_abm({ + label = "Slab replace", nodenames = {"group:slabs_replace"}, interval = 16, chance = 1, diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 3a397a78..1e6e29d5 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -506,6 +506,7 @@ if enable_tnt then }) minetest.register_abm({ + label = "TNT ignition", nodenames = {"group:tnt", "tnt:gunpowder"}, neighbors = {"fire:basic_flame", "default:lava_source", "default:lava_flowing"}, interval = 4, From 2ecbc43a7a299894d1ce0f7b27b262a0b6fba71c Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 7 Aug 2016 03:54:08 +0100 Subject: [PATCH 087/196] Default: Optimise and simplify leafdecay ABM, remove cache With thanks to contributor tenplus1 Remove leaf cache and globalstep accumulator limiter Use 'pos' instead of 'p0' Remove non-essential 'group:liquid' from 'neighbors' Increase chance value to 10 to compensate for disabled cache Disable 'catch-up' to avoid the ABM often becoming 10 times more intensive Remove use of 'do preserve' bool, instead simply 'return' Remove unnecessary checks for 'd' and 'd == 0' Don't 'get' n0, use already present 'node' instead Swap order two conditionals so that the one most likely is first --- mods/default/functions.lua | 104 +++++++++++-------------------------- 1 file changed, 31 insertions(+), 73 deletions(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 07f358cb..3c8a871a 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -126,6 +126,7 @@ minetest.register_abm({ -- -- optimized helper to put all items in an inventory into a drops list -- + function default.get_inventory_drops(pos, inventory, drops) local inv = minetest.get_meta(pos):get_inventory() local n = #drops @@ -229,6 +230,7 @@ end -- -- Fence registration helper -- + function default.register_fence(name, def) minetest.register_craft({ output = name .. " 4", @@ -286,16 +288,7 @@ end -- Leafdecay -- -default.leafdecay_trunk_cache = {} -default.leafdecay_enable_cache = true --- Spread the load of finding trunks -default.leafdecay_trunk_find_allow_accumulator = 0 - -minetest.register_globalstep(function(dtime) - local finds_per_second = 5000 - default.leafdecay_trunk_find_allow_accumulator = - math.floor(dtime * finds_per_second) -end) +-- Prevent decay of placed leaves default.after_place_leaves = function(pos, placer, itemstack, pointed_thing) if placer and not placer:get_player_control().sneak then @@ -305,80 +298,44 @@ default.after_place_leaves = function(pos, placer, itemstack, pointed_thing) end end +-- Leafdecay ABM + minetest.register_abm({ label = "Leaf decay", nodenames = {"group:leafdecay"}, - neighbors = {"air", "group:liquid"}, - -- A low interval and a high inverse chance spreads the load + neighbors = {"air"}, interval = 2, - chance = 5, + chance = 10, + catch_up = false, - action = function(p0, node, _, _) - --print("leafdecay ABM at "..p0.x..", "..p0.y..", "..p0.z..")") - local do_preserve = false - local d = minetest.registered_nodes[node.name].groups.leafdecay - if not d or d == 0 then - --print("not groups.leafdecay") + action = function(pos, node, _, _) + -- Check if leaf is placed + if node.param2 ~= 0 then return end - local n0 = minetest.get_node(p0) - if n0.param2 ~= 0 then - --print("param2 ~= 0") + + local rad = minetest.registered_nodes[node.name].groups.leafdecay + -- Assume ignore is a trunk, to make this + -- work at the border of a loaded area + if minetest.find_node_near(pos, rad, {"ignore", "group:tree"}) then return end - local p0_hash = nil - if default.leafdecay_enable_cache then - p0_hash = minetest.hash_node_position(p0) - local trunkp = default.leafdecay_trunk_cache[p0_hash] - if trunkp then - local n = minetest.get_node(trunkp) - local reg = minetest.registered_nodes[n.name] - -- Assume ignore is a trunk, to make the thing - -- work at the border of the active area - if n.name == "ignore" or (reg and reg.groups.tree and - reg.groups.tree ~= 0) then - --print("cached trunk still exists") - return - end - --print("cached trunk is invalid") - -- Cache is invalid - table.remove(default.leafdecay_trunk_cache, p0_hash) + -- Drop stuff + local itemstacks = minetest.get_node_drops(node.name) + for _, itemname in ipairs(itemstacks) do + if itemname ~= node.name or + minetest.get_item_group(node.name, "leafdecay_drop") ~= 0 then + local p_drop = { + x = pos.x - 0.5 + math.random(), + y = pos.y - 0.5 + math.random(), + z = pos.z - 0.5 + math.random(), + } + minetest.add_item(p_drop, itemname) end end - if default.leafdecay_trunk_find_allow_accumulator <= 0 then - return - end - default.leafdecay_trunk_find_allow_accumulator = - default.leafdecay_trunk_find_allow_accumulator - 1 - -- Assume ignore is a trunk, to make the thing - -- work at the border of the active area - local p1 = minetest.find_node_near(p0, d, {"ignore", "group:tree"}) - if p1 then - do_preserve = true - if default.leafdecay_enable_cache then - --print("caching trunk") - -- Cache the trunk - default.leafdecay_trunk_cache[p0_hash] = p1 - end - end - if not do_preserve then - -- Drop stuff other than the node itself - local itemstacks = minetest.get_node_drops(n0.name) - for _, itemname in ipairs(itemstacks) do - if minetest.get_item_group(n0.name, "leafdecay_drop") ~= 0 or - itemname ~= n0.name then - local p_drop = { - x = p0.x - 0.5 + math.random(), - y = p0.y - 0.5 + math.random(), - z = p0.z - 0.5 + math.random(), - } - minetest.add_item(p_drop, itemname) - end - end - -- Remove node - minetest.remove_node(p0) - nodeupdate(p0) - end + -- Remove node + minetest.remove_node(pos) + nodeupdate(pos) end }) @@ -440,6 +397,7 @@ minetest.register_abm({ end }) + -- -- Grass and dry grass removed in darkness -- From 1b745d401df6a5fda7845dd080f0f0bdb948b4c8 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Wed, 10 Aug 2016 14:03:18 +0100 Subject: [PATCH 088/196] Default/trees: Faster 'is snow nearby' function Use 'find node near' instead of 'find nodes in area' --- mods/default/trees.lua | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mods/default/trees.lua b/mods/default/trees.lua index 7df35666..5cd7e156 100644 --- a/mods/default/trees.lua +++ b/mods/default/trees.lua @@ -27,10 +27,8 @@ end -- 'is snow nearby' function local function is_snow_nearby(pos) - 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 + return minetest.find_node_near(pos, 1, + {"default:snow", "default:snowblock", "default:dirt_with_snow"}) end From 088385493ad0d64555609c8cb570c6e35eb8157a Mon Sep 17 00:00:00 2001 From: pithydon Date: Sat, 30 Jul 2016 17:15:42 -0600 Subject: [PATCH 089/196] Default: Improve fences inventory/wield images --- mods/default/nodes.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 5bf5458c..fe7cbb12 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1857,6 +1857,8 @@ minetest.register_node("default:ladder_steel", { default.register_fence("default:fence_wood", { description = "Wooden Fence", texture = "default_fence_wood.png", + inventory_image = "default_fence_overlay.png^default_wood.png^default_fence_overlay.png^[makealpha:255,126,126", + wield_image = "default_fence_overlay.png^default_wood.png^default_fence_overlay.png^[makealpha:255,126,126", material = "default:wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() @@ -1865,6 +1867,8 @@ default.register_fence("default:fence_wood", { default.register_fence("default:fence_acacia_wood", { description = "Acacia Fence", texture = "default_fence_acacia_wood.png", + inventory_image = "default_fence_overlay.png^default_acacia_wood.png^default_fence_overlay.png^[makealpha:255,126,126", + wield_image = "default_fence_overlay.png^default_acacia_wood.png^default_fence_overlay.png^[makealpha:255,126,126", material = "default:acacia_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() @@ -1873,6 +1877,8 @@ default.register_fence("default:fence_acacia_wood", { default.register_fence("default:fence_junglewood", { description = "Junglewood Fence", texture = "default_fence_junglewood.png", + inventory_image = "default_fence_overlay.png^default_junglewood.png^default_fence_overlay.png^[makealpha:255,126,126", + wield_image = "default_fence_overlay.png^default_junglewood.png^default_fence_overlay.png^[makealpha:255,126,126", material = "default:junglewood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() @@ -1881,6 +1887,8 @@ default.register_fence("default:fence_junglewood", { default.register_fence("default:fence_pine_wood", { description = "Pine Fence", texture = "default_fence_pine_wood.png", + inventory_image = "default_fence_overlay.png^default_pine_wood.png^default_fence_overlay.png^[makealpha:255,126,126", + wield_image = "default_fence_overlay.png^default_pine_wood.png^default_fence_overlay.png^[makealpha:255,126,126", material = "default:pine_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() @@ -1889,6 +1897,8 @@ default.register_fence("default:fence_pine_wood", { default.register_fence("default:fence_aspen_wood", { description = "Aspen Fence", texture = "default_fence_aspen_wood.png", + inventory_image = "default_fence_overlay.png^default_aspen_wood.png^default_fence_overlay.png^[makealpha:255,126,126", + wield_image = "default_fence_overlay.png^default_aspen_wood.png^default_fence_overlay.png^[makealpha:255,126,126", material = "default:aspen_wood", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sounds = default.node_sound_wood_defaults() From cabf80b743e64869092127608c4d9ef5e09592c0 Mon Sep 17 00:00:00 2001 From: paramat Date: Mon, 15 Aug 2016 21:29:52 +0100 Subject: [PATCH 090/196] Fire: Use 'enable fire' setting instead of 'disable fire' --- minetest.conf.example | 6 +++--- mods/fire/init.lua | 13 ++++++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/minetest.conf.example b/minetest.conf.example index d6e00000..f5e4e85d 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -20,9 +20,9 @@ # 0 to disable. By default it is "share_bones_time" divide by four. #share_bones_time_early = 300 -# Whether standard fire should be disabled ('basic flame' nodes will disappear) -# 'permanent flame' nodes will remain with either setting -#disable_fire = false +# Whether fire should be enabled. If disabled, 'basic flame' nodes will disappear. +# 'permanent flame' nodes will remain with either setting. +#enable_fire = true # Whether the stuff in initial_stuff should be given to new players #give_initial_stuff = false diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 3e04264e..6543ceef 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -235,9 +235,16 @@ minetest.register_abm({ }) --- Enable the following ABMs according to 'disable fire' setting +-- Enable the following ABMs according to 'enable fire' setting -if minetest.setting_getbool("disable_fire") then +local fire_enabled = minetest.setting_getbool("enable_fire") +if fire_enabled == nil then + -- New setting not specified, check for old setting. + -- If old setting is also not specified, 'not nil' is true. + fire_enabled = not minetest.setting_getbool("disable_fire") +end + +if not fire_enabled then -- Remove basic flames only @@ -250,7 +257,7 @@ if minetest.setting_getbool("disable_fire") then action = minetest.remove_node, }) -else +else -- Fire enabled -- Ignite neighboring nodes, add basic flames From 3be2f12bebca154ca7e8ba155e1b05bc189179e1 Mon Sep 17 00:00:00 2001 From: Megaf Date: Sun, 21 Aug 2016 21:18:32 +0100 Subject: [PATCH 091/196] Flowers: Add missing aliases for mushrooms from the mushroom mod --- mods/flowers/init.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index 8cf7ade2..e572357c 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -208,6 +208,8 @@ minetest.register_alias("flowers:mushroom_spores_brown", "flowers:mushroom_brown minetest.register_alias("flowers:mushroom_spores_red", "flowers:mushroom_red") minetest.register_alias("flowers:mushroom_fertile_brown", "flowers:mushroom_brown") minetest.register_alias("flowers:mushroom_fertile_red", "flowers:mushroom_red") +minetest.register_alias("mushroom:brown_natural", "flowers:mushroom_brown") +minetest.register_alias("mushroom:red_natural", "flowers:mushroom_red") -- From 471d1cf159f7cae6efacf911c04fed2fd697c6d9 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sat, 27 Aug 2016 18:07:57 +0100 Subject: [PATCH 092/196] Add search on enter press to creative inventory --- mods/creative/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/creative/init.lua b/mods/creative/init.lua index 1e7b4087..cc7f81c8 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -125,7 +125,7 @@ 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) .. "]" .. + "field[0.3,3.5;2.2,1;creative_filter;;" .. minetest.formspec_escape(inv.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) .. "]" .. @@ -192,7 +192,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) inv.filter = "" creative.update_creative_inventory(player_name) creative.set_creative_formspec(player, 0) - elseif fields.creative_search then + elseif fields.creative_search or + fields.key_enter_field == "creative_filter" then player_inventory[player_name].start_i = 1 inv.filter = fields.creative_filter:lower() creative.update_creative_inventory(player_name) From 995256744ad8c7ec396b3efd8f88a5a563b4886c Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 27 Aug 2016 02:41:31 +0100 Subject: [PATCH 093/196] Default, stairs, doors: Vary wood flammable and choppy group values Make the softer woods, pine and aspen, 'flammable = 3'. Correct inconsistent flammability of wood and stairs in relation to all other solid wood nodes in MTGame. Make the the softer woods, pine and aspen, 'choppy = 3'. --- mods/default/nodes.lua | 22 +++++++++++----------- mods/doors/init.lua | 4 ++-- mods/stairs/init.lua | 10 +++++----- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index fe7cbb12..79aea5bb 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -486,7 +486,7 @@ minetest.register_node("default:wood", { place_param2 = 0, tiles = {"default_wood.png"}, is_ground_content = false, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, + groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1}, sounds = default.node_sound_wood_defaults(), }) @@ -602,7 +602,7 @@ minetest.register_node("default:junglewood", { place_param2 = 0, tiles = {"default_junglewood.png"}, is_ground_content = false, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, + groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1}, sounds = default.node_sound_wood_defaults(), }) @@ -672,7 +672,7 @@ minetest.register_node("default:pine_tree", { "default_pine_tree.png"}, paramtype2 = "facedir", is_ground_content = false, - groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, + groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), on_place = minetest.rotate_node @@ -684,7 +684,7 @@ minetest.register_node("default:pine_wood", { place_param2 = 0, tiles = {"default_pine_wood.png"}, is_ground_content = false, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, + groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, sounds = default.node_sound_wood_defaults(), }) @@ -724,7 +724,7 @@ minetest.register_node("default:pine_sapling", { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} }, - groups = {snappy = 2, dig_immediate = 3, flammable = 2, + groups = {snappy = 2, dig_immediate = 3, flammable = 3, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), @@ -765,7 +765,7 @@ minetest.register_node("default:acacia_wood", { place_param2 = 0, tiles = {"default_acacia_wood.png"}, is_ground_content = false, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, + groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1}, sounds = default.node_sound_wood_defaults(), }) @@ -833,7 +833,7 @@ minetest.register_node("default:aspen_tree", { "default_aspen_tree.png"}, paramtype2 = "facedir", is_ground_content = false, - groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, + groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), on_place = minetest.rotate_node @@ -845,7 +845,7 @@ minetest.register_node("default:aspen_wood", { place_param2 = 0, tiles = {"default_aspen_wood.png"}, is_ground_content = false, - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, + groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, sounds = default.node_sound_wood_defaults(), }) @@ -885,7 +885,7 @@ minetest.register_node("default:aspen_sapling", { type = "fixed", fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} }, - groups = {snappy = 2, dig_immediate = 3, flammable = 2, + groups = {snappy = 2, dig_immediate = 3, flammable = 3, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), @@ -1890,7 +1890,7 @@ default.register_fence("default:fence_pine_wood", { inventory_image = "default_fence_overlay.png^default_pine_wood.png^default_fence_overlay.png^[makealpha:255,126,126", wield_image = "default_fence_overlay.png^default_pine_wood.png^default_fence_overlay.png^[makealpha:255,126,126", material = "default:pine_wood", - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = default.node_sound_wood_defaults() }) @@ -1900,7 +1900,7 @@ default.register_fence("default:fence_aspen_wood", { inventory_image = "default_fence_overlay.png^default_aspen_wood.png^default_fence_overlay.png^[makealpha:255,126,126", wield_image = "default_fence_overlay.png^default_aspen_wood.png^default_fence_overlay.png^[makealpha:255,126,126", material = "default:aspen_wood", - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = default.node_sound_wood_defaults() }) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 86f5f7e7..0888077f 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -744,12 +744,12 @@ doors.register_fencegate("doors:gate_pine_wood", { description = "Pine Fence Gate", texture = "default_pine_wood.png", material = "default:pine_wood", - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} + groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3} }) doors.register_fencegate("doors:gate_aspen_wood", { description = "Aspen Fence Gate", texture = "default_aspen_wood.png", material = "default:aspen_wood", - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} + groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3} }) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 001640fa..78922e40 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -269,7 +269,7 @@ end stairs.register_stair_and_slab( "wood", "default:wood", - {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"default_wood.png"}, "Wooden Stair", "Wooden Slab", @@ -279,7 +279,7 @@ stairs.register_stair_and_slab( stairs.register_stair_and_slab( "junglewood", "default:junglewood", - {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"default_junglewood.png"}, "Jungle Wood Stair", "Jungle Wood Slab", @@ -289,7 +289,7 @@ stairs.register_stair_and_slab( stairs.register_stair_and_slab( "pine_wood", "default:pine_wood", - {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, + {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, {"default_pine_wood.png"}, "Pine Wood Stair", "Pine Wood Slab", @@ -299,7 +299,7 @@ stairs.register_stair_and_slab( stairs.register_stair_and_slab( "acacia_wood", "default:acacia_wood", - {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, + {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"default_acacia_wood.png"}, "Acacia Wood Stair", "Acacia Wood Slab", @@ -309,7 +309,7 @@ stairs.register_stair_and_slab( stairs.register_stair_and_slab( "aspen_wood", "default:aspen_wood", - {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3}, + {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, {"default_aspen_wood.png"}, "Aspen Wood Stair", "Aspen Wood Slab", From 5e9e3f7e84fafd6ece535b1c7aff3b9ea4e6405b Mon Sep 17 00:00:00 2001 From: Pinky Snow Date: Sat, 27 Aug 2016 18:28:02 -0400 Subject: [PATCH 094/196] Default: Eliminate redundant 'get modpath' calls --- mods/default/init.lua | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/mods/default/init.lua b/mods/default/init.lua index b362fc75..594ea36a 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -35,14 +35,16 @@ default.gui_survival_form = "size[8,8.5]".. default.get_hotbar_bg(0,4.25) -- 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") -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").."/aliases.lua") -dofile(minetest.get_modpath("default").."/legacy.lua") +local default_path = minetest.get_modpath("default") + +dofile(default_path.."/functions.lua") +dofile(default_path.."/trees.lua") +dofile(default_path.."/nodes.lua") +dofile(default_path.."/furnace.lua") +dofile(default_path.."/tools.lua") +dofile(default_path.."/craftitems.lua") +dofile(default_path.."/crafting.lua") +dofile(default_path.."/mapgen.lua") +dofile(default_path.."/player.lua") +dofile(default_path.."/aliases.lua") +dofile(default_path.."/legacy.lua") From 0664570d227a4bb12a62816581adb72d9c053b71 Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 23 Aug 2016 20:33:37 +0100 Subject: [PATCH 095/196] Creative: Make dig times near-identical for nodes of all levels Dig time is modified according to difference (leveldiff) between tool 'maxlevel' and node 'level'. Digtime is divided by the larger of leveldiff and 1. In creative mode, where the hand is redefined to have maxlevel 3, this results in higher level nodes taking significantly longer to break. Now, to speed up digging, hand 'maxlevel' and 'digtime' have been increased such that nodes of differing levels have an insignificant effect on digtime. Dig time for all nodes is now identical to that of, for example, dirt nodes. --- 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 cc7f81c8..3affc3d9 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -222,8 +222,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end) if creative_mode then - local digtime = 0.5 - local caps = {times = {digtime, digtime, digtime}, uses = 0, maxlevel = 3} + local digtime = 42 + local caps = {times = {digtime, digtime, digtime}, uses = 0, maxlevel = 256} minetest.register_item(":", { type = "none", From 1d6fbe04cda32b05d7d4398f657dba36b470ae73 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Fri, 26 Aug 2016 11:00:49 -0700 Subject: [PATCH 096/196] Default/furnace: Indicate dst full Indicate in the infotext when a furnace has filled up `dst` but still has fuel. The info text shows the item as 100% with added "(output full)" text, indicating that while it can cook the item, there is no place for it in the `dst`. Emptying the `dst` should make the item cook immediately and furnace resume normal operation. --- mods/default/furnace.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index b5bca889..17c9280d 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -175,7 +175,11 @@ local function furnace_node_timer(pos, elapsed) local item_percent = 0 if cookable then item_percent = math.floor(src_time / cooked.time * 100) - item_state = item_percent .. "%" + if item_percent > 100 then + item_state = "100% (output full)" + else + item_state = item_percent .. "%" + end else if srclist[1]:is_empty() then item_state = "Empty" From f844a4f37987cca4c74cbd3d78b5f6ef839a8056 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 1 Sep 2016 05:56:21 +0100 Subject: [PATCH 097/196] Default: Vary wood burn times according to wood density Retain definitions for node groups to support mods. Burn time is unchanged for applewood, and increases in the order: aspen, pine, apple, acacia, jungle which is also the order of wood colour darkness. --- mods/default/crafting.lua | 185 +++++++++++++++++++++++++++++--------- 1 file changed, 143 insertions(+), 42 deletions(-) diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua index 1151f47b..7ce62d2b 100644 --- a/mods/default/crafting.lua +++ b/mods/default/crafting.lua @@ -780,12 +780,155 @@ minetest.register_craft({ -- Fuels -- +-- Support use of group:tree minetest.register_craft({ type = "fuel", recipe = "group:tree", burntime = 30, }) +-- Burn time for all woods are in order of wood density, +-- which is also the order of wood colour darkness: +-- aspen, pine, apple, acacia, jungle + +minetest.register_craft({ + type = "fuel", + recipe = "default:aspen_tree", + burntime = 22, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:pine_tree", + burntime = 26, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:tree", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:acacia_tree", + burntime = 34, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:jungletree", + burntime = 38, +}) + + +-- Support use of group:wood +minetest.register_craft({ + type = "fuel", + recipe = "group:wood", + burntime = 7, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:aspen_wood", + burntime = 5, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:pine_wood", + burntime = 6, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:wood", + burntime = 7, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:acacia_wood", + burntime = 8, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:junglewood", + burntime = 9, +}) + + +-- Support use of group:sapling +minetest.register_craft({ + type = "fuel", + recipe = "group:sapling", + burntime = 10, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:aspen_sapling", + burntime = 8, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:pine_sapling", + burntime = 9, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:sapling", + burntime = 10, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:acacia_sapling", + burntime = 11, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:junglesapling", + burntime = 12, +}) + + +minetest.register_craft({ + type = "fuel", + recipe = "default:fence_aspen_wood", + burntime = 11, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:fence_pine_wood", + burntime = 13, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:fence_wood", + burntime = 15, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:fence_acacia_wood", + burntime = 17, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:fence_junglewood", + burntime = 19, +}) + + minetest.register_craft({ type = "fuel", recipe = "default:junglegrass", @@ -816,48 +959,12 @@ minetest.register_craft({ burntime = 30, }) -minetest.register_craft({ - type = "fuel", - recipe = "default:fence_wood", - burntime = 15, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:fence_acacia_wood", - burntime = 15, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:fence_junglewood", - burntime = 15, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:fence_pine_wood", - burntime = 15, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:fence_aspen_wood", - burntime = 15, -}) - minetest.register_craft({ type = "fuel", recipe = "default:ladder_wood", burntime = 5, }) -minetest.register_craft({ - type = "fuel", - recipe = "group:wood", - burntime = 7, -}) - minetest.register_craft({ type = "fuel", recipe = "default:lava_source", @@ -888,12 +995,6 @@ minetest.register_craft({ burntime = 30, }) -minetest.register_craft({ - type = "fuel", - recipe = "group:sapling", - burntime = 10, -}) - minetest.register_craft({ type = "fuel", recipe = "default:apple", From e9d26e2ee31b4687c91f3e9a811f49b905a3a529 Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 4 Sep 2016 06:31:01 +0100 Subject: [PATCH 098/196] Licenses: Change WTFPL to MIT (part 1) Part 1: All mods except default and xpanes. Add license.txt files. Add missing README.txt files. Check and update copyright years for all contributors. Improve text format and make more consistent. --- mods/beds/README.txt | 18 +-- mods/beds/license.txt | 24 ++++ mods/boats/README.txt | 20 ++-- mods/boats/license.txt | 25 +++++ mods/bones/README.txt | 19 ++-- mods/bones/license.txt | 25 +++++ mods/creative/README.txt | 19 ++-- mods/creative/license.txt | 26 +++++ mods/doors/README.txt | 63 ++++++----- mods/doors/license.txt | 163 ++++++++++++++++++++++++++++ mods/dye/README.txt | 15 +-- mods/dye/license.txt | 24 ++++ mods/farming/README.txt | 34 ++---- mods/farming/license.txt | 59 ++++++++++ mods/flowers/README.txt | 29 ++--- mods/flowers/license.txt | 25 +++++ mods/give_initial_stuff/README.txt | 7 ++ mods/give_initial_stuff/license.txt | 24 ++++ mods/sethome/README.txt | 7 ++ mods/sethome/license.txt | 24 ++++ mods/tnt/README.txt | 33 ++---- mods/tnt/license.txt | 27 +++++ mods/walls/README.txt | 7 ++ mods/walls/license.txt | 12 ++ mods/wool/README.txt | 24 ++-- mods/wool/license.txt | 59 ++++++++++ 26 files changed, 641 insertions(+), 171 deletions(-) create mode 100644 mods/beds/license.txt create mode 100644 mods/boats/license.txt create mode 100644 mods/bones/license.txt create mode 100644 mods/creative/license.txt create mode 100644 mods/doors/license.txt create mode 100644 mods/dye/license.txt create mode 100644 mods/farming/license.txt create mode 100644 mods/flowers/license.txt create mode 100644 mods/give_initial_stuff/README.txt create mode 100644 mods/give_initial_stuff/license.txt create mode 100644 mods/sethome/README.txt create mode 100644 mods/sethome/license.txt create mode 100644 mods/tnt/license.txt create mode 100644 mods/walls/README.txt create mode 100644 mods/walls/license.txt create mode 100644 mods/wool/license.txt diff --git a/mods/beds/README.txt b/mods/beds/README.txt index 9710c459..1f8400c4 100644 --- a/mods/beds/README.txt +++ b/mods/beds/README.txt @@ -1,8 +1,10 @@ Minetest Game mod: beds ======================= -by BlockMen (c) 2014-2015 +See license.txt for license information. -Version: 1.1.1 +Authors of source code +---------------------- +BlockMen (MIT) About ~~~~~ @@ -16,15 +18,3 @@ is set to the beds location and you will respawn there after death. You can disable the respawn at beds by setting "enable_bed_respawn = false" in minetest.conf You can also disable the night skip feature by setting "enable_bed_night_skip = false" in minetest.conf or by using the /set command ingame. - - -License of source code, textures: WTFPL ---------------------------------------- -(c) Copyright BlockMen (2014-2015) - - -This program is free software. It comes without any warranty, to -the extent permitted by applicable law. You can redistribute it -and/or modify it under the terms of the Do What The Fuck You Want -To Public License, Version 2, as published by Sam Hocevar. See -http://sam.zoy.org/wtfpl/COPYING for more details. diff --git a/mods/beds/license.txt b/mods/beds/license.txt new file mode 100644 index 00000000..8824b04a --- /dev/null +++ b/mods/beds/license.txt @@ -0,0 +1,24 @@ +License of source code and media (textures) +------------------------------------------- + +The MIT License (MIT) +Copyright (C) 2014-2016 BlockMen + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/boats/README.txt b/mods/boats/README.txt index 1de71678..efacb32e 100644 --- a/mods/boats/README.txt +++ b/mods/boats/README.txt @@ -1,16 +1,12 @@ Minetest Game mod: boats ======================== -by PilzAdam +See license.txt for license information. -License of source code: ------------------------ -WTFPL +Authors of source code +---------------------- +PilzAdam (MIT) -License of media (textures and sounds): ---------------------------------------- -WTFPL - -Authors of media files: ------------------------ -textures: Zeg9 -model: thetoon and Zeg9, modified by PavelS(SokolovPavel) +Authors of media (textures and model) +------------------------------------- +Textures: Zeg9 (MIT) +Model: thetoon and Zeg9 (MIT), modified by PavelS(SokolovPavel) (MIT) diff --git a/mods/boats/license.txt b/mods/boats/license.txt new file mode 100644 index 00000000..a1dc6384 --- /dev/null +++ b/mods/boats/license.txt @@ -0,0 +1,25 @@ +License of source code and media (textures and model) +----------------------------------------------------- + +The MIT License (MIT) +Copyright (C) 2012-2016 PilzAdam (source code) +Copyright (C) 2012-2016 Zeg9, thetoon, PavelS(SokolovPavel) (media) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/bones/README.txt b/mods/bones/README.txt index cf99bc8b..8a660717 100644 --- a/mods/bones/README.txt +++ b/mods/bones/README.txt @@ -1,17 +1,12 @@ Minetest Game mod: bones ======================== -License of source code: ------------------------ -Copyright (C) 2012 PilzAdam +See license.txt for license information. -WTFPL - -License of media (textures and sounds) --------------------------------------- -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -http://creativecommons.org/licenses/by-sa/3.0/ - -Authors of media files +Authors of source code ---------------------- -All textures: paramat +PilzAdam (MIT) + +Authors of media (textures) +--------------------------- +All textures: paramat (MIT) diff --git a/mods/bones/license.txt b/mods/bones/license.txt new file mode 100644 index 00000000..5d05e551 --- /dev/null +++ b/mods/bones/license.txt @@ -0,0 +1,25 @@ +License of source code and textures +----------------------------------- + +The MIT License (MIT) +Copyright (C) 2012-2016 PilzAdam +Copyright (C) 2016 paramat + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/creative/README.txt b/mods/creative/README.txt index fa735524..2a1cb551 100644 --- a/mods/creative/README.txt +++ b/mods/creative/README.txt @@ -1,23 +1,22 @@ Minetest Game mod: creative =========================== +See license.txt for license information. Implements creative mode. Switch on by using the "creative_mode" setting. -Registered items that +Registered items that: - have a description, and - do not have the group not_in_creative_inventory are added to the creative inventory. -License of source code and media files: ---------------------------------------- -Copyright (C) 2012 Perttu Ahola (celeron55) -Copyright (C) 2016 Jean-Patrick G. (kilbith) -This program is free software. It comes without any warranty, to -the extent permitted by applicable law. You can redistribute it -and/or modify it under the terms of the Do What The Fuck You Want -To Public License, Version 2, as published by Sam Hocevar. See -http://sam.zoy.org/wtfpl/COPYING for more details. +Authors of source code +---------------------- +Perttu Ahola (celeron55) (MIT) +Jean-Patrick G. (kilbith) (MIT) +Author of media (textures) +-------------------------- +Jean-Patrick G. (kilbith) (MIT) diff --git a/mods/creative/license.txt b/mods/creative/license.txt new file mode 100644 index 00000000..12b3ae16 --- /dev/null +++ b/mods/creative/license.txt @@ -0,0 +1,26 @@ +License of source code and media (textures) +------------------------------------------- + +The MIT License (MIT) +Copyright (C) 2012-2016 Perttu Ahola (celeron55) (source code) +Copyright (C) 2016 Jean-Patrick G. (kilbith) + (source code and textures) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/doors/README.txt b/mods/doors/README.txt index 6c036782..2684d98c 100644 --- a/mods/doors/README.txt +++ b/mods/doors/README.txt @@ -1,62 +1,60 @@ Minetest Game mod: doors ======================== -version: 2.0 +See license.txt for license information. -License of source code: ------------------------ -Copyright (C) 2012 PilzAdam -modified by BlockMen (added sounds, glassdoors[glass, obsidian glass], trapdoor) -Steel trapdoor added by sofar. -Copyright (C) 2016 sofar@foo-projects.org -Re-implemented most of the door algorithms, added meshes, UV wrapped texture +Authors of source code +---------------------- +Originally by PilzAdam (MIT) + +Modified by BlockMen (MIT): Added sounds, glass doors (glass, obsidian glass) and trapdoor. + +Modified by sofar (sofar@foo-projects.org) (MIT): +Added Steel trapdoor. +Re-implemented most of the door algorithms, added meshes, UV wrapped texture. Added doors API to facilitate coding mods accessing and operating doors. -Added Fence Gate model, code, and sounds +Added Fence Gate model, code, and sounds. -This program is free software. It comes without any warranty, to -the extent permitted by applicable law. You can redistribute it -and/or modify it under the terms of the Do What The Fuck You Want -To Public License, Version 2, as published by Sam Hocevar. See -http://sam.zoy.org/wtfpl/COPYING for more details. -License of textures --------------------------------------- -following Textures created by Fernando Zapata (CC BY-SA 3.0): +Authors of media (textures) +--------------------------- +Following textures created by Fernando Zapata (CC BY-SA 3.0): door_wood.png door_wood_a.png door_wood_a_r.png door_wood_b.png door_wood_b_r.png -following Textures created by BlockMen (WTFPL): +Following textures created by BlockMen (MIT): door_trapdoor.png door_obsidian_glass_side.png -following textures created by celeron55 (CC BY-SA 3.0): +Following textures created by celeron55 (CC BY-SA 3.0): door_glass_a.png door_glass_b.png -following Textures created by PenguinDad (CC BY-SA 4.0): +Following textures created by PenguinDad (CC BY-SA 4.0): door_glass.png door_obsidian_glass.png -following textures created by sofar (CC-BY-SA-3.0) +Following textures created by sofar (CC-BY-SA-3.0): doors_trapdoor_steel.png doors_trapdoor_steel_side.png door_trapdoor_side.png - -Obsidian door textures by red-001 based on textures by Pilzadam and BlockMen: WTFPL +Obsidian door textures by red-001 based on textures by Pilzadam and BlockMen (MIT): door_obsidian_glass.png -Glass door textures by red-001 based on textures by celeron55: CC BY-SA 3.0 +Glass door textures by red-001 based on textures by celeron55 (CC BY-SA 3.0): door_glass.png -All other textures (created by PilzAdam): WTFPL + +All other textures (created by PilzAdam) (MIT): Door textures were converted to the new texture map by sofar, paramat and red-001, under the same license as the originals. -Models: --------------------------------------- + +Authors of media (models) +------------------------- Door 3d models by sofar (CC-BY-SA-3.0) - door_a.obj - door_b.obj @@ -64,17 +62,18 @@ Fence gate models by sofar (CC-BY-SA-3.0) - fencegate_open.obj - fencegate_closed.obj -License of sounds --------------------------------------- + +Authors of media (sounds) +------------------------- Opening-Sound created by CGEffex (CC BY 3.0), modified by BlockMen door_open.ogg Closing-Sound created by bennstir (CC BY 3.0) door_close.ogg fencegate_open.ogg: - http://www.freesound.org/people/mhtaylor67/sounds/126041/ - CC0 + http://www.freesound.org/people/mhtaylor67/sounds/126041/ - (CC0 1.0) 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 + 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 - http://www.freesound.org/people/HazMattt/sounds/187283/ doors_steel_door_open.ogg diff --git a/mods/doors/license.txt b/mods/doors/license.txt new file mode 100644 index 00000000..fa36bd10 --- /dev/null +++ b/mods/doors/license.txt @@ -0,0 +1,163 @@ +License of source code and media (textures) +------------------------------------------- + +The MIT License (MIT) +Copyright (C) 2012-2016 PilzAdam (source code, textures) +Copyright (C) 2014-2016 BlockMen (source code, textures) +Copyright (C) 2015-2016 sofar (sofar@foo-projects.org) (source code, textures) +Copyright (C) 2016 red-001 (textures) +Copyright (C) 2016 paramat (textures) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT + + +Licenses of media (textures, models and sounds) +----------------------------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2011-2016 Fernando Zapata (textures) +Copyright (C) 2014-2016 celeron55 (textures) +Copyright (C) 2015-2016 sofar (textures, models) +Copyright (C) 2016 red-001 (textures) +Copyright (C) 2016 paramat (textures) + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ + +----------------------- + +Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) +Copyright (C) 2014-2016 PenguinDad (textures) + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/4.0/ + +----------------------- + +Attribution 3.0 Unported (CC BY 3.0) +Copyright (C) 2014 CGEffex (sounds) +Copyright (C) 2014 bennstir (sounds) +Copyright (C) 2016 BarkersPinhead (sounds) +Copyright (C) 2016 rivernile7 (sounds) +Copyright (C) 2016 HazMatt (sounds) + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by/3.0/ + +----------------------- + +CC0 1.0 Universal (CC0 1.0) Public Domain Dedication +mhtaylor67 (sounds) +SkeetMasterFunk69 (sounds) + +No Copyright + +The person who associated a work with this deed has dedicated the work to the public +domain by waiving all of his or her rights to the work worldwide under copyright law, +including all related and neighboring rights, to the extent allowed by law. + +You can copy, modify, distribute and perform the work, even for commercial purposes, all +without asking permission. See Other Information below. + +Other Information + +In no way are the patent or trademark rights of any person affected by CC0, nor are the +rights that other persons may have in the work or in how the work is used, such as +publicity or privacy rights. +Unless expressly stated otherwise, the person who associated a work with this deed makes +no warranties about the work, and disclaims liability for all uses of the work, to the +fullest extent permitted by applicable law. +When using or citing the work, you should not imply endorsement by the author or the +affirmer. + +For more details: +https://creativecommons.org/publicdomain/zero/1.0/ diff --git a/mods/dye/README.txt b/mods/dye/README.txt index b1035419..33766fcb 100644 --- a/mods/dye/README.txt +++ b/mods/dye/README.txt @@ -1,15 +1,8 @@ Minetest Game mod: dye ====================== - +See license.txt for license information. See init.lua for documentation. -License of source code and media files: ---------------------------------------- -Copyright (C) 2012 Perttu Ahola (celeron55) - -This program is free software. It comes without any warranty, to -the extent permitted by applicable law. You can redistribute it -and/or modify it under the terms of the Do What The Fuck You Want -To Public License, Version 2, as published by Sam Hocevar. See -http://sam.zoy.org/wtfpl/COPYING for more details. - +Authors of source code and media (textures) +------------------------------------------- +Perttu Ahola (celeron55) (MIT) diff --git a/mods/dye/license.txt b/mods/dye/license.txt new file mode 100644 index 00000000..47c7498e --- /dev/null +++ b/mods/dye/license.txt @@ -0,0 +1,24 @@ +License of source code and media (textures) +------------------------------------------- + +The MIT License (MIT) +Copyright (C) 2012-2016 Perttu Ahola (celeron55) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/farming/README.txt b/mods/farming/README.txt index 143cf382..310492ca 100644 --- a/mods/farming/README.txt +++ b/mods/farming/README.txt @@ -1,34 +1,22 @@ Minetest Game mod: farming ========================== +See license.txt for license information. -License of source code: ------------------------ -Copyright (C) 2014 webdesigner97 +Authors of source code +---------------------- +PilzAdam (MIT) +webdesigner97 (MIT) - 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): +Authors of media (textures) +--------------------------- +Created by PilzAdam (MIT): 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): +Created by BlockMen (CC BY 3.0): farming_tool_diamondhoe.png farming_tool_mesehoe.png farming_tool_bronzehoe.png @@ -36,10 +24,10 @@ Created by BlockMen (License: CC BY 3.0): farming_tool_stonehoe.png farming_tool_woodhoe.png -Created by MasterGollum (License: WTFPL): +Created by MasterGollum (MIT): farming_straw.png -Created by Gambit (License: WTFPL): +Created by Gambit (MIT): farming_wheat.png farming_wheat_*.png farming_cotton_*.png diff --git a/mods/farming/license.txt b/mods/farming/license.txt new file mode 100644 index 00000000..3cb51f0b --- /dev/null +++ b/mods/farming/license.txt @@ -0,0 +1,59 @@ +License of source code and media (textures) +------------------------------------------- + +The MIT License (MIT) +Copyright (C) 2012-2016 PilzAdam (source code, textures) +Copyright (C) 2014-2016 webdesigner97 (source code) +Copyright (C) 2015-2016 MasterGollum (textures) +Copyright (C) 2015-2016 Gambit (textures) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT + + +License of media (textures) +--------------------------- + +Attribution 3.0 Unported (CC BY 3.0) +Copyright (C) 2014-2016 BlockMen + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by/3.0/ diff --git a/mods/flowers/README.txt b/mods/flowers/README.txt index ebd4a21f..c9125e25 100644 --- a/mods/flowers/README.txt +++ b/mods/flowers/README.txt @@ -1,23 +1,14 @@ Minetest Game mod: flowers ========================== +See license.txt for license information. -License of source code: ------------------------ -Copyright (C) 2012-2013 Ironzorg, VanessaE +Authors of source code +---------------------- +Ironzorg (MIT) +VanessaE (MIT) -This program is free software. It comes without any warranty, to -the extent permitted by applicable law. You can redistribute it -and/or modify it under the terms of the Do What The Fuck You Want -To Public License, Version 2, as published by Sam Hocevar. See -http://sam.zoy.org/wtfpl/COPYING for more details. - -License of media (textures and sounds) --------------------------------------- -WTFPL - -Gambit (WTFPL): - flowers_mushroom_*.png - flowers_waterlily.png - -DanDuncombe (WTFPL): - flowers_spores_*.png +Authors of media (textures) +--------------------------- +Gambit (MIT): +flowers_mushroom_*.png +flowers_waterlily.png diff --git a/mods/flowers/license.txt b/mods/flowers/license.txt new file mode 100644 index 00000000..5c4cc8ab --- /dev/null +++ b/mods/flowers/license.txt @@ -0,0 +1,25 @@ +License of source code and media (textures) +------------------------------------------- + +The MIT License (MIT) +Copyright (C) 2012-2013 Ironzorg, VanessaE (source code) +Copyright (C) 2015-2016 Gambit (textures) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/give_initial_stuff/README.txt b/mods/give_initial_stuff/README.txt new file mode 100644 index 00000000..1155d4d2 --- /dev/null +++ b/mods/give_initial_stuff/README.txt @@ -0,0 +1,7 @@ +Minetest Game mod: give_initial_stuff +===================================== +See license.txt for license information. + +Authors of source code +---------------------- +Perttu Ahola (celeron55) (MIT) diff --git a/mods/give_initial_stuff/license.txt b/mods/give_initial_stuff/license.txt new file mode 100644 index 00000000..c32f2586 --- /dev/null +++ b/mods/give_initial_stuff/license.txt @@ -0,0 +1,24 @@ +License of source code +---------------------- + +The MIT License (MIT) +Copyright (C) 2012-2016 Perttu Ahola (celeron55) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/sethome/README.txt b/mods/sethome/README.txt new file mode 100644 index 00000000..6f0a282b --- /dev/null +++ b/mods/sethome/README.txt @@ -0,0 +1,7 @@ +Minetest Game mod: sethome +========================== +See license.txt for license information. + +Authors of source code +---------------------- +sfan5 (MIT) diff --git a/mods/sethome/license.txt b/mods/sethome/license.txt new file mode 100644 index 00000000..09f03b09 --- /dev/null +++ b/mods/sethome/license.txt @@ -0,0 +1,24 @@ +License of source code +---------------------- + +The MIT License (MIT) +Copyright (C) 2014-2016 sfan5 + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/tnt/README.txt b/mods/tnt/README.txt index df98f7e2..2ec50d6b 100644 --- a/mods/tnt/README.txt +++ b/mods/tnt/README.txt @@ -1,6 +1,17 @@ Minetest Game mod: tnt ====================== -by PilzAdam and ShadowNinja +See license.txt for license information. + +Authors of source code +---------------------- +PilzAdam (MIT) +ShadowNinja (MIT) +sofar (sofar@foo-projects.org) (MIT) + +Authors of media (textures) +--------------------------- +? (MIT) +sofar (sofar@foo-projects.org) (MIT) Introduction: This mod adds TNT to Minetest. TNT is a tool to help the player @@ -15,23 +26,3 @@ There are different ways to blow up TNT: 2. Hit a gunpowder fuze that leads to a TNT block with a torch. 3. Activate it with mesecons (fastest way) Be aware of the damage radius of 7 blocks! - -License: -WTFPL (see below) - -See also: -http://minetest.net/ - - 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. diff --git a/mods/tnt/license.txt b/mods/tnt/license.txt new file mode 100644 index 00000000..0a1cfe18 --- /dev/null +++ b/mods/tnt/license.txt @@ -0,0 +1,27 @@ +License of source code and media (textures) +------------------------------------------- + +The MIT License (MIT) +Copyright (C) 2014-2016 PilzAdam (source code) +Copyright (C) 2014-2016 ShadowNinja (source code) +Copyright (C) 2016 sofar (sofar@foo-projects.org) (source code and textures) +Copyright (C) 201? ? (textures) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/walls/README.txt b/mods/walls/README.txt new file mode 100644 index 00000000..91dd9c57 --- /dev/null +++ b/mods/walls/README.txt @@ -0,0 +1,7 @@ +Minetest Game mod: walls +======================== +See license.txt for license information. + +Authors of source code +---------------------- +sofar (sofar@foo-projects.org) (LGPL 2.1) diff --git a/mods/walls/license.txt b/mods/walls/license.txt new file mode 100644 index 00000000..de0c2b2c --- /dev/null +++ b/mods/walls/license.txt @@ -0,0 +1,12 @@ +License of source code +---------------------- +Copyright (C) 2016 sofar (sofar@foo-projects.org) + +This program is free software; you can redistribute it and/or modify it under the terms +of the GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html diff --git a/mods/wool/README.txt b/mods/wool/README.txt index f57b6dd3..3fce7547 100644 --- a/mods/wool/README.txt +++ b/mods/wool/README.txt @@ -1,26 +1,16 @@ Minetest Game mod: wool ======================= +See license.txt for license information. Mostly backward-compatible with jordach's 16-color wool mod. -License of source code: ------------------------ -Copyright (C) 2012 Perttu Ahola (celeron55) +Authors of source code +---------------------- +Perttu Ahola (celeron55) (MIT) -This program is free software. It comes without any warranty, to -the extent permitted by applicable law. You can redistribute it -and/or modify it under the terms of the Do What The Fuck You Want -To Public License, Version 2, as published by Sam Hocevar. See -http://sam.zoy.org/wtfpl/COPYING for more details. - -License of media (textures and sounds) --------------------------------------- -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -http://creativecommons.org/licenses/by-sa/3.0/ - -Authors of media files ------------------------ -Cisoun: +Authors of media (textures) +--------------------------- +Cisoun (CC BY-SA 3.0): - wool_black.png wool_brown.png wool_dark_green.png wool_green.png - wool_magenta.png wool_pink.png wool_violet.png wool_yellow.png wool_blue.png - wool_cyan.png wool_dark_grey.png wool_grey.png wool_orange.png wool_red.png diff --git a/mods/wool/license.txt b/mods/wool/license.txt new file mode 100644 index 00000000..75712f92 --- /dev/null +++ b/mods/wool/license.txt @@ -0,0 +1,59 @@ +License of source code +---------------------- + +The MIT License (MIT) +Copyright (C) 2012-2016 Perttu Ahola (celeron55) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT + + +Licenses of media (textures) +---------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2012-2016 Cisoun + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ From 7d70d25eeb3e27e7b335437dbb87766398d8f560 Mon Sep 17 00:00:00 2001 From: paramat Date: Mon, 5 Sep 2016 07:24:18 +0100 Subject: [PATCH 099/196] Licenses: Change WTFPL to MIT (part 2) Add license.txt files. Update and improve README.txt files. Corrections to part 1. --- mods/boats/license.txt | 4 +- mods/bucket/README.txt | 30 +--- mods/bucket/license.txt | 41 +++++ mods/creative/license.txt | 5 +- mods/default/README.txt | 54 +++--- mods/default/license.txt | 174 ++++++++++++++++++++ mods/doors/license.txt | 36 ++-- mods/farming/license.txt | 8 +- mods/fire/README.txt | 31 ++-- mods/fire/license.txt | 49 ++++++ mods/flowers/license.txt | 4 +- mods/nyancat/README.txt | 15 +- mods/nyancat/license.txt | 40 +++++ mods/screwdriver/{readme.txt => README.txt} | 15 +- mods/screwdriver/license.txt | 14 ++ mods/stairs/README.txt | 19 ++- mods/stairs/license.txt | 15 ++ mods/tnt/README.txt | 30 +++- mods/tnt/license.txt | 9 +- mods/vessels/README.txt | 17 +- mods/vessels/license.txt | 15 ++ mods/walls/license.txt | 2 + mods/xpanes/README.txt | 22 +-- mods/xpanes/license.txt | 26 +++ 24 files changed, 512 insertions(+), 163 deletions(-) create mode 100644 mods/bucket/license.txt create mode 100644 mods/default/license.txt create mode 100644 mods/fire/license.txt create mode 100644 mods/nyancat/license.txt rename mods/screwdriver/{readme.txt => README.txt} (65%) create mode 100644 mods/screwdriver/license.txt create mode 100644 mods/stairs/license.txt create mode 100644 mods/vessels/license.txt create mode 100644 mods/xpanes/license.txt diff --git a/mods/boats/license.txt b/mods/boats/license.txt index a1dc6384..f0baa5f1 100644 --- a/mods/boats/license.txt +++ b/mods/boats/license.txt @@ -2,8 +2,8 @@ License of source code and media (textures and model) ----------------------------------------------------- The MIT License (MIT) -Copyright (C) 2012-2016 PilzAdam (source code) -Copyright (C) 2012-2016 Zeg9, thetoon, PavelS(SokolovPavel) (media) +Copyright (C) 2012-2016 PilzAdam +Copyright (C) 2012-2016 Zeg9, thetoon, PavelS(SokolovPavel) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software diff --git a/mods/bucket/README.txt b/mods/bucket/README.txt index a6674b43..4bb0f092 100644 --- a/mods/bucket/README.txt +++ b/mods/bucket/README.txt @@ -1,26 +1,12 @@ Minetest Game mod: bucket ========================= +See license.txt for license information. -License of source code: ------------------------ -Copyright (C) 2011-2012 Kahrl -Copyright (C) 2011-2012 celeron55, Perttu Ahola - -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 of the License, or -(at your option) any later version. - -http://www.gnu.org/licenses/lgpl-2.1.html - -License of media (textures and sounds) --------------------------------------- -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -http://creativecommons.org/licenses/by-sa/3.0/ - -Authors of media files ------------------------ -Everything not listed in here: -Copyright (C) 2010-2012 celeron55, Perttu Ahola - +Authors of source code +---------------------- +Kahrl (LGPL 2.1) +celeron55, Perttu Ahola (LGPL 2.1) +Authors of media (textures) +--------------------------- +ElementW (MIT) diff --git a/mods/bucket/license.txt b/mods/bucket/license.txt new file mode 100644 index 00000000..4fbbeadc --- /dev/null +++ b/mods/bucket/license.txt @@ -0,0 +1,41 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 +Copyright (C) 2011-2016 Kahrl +Copyright (C) 2011-2016 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify it under the terms +of the GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + +License of media (textures) +--------------------------- + +The MIT License (MIT) +Copyright (C) 2015-2016 ElementW + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/creative/license.txt b/mods/creative/license.txt index 12b3ae16..aa0725b3 100644 --- a/mods/creative/license.txt +++ b/mods/creative/license.txt @@ -2,9 +2,8 @@ License of source code and media (textures) ------------------------------------------- The MIT License (MIT) -Copyright (C) 2012-2016 Perttu Ahola (celeron55) (source code) -Copyright (C) 2016 Jean-Patrick G. (kilbith) - (source code and textures) +Copyright (C) 2012-2016 Perttu Ahola (celeron55) +Copyright (C) 2016 Jean-Patrick G. (kilbith) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software diff --git a/mods/default/README.txt b/mods/default/README.txt index 85c5a4ef..269c149e 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -1,28 +1,18 @@ Minetest Game mod: default ========================== +See license.txt for license information. -License of source code: ------------------------ -Copyright (C) 2011-2012 celeron55, Perttu Ahola +Authors of source code +---------------------- +celeron55, Perttu Ahola (LGPL 2.1) +Various Minetest developers and contributors (LGPL 2.1) -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. - -http://www.gnu.org/licenses/lgpl-2.1.html - -License of media (textures and sounds) --------------------------------------- -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -http://creativecommons.org/licenses/by-sa/3.0/ - -Authors of media files ------------------------ +Authors of media (textures, models and sounds) +---------------------------------------------- Everything not listed in here: -Copyright (C) 2010-2012 celeron55, Perttu Ahola +celeron55, Perttu Ahola (CC BY-SA 3.0) -Cisoun's WTFPL texture pack: +Cisoun's texture pack (MIT): default_jungletree.png default_lava.png default_leaves.png @@ -32,25 +22,25 @@ Cisoun's WTFPL texture pack: default_tree_top.png default_water.png -Cisoun's conifers mod (WTFPL): +Cisoun's conifers mod (MIT): default_pine_needles.png -Originating from G4JC's Almost MC Texture Pack: +Originating from G4JC's Almost MC Texture Pack (CC BY-SA 3.0): default_torch.png default_torch_on_ceiling.png default_torch_on_floor.png -VanessaE's animated torches (WTFPL): +VanessaE's animated torches (MIT): default_torch_animated.png default_torch_on_ceiling_animated.png default_torch_on_floor_animated.png default_torch_on_floor.png -RealBadAngel's animated water (WTFPL): +RealBadAngel's animated water (MIT): default_water_source_animated.png default_water_flowing_animated.png -VanessaE (WTFPL): +VanessaE (MIT): default_desert_sand.png default_desert_stone.png default_sand.png @@ -63,13 +53,13 @@ Calinou (CC BY-SA): default_mineral_copper.png default_glass_detail.png -MirceaKitsune (WTFPL): +MirceaKitsune (MIT): character.x Jordach (CC BY-SA 3.0): character.png -PilzAdam (WTFPL): +PilzAdam (MIT): default_jungleleaves.png default_junglesapling.png default_obsidian_glass.png @@ -77,10 +67,10 @@ PilzAdam (WTFPL): default_mineral_gold.png default_snowball.png -jojoa1997 (WTFPL): +jojoa1997 (MIT): default_obsidian.png -InfinityProject (WTFPL): +InfinityProject (MIT): default_mineral_diamond.png Splizard (CC BY-SA 3.0): @@ -157,7 +147,7 @@ sofar (CC BY-SA 3.0): default_aspen_tree_top, derived from default_pine_tree_top (by paramat) default_aspen_wood, derived from default_pine_wood (by paramat) -sofar (WTFPL): +sofar (MIT): default_gravel.png -- Derived from Gambit's PixelBOX texture pack light gravel Neuromancer (CC BY-SA 2.0): @@ -167,7 +157,7 @@ Neuromancer (CC BY-SA 3.0): default_dirt.png default_furnace_*.png -Gambit (WTFPL): +Gambit (MIT): default_bronze_ingot.png default_copper_ingot.png default_copper_lump.png @@ -182,7 +172,7 @@ Gambit (WTFPL): default_sign_wall_wood.png default_flint.png -asl97 (WTFPL): +asl97 (MIT): default_ice.png KevDoy (CC BY-SA 3.0) @@ -193,7 +183,7 @@ Glass breaking sounds (CC BY 3.0): 2: http://www.freesound.org/people/Tomlija/sounds/97669/ 3: http://www.freesound.org/people/lsprice/sounds/88808/ -Mito551 (sounds) (CC BY-SA): +Mito551 (sounds) (CC BY-SA 3.0): default_dig_choppy.ogg default_dig_cracky.ogg default_dig_crumbly.1.ogg diff --git a/mods/default/license.txt b/mods/default/license.txt new file mode 100644 index 00000000..c10ec7ee --- /dev/null +++ b/mods/default/license.txt @@ -0,0 +1,174 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 +Copyright (C) 2011-2016 celeron55, Perttu Ahola +Copyright (C) 2011-2016 Various Minetest developers and contributors + +This program is free software; you can redistribute it and/or modify it under the terms +of the GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + +Licenses of media (textures, models and sounds) +----------------------------------------------- + +The MIT License (MIT) +Copyright (C) 2010-2016 Various Minetest developers and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT + +---------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2010-2016 celeron55, Perttu Ahola +Copyright (C) 2010-2016 Various Minetest developers and contributors + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ + +----------------------- + +Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) +Copyright (C) 2014-2016 brunob.santos + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/4.0/ + +----------------------- + +Attribution-ShareAlike 2.0 Generic (CC BY-SA 2.0) +Copyright (C) 2014-2016 Neuromancer + + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/2.0/ + +----------------------- + +Attribution 3.0 Unported (CC BY 3.0) +Copyright (C) 2009 cmusounddesign +Copyright (C) 2010 Tomlija +Copyright (C) 2010 lsprice + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by/3.0/ diff --git a/mods/doors/license.txt b/mods/doors/license.txt index fa36bd10..b97f6acd 100644 --- a/mods/doors/license.txt +++ b/mods/doors/license.txt @@ -2,11 +2,11 @@ License of source code and media (textures) ------------------------------------------- The MIT License (MIT) -Copyright (C) 2012-2016 PilzAdam (source code, textures) -Copyright (C) 2014-2016 BlockMen (source code, textures) -Copyright (C) 2015-2016 sofar (sofar@foo-projects.org) (source code, textures) -Copyright (C) 2016 red-001 (textures) -Copyright (C) 2016 paramat (textures) +Copyright (C) 2012-2016 PilzAdam +Copyright (C) 2014-2016 BlockMen +Copyright (C) 2015-2016 sofar (sofar@foo-projects.org) +Copyright (C) 2016 red-001 +Copyright (C) 2016 paramat Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software @@ -32,11 +32,11 @@ Licenses of media (textures, models and sounds) ----------------------------------------------- Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -Copyright (C) 2011-2016 Fernando Zapata (textures) -Copyright (C) 2014-2016 celeron55 (textures) -Copyright (C) 2015-2016 sofar (textures, models) -Copyright (C) 2016 red-001 (textures) -Copyright (C) 2016 paramat (textures) +Copyright (C) 2011-2016 Fernando Zapata +Copyright (C) 2014-2016 celeron55 +Copyright (C) 2015-2016 sofar +Copyright (C) 2016 red-001 +Copyright (C) 2016 paramat You are free to: Share — copy and redistribute the material in any medium or format. @@ -69,7 +69,7 @@ http://creativecommons.org/licenses/by-sa/3.0/ ----------------------- Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) -Copyright (C) 2014-2016 PenguinDad (textures) +Copyright (C) 2014-2016 PenguinDad You are free to: Share — copy and redistribute the material in any medium or format. @@ -102,11 +102,11 @@ http://creativecommons.org/licenses/by-sa/4.0/ ----------------------- Attribution 3.0 Unported (CC BY 3.0) -Copyright (C) 2014 CGEffex (sounds) -Copyright (C) 2014 bennstir (sounds) -Copyright (C) 2016 BarkersPinhead (sounds) -Copyright (C) 2016 rivernile7 (sounds) -Copyright (C) 2016 HazMatt (sounds) +Copyright (C) 2014 CGEffex +Copyright (C) 2014 bennstir +Copyright (C) 2016 BarkersPinhead +Copyright (C) 2016 rivernile7 +Copyright (C) 2016 HazMatt You are free to: Share — copy and redistribute the material in any medium or format. @@ -136,8 +136,8 @@ http://creativecommons.org/licenses/by/3.0/ ----------------------- CC0 1.0 Universal (CC0 1.0) Public Domain Dedication -mhtaylor67 (sounds) -SkeetMasterFunk69 (sounds) +mhtaylor67 +SkeetMasterFunk69 No Copyright diff --git a/mods/farming/license.txt b/mods/farming/license.txt index 3cb51f0b..82f73de5 100644 --- a/mods/farming/license.txt +++ b/mods/farming/license.txt @@ -2,10 +2,10 @@ License of source code and media (textures) ------------------------------------------- The MIT License (MIT) -Copyright (C) 2012-2016 PilzAdam (source code, textures) -Copyright (C) 2014-2016 webdesigner97 (source code) -Copyright (C) 2015-2016 MasterGollum (textures) -Copyright (C) 2015-2016 Gambit (textures) +Copyright (C) 2012-2016 PilzAdam +Copyright (C) 2014-2016 webdesigner97 +Copyright (C) 2015-2016 MasterGollum +Copyright (C) 2015-2016 Gambit Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software diff --git a/mods/fire/README.txt b/mods/fire/README.txt index 14022f03..2454478c 100644 --- a/mods/fire/README.txt +++ b/mods/fire/README.txt @@ -1,36 +1,25 @@ Minetest Game mod: fire ======================= +See license.txt for license information. -License of source code: ------------------------ -Copyright (C) 2012 Perttu Ahola (celeron55) - -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. - -http://www.gnu.org/licenses/lgpl-2.1.html - -License of media (textures and sounds) --------------------------------------- -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -http://creativecommons.org/licenses/by-sa/3.0/ +Authors of source code +---------------------- +Perttu Ahola (celeron55) (LGPL 2.1) 2012 Authors of media files ------------------------ +---------------------- Everything not listed in here: -Copyright (C) 2012 Perttu Ahola (celeron55) +Copyright (C) 2012 Perttu Ahola (celeron55) (CC BY-SA 3.0) fire_small.ogg sampled from: - http://www.freesound.org/people/dobroide/sounds/4211/ + http://www.freesound.org/people/dobroide/sounds/4211/ (CC BY 3.0) 2005 fire_large.ogg sampled from: - http://www.freesound.org/people/Dynamicell/sounds/17548/ + http://www.freesound.org/people/Dynamicell/sounds/17548/ (CC BY 3.0) 2006 fire_basic_flame_animated.png: - Muadtralk + Muadtralk (CC BY-SA 3.0) 2012 fire_flint_steel.png - Gambit (WTFPL) + Gambit (MIT) 2013 diff --git a/mods/fire/license.txt b/mods/fire/license.txt new file mode 100644 index 00000000..6841148a --- /dev/null +++ b/mods/fire/license.txt @@ -0,0 +1,49 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 +Copyright (C) 2012-2016 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify it under the terms +of the GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + +Licenses of media (textures) +---------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2012-2016 Perttu Ahola (celeron55) + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/flowers/license.txt b/mods/flowers/license.txt index 5c4cc8ab..1f0e6730 100644 --- a/mods/flowers/license.txt +++ b/mods/flowers/license.txt @@ -2,8 +2,8 @@ License of source code and media (textures) ------------------------------------------- The MIT License (MIT) -Copyright (C) 2012-2013 Ironzorg, VanessaE (source code) -Copyright (C) 2015-2016 Gambit (textures) +Copyright (C) 2012-2013 Ironzorg, VanessaE +Copyright (C) 2015-2016 Gambit Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software diff --git a/mods/nyancat/README.txt b/mods/nyancat/README.txt index 2e7de71d..6e7ce4e2 100644 --- a/mods/nyancat/README.txt +++ b/mods/nyancat/README.txt @@ -1,9 +1,10 @@ Minetest Game mod: nyancat ========================== +See license.txt for license information. License of source code: ----------------------- -Copyright (C) 2011-2012 celeron55, Perttu Ahola +Copyright (C) 2011-2016 celeron55, Perttu Ahola 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 @@ -12,17 +13,9 @@ the Free Software Foundation; either version 2.1 of the License, or http://www.gnu.org/licenses/lgpl-2.1.html -License of media (textures and sounds) --------------------------------------- -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -http://creativecommons.org/licenses/by-sa/3.0/ - Authors of media files ------------------------ -Everything not listed in here: -Copyright (C) 2010-2012 celeron55, Perttu Ahola - -VanessaE (WTFPL): +---------------------- +VanessaE (MIT): nyancat_front.png nyancat_back.png nyancat_side.png diff --git a/mods/nyancat/license.txt b/mods/nyancat/license.txt new file mode 100644 index 00000000..a3c24a8c --- /dev/null +++ b/mods/nyancat/license.txt @@ -0,0 +1,40 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 +Copyright (C) 2011-2016 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify it under the terms +of the GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + +License of media (textures) +--------------------------- + +The MIT License (MIT) +Copyright (C) 2012-2016 VanessaE + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/screwdriver/readme.txt b/mods/screwdriver/README.txt similarity index 65% rename from mods/screwdriver/readme.txt rename to mods/screwdriver/README.txt index bdf109b8..d2926c01 100644 --- a/mods/screwdriver/readme.txt +++ b/mods/screwdriver/README.txt @@ -1,21 +1,22 @@ Minetest Game mod: screwdriver ============================== +See license.txt for license information. -License of source code: ------------------------ +License of source code +---------------------- Copyright (C) 2013 RealBadAngel, Maciej Kasatkin 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 of the License, or +the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. http://www.gnu.org/licenses/lgpl-2.1.html -License of media (textures and sounds) --------------------------------------- +License of media (textures) +--------------------------- Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) http://creativecommons.org/licenses/by-sa/3.0/ -Created by Gambit (WTFPL): - screwdriver.png +Created by Gambit (MIT) 2013: +screwdriver.png diff --git a/mods/screwdriver/license.txt b/mods/screwdriver/license.txt new file mode 100644 index 00000000..d058f67b --- /dev/null +++ b/mods/screwdriver/license.txt @@ -0,0 +1,14 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 +Copyright (C) 2013 RealBadAngel, Maciej Kasatkin + +This program is free software; you can redistribute it and/or modify it under the terms +of the GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html diff --git a/mods/stairs/README.txt b/mods/stairs/README.txt index 9bd0b213..ceab238c 100644 --- a/mods/stairs/README.txt +++ b/mods/stairs/README.txt @@ -1,26 +1,27 @@ Minetest Game mod: stairs ========================= +See license.txt for license information. License of source code: ----------------------- -Copyright (C) 2011-2012 Kahrl -Copyright (C) 2011-2012 celeron55, Perttu Ahola +Copyright (C) 2011-2016 Kahrl +Copyright (C) 2011-2016 celeron55, Perttu Ahola 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 of the License, or +the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. http://www.gnu.org/licenses/lgpl-2.1.html -License of media (textures and sounds) --------------------------------------- +License of media (textures, models and sounds) +---------------------------------------------- Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) http://creativecommons.org/licenses/by-sa/3.0/ -Authors of media files ------------------------ -Everything not listed in here: -Copyright (C) 2010-2012 celeron55, Perttu Ahola +Authors of media (model) +------------------------ +Jean-Patrick G. (kilbith) (MIT): +stairs_stair.obj diff --git a/mods/stairs/license.txt b/mods/stairs/license.txt new file mode 100644 index 00000000..2bd78401 --- /dev/null +++ b/mods/stairs/license.txt @@ -0,0 +1,15 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 +Copyright (C) 2011-2016 Kahrl +Copyright (C) 2011-2016 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify it under the terms +of the GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html diff --git a/mods/tnt/README.txt b/mods/tnt/README.txt index 2ec50d6b..2b148800 100644 --- a/mods/tnt/README.txt +++ b/mods/tnt/README.txt @@ -10,19 +10,31 @@ sofar (sofar@foo-projects.org) (MIT) Authors of media (textures) --------------------------- -? (MIT) -sofar (sofar@foo-projects.org) (MIT) +BlockMen (MIT): +All textures not mentioned below. -Introduction: +ShadowNinja (MIT): +tnt_smoke.png + +Wuzzy (MIT): +All gunpowder textures except tnt_gunpowder_inventory.png. + +sofar (sofar@foo-projects.org) (MIT): +tnt_blast.png + +Introduction +------------ This mod adds TNT to Minetest. TNT is a tool to help the player in mining. How to use the mod: -Craft gunpowder by placing coal and gravel in the crafting area. The -gunpowder can be used to craft TNT or as fuze for TNT. To craft TNT -surround gunpowder with 4 wood in a + shape. +Craft gunpowder by placing coal and gravel in the crafting area. +The gunpowder can be used to craft TNT or as fuse for TNT. +To craft TNT surround gunpowder with 4 wood in a + shape. + There are different ways to blow up TNT: 1. Hit it with a torch. - 2. Hit a gunpowder fuze that leads to a TNT block with a torch. - 3. Activate it with mesecons (fastest way) -Be aware of the damage radius of 7 blocks! + 2. Hit a gunpowder fuse that leads to a TNT block with a torch or flint-and-steel. + 3. Activate it with mesecons (fastest way). + +Be aware of the damage radius of 6 blocks! diff --git a/mods/tnt/license.txt b/mods/tnt/license.txt index 0a1cfe18..6519bb70 100644 --- a/mods/tnt/license.txt +++ b/mods/tnt/license.txt @@ -2,10 +2,11 @@ License of source code and media (textures) ------------------------------------------- The MIT License (MIT) -Copyright (C) 2014-2016 PilzAdam (source code) -Copyright (C) 2014-2016 ShadowNinja (source code) -Copyright (C) 2016 sofar (sofar@foo-projects.org) (source code and textures) -Copyright (C) 201? ? (textures) +Copyright (C) 2014-2016 PilzAdam +Copyright (C) 2014-2016 ShadowNinja +Copyright (C) 2016 sofar (sofar@foo-projects.org) +Copyright (C) 2014-2016 BlockMen +Copyright (C) 2015-2016 Wuzzy Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software diff --git a/mods/vessels/README.txt b/mods/vessels/README.txt index c2a802f4..3af9be5f 100644 --- a/mods/vessels/README.txt +++ b/mods/vessels/README.txt @@ -1,5 +1,6 @@ Minetest Game mod: vessels ========================== +See license.txt for license information. Crafts ------- @@ -34,17 +35,17 @@ the Free Software Foundation; either version 2.1 of the License, or http://www.gnu.org/licenses/lgpl-2.1.html -License of media (textures and sounds) --------------------------------------- -WTFPL +License of media (textures) +--------------------------- +MIT 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 +The following textures were modified by Thomas-S (CC0 1.0): + 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/license.txt b/mods/vessels/license.txt new file mode 100644 index 00000000..bd72faae --- /dev/null +++ b/mods/vessels/license.txt @@ -0,0 +1,15 @@ +License of source code +---------------------- + +GNU Lesser General Public License, version 2.1 +Copyright (C) 2012-2016 Vanessa Ezekowitz +Copyright (C) 2012-2016 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify it under the terms +of the GNU Lesser General Public License as published by the Free Software Foundation; +either version 2.1 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU Lesser General Public License for more details: +https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html diff --git a/mods/walls/license.txt b/mods/walls/license.txt index de0c2b2c..6ac0d08b 100644 --- a/mods/walls/license.txt +++ b/mods/walls/license.txt @@ -1,5 +1,7 @@ License of source code ---------------------- + +GNU Lesser General Public License, version 2.1 Copyright (C) 2016 sofar (sofar@foo-projects.org) This program is free software; you can redistribute it and/or modify it under the terms diff --git a/mods/xpanes/README.txt b/mods/xpanes/README.txt index b89e74a2..d2613a2d 100644 --- a/mods/xpanes/README.txt +++ b/mods/xpanes/README.txt @@ -1,16 +1,16 @@ Minetest Game mod: xpanes ========================= +See license.txt for license information. -License: --------- -Copyright (C) xyz -modified by BlockMen (iron bars) +Authors of source code +---------------------- +xyz (MIT) +Modified by BlockMen (iron bars) (MIT) -Gambit (WTFPL): - xpanes_bar.png +Authors of media (textures) +--------------------------- +xyz (MIT): +All textures not mentioned below. -This program is free software. It comes without any warranty, to -the extent permitted by applicable law. You can redistribute it -and/or modify it under the terms of the Do What The Fuck You Want -To Public License, Version 2, as published by Sam Hocevar. See -http://sam.zoy.org/wtfpl/COPYING for more details. +Gambit (MIT): +xpanes_bar.png diff --git a/mods/xpanes/license.txt b/mods/xpanes/license.txt new file mode 100644 index 00000000..83bf86e5 --- /dev/null +++ b/mods/xpanes/license.txt @@ -0,0 +1,26 @@ +License of source code and media (textures) +------------------------------------------- + +The MIT License (MIT) +Copyright (C) 2014-2016 xyz +Copyright (C) 2014-2016 BlockMen +Copyright (C) 2013-2016 Gambit + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT From 6171fb43f04ede1a4cffeb8473779c26336ad1c2 Mon Sep 17 00:00:00 2001 From: paramat Date: Wed, 7 Sep 2016 02:52:57 +0100 Subject: [PATCH 100/196] Change WTFPL to MIT (part 3) Relicense WTFPL media to CC BY-SA 3.0. Various corrections and edits. --- mods/beds/README.txt | 30 ++++++++++------- mods/beds/license.txt | 40 +++++++++++++++++++++-- mods/boats/README.txt | 9 ++++-- mods/boats/license.txt | 44 +++++++++++++++++++++++-- mods/bones/README.txt | 6 ++-- mods/bones/license.txt | 39 ++++++++++++++++++++-- mods/bucket/README.txt | 3 +- mods/bucket/license.txt | 44 +++++++++++++++---------- mods/creative/README.txt | 14 ++------ mods/creative/license.txt | 41 +++++++++++++++++++++-- mods/default/README.txt | 29 ++++++++--------- mods/default/license.txt | 48 +++++++++++++-------------- mods/doors/README.txt | 8 +++-- mods/doors/license.txt | 9 +++--- mods/dye/README.txt | 11 +++++-- mods/dye/license.txt | 40 +++++++++++++++++++++-- mods/farming/README.txt | 9 +++--- mods/farming/license.txt | 10 +++--- mods/fire/README.txt | 22 ++++++------- mods/fire/license.txt | 34 ++++++++++++++++++++ mods/flowers/README.txt | 22 ++++++++++--- mods/flowers/license.txt | 45 +++++++++++++++++++++++--- mods/give_initial_stuff/README.txt | 1 + mods/give_initial_stuff/license.txt | 1 + mods/nyancat/README.txt | 16 +++------ mods/nyancat/license.txt | 44 +++++++++++++++---------- mods/screwdriver/README.txt | 17 +++------- mods/screwdriver/license.txt | 38 +++++++++++++++++++++- mods/stairs/README.txt | 29 ++++++----------- mods/stairs/license.txt | 36 +++++++++++++++++++++ mods/tnt/README.txt | 9 +++--- mods/tnt/license.txt | 45 +++++++++++++++++++++++--- mods/vessels/README.txt | 50 ++++++----------------------- mods/vessels/license.txt | 37 +++++++++++++++++++++ mods/wool/README.txt | 14 ++++---- mods/wool/license.txt | 1 + mods/xpanes/README.txt | 13 ++++---- mods/xpanes/license.txt | 42 ++++++++++++++++++++++-- 38 files changed, 682 insertions(+), 268 deletions(-) diff --git a/mods/beds/README.txt b/mods/beds/README.txt index 1f8400c4..cda6ebd9 100644 --- a/mods/beds/README.txt +++ b/mods/beds/README.txt @@ -4,17 +4,23 @@ See license.txt for license information. Authors of source code ---------------------- -BlockMen (MIT) +Originally by BlockMen (MIT) +Various Minetest developers and contributors (MIT) -About -~~~~~ -This mod adds a bed to Minetest which allows to skip the night. To sleep rightclick the bed, if playing -in singleplayer mode the night gets skipped imideatly. If playing on server you get shown how many other -players are in bed too. If all players are sleeping the night gets skipped aswell. Also the night skip can be forced -if more than 50% of the players are lying in bed and use this option. +Authors of media (textures) +--------------------------- +BlockMen (CC BY-SA 3.0) -Another feature is a controled respawning. If you have slept in bed (not just lying in it) your respawn point -is set to the beds location and you will respawn there after death. -You can disable the respawn at beds by setting "enable_bed_respawn = false" in minetest.conf -You can also disable the night skip feature by setting "enable_bed_night_skip = false" in minetest.conf or by using -the /set command ingame. +This mod adds a bed to Minetest which allows to skip the night. +To sleep, rightclick the bed. If playing in singleplayer mode the night gets skipped +immediately. If playing multiplayer you get shown how many other players are in bed too, +if all players are sleeping the night gets skipped. The night skip can be forced if more +than 50% of the players are lying in bed and use this option. + +Another feature is a controlled respawning. If you have slept in bed (not just lying in +it) your respawn point is set to the beds location and you will respawn there after +death. +You can disable the respawn at beds by setting "enable_bed_respawn = false" in +minetest.conf. +You can disable the night skip feature by setting "enable_bed_night_skip = false" in +minetest.conf or by using the /set command in-game. diff --git a/mods/beds/license.txt b/mods/beds/license.txt index 8824b04a..0494b36b 100644 --- a/mods/beds/license.txt +++ b/mods/beds/license.txt @@ -1,8 +1,9 @@ -License of source code and media (textures) -------------------------------------------- +License of source code +---------------------- The MIT License (MIT) Copyright (C) 2014-2016 BlockMen +Copyright (C) 2014-2016 Various Minetest developers and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software @@ -22,3 +23,38 @@ DEALINGS IN THE SOFTWARE. For more details: https://opensource.org/licenses/MIT + + +Licenses of media (textures) +---------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2014-2016 BlockMen + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/boats/README.txt b/mods/boats/README.txt index efacb32e..59631d9d 100644 --- a/mods/boats/README.txt +++ b/mods/boats/README.txt @@ -4,9 +4,12 @@ See license.txt for license information. Authors of source code ---------------------- -PilzAdam (MIT) +Originally by PilzAdam (MIT) +Various Minetest developers and contributors (MIT) Authors of media (textures and model) ------------------------------------- -Textures: Zeg9 (MIT) -Model: thetoon and Zeg9 (MIT), modified by PavelS(SokolovPavel) (MIT) +Textures: Zeg9 (CC BY-SA 3.0) +Model: thetoon and Zeg9 (CC BY-SA 3.0), + modified by PavelS(SokolovPavel) (CC BY-SA 3.0), + modified by sofar (CC BY-SA 3.0) diff --git a/mods/boats/license.txt b/mods/boats/license.txt index f0baa5f1..d4afe75f 100644 --- a/mods/boats/license.txt +++ b/mods/boats/license.txt @@ -1,9 +1,9 @@ -License of source code and media (textures and model) ------------------------------------------------------ +License of source code +---------------------- The MIT License (MIT) Copyright (C) 2012-2016 PilzAdam -Copyright (C) 2012-2016 Zeg9, thetoon, PavelS(SokolovPavel) +Copyright (C) 2012-2016 Various Minetest developers and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software @@ -23,3 +23,41 @@ DEALINGS IN THE SOFTWARE. For more details: https://opensource.org/licenses/MIT + + +Licenses of media (textures and model) +-------------------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2012-2016 Zeg9 +Copyright (C) 2012-2016 thetoon +Copyright (C) 2012-2016 PavelS(SokolovPavel) +Copyright (C) 2016 sofar (sofar@foo-projects.org) + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/bones/README.txt b/mods/bones/README.txt index 8a660717..91bcd109 100644 --- a/mods/bones/README.txt +++ b/mods/bones/README.txt @@ -1,12 +1,12 @@ Minetest Game mod: bones ======================== - See license.txt for license information. Authors of source code ---------------------- -PilzAdam (MIT) +Originally by PilzAdam (MIT) +Various Minetest developers and contributors (MIT) Authors of media (textures) --------------------------- -All textures: paramat (MIT) +All textures: paramat (CC BY-SA 3.0) diff --git a/mods/bones/license.txt b/mods/bones/license.txt index 5d05e551..fe525841 100644 --- a/mods/bones/license.txt +++ b/mods/bones/license.txt @@ -1,9 +1,9 @@ -License of source code and textures ------------------------------------ +License of source code +---------------------- The MIT License (MIT) Copyright (C) 2012-2016 PilzAdam -Copyright (C) 2016 paramat +Copyright (C) 2012-2016 Various Minetest developers and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software @@ -23,3 +23,36 @@ DEALINGS IN THE SOFTWARE. For more details: https://opensource.org/licenses/MIT + + +Licenses of media (textures) +---------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2016 paramat + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + diff --git a/mods/bucket/README.txt b/mods/bucket/README.txt index 4bb0f092..45e0ec54 100644 --- a/mods/bucket/README.txt +++ b/mods/bucket/README.txt @@ -6,7 +6,8 @@ Authors of source code ---------------------- Kahrl (LGPL 2.1) celeron55, Perttu Ahola (LGPL 2.1) +Various Minetest developers and contributors (LGPL 2.1) Authors of media (textures) --------------------------- -ElementW (MIT) +ElementW (CC BY-SA 3.0) diff --git a/mods/bucket/license.txt b/mods/bucket/license.txt index 4fbbeadc..a5156ae6 100644 --- a/mods/bucket/license.txt +++ b/mods/bucket/license.txt @@ -4,6 +4,7 @@ License of source code GNU Lesser General Public License, version 2.1 Copyright (C) 2011-2016 Kahrl Copyright (C) 2011-2016 celeron55, Perttu Ahola +Copyright (C) 2011-2016 Various Minetest developers and contributors This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; @@ -15,27 +16,36 @@ See the GNU Lesser General Public License for more details: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html -License of media (textures) ---------------------------- +Licenses of media (textures) +---------------------------- -The MIT License (MIT) +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Copyright (C) 2015-2016 ElementW -Permission is hereby granted, free of charge, to any person obtaining a copy of this -software and associated documentation files (the "Software"), to deal in the Software -without restriction, including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. -The above copyright notice and this permission notice shall be included in all copies or -substantial portions of the Software. +Under the following terms: -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. For more details: -https://opensource.org/licenses/MIT +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/creative/README.txt b/mods/creative/README.txt index 2a1cb551..82357f30 100644 --- a/mods/creative/README.txt +++ b/mods/creative/README.txt @@ -2,21 +2,11 @@ Minetest Game mod: creative =========================== See license.txt for license information. -Implements creative mode. - -Switch on by using the "creative_mode" setting. - -Registered items that: -- have a description, and -- do not have the group not_in_creative_inventory -are added to the creative inventory. - - Authors of source code ---------------------- -Perttu Ahola (celeron55) (MIT) +Originally by Perttu Ahola (celeron55) (MIT) Jean-Patrick G. (kilbith) (MIT) Author of media (textures) -------------------------- -Jean-Patrick G. (kilbith) (MIT) +Jean-Patrick G. (kilbith) (CC BY-SA 3.0) diff --git a/mods/creative/license.txt b/mods/creative/license.txt index aa0725b3..4ad1d5ff 100644 --- a/mods/creative/license.txt +++ b/mods/creative/license.txt @@ -1,9 +1,9 @@ -License of source code and media (textures) -------------------------------------------- +License of source code +---------------------- The MIT License (MIT) Copyright (C) 2012-2016 Perttu Ahola (celeron55) -Copyright (C) 2016 Jean-Patrick G. (kilbith) +Copyright (C) 2015-2016 Jean-Patrick G. (kilbith) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software @@ -23,3 +23,38 @@ DEALINGS IN THE SOFTWARE. For more details: https://opensource.org/licenses/MIT + + +Licenses of media (textures) +---------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2016 Jean-Patrick G. (kilbith) + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/default/README.txt b/mods/default/README.txt index 269c149e..593bc7a6 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -4,7 +4,7 @@ See license.txt for license information. Authors of source code ---------------------- -celeron55, Perttu Ahola (LGPL 2.1) +Originally by celeron55, Perttu Ahola (LGPL 2.1) Various Minetest developers and contributors (LGPL 2.1) Authors of media (textures, models and sounds) @@ -12,7 +12,7 @@ Authors of media (textures, models and sounds) Everything not listed in here: celeron55, Perttu Ahola (CC BY-SA 3.0) -Cisoun's texture pack (MIT): +Cisoun's texture pack (CC BY-SA 3.0): default_jungletree.png default_lava.png default_leaves.png @@ -22,7 +22,7 @@ Cisoun's texture pack (MIT): default_tree_top.png default_water.png -Cisoun's conifers mod (MIT): +Cisoun's conifers mod (CC BY-SA 3.0): default_pine_needles.png Originating from G4JC's Almost MC Texture Pack (CC BY-SA 3.0): @@ -30,36 +30,36 @@ Originating from G4JC's Almost MC Texture Pack (CC BY-SA 3.0): default_torch_on_ceiling.png default_torch_on_floor.png -VanessaE's animated torches (MIT): +VanessaE's animated torches (CC BY-SA 3.0): default_torch_animated.png default_torch_on_ceiling_animated.png default_torch_on_floor_animated.png default_torch_on_floor.png -RealBadAngel's animated water (MIT): +RealBadAngel's animated water (CC BY-SA 3.0): default_water_source_animated.png default_water_flowing_animated.png -VanessaE (MIT): +VanessaE (CC BY-SA 3.0): default_desert_sand.png default_desert_stone.png default_sand.png default_mese_crystal.png default_mese_crystal_fragment.png -Calinou (CC BY-SA): +Calinou (CC BY-SA 3.0): default_brick.png default_papyrus.png default_mineral_copper.png default_glass_detail.png -MirceaKitsune (MIT): +MirceaKitsune (CC BY-SA 3.0): character.x Jordach (CC BY-SA 3.0): character.png -PilzAdam (MIT): +PilzAdam (CC BY-SA 3.0): default_jungleleaves.png default_junglesapling.png default_obsidian_glass.png @@ -67,10 +67,10 @@ PilzAdam (MIT): default_mineral_gold.png default_snowball.png -jojoa1997 (MIT): +jojoa1997 (CC BY-SA 3.0): default_obsidian.png -InfinityProject (MIT): +InfinityProject (CC BY-SA 3.0): default_mineral_diamond.png Splizard (CC BY-SA 3.0): @@ -146,18 +146,17 @@ sofar (CC BY-SA 3.0): default_aspen_tree default_aspen_tree_top, derived from default_pine_tree_top (by paramat) default_aspen_wood, derived from default_pine_wood (by paramat) - -sofar (MIT): default_gravel.png -- Derived from Gambit's PixelBOX texture pack light gravel Neuromancer (CC BY-SA 2.0): default_cobble.png, based on texture by Brane praefect default_mossycobble.png, based on texture by Brane praefect + Neuromancer (CC BY-SA 3.0): default_dirt.png default_furnace_*.png -Gambit (MIT): +Gambit (CC BY-SA 3.0): default_bronze_ingot.png default_copper_ingot.png default_copper_lump.png @@ -172,7 +171,7 @@ Gambit (MIT): default_sign_wall_wood.png default_flint.png -asl97 (MIT): +asl97 (CC BY-SA 3.0): default_ice.png KevDoy (CC BY-SA 3.0) diff --git a/mods/default/license.txt b/mods/default/license.txt index c10ec7ee..45ea3e45 100644 --- a/mods/default/license.txt +++ b/mods/default/license.txt @@ -18,33 +18,29 @@ https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html Licenses of media (textures, models and sounds) ----------------------------------------------- -The MIT License (MIT) -Copyright (C) 2010-2016 Various Minetest developers and contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this -software and associated documentation files (the "Software"), to deal in the Software -without restriction, including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or -substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -For more details: -https://opensource.org/licenses/MIT - ----------------- - Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -Copyright (C) 2010-2016 celeron55, Perttu Ahola -Copyright (C) 2010-2016 Various Minetest developers and contributors +Copyright (C) 2010-2016: + celeron55, Perttu Ahola + Cisoun + G4JC + VanessaE + RealBadAngel + Calinou + MirceaKitsune + Jordach + PilzAdam + jojoa1997 + InfinityProject + Splizard + Zeg9 + paramat + BlockMen + sofar + Neuromancer + Gambit + asl97 + KevDoy + Mito551 You are free to: Share — copy and redistribute the material in any medium or format. diff --git a/mods/doors/README.txt b/mods/doors/README.txt index 2684d98c..9ad7093d 100644 --- a/mods/doors/README.txt +++ b/mods/doors/README.txt @@ -14,6 +14,8 @@ Re-implemented most of the door algorithms, added meshes, UV wrapped texture. Added doors API to facilitate coding mods accessing and operating doors. Added Fence Gate model, code, and sounds. +Various Minetest developers and contributors (MIT) + Authors of media (textures) --------------------------- @@ -24,7 +26,7 @@ Following textures created by Fernando Zapata (CC BY-SA 3.0): door_wood_b.png door_wood_b_r.png -Following textures created by BlockMen (MIT): +Following textures created by BlockMen (CC BY-SA 3.0): door_trapdoor.png door_obsidian_glass_side.png @@ -41,13 +43,13 @@ Following textures created by sofar (CC-BY-SA-3.0): doors_trapdoor_steel_side.png door_trapdoor_side.png -Obsidian door textures by red-001 based on textures by Pilzadam and BlockMen (MIT): +Obsidian door textures by red-001 based on textures by Pilzadam and BlockMen (CC BY-SA 3.0): door_obsidian_glass.png Glass door textures by red-001 based on textures by celeron55 (CC BY-SA 3.0): door_glass.png -All other textures (created by PilzAdam) (MIT): +All other textures (created by PilzAdam) (CC BY-SA 3.0): Door textures were converted to the new texture map by sofar, paramat and red-001, under the same license as the originals. diff --git a/mods/doors/license.txt b/mods/doors/license.txt index b97f6acd..8ce73c49 100644 --- a/mods/doors/license.txt +++ b/mods/doors/license.txt @@ -1,12 +1,11 @@ -License of source code and media (textures) -------------------------------------------- +License of source code +---------------------- The MIT License (MIT) Copyright (C) 2012-2016 PilzAdam Copyright (C) 2014-2016 BlockMen Copyright (C) 2015-2016 sofar (sofar@foo-projects.org) -Copyright (C) 2016 red-001 -Copyright (C) 2016 paramat +Copyright (C) 2012-2016 Various Minetest developers and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software @@ -34,6 +33,8 @@ Licenses of media (textures, models and sounds) Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Copyright (C) 2011-2016 Fernando Zapata Copyright (C) 2014-2016 celeron55 +Copyright (C) 2012-2016 PilzAdam +Copyright (C) 2014-2016 BlockMen Copyright (C) 2015-2016 sofar Copyright (C) 2016 red-001 Copyright (C) 2016 paramat diff --git a/mods/dye/README.txt b/mods/dye/README.txt index 33766fcb..a2fbdd24 100644 --- a/mods/dye/README.txt +++ b/mods/dye/README.txt @@ -3,6 +3,11 @@ Minetest Game mod: dye See license.txt for license information. See init.lua for documentation. -Authors of source code and media (textures) -------------------------------------------- -Perttu Ahola (celeron55) (MIT) +Authors of source code +---------------------- +Originally by Perttu Ahola (celeron55) (MIT) +Various Minetest developers and contributors (MIT) + +Authors of media (textures) +--------------------------- +Perttu Ahola (celeron55) (CC BY-SA 3.0) diff --git a/mods/dye/license.txt b/mods/dye/license.txt index 47c7498e..bf9d3501 100644 --- a/mods/dye/license.txt +++ b/mods/dye/license.txt @@ -1,8 +1,9 @@ -License of source code and media (textures) -------------------------------------------- +License of source code +---------------------- The MIT License (MIT) Copyright (C) 2012-2016 Perttu Ahola (celeron55) +Copyright (C) 2012-2016 Various Minetest developers and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software @@ -22,3 +23,38 @@ DEALINGS IN THE SOFTWARE. For more details: https://opensource.org/licenses/MIT + + +Licenses of media (textures) +---------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2012-2016 Perttu Ahola (celeron55) + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/farming/README.txt b/mods/farming/README.txt index 310492ca..3ccd8c30 100644 --- a/mods/farming/README.txt +++ b/mods/farming/README.txt @@ -4,12 +4,13 @@ See license.txt for license information. Authors of source code ---------------------- -PilzAdam (MIT) +Originally by PilzAdam (MIT) webdesigner97 (MIT) +Various Minetest developers and contributors (MIT) Authors of media (textures) --------------------------- -Created by PilzAdam (MIT): +Created by PilzAdam (CC BY 3.0): farming_bread.png farming_soil.png farming_soil_wet.png @@ -24,10 +25,10 @@ Created by BlockMen (CC BY 3.0): farming_tool_stonehoe.png farming_tool_woodhoe.png -Created by MasterGollum (MIT): +Created by MasterGollum (CC BY 3.0): farming_straw.png -Created by Gambit (MIT): +Created by Gambit (CC BY 3.0): farming_wheat.png farming_wheat_*.png farming_cotton_*.png diff --git a/mods/farming/license.txt b/mods/farming/license.txt index 82f73de5..8cbb63a8 100644 --- a/mods/farming/license.txt +++ b/mods/farming/license.txt @@ -1,11 +1,10 @@ -License of source code and media (textures) -------------------------------------------- +License of source code +---------------------- The MIT License (MIT) Copyright (C) 2012-2016 PilzAdam Copyright (C) 2014-2016 webdesigner97 -Copyright (C) 2015-2016 MasterGollum -Copyright (C) 2015-2016 Gambit +Copyright (C) 2012-2016 Various Minetest developers and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software @@ -31,7 +30,10 @@ License of media (textures) --------------------------- Attribution 3.0 Unported (CC BY 3.0) +Copyright (C) 2012-2016 PilzAdam Copyright (C) 2014-2016 BlockMen +Copyright (C) 2015-2016 MasterGollum +Copyright (C) 2015-2016 Gambit You are free to: Share — copy and redistribute the material in any medium or format. diff --git a/mods/fire/README.txt b/mods/fire/README.txt index 2454478c..a0f298ce 100644 --- a/mods/fire/README.txt +++ b/mods/fire/README.txt @@ -4,22 +4,22 @@ See license.txt for license information. Authors of source code ---------------------- -Perttu Ahola (celeron55) (LGPL 2.1) 2012 +Originally by Perttu Ahola (celeron55) (LGPL 2.1) +Various Minetest developers and contributors (LGPL 2.1) -Authors of media files ----------------------- +Authors of media (textures and sounds) +-------------------------------------- Everything not listed in here: Copyright (C) 2012 Perttu Ahola (celeron55) (CC BY-SA 3.0) -fire_small.ogg sampled from: - http://www.freesound.org/people/dobroide/sounds/4211/ (CC BY 3.0) 2005 - -fire_large.ogg sampled from: - http://www.freesound.org/people/Dynamicell/sounds/17548/ (CC BY 3.0) 2006 - fire_basic_flame_animated.png: - Muadtralk (CC BY-SA 3.0) 2012 + Muadtralk (CC BY-SA 3.0) fire_flint_steel.png - Gambit (MIT) 2013 + Gambit (CC BY-SA 3.0) +fire_small.ogg sampled from: + http://www.freesound.org/people/dobroide/sounds/4211/ (CC BY 3.0) + +fire_large.ogg sampled from: + http://www.freesound.org/people/Dynamicell/sounds/17548/ (CC BY 3.0) diff --git a/mods/fire/license.txt b/mods/fire/license.txt index 6841148a..87ade6b3 100644 --- a/mods/fire/license.txt +++ b/mods/fire/license.txt @@ -3,6 +3,7 @@ License of source code GNU Lesser General Public License, version 2.1 Copyright (C) 2012-2016 celeron55, Perttu Ahola +Copyright (C) 2012-2016 Various Minetest developers and contributors This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; @@ -19,6 +20,8 @@ Licenses of media (textures) Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Copyright (C) 2012-2016 Perttu Ahola (celeron55) +Copyright (C) 2012-2016 Muadtralk +Copyright (C) 2013-2016 Gambit You are free to: Share — copy and redistribute the material in any medium or format. @@ -47,3 +50,34 @@ rights may limit how you use the material. For more details: http://creativecommons.org/licenses/by-sa/3.0/ + +----------------------- + +Attribution 3.0 Unported (CC BY 3.0) +Copyright (C) 2005 dobroide +Copyright (C) 2006 Dynamicell + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by/3.0/ diff --git a/mods/flowers/README.txt b/mods/flowers/README.txt index c9125e25..2a5e4de3 100644 --- a/mods/flowers/README.txt +++ b/mods/flowers/README.txt @@ -4,11 +4,23 @@ See license.txt for license information. Authors of source code ---------------------- -Ironzorg (MIT) -VanessaE (MIT) +Originally by Ironzorg (MIT) and VanessaE (MIT) +Various Minetest developers and contributors (MIT) Authors of media (textures) --------------------------- -Gambit (MIT): -flowers_mushroom_*.png -flowers_waterlily.png +RHRhino (CC BY-SA 3.0): + flowers_dandelion_white.png + flowers_dandelion_yellow.png + flowers_geranium.png + flowers_rose.png + flowers_tulip.png + flowers_viola.png + +Gambit (CC BY-SA 3.0): + flowers_mushroom_brown.png + flowers_mushroom_red.png + flowers_waterlily.png + +yyt16384 (CC BY-SA 3.0): + flowers_waterlily_bottom.png, derived from Gambit's texture diff --git a/mods/flowers/license.txt b/mods/flowers/license.txt index 1f0e6730..d3011622 100644 --- a/mods/flowers/license.txt +++ b/mods/flowers/license.txt @@ -1,9 +1,9 @@ -License of source code and media (textures) -------------------------------------------- +License of source code +---------------------- The MIT License (MIT) -Copyright (C) 2012-2013 Ironzorg, VanessaE -Copyright (C) 2015-2016 Gambit +Copyright (C) 2012-2016 Ironzorg, VanessaE +Copyright (C) 2012-2016 Various Minetest developers and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software @@ -23,3 +23,40 @@ DEALINGS IN THE SOFTWARE. For more details: https://opensource.org/licenses/MIT + + +Licenses of media (textures) +---------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2014-2016 RHRhino +Copyright (C) 2015-2016 Gambit +Copyright (C) 2016 yyt16384 + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/give_initial_stuff/README.txt b/mods/give_initial_stuff/README.txt index 1155d4d2..cbd240fe 100644 --- a/mods/give_initial_stuff/README.txt +++ b/mods/give_initial_stuff/README.txt @@ -5,3 +5,4 @@ See license.txt for license information. Authors of source code ---------------------- Perttu Ahola (celeron55) (MIT) +Various Minetest developers and contributors (MIT) diff --git a/mods/give_initial_stuff/license.txt b/mods/give_initial_stuff/license.txt index c32f2586..8134c920 100644 --- a/mods/give_initial_stuff/license.txt +++ b/mods/give_initial_stuff/license.txt @@ -3,6 +3,7 @@ License of source code The MIT License (MIT) Copyright (C) 2012-2016 Perttu Ahola (celeron55) +Copyright (C) 2012-2016 Various Minetest developers and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software diff --git a/mods/nyancat/README.txt b/mods/nyancat/README.txt index 6e7ce4e2..fadc1d23 100644 --- a/mods/nyancat/README.txt +++ b/mods/nyancat/README.txt @@ -2,20 +2,14 @@ Minetest Game mod: nyancat ========================== See license.txt for license information. -License of source code: ------------------------ -Copyright (C) 2011-2016 celeron55, Perttu Ahola - -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. - -http://www.gnu.org/licenses/lgpl-2.1.html +Authors of source code +---------------------- +Originally by celeron55, Perttu Ahola (LGPL 2.1) +Various Minetest developers and contributors (LGPL 2.1) Authors of media files ---------------------- -VanessaE (MIT): +VanessaE (CC BY-SA 3.0): nyancat_front.png nyancat_back.png nyancat_side.png diff --git a/mods/nyancat/license.txt b/mods/nyancat/license.txt index a3c24a8c..3aa38617 100644 --- a/mods/nyancat/license.txt +++ b/mods/nyancat/license.txt @@ -3,6 +3,7 @@ License of source code GNU Lesser General Public License, version 2.1 Copyright (C) 2011-2016 celeron55, Perttu Ahola +Copyright (C) 2012-2016 Various Minetest developers and contributors This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; @@ -14,27 +15,36 @@ See the GNU Lesser General Public License for more details: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html -License of media (textures) ---------------------------- +Licenses of media (textures) +---------------------------- -The MIT License (MIT) +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Copyright (C) 2012-2016 VanessaE -Permission is hereby granted, free of charge, to any person obtaining a copy of this -software and associated documentation files (the "Software"), to deal in the Software -without restriction, including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. -The above copyright notice and this permission notice shall be included in all copies or -substantial portions of the Software. +Under the following terms: -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. For more details: -https://opensource.org/licenses/MIT +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/screwdriver/README.txt b/mods/screwdriver/README.txt index d2926c01..9d39c58c 100644 --- a/mods/screwdriver/README.txt +++ b/mods/screwdriver/README.txt @@ -4,19 +4,10 @@ See license.txt for license information. License of source code ---------------------- -Copyright (C) 2013 RealBadAngel, Maciej Kasatkin - -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. - -http://www.gnu.org/licenses/lgpl-2.1.html +Originally by RealBadAngel, Maciej Kasatkin (LGPL 2.1) +Various Minetest developers and contributors (LGPL 2.1) License of media (textures) --------------------------- -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -http://creativecommons.org/licenses/by-sa/3.0/ - -Created by Gambit (MIT) 2013: -screwdriver.png +Created by Gambit (CC BY-SA 3.0): + screwdriver.png diff --git a/mods/screwdriver/license.txt b/mods/screwdriver/license.txt index d058f67b..d9b721bb 100644 --- a/mods/screwdriver/license.txt +++ b/mods/screwdriver/license.txt @@ -2,7 +2,8 @@ License of source code ---------------------- GNU Lesser General Public License, version 2.1 -Copyright (C) 2013 RealBadAngel, Maciej Kasatkin +Copyright (C) 2013-2016 RealBadAngel, Maciej Kasatkin +Copyright (C) 2013-2016 Various Minetest developers and contributors This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; @@ -12,3 +13,38 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + +Licenses of media (textures) +---------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2013-2016 Gambit + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/stairs/README.txt b/mods/stairs/README.txt index ceab238c..d32cd71b 100644 --- a/mods/stairs/README.txt +++ b/mods/stairs/README.txt @@ -2,26 +2,15 @@ Minetest Game mod: stairs ========================= See license.txt for license information. -License of source code: ------------------------ -Copyright (C) 2011-2016 Kahrl -Copyright (C) 2011-2016 celeron55, Perttu Ahola +Authors of source code +---------------------- +Originally by Kahrl (LGPL 2.1) and +celeron55, Perttu Ahola (LGPL 2.1) +Various Minetest developers and contributors (LGPL 2.1) -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. - -http://www.gnu.org/licenses/lgpl-2.1.html - -License of media (textures, models and sounds) ----------------------------------------------- -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -http://creativecommons.org/licenses/by-sa/3.0/ - -Authors of media (model) ------------------------- -Jean-Patrick G. (kilbith) (MIT): -stairs_stair.obj +Authors of media (models) +------------------------- +Jean-Patrick G. (kilbith) (CC BY-SA 3.0): + stairs_stair.obj diff --git a/mods/stairs/license.txt b/mods/stairs/license.txt index 2bd78401..8f16bbd7 100644 --- a/mods/stairs/license.txt +++ b/mods/stairs/license.txt @@ -4,6 +4,7 @@ License of source code GNU Lesser General Public License, version 2.1 Copyright (C) 2011-2016 Kahrl Copyright (C) 2011-2016 celeron55, Perttu Ahola +Copyright (C) 2012-2016 Various Minetest developers and contributors This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; @@ -13,3 +14,38 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + +Licenses of media (models) +-------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2015-2016 Jean-Patrick G. (kilbith) + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/tnt/README.txt b/mods/tnt/README.txt index 2b148800..c1ca88d5 100644 --- a/mods/tnt/README.txt +++ b/mods/tnt/README.txt @@ -7,19 +7,20 @@ Authors of source code PilzAdam (MIT) ShadowNinja (MIT) sofar (sofar@foo-projects.org) (MIT) +Various Minetest developers and contributors (MIT) Authors of media (textures) --------------------------- -BlockMen (MIT): +BlockMen (CC BY-SA 3.0): All textures not mentioned below. -ShadowNinja (MIT): +ShadowNinja (CC BY-SA 3.0): tnt_smoke.png -Wuzzy (MIT): +Wuzzy (CC BY-SA 3.0): All gunpowder textures except tnt_gunpowder_inventory.png. -sofar (sofar@foo-projects.org) (MIT): +sofar (sofar@foo-projects.org) (CC BY-SA 3.0): tnt_blast.png Introduction diff --git a/mods/tnt/license.txt b/mods/tnt/license.txt index 6519bb70..210f2bdc 100644 --- a/mods/tnt/license.txt +++ b/mods/tnt/license.txt @@ -1,12 +1,11 @@ -License of source code and media (textures) -------------------------------------------- +License of source code +---------------------- The MIT License (MIT) Copyright (C) 2014-2016 PilzAdam Copyright (C) 2014-2016 ShadowNinja Copyright (C) 2016 sofar (sofar@foo-projects.org) -Copyright (C) 2014-2016 BlockMen -Copyright (C) 2015-2016 Wuzzy +Copyright (C) 2014-2016 Various Minetest developers and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software @@ -26,3 +25,41 @@ DEALINGS IN THE SOFTWARE. For more details: https://opensource.org/licenses/MIT + + +Licenses of media (textures) +---------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2014-2016 BlockMen +Copyright (C) 2014-2016 ShadowNinja +Copyright (C) 2015-2016 Wuzzy +Copyright (C) 2016 sofar (sofar@foo-projects.org) + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/vessels/README.txt b/mods/vessels/README.txt index 3af9be5f..b81d0e94 100644 --- a/mods/vessels/README.txt +++ b/mods/vessels/README.txt @@ -2,50 +2,18 @@ Minetest Game mod: vessels ========================== See license.txt for license information. -Crafts -------- -Glass bottle (yields 10) +Authors of source code +---------------------- +Originally by Vanessa Ezekowitz (LGPL 2.1) +Modified by Perttu Ahola (LGPL 2.1) +Various Minetest developers and contributors (LGPL 2.1) - G - G - G - G - - G - - -Drinking Glass (yields 14) - - G - G - G - G - G G G - -Heavy Steel Bottle (yields 5) - - S - S - S - S - - S - - -License of source code: ------------------------ -Copyright (C) 2012 Vanessa Ezekowitz -Version 2012-09-02 -Modifications by Perttu Ahola - -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. - -http://www.gnu.org/licenses/lgpl-2.1.html - -License of media (textures) +Authors of media (textures) --------------------------- -MIT +All not listed below, Vanessa Ezekowitz (CC BY-SA 3.0) -Authors of media files ------------------------ -Unless specifically noted, -Copyright (C) 2012 Vanessa Ezekowitz - -The following textures were modified by Thomas-S (CC0 1.0): +The following textures were modified by Thomas-S (CC BY-SA 3.0): vessels_drinking_glass.png - vessels_drinking_glass_inv.png (Paramat helped to improve this texture) + vessels_drinking_glass_inv.png vessels_glass_bottle.png vessels_steel_bottle.png diff --git a/mods/vessels/license.txt b/mods/vessels/license.txt index bd72faae..de16a3b0 100644 --- a/mods/vessels/license.txt +++ b/mods/vessels/license.txt @@ -4,6 +4,7 @@ License of source code GNU Lesser General Public License, version 2.1 Copyright (C) 2012-2016 Vanessa Ezekowitz Copyright (C) 2012-2016 celeron55, Perttu Ahola +Copyright (C) 2012-2016 Various Minetest developers and contributors This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; @@ -13,3 +14,39 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + +Licenses of media (textures) +---------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2012-2016 Vanessa Ezekowitz +Copyright (C) 2016 Thomas-S + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/wool/README.txt b/mods/wool/README.txt index 3fce7547..a66677dd 100644 --- a/mods/wool/README.txt +++ b/mods/wool/README.txt @@ -2,17 +2,15 @@ Minetest Game mod: wool ======================= See license.txt for license information. -Mostly backward-compatible with jordach's 16-color wool mod. - Authors of source code ---------------------- -Perttu Ahola (celeron55) (MIT) +Originally by Perttu Ahola (celeron55) (MIT) +Various Minetest developers and contributors (MIT) Authors of media (textures) --------------------------- Cisoun (CC BY-SA 3.0): -- wool_black.png wool_brown.png wool_dark_green.png wool_green.png -- wool_magenta.png wool_pink.png wool_violet.png wool_yellow.png wool_blue.png -- wool_cyan.png wool_dark_grey.png wool_grey.png wool_orange.png wool_red.png -- wool_white.png - + wool_black.png wool_brown.png wool_dark_green.png wool_green.png + wool_magenta.png wool_pink.png wool_violet.png wool_yellow.png + wool_blue.png wool_cyan.png wool_dark_grey.png wool_grey.png + wool_orange.png wool_red.png wool_white.png diff --git a/mods/wool/license.txt b/mods/wool/license.txt index 75712f92..93101636 100644 --- a/mods/wool/license.txt +++ b/mods/wool/license.txt @@ -3,6 +3,7 @@ License of source code The MIT License (MIT) Copyright (C) 2012-2016 Perttu Ahola (celeron55) +Copyright (C) 2012-2016 Various Minetest developers and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software diff --git a/mods/xpanes/README.txt b/mods/xpanes/README.txt index d2613a2d..72dd76e8 100644 --- a/mods/xpanes/README.txt +++ b/mods/xpanes/README.txt @@ -4,13 +4,14 @@ See license.txt for license information. Authors of source code ---------------------- -xyz (MIT) -Modified by BlockMen (iron bars) (MIT) +Originally by xyz (MIT) +BlockMen (MIT) +Various Minetest developers and contributors (MIT) Authors of media (textures) --------------------------- -xyz (MIT): -All textures not mentioned below. +xyz (CC BY-SA 3.0): + All textures not mentioned below. -Gambit (MIT): -xpanes_bar.png +Gambit (CC BY-SA 3.0): + xpanes_bar.png diff --git a/mods/xpanes/license.txt b/mods/xpanes/license.txt index 83bf86e5..ef25be79 100644 --- a/mods/xpanes/license.txt +++ b/mods/xpanes/license.txt @@ -1,10 +1,10 @@ -License of source code and media (textures) -------------------------------------------- +License of source code +---------------------- The MIT License (MIT) Copyright (C) 2014-2016 xyz Copyright (C) 2014-2016 BlockMen -Copyright (C) 2013-2016 Gambit +Copyright (C) 2014-2016 Various Minetest developers and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software @@ -24,3 +24,39 @@ DEALINGS IN THE SOFTWARE. For more details: https://opensource.org/licenses/MIT + + +Licenses of media (textures) +---------------------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2014-2016 xyz +Copyright (C) 2013-2016 Gambit + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ From 992f295880886777afdd1a1153e8375f1b5e2980 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 8 Sep 2016 00:16:16 +0100 Subject: [PATCH 101/196] Licenses: (Part 4) Remove overlooked WTFPL text. Cleanup --- mods/default/legacy.lua | 2 +- mods/doors/init.lua | 8 -------- mods/walls/README.txt | 2 +- mods/walls/init.lua | 15 --------------- mods/walls/license.txt | 2 +- 5 files changed, 3 insertions(+), 26 deletions(-) diff --git a/mods/default/legacy.lua b/mods/default/legacy.lua index 76fcc8ed..a8c8ad56 100644 --- a/mods/default/legacy.lua +++ b/mods/default/legacy.lua @@ -1,6 +1,6 @@ -- mods/default/legacy.lua --- Horrible crap to support old code registering falling nodes +-- Horrible stuff to support old code registering falling nodes -- Don't use this and never do what this does, it's completely wrong! -- (More specifically, the client and the C++ code doesn't get the group) function default.register_falling_node(nodename, texture) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 0888077f..ed7fbb34 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -1,11 +1,3 @@ ---[[ - -Copyright (C) 2012 PilzAdam - modified by BlockMen (added sounds, glassdoors[glass, obsidian glass], trapdoor) -Copyright (C) 2015 - Auke Kok - ---]] - -- our API object doors = {} diff --git a/mods/walls/README.txt b/mods/walls/README.txt index 91dd9c57..0389174d 100644 --- a/mods/walls/README.txt +++ b/mods/walls/README.txt @@ -4,4 +4,4 @@ See license.txt for license information. Authors of source code ---------------------- -sofar (sofar@foo-projects.org) (LGPL 2.1) +Auke Kok (LGPL 2.1) diff --git a/mods/walls/init.lua b/mods/walls/init.lua index 0b51bdb0..bee8e465 100644 --- a/mods/walls/init.lua +++ b/mods/walls/init.lua @@ -1,18 +1,3 @@ - ---[[ - -Walls mod for Minetest - -Copyright (C) 2015 Auke Kok - -This program is free software. It comes without any warranty, to -the extent permitted by applicable law. You can redistribute it -and/or modify it under the terms of the Do What The Fuck You Want -To Public License, Version 2, as published by Sam Hocevar. See -http://sam.zoy.org/wtfpl/COPYING for more details. - ---]] - walls = {} walls.register = function(wall_name, wall_desc, wall_texture, wall_mat, wall_sounds) diff --git a/mods/walls/license.txt b/mods/walls/license.txt index 6ac0d08b..ccfaf1cd 100644 --- a/mods/walls/license.txt +++ b/mods/walls/license.txt @@ -2,7 +2,7 @@ License of source code ---------------------- GNU Lesser General Public License, version 2.1 -Copyright (C) 2016 sofar (sofar@foo-projects.org) +Copyright (C) 2015 Auke Kok 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; From 54235f32766167bbd55cae5715d6e01754715ce6 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Thu, 17 Mar 2016 00:40:30 -0700 Subject: [PATCH 102/196] Xpanes: Convert to connected nodeboxes I've rewritten this to use connected nodeboxes, but with a caveat. In order to make flat nodes look better, I'm keeping one non-connected pane that is flat around to convert flat sections to the flat nodes instead of connected, as these look better and are easier to work with. Once more sides are needed we convert the panes on the fly to connected nodes and recalculate the shape. We don't paint any of the half-panes that the previous generation of xpanes did. There's no need and it's harder to work with. Updating the nodes also seems more natural and placement and removal works straight forward. The conversion of old panes relies on an LBM, and does a reasonable conversion job, but it's not exact, since the panes behave slightly different now. The game API documentation was wrong to begin with. We discard param nr. 2 of the API entirely, and correct the tile usage text. --- game_api.txt | 2 +- mods/xpanes/README.txt | 1 + mods/xpanes/init.lua | 267 ++++++++++++++++++++-------------------- mods/xpanes/license.txt | 1 + 4 files changed, 137 insertions(+), 134 deletions(-) diff --git a/game_api.txt b/game_api.txt index 2f0715f8..9e8d4963 100644 --- a/game_api.txt +++ b/game_api.txt @@ -421,7 +421,7 @@ Creates panes that automatically connect to each other ### Pane definition { - textures = {"texture_Bottom_top", "texture_left_right", "texture_front_back"}, -- More tiles aren't supported + textures = {"texture for sides", (unused), "texture for top and bottom"}, -- More tiles aren't supported groups = {group = rating}, -- Uses the known node groups, see [Known damage and digging time defining groups] sounds = SoundSpec, -- See [#Default sounds] recipe = {{"","","","","","","","",""}}, -- Recipe field only diff --git a/mods/xpanes/README.txt b/mods/xpanes/README.txt index 72dd76e8..b72e19a8 100644 --- a/mods/xpanes/README.txt +++ b/mods/xpanes/README.txt @@ -6,6 +6,7 @@ Authors of source code ---------------------- Originally by xyz (MIT) BlockMen (MIT) +sofar (MIT) Various Minetest developers and contributors (MIT) Authors of media (textures) diff --git a/mods/xpanes/init.lua b/mods/xpanes/init.lua index 9189912e..dc7428fa 100644 --- a/mods/xpanes/init.lua +++ b/mods/xpanes/init.lua @@ -1,156 +1,146 @@ -xpanes = {} -local function rshift(x, by) - return math.floor(x / 2 ^ by) +local function is_pane(pos) + return minetest.get_item_group(minetest.get_node(pos).name, "pane") > 0 end -local directions = { - {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 function connects_dir(pos, name, dir) + local aside = vector.add(pos, minetest.facedir_to_dir(dir)) + if is_pane(aside) then + return true + end -local function update_pane(pos, name) - if not minetest.get_node(pos).name:find("^xpanes:"..name) then + local connects_to = minetest.registered_nodes[name].connects_to + if not connects_to then + return false + end + local list = minetest.find_nodes_in_area(aside, aside, connects_to) + + if #list > 0 then + return true + end + + return false +end + +local function swap(pos, node, name, param2) + if node.name == name and node.param2 == param2 then return end - local sum = 0 - for i, dir in pairs(directions) do - local node = minetest.get_node(vector.add(pos, dir)) - local def = minetest.registered_nodes[node.name] - local pane_num = def and def.groups.pane or 0 - if pane_num > 0 or not def or (def.walkable ~= false and - def.drawtype ~= "nodebox") then - sum = sum + 2 ^ (i - 1) + + minetest.set_node(pos, {name = name, param2 = param2}) +end + +local function update_pane(pos) + if not is_pane(pos) then + return + end + local node = minetest.get_node(pos) + local name = node.name + if name:sub(-5) == "_flat" then + name = name:sub(1, -6) + end + + local any = node.param2 + local c = {} + local count = 0 + for dir = 0, 3 do + c[dir] = connects_dir(pos, name, dir) + if c[dir] then + any = dir + count = count + 1 end end - if sum == 0 then - sum = 15 - end - minetest.set_node(pos, {name = "xpanes:"..name.."_"..sum}) -end -local function update_nearby(pos, node) - node = node or minetest.get_node(pos) - local name = node.name - if not name or node.name:sub(1, 7) ~= "xpanes:" then - return - end - local underscore_pos = string.find(name, "_[^_]*$") or 0 - local len = name:len() - local num = tonumber(name:sub(underscore_pos+1, len)) - if not num or num < 1 or num > 15 then - name = name:sub(8) + if count == 0 then + swap(pos, node, name .. "_flat", any) + elseif count == 1 then + swap(pos, node, name .. "_flat", (any + 1) % 4) + elseif count == 2 then + if (c[0] and c[2]) or (c[1] and c[3]) then + swap(pos, node, name .. "_flat", (any + 1) % 4) + else + swap(pos, node, name, 0) + end else - name = name:sub(8, underscore_pos - 1) - end - for i, dir in pairs(directions) do - update_pane(vector.add(pos, dir), name) + swap(pos, node, name, 0) end end -minetest.register_on_placenode(update_nearby) -minetest.register_on_dignode(update_nearby) +minetest.register_on_placenode(function(pos, node) + if minetest.get_item_group(node, "pane") then + update_pane(pos) + end + for i = 0, 3 do + local dir = minetest.facedir_to_dir(i) + update_pane(vector.add(pos, dir)) + end +end) -local half_boxes = { - {0, -0.5, -1/32, 0.5, 0.5, 1/32}, - {-1/32, -0.5, 0, 1/32, 0.5, 0.5}, - {-0.5, -0.5, -1/32, 0, 0.5, 1/32}, - {-1/32, -0.5, -0.5, 1/32, 0.5, 0} -} - -local full_boxes = { - {-0.5, -0.5, -1/32, 0.5, 0.5, 1/32}, - {-1/32, -0.5, -0.5, 1/32, 0.5, 0.5} -} - -local sb_half_boxes = { - {0, -0.5, -0.06, 0.5, 0.5, 0.06}, - {-0.06, -0.5, 0, 0.06, 0.5, 0.5}, - {-0.5, -0.5, -0.06, 0, 0.5, 0.06}, - {-0.06, -0.5, -0.5, 0.06, 0.5, 0} -} - -local sb_full_boxes = { - {-0.5, -0.5, -0.06, 0.5, 0.5, 0.06}, - {-0.06, -0.5, -0.5, 0.06, 0.5, 0.5} -} - -local pane_def_fields = { - drawtype = "airlike", - paramtype = "light", - is_ground_content = false, - sunlight_propagates = true, - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - air_equivalent = true, -} +minetest.register_on_dignode(function(pos) + for i = 0, 3 do + local dir = minetest.facedir_to_dir(i) + update_pane(vector.add(pos, dir)) + end +end) +xpanes = {} function xpanes.register_pane(name, def) for i = 1, 15 do - local need = {} - local cnt = 0 - for j = 1, 4 do - if rshift(i, j - 1) % 2 == 1 then - need[j] = true - cnt = cnt + 1 - end - end - local take = {} - local take2 = {} - if need[1] == true and need[3] == true then - need[1] = nil - need[3] = nil - table.insert(take, full_boxes[1]) - table.insert(take2, sb_full_boxes[1]) - end - if need[2] == true and need[4] == true then - need[2] = nil - need[4] = nil - table.insert(take, full_boxes[2]) - table.insert(take2, sb_full_boxes[2]) - end - for k in pairs(need) do - table.insert(take, half_boxes[k]) - table.insert(take2, sb_half_boxes[k]) - end - local texture = def.textures[1] - if cnt == 1 then - texture = def.textures[1].."^"..def.textures[2] - end - minetest.register_node(":xpanes:"..name.."_"..i, { - drawtype = "nodebox", - tiles = {def.textures[3], def.textures[3], texture}, - paramtype = "light", - groups = def.groups, - drop = "xpanes:"..name, - sounds = def.sounds, - node_box = { - type = "fixed", - fixed = take - }, - selection_box = { - type = "fixed", - fixed = take2 - } - }) + minetest.register_alias("xpanes:" .. name .. "_" .. i, "xpanes:" .. name .. "_flat") end - for k, v in pairs(pane_def_fields) do - def[k] = def[k] or v - end + local flatgroups = table.copy(def.groups) + flatgroups.pane = 1 + minetest.register_node(":xpanes:" .. name .. "_flat", { + description = def.description, + drawtype = "nodebox", + paramtype = "light", + is_ground_content = false, + sunlight_propagates = true, + inventory_image = def.inventory_image, + wield_image = def.wield_image, + paramtype2 = "facedir", + tiles = {def.textures[3], def.textures[3], def.textures[1]}, + groups = flatgroups, + drop = "xpanes:" .. name .. "_flat", + sounds = def.sounds, + node_box = { + type = "fixed", + fixed = {{-1/2, -1/2, -1/32, 1/2, 1/2, 1/32}}, + }, + selection_box = { + type = "fixed", + fixed = {{-1/2, -1/2, -1/32, 1/2, 1/2, 1/32}}, + }, + connect_sides = { "left", "right" }, + }) - def.on_construct = function(pos) - update_pane(pos, name) - end - - minetest.register_node(":xpanes:"..name, def) + local groups = table.copy(def.groups) + groups.pane = 1 + groups.not_in_creative_inventory = 1 + minetest.register_node(":xpanes:" .. name, { + drawtype = "nodebox", + paramtype = "light", + is_ground_content = false, + sunlight_propagates = true, + description = def.description, + tiles = {def.textures[3], def.textures[3], def.textures[1]}, + groups = groups, + drop = "xpanes:" .. name .. "_flat", + sounds = def.sounds, + node_box = { + type = "connected", + fixed = {{-1/32, -1/2, -1/32, 1/32, 1/2, 1/32}}, + connect_front = {{-1/32, -1/2, -1/2, 1/32, 1/2, -1/32}}, + connect_left = {{-1/2, -1/2, -1/32, -1/32, 1/2, 1/32}}, + connect_back = {{-1/32, -1/2, 1/32, 1/32, 1/2, 1/2}}, + connect_right = {{1/32, -1/2, -1/32, 1/2, 1/2, 1/32}}, + }, + connects_to = {"group:pane", "group:stone", "group:glass", "group:wood", "group:tree"}, + }) minetest.register_craft({ - output = "xpanes:"..name.." 16", + output = "xpanes:" .. name .. "_flat 16", recipe = def.recipe }) end @@ -161,7 +151,7 @@ xpanes.register_pane("pane", { inventory_image = "default_glass.png", wield_image = "default_glass.png", sounds = default.node_sound_glass_defaults(), - groups = {snappy=2, cracky=3, oddly_breakable_by_hand=3, pane=1}, + groups = {snappy=2, cracky=3, oddly_breakable_by_hand=3}, recipe = { {"default:glass", "default:glass", "default:glass"}, {"default:glass", "default:glass", "default:glass"} @@ -173,7 +163,7 @@ xpanes.register_pane("bar", { textures = {"xpanes_bar.png","xpanes_bar.png","xpanes_space.png"}, inventory_image = "xpanes_bar.png", wield_image = "xpanes_bar.png", - groups = {cracky=2, pane=1}, + groups = {cracky=2}, sounds = default.node_sound_stone_defaults(), recipe = { {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, @@ -181,3 +171,14 @@ xpanes.register_pane("bar", { } }) +minetest.register_lbm({ + name = "xpanes:gen2", + nodenames = {"group:pane"}, + action = function(pos, node) + update_pane(pos) + for i = 0, 3 do + local dir = minetest.facedir_to_dir(i) + update_pane(vector.add(pos, dir)) + end + end +}) diff --git a/mods/xpanes/license.txt b/mods/xpanes/license.txt index ef25be79..66c6fbfa 100644 --- a/mods/xpanes/license.txt +++ b/mods/xpanes/license.txt @@ -4,6 +4,7 @@ License of source code The MIT License (MIT) Copyright (C) 2014-2016 xyz Copyright (C) 2014-2016 BlockMen +Copyright (C) 2016 Auke Kok Copyright (C) 2014-2016 Various Minetest developers and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this From 0cbb516ae2a8ec7acf6aa968715f3c1aa32a8f5b Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Wed, 7 Sep 2016 10:22:57 +0100 Subject: [PATCH 103/196] Bones: Search for nearby 'air' for fallback bones placement When a player dies on ladders or rope then a space can not be found at or above player, so this change looks around player for a space to place bones. --- mods/bones/init.lua | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 2a54ee06..9542cab0 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -180,14 +180,14 @@ minetest.register_on_dieplayer(function(player) local pos = vector.round(player:getpos()) local player_name = player:get_player_name() - -- check if it's possible to place bones, if not go 1 higher + -- check if it's possible to place bones, if not find space near player if bones_mode == "bones" and not may_replace(pos, player) then - pos.y = pos.y + 1 - end - - -- still cannot place bones? change mode to 'drop' - if bones_mode == "bones" and not may_replace(pos, player) then - bones_mode = "drop" + local air = minetest.find_node_near(pos, 1, {"air"}) + if air and not minetest.is_protected(air, player_name) then + pos = air + else + bones_mode = "drop" + end end if bones_mode == "drop" then From b848e35ca59c9eea3dbe3df87cb14d6bfea93f9a Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Mon, 25 Jan 2016 13:45:25 +0100 Subject: [PATCH 104/196] Stairs: Big simplification of slabs combination Combine slabs if identical based on orientations using a simple lookup table if the nodes are identical. Otherwise relies on place_node() to place the node, which properly handles rotation compared to adjacent nodes already, and can orient based on look_dir as well. Initial slabs placed are oriented based on (1) the orientation of the pointed "face" (assumes nodes are cubic, of course), and uses the player look direction to orient the node n/e/w/s if the slab is horizontal or upside-down. If placed against a vertical face, the slab is placed against the face without rotation around the axis perpendicular to that vertical face. This allows upside down placement and vertical placement without screwdriver. If a slab is placed on top of an upside down slab, or below a normally placed slab, the rotation is inverted so that no "floating" slab is created. Largely based on kilbith's #807 PR. Slab combining and place_node() usage by sofar. Since this relies entirely on `on_place` mechanics, this fails to combine slabs into a plain node if the space *above* is occupied. This is unavoidable due to the fact that on_place() happens after the checks required to see if pointed_thing.above is empty or not. --- mods/stairs/init.lua | 122 ++++++++++++++++++------------------------- 1 file changed, 51 insertions(+), 71 deletions(-) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 78922e40..132c0e6c 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -110,6 +110,11 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, end +-- Slab facedir to placement 6d matching table +local slab_trans_dir = {[0] = 8, 0, 2, 1, 3, 4} +-- Slab facedir when placing initial slab against other surface +local slab_trans_dir_place = {[0] = 0, 20, 12, 16, 4, 8} + -- Register slabs. -- Node will be called stairs:slab_ @@ -129,86 +134,61 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, }, on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" then - return itemstack - end + local under = minetest.get_node(pointed_thing.under) + local wield_item = itemstack:get_name() - -- If it's being placed on an another similar one, replace it with - -- a full block - local slabpos = nil - local slabnode = nil - local p0 = pointed_thing.under - local p1 = pointed_thing.above - local n0 = minetest.get_node(p0) - local n1 = minetest.get_node(p1) - local param2 = 0 + if under and wield_item == under.name then + -- place slab using under node orientation + local dir = minetest.dir_to_facedir(vector.subtract( + pointed_thing.above, pointed_thing.under), true) - local n0_is_upside_down = (n0.name == "stairs:slab_" .. subname and - n0.param2 >= 20) + local p2 = under.param2 - if n0.name == "stairs:slab_" .. subname and not n0_is_upside_down and - p0.y + 1 == p1.y then - slabpos = p0 - slabnode = n0 - elseif n1.name == "stairs:slab_" .. subname then - slabpos = p1 - slabnode = n1 - end - if slabpos then - -- Remove the slab at slabpos - minetest.remove_node(slabpos) - -- Make a fake stack of a single item and try to place it - local fakestack = ItemStack(recipeitem) - fakestack:set_count(itemstack:get_count()) - - pointed_thing.above = slabpos - local success - fakestack, success = minetest.item_place(fakestack, placer, - pointed_thing) - -- If the item was taken from the fake stack, decrement original - if success then - itemstack:set_count(fakestack:get_count()) - -- Else put old node back - else - minetest.set_node(slabpos, slabnode) - end - return itemstack - end - - -- Upside down slabs - if p0.y - 1 == p1.y then - -- Turn into full block if pointing at a existing slab - if n0_is_upside_down then - -- Remove the slab at the position of the slab - minetest.remove_node(p0) - -- Make a fake stack of a single item and try to place it - local fakestack = ItemStack(recipeitem) - fakestack:set_count(itemstack:get_count()) - - pointed_thing.above = p0 - local success - fakestack, success = minetest.item_place(fakestack, placer, - pointed_thing) - -- If the item was taken from the fake stack, decrement original - if success then - itemstack:set_count(fakestack:get_count()) - -- Else put old node back - else - minetest.set_node(p0, n0) + -- combine two slabs if possible + if slab_trans_dir[math.floor(p2 / 4)] == dir then + if not recipeitem then + return itemstack + end + local player_name = placer:get_player_name() + if minetest.is_protected(pointed_thing.under, player_name) and not + minetest.check_player_privs(placer, "protection_bypass") then + minetest.record_protection_violation(pointed_thing.under, + player_name) + return + end + minetest.set_node(pointed_thing.under, {name = recipeitem, param2 = p2}) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() end return itemstack end - -- Place upside down slab - param2 = 20 - end + -- Placing a slab on an upside down slab should make it right-side up. + if p2 >= 20 and dir == 8 then + p2 = p2 - 20 + -- same for the opposite case: slab below normal slab + elseif p2 <= 3 and dir == 4 then + p2 = p2 + 20 + end - -- If pointing at the side of a upside down slab - if n0_is_upside_down and p0.y + 1 ~= p1.y then - param2 = 20 - end + -- else attempt to place node with proper param2 + minetest.item_place_node(ItemStack(wield_item), placer, pointed_thing, p2) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + else + -- place slab using look direction of player + local dir = minetest.dir_to_wallmounted(vector.subtract( + pointed_thing.above, pointed_thing.under), true) - return minetest.item_place(itemstack, placer, pointed_thing, param2) + local rot = slab_trans_dir_place[dir] + if rot == 0 or rot == 20 then + rot = rot + minetest.dir_to_facedir(placer:get_look_dir()) + end + + return minetest.item_place(itemstack, placer, pointed_thing, rot) + end end, }) From 34c768d394276e78d657a22fac9bf127f95a7152 Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 13 Sep 2016 03:14:22 +0100 Subject: [PATCH 105/196] Default: New snow textures by Gambit From PixelBOX2 texture pack. Brightness increased for 'snow' and 'snow side'. --- mods/default/README.txt | 6 +++--- mods/default/textures/default_snow.png | Bin 164 -> 3310 bytes mods/default/textures/default_snow_side.png | Bin 376 -> 3445 bytes mods/default/textures/default_snowball.png | Bin 183 -> 3102 bytes 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/default/README.txt b/mods/default/README.txt index 593bc7a6..382b2f76 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -65,7 +65,6 @@ PilzAdam (CC BY-SA 3.0): default_obsidian_glass.png default_obsidian_shard.png default_mineral_gold.png - default_snowball.png jojoa1997 (CC BY-SA 3.0): default_obsidian.png @@ -74,7 +73,6 @@ InfinityProject (CC BY-SA 3.0): default_mineral_diamond.png Splizard (CC BY-SA 3.0): - default_snow.png default_pine_sapling.png Zeg9 (CC BY-SA 3.0): @@ -112,7 +110,6 @@ paramat (CC BY-SA 3.0): default_dry_grass_*.png default_grass.png default_grass_side.png - default_snow_side.png default_mese_block.png brunob.santos (CC BY-SA 4.0): @@ -170,6 +167,9 @@ Gambit (CC BY-SA 3.0): default_ladder_steel.png default_sign_wall_wood.png default_flint.png + default_snow.png + default_snow_side.png + default_snowball.png asl97 (CC BY-SA 3.0): default_ice.png diff --git a/mods/default/textures/default_snow.png b/mods/default/textures/default_snow.png index 2a2439fb9ebddbb7273a05fbcda2cf4de278626b..27ce5076b6f57f4cfcc33e12d9ac5b491719c500 100644 GIT binary patch literal 3310 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 yHr+M`K{h?XP6jrf59&ghTmgWD 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 b_xJn*bZAbK0NA6Q00000NkvXXu0mjfwF+x! delta 307 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 s06+jSQkt0n0*KV!Z delta 167 zcmbOyv7K>(L_G^L0|Ud`yN`l^luCe4h%1m@ymR0G|NqzTKm7C8|99{Izk2=u+4KK@ z|Nj5>?f<9G{~td7pIPs*0jQ3#B*-tA!Qt7BG$6;()5S4_<9hM|eil|mlg*Rb7-u9d zxnd;gVyu-}p(n~ Date: Thu, 22 Sep 2016 13:46:12 +0100 Subject: [PATCH 106/196] Doors: Trim open fencegate collison box again The collision box still extended into a neighbouring empty node, causing falling node objects to collide but not transform back into normal nodes. Completes the fix started in a previous similar commit. --- 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 ed7fbb34..73a73a13 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -696,7 +696,7 @@ function doors.register_fencegate(name, def) fence_open.collision_box = { type = "fixed", fixed = {{-1/2, -1/2, -1/4, -3/8, 1/2, 1/4}, - {-5/8, -3/8, -1/2, -3/8, 3/8, 0}}, + {-1/2, -3/8, -1/2, -3/8, 3/8, 0}}, } minetest.register_node(":" .. name .. "_closed", fence_closed) From 0f6e75bcb5d642f22ad5697891468001a07b83e5 Mon Sep 17 00:00:00 2001 From: paramat Date: Fri, 23 Sep 2016 17:55:16 +0100 Subject: [PATCH 107/196] Add settingtypes.txt for Minetest Game Commit originally by PilzAdam. Settings appear in advanced settings menu. --- settingtypes.txt | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 settingtypes.txt diff --git a/settingtypes.txt b/settingtypes.txt new file mode 100644 index 00000000..2f91a7b6 --- /dev/null +++ b/settingtypes.txt @@ -0,0 +1,42 @@ +# This file contains settings of minetest_game that can be changed in +# minetest.conf + +# In creative mode players are able to dig all kind of blocks nearly +# instantly, and have access to unlimited resources. +# Some of the functionality is only available if this setting is present +# at startup. +creative_mode (Creative mode) bool false + +# Flammable nodes will be ignited by nearby igniters. Spreading fire may +# cause severe destruction. +# Spreading fire nodes will disappear when fire is disabled, but +# 'permanent_flame' nodes are unaffected. +enable_fire (Fire) bool true + +# If enabled, steel tools, torches and cobblestone will be given to new +# players. +give_initial_stuff (Give initial items) bool false + +# If enabled, players respawn at the bed they last lay on instead of normal +# spawn. +# This setting is only read at startup. +enable_bed_respawn (Respawn at bed) bool true + +# If enabled, the night can be skipped if more than half of the players are +# in beds. +enable_bed_night_skip (Skip night when sleeping) bool true + +# When TNT explodes, it destroys nearby nodes and damages nearby players. +# This setting is disabled by default on servers. +enable_tnt (TNT) bool true + +# The radius in which nodes will be destroyed by a TNT explosion. +tnt_radius (TNT radius) int 3 0 + +# The time in seconds after which the bones of a dead player can be looted +# by everyone. +# Setting this to 0 will disable sharing of bones completely. +share_bones_time (Bone share time) int 1200 0 + +# Replaces old stairs with new ones. Only required for older worlds. +enable_stairs_replace_abm (Replace old stairs) bool false From 0ad3306c79077f53269a3025e3a044814b97d09d Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Tue, 27 Sep 2016 11:12:04 +0100 Subject: [PATCH 108/196] Farming: Remove unnecessary overriding of groups This removes the group overrides for dirt, dirt_with_grass and dirt_with_dry_grass which aren't needed and interfere with new grass spreading changes: https://github.com/minetest/minetest_game/pull/1286 --- mods/farming/nodes.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua index 9fa66c30..c75e1e50 100644 --- a/mods/farming/nodes.lua +++ b/mods/farming/nodes.lua @@ -1,5 +1,4 @@ minetest.override_item("default:dirt", { - groups = {crumbly=3, soil=1}, soil = { base = "default:dirt", dry = "farming:soil", @@ -8,7 +7,6 @@ minetest.override_item("default:dirt", { }) minetest.override_item("default:dirt_with_grass", { - groups = {crumbly=3, soil=1}, soil = { base = "default:dirt_with_grass", dry = "farming:soil", @@ -17,7 +15,6 @@ minetest.override_item("default:dirt_with_grass", { }) minetest.override_item("default:dirt_with_dry_grass", { - groups = {crumbly=3, soil=1}, soil = { base = "default:dirt_with_dry_grass", dry = "farming:soil", From 36a78c87d71b4513c03e3400e916d787bd3c5dce Mon Sep 17 00:00:00 2001 From: DS-Minetest Date: Wed, 28 Sep 2016 20:57:17 +0200 Subject: [PATCH 109/196] Default/player.lua: Remove outdated comment --- mods/default/player.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/default/player.lua b/mods/default/player.lua index e4fb2adf..8fb0aca8 100644 --- a/mods/default/player.lua +++ b/mods/default/player.lua @@ -25,7 +25,6 @@ default.player_register_model("character.b3d", { walk = { x=168, y=187, }, mine = { x=189, y=198, }, walk_mine = { x=200, y=219, }, - -- Extra animations (not currently used by the game). sit = { x= 81, y=160, }, }, }) From 5e4a6e8ac68b92c7394b80bb67839b71b4a4a00b Mon Sep 17 00:00:00 2001 From: paramat Date: Wed, 28 Sep 2016 22:09:50 +0100 Subject: [PATCH 110/196] Doors: Remove ability to rotate doors with screwdrivers Rotating doors with screwdrivers causes too many issues to be worth it. --- 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 73a73a13..7a8006c6 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -366,7 +366,7 @@ function doors.register(name, def) minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) nodeupdate({x = pos.x, y = pos.y + 1, z = pos.z}) end - def.on_rotate = screwdriver and screwdriver.rotate_simple or false + def.on_rotate = false if def.protected then def.can_dig = can_dig_door From c0de5646d230b209af32c60c3e5d1256855b2767 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 22 Sep 2016 11:56:15 +0100 Subject: [PATCH 111/196] Default: Generalise, optimise and simplify grass spread function Credit to tenplus1 for the suggestion to generalise for mod use. Mods can add mod nodes to 'group:spreading_dirt_type' enabling the function to work with mod nodes. Add some nodes to this group. Removing 'dirt_with_grass' etc. from 'neighbors' stops the ABM action running everywhere and constantly, on the dirt nodes immediately below the surface nodes. Now the action only runs in the rare case of a dirt node with neighbouring air, grass decorations or snow. Remove check for air above to allow grass to spread under light- transmitting nodes such as fences, walls, plants. This causes spread under slabs, stairs and glass, when near air, but seems worth it. Remove unnecessary check for nil node. --- mods/default/functions.lua | 39 ++++++++++++-------------------------- mods/default/nodes.lua | 6 +++--- 2 files changed, 15 insertions(+), 30 deletions(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 3c8a871a..901dd934 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -348,9 +348,7 @@ minetest.register_abm({ label = "Grass spread", nodenames = {"default:dirt"}, neighbors = { - "default:dirt_with_grass", - "default:dirt_with_dry_grass", - "default:dirt_with_snow", + "air", "group:grass", "group:dry_grass", "default:snow", @@ -359,36 +357,27 @@ minetest.register_abm({ chance = 67, catch_up = false, action = function(pos, node) - -- Most likely case, half the time it's too dark for this. + -- Check for darkness: night, shadow or under a light-blocking node + -- Returns if ignore above local above = {x = pos.x, y = pos.y + 1, z = pos.z} if (minetest.get_node_light(above) or 0) < 13 then return end - -- Look for likely neighbors. - local p2 = minetest.find_node_near(pos, 1, {"default:dirt_with_grass", - "default:dirt_with_dry_grass", "default:dirt_with_snow"}) + -- Look for spreading dirt-type neighbours + local p2 = minetest.find_node_near(pos, 1, "group:spreading_dirt_type") if p2 then - -- But the node needs to be under air in this case. - local n2 = minetest.get_node(above) - if n2 and n2.name == "air" then - local n3 = minetest.get_node(p2) - minetest.set_node(pos, {name = n3.name}) - return - end - end - - -- Anything on top? - local n2 = minetest.get_node(above) - if not n2 then + local n3 = minetest.get_node(p2) + minetest.set_node(pos, {name = n3.name}) return end - local name = n2.name - -- Snow check is cheapest, so comes first. + -- Else, any seeding nodes on top? + local name = minetest.get_node(above).name + -- Snow check is cheapest, so comes first if name == "default:snow" then minetest.set_node(pos, {name = "default:dirt_with_snow"}) - -- Most likely case first. + -- Most likely case first elseif minetest.get_item_group(name, "grass") ~= 0 then minetest.set_node(pos, {name = "default:dirt_with_grass"}) elseif minetest.get_item_group(name, "dry_grass") ~= 0 then @@ -404,11 +393,7 @@ minetest.register_abm({ minetest.register_abm({ label = "Grass covered", - nodenames = { - "default:dirt_with_grass", - "default:dirt_with_dry_grass", - "default:dirt_with_snow", - }, + nodenames = {"group:spreading_dirt_type"}, interval = 8, chance = 50, catch_up = false, diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 79aea5bb..c5d05232 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -332,7 +332,7 @@ minetest.register_node("default:dirt_with_grass", { tiles = {"default_grass.png", "default_dirt.png", {name = "default_dirt.png^default_grass_side.png", tileable_vertical = false}}, - groups = {crumbly = 3, soil = 1}, + groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, drop = 'default:dirt', sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, @@ -357,7 +357,7 @@ minetest.register_node("default:dirt_with_dry_grass", { "default_dirt.png", {name = "default_dirt.png^default_dry_grass_side.png", tileable_vertical = false}}, - groups = {crumbly = 3, soil = 1}, + groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, drop = 'default:dirt', sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.4}, @@ -369,7 +369,7 @@ minetest.register_node("default:dirt_with_snow", { tiles = {"default_snow.png", "default_dirt.png", {name = "default_dirt.png^default_snow_side.png", tileable_vertical = false}}, - groups = {crumbly = 3, soil = 1}, + groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, drop = 'default:dirt', sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_snow_footstep", gain = 0.15}, From 67fc2247fc8c846ac43775cc35862fa7b819398e Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 4 Oct 2016 03:45:49 +0100 Subject: [PATCH 112/196] Default: Add 'silver sand' for cold desert biome --- mods/default/README.txt | 1 + mods/default/nodes.lua | 8 ++++++++ mods/default/textures/default_silver_sand.png | Bin 0 -> 527 bytes 3 files changed, 9 insertions(+) create mode 100644 mods/default/textures/default_silver_sand.png diff --git a/mods/default/README.txt b/mods/default/README.txt index 382b2f76..4d7744f7 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -111,6 +111,7 @@ paramat (CC BY-SA 3.0): default_grass.png default_grass_side.png default_mese_block.png + default_silver_sand.png brunob.santos (CC BY-SA 4.0): default_desert_cobble.png diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index c5d05232..b6ae52cb 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -47,6 +47,7 @@ default:dirt_with_snow default:sand default:desert_sand +default:silver_sand default:gravel @@ -390,6 +391,13 @@ minetest.register_node("default:desert_sand", { sounds = default.node_sound_sand_defaults(), }) +minetest.register_node("default:silver_sand", { + description = "Silver Sand", + tiles = {"default_silver_sand.png"}, + groups = {crumbly = 3, falling_node = 1, sand = 1}, + sounds = default.node_sound_sand_defaults(), +}) + minetest.register_node("default:gravel", { description = "Gravel", diff --git a/mods/default/textures/default_silver_sand.png b/mods/default/textures/default_silver_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..d381e883389fe7c688129bbfd696d2d682e07019 GIT binary patch literal 527 zcmV+q0`UEbP)>msYmJ%3>3+Wh z=(-L75tUK^7-LE)U}k0}B9Ri&zVChCACE_^b!#nzV6D|!uj@)g{M6N20py&Wb4n>8 zAtL8o2tjzf_W;mZ6G}-OLb%;-VnIYHB|)vV_I>}=z>{@Z768LAwAQrNLMukjxl+m( zl9b@RC!*8o1VAigtjsB;cN|8nMpPm(8UN1~U z0HiXh&p9XFF~)hGiO5o~+c literal 0 HcmV?d00001 From 32f7051eb85bfe54ac21475be6366db7aff8743d Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 4 Oct 2016 19:18:45 +0200 Subject: [PATCH 113/196] Fix sapling placement handling of on_rightclick and CONTENT_IGNORE --- mods/default/trees.lua | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/mods/default/trees.lua b/mods/default/trees.lua index 5cd7e156..0b95742c 100644 --- a/mods/default/trees.lua +++ b/mods/default/trees.lua @@ -435,12 +435,17 @@ function default.sapling_on_place(itemstack, placer, pointed_thing, sapling_name, minp_relative, maxp_relative, interval) -- Position of sapling local pos = pointed_thing.under - local node = minetest.get_node(pos) - local pdef = minetest.registered_nodes[node.name] + local node = minetest.get_node_or_nil(pos) + local pdef = node and minetest.registered_nodes[node.name] + + if pdef and pdef.on_rightclick and not placer:get_player_control().sneak then + return pdef.on_rightclick(pos, node, placer, itemstack, pointed_thing) + end + if not pdef or not pdef.buildable_to then pos = pointed_thing.above - node = minetest.get_node(pos) - pdef = minetest.registered_nodes[node.name] + node = minetest.get_node_or_nil(pos) + pdef = node and minetest.registered_nodes[node.name] if not pdef or not pdef.buildable_to then return itemstack end From 1799754a8fc4757386eee40358228bc639ea8ce2 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 4 Oct 2016 19:49:06 +0200 Subject: [PATCH 114/196] Default: Prevent possible nil-crash on invalid book metadata --- mods/default/craftitems.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index d821af06..59539f37 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -105,7 +105,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) elseif fields.book_next or fields.book_prev then local data = minetest.deserialize(stack:get_metadata()) - if not data.page then return end + if not data or not data.page then + return + end if fields.book_next then data.page = data.page + 1 From 1906ab84f54ed0a171505d5f7295751e88e819ce Mon Sep 17 00:00:00 2001 From: paramat Date: Wed, 5 Oct 2016 21:07:05 +0100 Subject: [PATCH 115/196] Default/functions: Tune speed of grass spread ABM Through testing the chance is changed to 50 such that grass spread speed matches that of the previous (0.4.13) ABM version. --- 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 901dd934..7770feb0 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -354,7 +354,7 @@ minetest.register_abm({ "default:snow", }, interval = 6, - chance = 67, + chance = 50, catch_up = false, action = function(pos, node) -- Check for darkness: night, shadow or under a light-blocking node From 53179b8d1035399d51502e461612a71c6f994bb5 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sat, 8 Oct 2016 18:02:14 +0100 Subject: [PATCH 116/196] Creative: Use element instead of parameter to disable close on enter --- 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 3affc3d9..24cd673b 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 6fdfd2554c23535530a5750d3b362e6399b00b55 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Wed, 5 Oct 2016 16:15:49 +0100 Subject: [PATCH 117/196] Tnt: Various optimisations Pass nodename to tnt.burn function where possible to reduce use of 'get_node'. Change 'ipairs' to 'pairs'. Use 'nodeupdate_single(pos)' instead of 'nodeupdate(pos)' to avoid every node triggering recursion, the loop itself takes the place of recursion and works upwards through horizontal planes as required. --- .luacheckrc | 2 +- game_api.txt | 4 ++-- mods/tnt/init.lua | 29 ++++++++++++++++------------- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/.luacheckrc b/.luacheckrc index f087d303..3a4faccb 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -5,7 +5,7 @@ read_globals = { "DIR_DELIM", "minetest", "core", "dump", - "vector", "nodeupdate", + "vector", "nodeupdate", "nodeupdate_single", "VoxelManip", "VoxelArea", "PseudoRandom", "ItemStack", } diff --git a/game_api.txt b/game_api.txt index 9e8d4963..a148136d 100644 --- a/game_api.txt +++ b/game_api.txt @@ -290,9 +290,9 @@ TNT API * `position` The center of explosion. * `definition` The TNT definion as passed to `tnt.register` -`tnt.burn(position)` +`tnt.burn(position, [nodename])` -^ Ignite TNT at position +^ Ignite TNT at position, nodename isn't required unless already known. To make dropping items from node inventories easier, you can use the diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 1e6e29d5..1138e1c2 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -99,7 +99,7 @@ local function destroy(drops, npos, cid, c_air, c_fire, on_blast_queue, ignore_p return c_fire else local node_drops = minetest.get_node_drops(def.name, "") - for _, item in ipairs(node_drops) do + for _, item in pairs(node_drops) do add_drop(drops, item) end return c_air @@ -181,7 +181,7 @@ local function entity_physics(pos, radius, drops) }, nil) end end - for _, item in ipairs(entity_drops) do + for _, item in pairs(entity_drops) do add_drop(drops, item) end end @@ -248,8 +248,8 @@ local function add_effects(pos, radius, drops) }) end -function tnt.burn(pos) - local name = minetest.get_node(pos).name +function tnt.burn(pos, nodename) + local name = nodename or minetest.get_node(pos).name local group = minetest.get_item_group(name, "tnt") if group > 0 then minetest.sound_play("tnt_ignite", {pos = pos}) @@ -333,24 +333,25 @@ local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast) vm:update_liquids() -- call nodeupdate for everything within 1.5x blast radius + for y = -radius * 1.5, radius * 1.5 do for z = -radius * 1.5, radius * 1.5 do for x = -radius * 1.5, radius * 1.5 do - for y = -radius * 1.5, radius * 1.5 do - local s = vector.add(pos, {x = x, y = y, z = z}) - local r = vector.distance(pos, s) + local rad = {x = x, y = y, z = z} + local s = vector.add(pos, rad) + local r = vector.length(rad) if r / radius < 1.4 then - nodeupdate(s) + nodeupdate_single(s) end end end end - for _, queued_data in ipairs(on_blast_queue) do + for _, queued_data in pairs(on_blast_queue) do local dist = math.max(1, vector.distance(queued_data.pos, pos)) local intensity = (radius * radius) / (dist * dist) local node_drops = queued_data.on_blast(queued_data.pos, intensity) if node_drops then - for _, item in ipairs(node_drops) do + for _, item in pairs(node_drops) do add_drop(drops, item) end end @@ -408,11 +409,11 @@ minetest.register_node("tnt:gunpowder", { on_punch = function(pos, node, puncher) if puncher:get_wielded_item():get_name() == "default:torch" then - tnt.burn(pos) + tnt.burn(pos, node.name) end end, on_blast = function(pos, intensity) - tnt.burn(pos) + tnt.burn(pos, "tnt:gunpowder") end, }) @@ -511,7 +512,9 @@ if enable_tnt then neighbors = {"fire:basic_flame", "default:lava_source", "default:lava_flowing"}, interval = 4, chance = 1, - action = tnt.burn, + action = function(pos, node) + tnt.burn(pos, node.name) + end, }) end From 78311a27a1f9245e7cdb377eb04b724871105230 Mon Sep 17 00:00:00 2001 From: bas080 Date: Sat, 7 May 2016 11:50:59 +0200 Subject: [PATCH 118/196] Store registered plant on namespace Handy for when modders want to use these definitions to extend or add to the mod --- game_api.txt | 3 +++ mods/farming/api.lua | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/game_api.txt b/game_api.txt index a148136d..a20ecd4f 100644 --- a/game_api.txt +++ b/game_api.txt @@ -183,6 +183,9 @@ The farming API allows you to easily register plants and hoes. `farming.register_plant(name, Plant definition)` * Register a new growing plant, see [#Plant definition] +`farming.registered_plants[name] = definition` + * Table of registered plants, indexed by plant name + ### Hoe Definition diff --git a/mods/farming/api.lua b/mods/farming/api.lua index 901f7245..71c5a67c 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -1,6 +1,8 @@ -- Wear out hoes, place soil -- TODO Ignore group:flower +farming.registered_plants = {} + farming.hoe_on_use = function(itemstack, user, pointed_thing, uses) local pt = pointed_thing -- check if pointing at a node @@ -263,6 +265,8 @@ farming.register_plant = function(name, def) def.fertility = {} end + farming.registered_plants[pname] = def + -- Register seed local lbm_nodes = {mname .. ":seed_" .. pname} local g = {seed = 1, snappy = 3, attached_node = 1} From 7b30c26a456f31f40e55b0f18c4f114288633a0d Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 9 Oct 2016 23:33:07 +0100 Subject: [PATCH 119/196] Bucket: Add optional 'force-renew' bool to registration River water needs to be 'liquid_renewable = false' to avoid a mess caused by spreading of sources, however picking it up with a bucket then creates a hole in the river. Allow a 'force-renew' of the source node if it has a source neighbour. --- game_api.txt | 5 ++++- mods/bucket/init.lua | 20 +++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/game_api.txt b/game_api.txt index a20ecd4f..f758499f 100644 --- a/game_api.txt +++ b/game_api.txt @@ -26,7 +26,10 @@ The bucket API allows registering new types of buckets for non-default liquids. "bucket:bucket_lava", -- name of the new bucket item (or nil if liquid is not takeable) "bucket_lava.png", -- texture of the new bucket item (ignored if itemname == nil) "Lava Bucket", -- text description of the bucket item - {lava_bucket = 1} -- groups of the bucket item, OPTIONAL + {lava_bucket = 1}, -- groups of the bucket item, OPTIONAL + false -- force-renew, OPTIONAL. Force the liquid source to renew if it has + -- a source neighbour, even if defined as 'liquid_renewable = false'. + -- Needed to avoid creating holes in sloping rivers. ) Beds API diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index a7cb0f27..638ce1f4 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -36,12 +36,17 @@ end -- inventory_image = texture of the new bucket item (ignored if itemname == nil) -- name = text description of the bucket item -- groups = (optional) groups of the bucket item, for example {water_bucket = 1} +-- force_renew = (optional) bool. Force the liquid source to renew if it has a +-- source neighbour, even if defined as 'liquid_renewable = false'. +-- Needed to avoid creating holes in sloping rivers. -- This function can be called from any mod (that depends on bucket). -function bucket.register_liquid(source, flowing, itemname, inventory_image, name, groups) +function bucket.register_liquid(source, flowing, itemname, inventory_image, name, + groups, force_renew) bucket.liquids[source] = { source = source, flowing = flowing, itemname = itemname, + force_renew = force_renew, } bucket.liquids[flowing] = bucket.liquids[source] @@ -149,7 +154,15 @@ minetest.register_craftitem("bucket:bucket_empty", { end - minetest.add_node(pointed_thing.under, {name="air"}) + -- force_renew requires a source neighbour + local source_neighbor = false + if liquiddef.force_renew then + source_neighbor = + minetest.find_node_near(pointed_thing.under, 1, liquiddef.source) + end + if not (source_neighbor and liquiddef.force_renew) then + minetest.add_node(pointed_thing.under, {name = "air"}) + end return ItemStack(giving_back) end @@ -171,7 +184,8 @@ bucket.register_liquid( "bucket:bucket_river_water", "bucket_river_water.png", "River Water Bucket", - {water_bucket = 1} + {water_bucket = 1}, + true ) bucket.register_liquid( From 3d26b33e5bad60ebb4fe459e011abefe130dbc3b Mon Sep 17 00:00:00 2001 From: paramat Date: Wed, 12 Oct 2016 01:49:31 +0100 Subject: [PATCH 120/196] Default: Add coral nodes and death ABM Original code by Sofar. Textures by Pithydon. Exposure to air converts live coral to coral skeleton. Live corals drop coral skeleton. --- mods/default/README.txt | 5 +++ mods/default/functions.lua | 16 +++++++ mods/default/nodes.lua | 40 +++++++++++++++++- mods/default/textures/default_coral_brown.png | Bin 0 -> 401 bytes .../default/textures/default_coral_orange.png | Bin 0 -> 358 bytes .../textures/default_coral_skeleton.png | Bin 0 -> 256 bytes 6 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 mods/default/textures/default_coral_brown.png create mode 100644 mods/default/textures/default_coral_orange.png create mode 100644 mods/default/textures/default_coral_skeleton.png diff --git a/mods/default/README.txt b/mods/default/README.txt index 4d7744f7..bf7481b6 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -178,6 +178,11 @@ asl97 (CC BY-SA 3.0): KevDoy (CC BY-SA 3.0) heart.png +Pithydon (CC BY-SA 3.0) + default_coral_brown.png + default_coral_orange.png + default_coral_skeleton.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/ diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 7770feb0..0e0ab843 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -471,3 +471,19 @@ function default.intersects_protection(minp, maxp, player_name, interval) return false end + + +-- +-- Coral death near air +-- + +minetest.register_abm({ + nodenames = {"default:coral_brown", "default:coral_orange"}, + neighbors = {"air"}, + interval = 17, + chance = 5, + catch_up = false, + action = function(pos, node) + minetest.set_node(pos, {name = "default:coral_skeleton"}) + end, +}) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index b6ae52cb..b575704a 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -111,8 +111,8 @@ default:mese default:stone_with_diamond default:diamondblock -Plantlife (non-cubic) ---------------------- +Plantlife +--------- default:cactus default:papyrus @@ -131,6 +131,13 @@ default:dry_grass_3 default:dry_grass_4 default:dry_grass_5 +Corals +------ + +default:coral_brown +default:coral_orange +default:coral_skeleton + Liquids ------- (1. Source 2. Flowing) @@ -1208,6 +1215,35 @@ for i = 2, 5 do }) end + +-- +-- Corals +-- + +minetest.register_node("default:coral_brown", { + description = "Brown Coral", + tiles = {"default_coral_brown.png"}, + groups = {cracky = 3}, + drop = "default:coral_skeleton", + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:coral_orange", { + description = "Orange Coral", + tiles = {"default_coral_orange.png"}, + groups = {cracky = 3}, + drop = "default:coral_skeleton", + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("default:coral_skeleton", { + description = "Coral Skeleton", + tiles = {"default_coral_skeleton.png"}, + groups = {cracky = 3}, + sounds = default.node_sound_stone_defaults(), +}) + + -- -- Liquids -- diff --git a/mods/default/textures/default_coral_brown.png b/mods/default/textures/default_coral_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..8a775fe06cc4c1bc49a787db0525df58262c6241 GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}LV!<*tB0YQkFiRKg=U1gR+OE7 zvb}DSy-|XbUb?ekj)z&1hk1#gO_i@jnZJ2MnBC&m&}E%*8@t2T^u%nNl)Pz5^1f-& zduL?qoRze5R_6Yh$p;r^9bb@hVrj;eC0S=ymfYM}ww<39WI1PnM`SSr1Gg{;GcwGY zBLNg-FY)wsWq-gXBA~$a_|B^~pwJOd7sn8Z%e?*3la46x9FaLLP_59yI_-PQ@B2kR z!opXw2G-tS<4c;Ccu6;4;q}%jQ>xakh;W#hagcBQf@uGwM$0-UAN8ckLP}1RvocCf zAMqBxR`0PQ?UPo*-X_(+geP|A0&8~_F3FNfkesPtvHtMpHZ}2QQ#{QVrpDhB<2z#aJT{nLNnv-) swEZt`yzW$fzoSTO@pI9A$J@Rzdwt-2>UP-04d@>RPgg&ebxsLQ09q}YHvj+t literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_coral_orange.png b/mods/default/textures/default_coral_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..cefac6273c13f54ce5d40c118169bda4496ff562 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!M}SX=Ylav@u`ENIEJK|lL!UD9 zG*yO$Dhv~~7}n@AT=Eh<<0o?0SM;lw*wbL%JE2l<1I4}sazBpX{TC$sHd^w36vxjP zxxcYuzfvWX=iOQjG?TNyBeIx*fm;}a85w5HkpK#^mw5WRvOi!G5m08)_nhJc6x!(N z;us=vS+vhH>4*Wxfekm4?l`1r{P=I5TXn@%Xv2N=jXUkN7-bLidgM-!HYzf(QMmdKI;Vst0Mz?~ A4*&oF literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_coral_skeleton.png b/mods/default/textures/default_coral_skeleton.png new file mode 100644 index 0000000000000000000000000000000000000000..fa48f1512fcb84622b7834ffd9bc5f5ec6065394 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUy>tD8EUp_qCJkw?tPz`5+M`SSr1Gg{;GcwGYBLNg-FY)wsWq-gXB4EX@Jp0Kd zpis4^i(?4Kb>5zXyoVJ8Sj<-*= Date: Sun, 16 Oct 2016 01:42:24 +0100 Subject: [PATCH 121/196] Default: Fix 'leaves simple', 'jungleleaves simple' textures 'jungleleaves simple' had completely different leaf colours to 'jungleleaves', now matched. 'leaves simple' had dark green instead of black colour for transparent pixels (the 'leaves' texture uses black), normally these pixels would not be rendered as opaque colours but bush nodes now use this texture and will be rendering it as opaque. The dark green pixels resulted in a texture lacking in contrast. --- .../textures/default_jungleleaves_simple.png | Bin 430 -> 417 bytes mods/default/textures/default_leaves_simple.png | Bin 817 -> 838 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/default/textures/default_jungleleaves_simple.png b/mods/default/textures/default_jungleleaves_simple.png index 689195f75a82b7376d63f04d6f35e7ca2aaaf1ff..7165100c7ee1b526628a81fa387f100fb30a601d 100644 GIT binary patch delta 384 zcmV-`0e}9k1EB+uDu4d~{{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G` z2jB`10yz&={QZys00AyZL_t(I%XL#bZiFxpeYU^_!3rXxT=@vT|1oj|v}LpwD+7fo zCdKAOgA=APvS<8$#sI*_?OpIwkNea3p%dp@lzhPX_O#cJ4u5IhkeA&6KojC50I;Tl z$Ng!bikE~qNt!pXFE6{{oMm%AI{2ZJ5GTpYZc08-^6`rV0NeurUTD`;kme0*DyWM{ zY#zhg>3mHEmO8ltfFC*m0Mg_zFVbc6vYT4F9#~U>^X-YDmT5wqWd8gzL?#Pr)@Jfd zdt=kQ{V|VCdU-&vnu+m4Ct4rBiAtm^Gn-l;-S_B(!!)%v)A<%nt@XbYuFM4Ricvq7 zs}u;*j}H3rSq{^{E2P>)0yLydV`>9EUeOZB`BpT5)qf)YG9uN{hB%3iG%vfc`dw>! ebt*MG8vYG9+aavYEu4b@00006gD0(6jvVr00BEmL_t(I%XL#LZp1JUeYPT5A(g@^6N7-9BBY>q$%%TGfF(VJ zfkBA1EK*2hGz*fqopm=uY}qsOK4TjI=)XP%XQbQR_`Z`iIDhO*K^xr5nI9a|ydkI6 z06;TNK>#4ff^@qZs9=+E3X7o0UA=KF|~mn$7l)EMkgA;zWl`VmyvEg s+Hne^N1D@WtbW&8e?66&9Swf~SmPd%2A_3R00000Ne4wvM6N<$g2LykIRF3v diff --git a/mods/default/textures/default_leaves_simple.png b/mods/default/textures/default_leaves_simple.png index e492a32ee1600072ea2c5886785ba2a4f329d614..eb60f9f5c232c34d51350d77fab0d323339e4695 100644 GIT binary patch delta 809 zcmV+^1J?Yp2F3=EDu4d~{{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G` z2jB`10|yEGm?`f700PrVL_t(I%Vm za+AyU7O8p3JOQdywN;gUh5Np`je`S z!wEBUw`l!xEcK0=O`QZM%b{}_z5Tw_H)@s{OMa?Aco;GW&IKU1y|ZQuxg35Q#-j<> zqcel@Ea`d1vzMFJe{+dW4EZS-1n087vu4juHR|kCqJ>J)Y*GrGHs{zG88&lC7~k{plMk(?ZmV zkgXr@+tEPdJQ60~}<^~0u3 zla%@ITz}qoPGxvYpJiY#x}?Z*!>`Pn>J4*=J5 zdG>PC{`2#I;ZTsJ^{So36Rfp(6&F#8@_dQ@U*{NYP$h+1E}}mes*g&X?0uwEa~TH- zsgt1IHUsJV11Wk%ymAo{;X3u}t$9?U(1{^v_kZO0_X|{6h@%w$pes(62MNX+N;Q|sWybNZz5vL=a>Z7^FEL3C0DG@GvanpSPT3*&v-gEQ zck!waQ72;k=^W~sJiy@ZF#v`6JUY~Dyl8x(uf2ODpPExs3sVro+0mFnu|W0VqE(KA nQX-0?Tlh?0el`!lr>*@D4S0=414=Py00000NkvXXu0mjfzv+oY delta 788 zcmV+v1MB?82C)W^Dt`a~0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G` z2j2$>4Gsn;5bI3<00O>AL_t(I%Vm<=ZWCt|g}>SVcn&@d4t8S#hEPG03rj>Ty{jUT z7w9wht}4B#Xw{OI5)e^E4%nVkW;`?ho?f_#kk}8f)?RCU&VP7k%jwU0TE=UJ<35YG zE9pmltxbh#T&&x$UR2VL`pU4S)Afko#HdvPkiDa^?mit5L_S5n=H_gpv|&pfH_VTx z3ScV*K&{H&(O5_OBbCc@%e%i*?o3^5Z0XN>n#Gw&CD_;!J&CBAW+NI~($kdD{z%{b zoUnBl#Hm}#^M5sYBB(06PX_=PW2nkXmM2U3_q4#f>mnkzAF3+ve@~I>Qv(6SZ(>Ye zc>T*22QMaSt;O|ReehkR*@s+`vyA(PAzt9IJXwnCx(x0OkSxxmNg5F&^zL+Nl14sV zT8wLW^nAeTFUx3uqy!u1R$C5UOw<`Tq^Bv);SZ17Jbw|ECrjBo8tdh`rCgPC!VYy& zV@g97XVM*ZwGG>iN)AOw4u1h!KlB;y4(;`#q%-P38v+o70rTUj{_*1lN#fuGFTR*BxW54+Jxw|IevI5832^aS0nmDr4mP$-=38IP zx4q*!pHnN{oi3Dc`A>o8dxYDeiZO@?e&8{g2h{7@P0lhpqYfAEYd)ja{0DLef*LpC SAPp=40000 Date: Sun, 11 Sep 2016 17:24:02 +0200 Subject: [PATCH 122/196] Default: Destroy flammable items when in fire or lava The check for igniters (fire/lava) will be performed every 10 secs if the item is flammable. if the item is found to be in lava it will then burn up and disappear in a smoke puff. If a non-lava igniter node is found, a combination of `flammable` value of the item and `igniter` group value of the node will be used to determine the chance for the item to be removed. --- mods/default/README.txt | 4 + mods/default/init.lua | 1 + mods/default/item_entity.lua | 74 +++++++++++++++++++ mods/default/sounds/default_item_smoke.ogg | Bin 0 -> 11917 bytes mods/default/textures/default_item_smoke.png | Bin 0 -> 307 bytes 5 files changed, 79 insertions(+) create mode 100644 mods/default/item_entity.lua create mode 100644 mods/default/sounds/default_item_smoke.ogg create mode 100644 mods/default/textures/default_item_smoke.png diff --git a/mods/default/README.txt b/mods/default/README.txt index bf7481b6..06739977 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -183,6 +183,10 @@ Pithydon (CC BY-SA 3.0) default_coral_orange.png default_coral_skeleton.png +Ferk (CC0 1.0) + default_item_smoke.png + default_item_smoke.ogg, based on sound by http://opengameart.org/users/bart + 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/ diff --git a/mods/default/init.lua b/mods/default/init.lua index 594ea36a..08e9efe4 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -42,6 +42,7 @@ dofile(default_path.."/trees.lua") dofile(default_path.."/nodes.lua") dofile(default_path.."/furnace.lua") dofile(default_path.."/tools.lua") +dofile(default_path.."/item_entity.lua") dofile(default_path.."/craftitems.lua") dofile(default_path.."/crafting.lua") dofile(default_path.."/mapgen.lua") diff --git a/mods/default/item_entity.lua b/mods/default/item_entity.lua new file mode 100644 index 00000000..c34e60e9 --- /dev/null +++ b/mods/default/item_entity.lua @@ -0,0 +1,74 @@ +-- mods/default/item_entity.lua + +local builtin_item = minetest.registered_entities["__builtin:item"] + +local item = { + set_item = function(self, itemstring) + builtin_item.set_item(self, itemstring) + + local stack = ItemStack(itemstring) + local itemdef = minetest.registered_items[stack:get_name()] + if itemdef and itemdef.groups.flammable ~= 0 then + self.flammable = itemdef.groups.flammable + end + end, + + burn_up = function(self) + -- disappear in a smoke puff + self.object:remove() + local p = self.object:getpos() + minetest.sound_play("default_item_smoke", { + pos = p, + max_hear_distance = 8, + }) + minetest.add_particlespawner({ + amount = 3, + time = 0.1, + minpos = {x = p.x - 0.1, y = p.y + 0.1, z = p.z - 0.1 }, + maxpos = {x = p.x + 0.1, y = p.y + 0.2, z = p.z + 0.1 }, + minvel = {x = 0, y = 2.5, z = 0}, + maxvel = {x = 0, y = 2.5, z = 0}, + minacc = {x = -0.15, y = -0.02, z = -0.15}, + maxacc = {x = 0.15, y = -0.01, z = 0.15}, + minexptime = 4, + maxexptime = 6, + minsize = 5, + maxsize = 5, + collisiondetection = true, + texture = "default_item_smoke.png" + }) + end, + + on_step = function(self, dtime) + builtin_item.on_step(self, dtime) + + if self.flammable then + -- flammable, check for igniters + self.ignite_timer = (self.ignite_timer or 0) + dtime + if self.ignite_timer > 10 then + self.ignite_timer = 0 + + local node = minetest.get_node_or_nil(self.object:getpos()) + if not node then + return + end + + -- Immediately burn up flammable items in lava + if minetest.get_item_group(node.name, "lava") > 0 then + self:burn_up() + else + -- otherwise there'll be a chance based on its igniter value + local burn_chance = self.flammable + * minetest.get_item_group(node.name, "igniter") + if burn_chance > 0 and math.random(0, burn_chance) ~= 0 then + self:burn_up() + end + end + end + end + end, +} + +-- set defined item as new __builtin:item, with the old one as fallback table +setmetatable(item, builtin_item) +minetest.register_entity(":__builtin:item", item) diff --git a/mods/default/sounds/default_item_smoke.ogg b/mods/default/sounds/default_item_smoke.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e1c84078650aa03625017c458ceacce324422deb GIT binary patch literal 11917 zcmeHtcT|(lw&)i+(jg+f_aDLwYX)QUpOk zq=_^^Mdf}0f9ITc-d*>;weEWV-C2`aGkfou{mm{jduC$j7j#P$3~!u5oJt=npySX#x?e@jXD=R*mD6lN}WoW%^i zojBZG>`l)YaOiMIic3g}ONvWz2pD>Jy4>+b`Jg;~1#zQ82+z9;s;Zen01^-)q0iBS z9#2F705t&E@(5Cof~i8j2})t8tyb*OG5 zvcBgtD*q|xPeFP%4-W8KREZdo)T$)7;iCjgGQ7c|&ZorzpuuSZT1ilyTIf(M%g6+e z;l79woy>%khOvnO0!)6^H~mpF{(dw5_suiHEnnO>e-Umu8*Y6ZZpRSuCx5%Ybd1Yq zQ|EvH`P}kpD}sewOoboh3-QAuD)9g$P9z+p$y|cTMLH#puGKEtP0kff9z%5^Lv`e5 zB%oFaa9;!DyJVI8U)j+-4fWq=m~+1n00U*&=f%?J#iIe|>GKvLK9g`i0O}M57wPeq z*7A|=^HBn`maqB%Mt|f`pXzTV;M5KPFbS3(FO~sN8gS7`Z<(7u$}>I&GoUDN68W!F z$eF!>6XDEtOmjt(NF~~xi3JS~%TPd~Mt;r-B#0_l<;WV(IvA0s%=(yL2F;#)6>XBu z-&~fFeWpS8QN|Temx65d=n^B@+JBOi`nAhHFe7#-GDRlV|_!|Lr+m z(7q&=fg~QiIv#`9A|w0Kh6mCUbQ(s|2F4eyCocL;(xZ%JttVwrlL*wbKWeTCW%>NR zdD9<m>7-C-ViSIYnocW#(;^6<+u^ z&vA}gC;7;;CPyY!oBN>R{zwm-d8^BBq{^y+j zcZC0yz<(;E!IlfKwO`Ee8Q2S76B;I=j+n2lHK}yG;6Y%VzXSR9VE6e|rbG z!R|}nWmBRmAx)H~$|D|oG z7(&nj01#PdMt_H82ru5j9F{CXW@`=@;NN9}K_NI|JlxkYOY_nb3rHh*0ct{E`3`jG zwY1TyTpHG;u-{8WZ&E!81qMOUT+(2bCht>V3F+7YIB$WNLKi%6djZ8xh!eZ4v#to` z4d;GcfP)9h? z?wqs!0hTs^f~zpN8e3n=T8qYwP+ne522xH+8-SEEgoVyoC1vH{P69h4oc6Q66orG8 zgS!hJjtF5rlZrySfc;vkMet3|+l=|;<(n?c=8A*6VB>}JxMtcqz`(gP{JgT}9YdJo&oLB}hyeWe^ z;9?w1vIH0>U)LST0Ac)CBuJN&0#^WGlwiQ&3z8IL;Hv96K4AQj3z9$p*txW0+^>t% znw*LIBG9pnQ&%28C~lqPlE6HEFm82CEe5d+qVcA02tl@0HGQ?zp#|T+757| z!^7>DVG<;QV9Z6tSxl{}Ef}8of0{o84fa7(|2d(^#@hXrVMNE}ylmrR3 zc*??Ef__Y%xS$wg5hK|20aOqO1E*qPMaGH6SUeVOV#s#q1hwV{!W^V@8$lR26*m#x zW)N1}!{8RDA&_l}!@5<;2!8a@tDUxRsBGjbicQABDjVN$Vc?RzP-C!`6(-($%-~Qd z@yQ~Ew(}dCu_#FF2HFBQGOn!G0yG>_RBW8+G{$F?5P&Jm0We+$6@Eqpyz4fkfyH3pXMIV|LS*nLii=cfLEFW^!G7T&kMr0W6vzdT#~DHwJhDPnNzW0O zWRMQ~2LUny$Nz%>8G*x`_W&!n5Ihw}i>sWKWw;vHJTK1?SdbA2JO|+zfz3bToiW0| zh0dGc@{5mK{kVlhyRS=CE8%HDCG}xvJ`0}EsEKPE-dI$`dJpR8RHqWb>JW1_ zn(3i9R0ef)b3;i4iORxbg|HbZX{tjRaB_QL3Ex-=E%}cos(lRLk{t>F_%xDqBv4pL z2st1J(@w+#E|8J4c4@$1Vw^=C`FHf?_;Y0eKqYFJIy$O{L!y95K&S*C-9s3059lAC z)oy)(7Q?q1@3AIUB~hggHDiH6Naf_-NASPf4P(y9H#XUXfqVdf4Oj-3uQ`B=t1xqA zefJwcO2f!0C?T&xbB0y~z5#$X932(qye6lhbQPwmuBol7fBgoyyg|-(LKpxcAvr&A z;@Tu6=NBC?{%#PGiCH(P{Ll@9E=1mZ7Uk0+GLx z7y~xt)0DRZ+LIn?Uib66_VA&A)MR%dIlyi?R9!2k=hq0IjtP2rb*ymo;MphkYrhv6 z3FMnT4b|U%m$OF8c|6o;!y_oQHS#9y(~_kj)-MDQp$MSx(Bpncyxygtu^{u-A#IDj zHcW7yYP`yXb61H@iPO*PD{~_q*{IE77Q+TPF&nmVMhttIivR6jx5P$dpH+PB1Lw*goBXGt1N=&{6nO6|j<->J+GGmk31 zRJ_Z5@df3^lKSh8gk5aKhObnt`Iq~SaWxUT!aZxr4Lp#SLrhy{KJr~PKkA>SP9?rx zcw*UhDWT=N9Ci`C(kr{&`hB#)FimaVvPgrde#MGJK+j#O=g!Pj-wNH+soc1lnR@#m zOV#~EU4B13G(03`Xq;3J#yJr}+^N~KSgT#9YlojA9$$c$T`xxU-EFC_+_hSToif8YF*IWF_*IBA*J#LO*(oKV6 zkKkJvH^;;VBxSunr3{TPGe2bRIGy=czfG}Yr)jbuSIXlyXQH_06>GwKLg+yn6D0rW zMvhzvylT;&)t)E&QoaQFk%^MXWGaQ3>VXXMHaV9lP zqyr3|04D@+l*rG&(=o=LXfLTD+e8!qe{@CG6^+1os^L}Th1KVHPmwAFS^Y|hVD$DJ@CJP*oFAJ#nFU;k@c?D(qw!?YTw^j9Cq9=g9f zs=mBk-O9W<1fPf`fA@f%U`e3{yo(HkWON_DL|J=T|ETKF98beJ9|-AFAD zSZI9ndJ5jSEs%e9zC({LKdE}HW+ZY&-Zxb@$u+|5hgsqE!yjDT#;ekwqZg!Ok**v@ zjq`a~70ezM!&wvzHr=mz#BUhAf7kfD+gI5NqBC|F_B18bCO9Q7rYknL#;SF%nqgIF z_@g#H$9{AVzDN{rgepe7pxy#qc%z8tm^NRS$l?{R3F%AQgt~2Q+9+OXTcrw*;)SnG zzMqyuT=9K~c&LDo5BHktV+otcZOLu`pbq3v%$2H6^aoeDJ=LwHcp@T%*6#ZZ6M9`> z-FAC>eQ6>hyj)0wkgR+Nph4Va`u)jv+&}eb-=*YAmisKj&i9B}74P!jCmi2@$}K1b z(h)ZvhglpYeEC^5a1@#Sy;8w(X3g8JM*P;Dfd)*xMX;mu2B zNpHBq%=8MXAFw#pNmD6R=FSbzPAGXO?D(n;NNH`M6_raJF0b}itbL8C+cEAKy&B)M zM^~-y(gbh!4i+!Wi#KmgX_FE7UV=>*^P9dFVC`|XP}-VBVh?8qtHp}w+VVa^@m>f7 zCwqPoFErW|N+^-EFK0R$6`@v`B=a@U+;DFsT&z?O5?D7gk)ohcHdb~fdJ#2uXt3w| z&i#w|RAsZ~$Tu&F5rt)S3Vrz|VyVZGsqZC5Nv-57iC0I4THH;_YXoTShu$fmVJ@39 z)Q$2UKeT}D+6gHU2;bMEVtP5-jhE6+Tb#(J=K9xfjzSZtYd?PCqGu`t_E`NnMZd1t z?kC{^d>G^bVxfD1F&Sp*8==JxQkL9J&~O7rH?LH+4c z4f*TTK(&~5YPYMSgFl=H4Kw9nHS#CdrIVCn>?^FfXEr3bzjrlQm|mqybqj)CW-6gb zk;#2Qzt_*j{gjM8bcC!nYNWx(|6@L?ZG-DIfsj(H&t61vZqgTav|o!;bh_e+wQy-v z-$~drqxMy@#!5Eh5ks6aI5+$-{b?2xdN}c#Z*r^{^;feV)}34GZwK? z=x~{W%Z?zP)6pwAp2j5IRpafYkf*Em)S_vTGLQK(HHqu!FUkNq&FQr@IglGiP-`8^ zak86Q`uK{DA3087eMeAXMTZ~3ruceu&Z1IHWjw~3*bi0oYnm;(5=1K|6E82#h z&|o^3t5G}8t{%<(crO)FIZ>VkcU93z;X&Kwy;KTpc*|Bz5tlc)v9$5m;fmbxPrn;q z+;4yMld%7_kU4ryXDP>%feJ2>=GWfK#kZA9nT``N%?q^{-gDs14%E2p@lq>Y zoK7(2fnaT2p^U_FN`v8q2Gnq}kmW11xlE#hD-u{?fSjsGR!#!^bbbft*j z`wv|Do`Ja<_vj`&Z5$0N9uBV-T;LZms8V-T*Ib2yv*~SS{j@ID8y5^x%b{Q@XP*^@%x>OoF3kIvaQT+v0b+i0%6{cdTb5t zs*5hSzz{EBsQpw)8G}G%URMFoh}isD5)vAi)GTDVAQqtkeWR~%l~8?Mmsk$Sx16V3 z=q}*lpB5j?BajP|RLG7s32{DyWGv=7< zpnpq>4B=2>klc_2Tj$OG95J#w>$SUnyxZmZ-AnCj(|yIP=JkVsqM_A+ik^%FAg4|vf1C6Ut^Ix!iIWh>{}L^>G0)hvD#UPC~j}3y?AT>GT%UiJH58#j)=mEsESrzp@~RjOU_80HZ1a&%UAfFceb1owiKcyw)X*JtVT^W>MG5 zw3h;52f&;|Lh~NpZQn56sZ=My0PVC~mbmNV#-V(GGAF?o#i%*;7fJ#|_zzIPJH!IR z!!XQvZ?l`37xyNcWMs*D8%0hlb+nCN-uR^P6^AfUUhI9mAWcs)%Di;v~I0xeSP9m zu!x?b_WNhC7h5qF-1b2mo#cc5CP)f4D=Dm{1neWP`RmUY#Cd7qpG|3*T|Sx!25-c& zQ|uxAQ`cms`EE78)RyTX)#)EtHYePlGmg|Q+q|TSIT+@PTyUTB>3S>8HL5Ej1_5ky zeXe=M)d?@n8(+KY!{H-vz*MI$XH$3Si%SJx5es5%0rQl)TREj9|IK#!YTcZIrh%u; zLd1RcyR|$UctT=>YDP(#ydV=4=i7K7E>I5vcmA90qE%9eB&ubMSig* z$-bDAiP{#X{(^vH!I^`A5x60Q;D&Ti^m+-IETB7V%-a|A9_b(l31+MNZz3~go>0>q zQFG!E{vb{45L3BIC!C8=RF3R`fJ@WeuXPTX!XmyC|BF}hu04`*emu~AW!~v$c%TXV z(g(!?{AA9)w9#&M!h z+uLN2QuIM6^G${oM~+2M#A8Dz{>iJm%E;|JQ6;k0ct%Zmv}U^?3n^^16(COM3&n+xC*F)vHyR;iu$hwSNO}Tw#G&Zhwx5U1 zO%ny*y6e-i@0WL;J>Pn(v|-TW@bg#t&!)y;sV_}@+>al%_)QhmkKXRLA?M6yUJAbY z%j+`YOIx}1i^@ypA8g6hgQOEj`Ou_JNKBvbQ z*Op|=%vF~Ql~!xRB(oYfY)C6wE~*?V8`_KXOQHyz>joisRQS8ruhb8ohUnn^VAo>pTHHJvJMUd zEs?MKkW3>@#E;d=zREZ_QGNIBDouUj<$dX413GP_s4XDx+K+-Oou#r#)Lw%;@J(rb=O-7BzcKWG|Pkru77e#ONZ1qtDj5;Y^B3wr>)tY9=M3^B z__Usv?^&fdER!D@n@*D_)(rlGK!8h=Ra}{-XSNO5B~ab}l(QrVOFgE~5pn&K$f`Bj zg7JDATijLJn{OVKV0l8O(KX2|!nf;+%*}d-fH}E*}`o-zRzeEHAKvyjbt1U|Fz+z^oYg6*SwT4R>ffC-+^F)|L)i zeS0**m6W@lsl&G5k^>_nTmWi;RX}k2g{lBi`vO3B7uJmo#z%2>89_i1c(!w$T}I#@ z(%4i3HQ7!*!TSgQ(>tg3r!J>9rwXT{ijaRM8^l85tb?(d*A9#30{W#p5+cgLbYO77 z>85d{%f9Zb`3crmDyYBf+H_c3M^Gy_%9q-c>1yIljj@`%1)`Vx6(dFiXsdW ze&q+XdR=()b}=ddubcI`#Qn6~)Pepx$Ye4f8ANU|rndKElr5Z0|FWcqUqhDiw3;t} z_CtzqDzlCH^{b+M?f1&s3g>jxW4uU*G&Vyygp%qOz`%B4u^F{qns(i>&dAEnIgD|Y z-a#ft$jAfZ!53QGTHd?-Vb+AXPK^d%Lrxs3V}iVXud@1ja-pp#{jw0l#Y~<%h*bWe z^5iH}!-VKeouTp}ab2a1$emZqz>8i8eIjHr3)!0l#Ap)0@N3C|S>ME`R0OuMB4!(m zuy9(=M3S%&&3ZIpr}qr?g{>UzB4nN>piP=A4zPhf;=NH!`063IGnZ$mAD^Mlqtk`& zj#Qt&_4=jL{XE%a{ra`Yqg06bA}0Y|B0w@!yEr!a{AhK#y4r9ltV%U4cxZnIXzwYGm(Y}w>z+%q5Id#%Uvb#|{V4tRVC$t8xIfb|^zX_@no=}t;$$zA0b zMxsG3{Y>fa3T=dXc;4=D5XX}DHKm%1-6PT(wHTEhh-QVoM4i&*5bRpu#`vWEY<+tX z7EWuGvXxQ_d%VxLT|H2&-1u0gzrrVAOIA(Mt6cG=<Sc?j<8R1JXSI+6XvwVjYk$pe>stL- z;j_3+G5@UF4c~B7>8Ag^CrkI;zg9h)ZChEQeRwT!KDS3meyEP^St@xncG1h~693>^ zBcYrZ6qcp2hc=E+lV%h2AQ|@wF8k!}O7@gDHB9x1-*@L#uWGZ}ORIyLsfy%#ba$4A zr}aqV))NlMc(p5%~y%i2ucVO-Kre^(ZsS(ALSMWbbRY8I(*H?b zP7}`I2jG(kG8#xFDxyWVGfOOrU3|~a3@w-!So>h;%hyBbi-ZVU+6cj1+mgC>LAe@_ zLSn0Vaz&F!RI@k;9_`cX%Y;(O$T`jJ1&Bp>yJ4!UCOD^*mgS@_Fg&Lxf1)liPK(!H z$*on2ESgfLg((W+@q9@g&AE|gOUgyw>y2ltLSE-gbMK{=$aM#KLIHTXWPVWUs6kyQ zosJ7ym_vsFc;Lswj|2E_kM=Uol&D|sONF)c`R(N1ONm10!Uy*_d;{-AyL%*Y zz>^jwNQcr&z?of9j2!O)oD`r#O=-so_kZRZ!p1{85{d) z##=9^;XSIl&34Xy0rb)$YSAUXg`I;$!_^4&FJ>}NM%+!H78B8z>Ik?V~>#Zc7m zrri7qNYj_ZsTD2qA<|U(ZS6S+b|K4DfH()ESyYjbFIg@*j0B(yaf!}+%#{YYo6ku> z2++5Od~TG`$nSn2Y<+ad#S=WLR z-Ar9t0ES79%apwTU6#YCF=dh>dwqAb;L?K<*>^7;nbZOf*A`WRmCXYw|1z~7RN!NG zycKU@#^mVQqGZ5gScWN7rx}_)6w^wkg7)3e?~R&LPbsEh_8ry_SEi^GcYvuaBJC)? z>pR`JA-)fEOB8K4>fm#EyCB0iP#67Rp(`+_VL`*q0j@`vm5m~9eimqZv2c=<8N8)0 zt#=e-osAES`&>ERTC+bLhN+gJ!{f<`7b9Y0>t7Q6cw@m#F;%+#{EKk93Vn|C6i1r% zjhh)FK@OInV(Hmiaq}jk}4=7`g~Qn_5F5HADIt4Rv*(+ z#%ah3E#23Rkm2wmdtqvtTU%#aw;fG+55Lrqx8i0QdlvayBr8$ogT!a?rTi?aa}RP8 zwjT_)%Bw-618~nVK-MZ2o1;c~(D2RcdiM2tS>FNF`yI12*Uo6s=RVdDM>LDQWSMAP zdh+FDcST`u1HpO=nkfon#xAS{TFJ3Yi|Wd7z}ikKT8K1$mF<8JgYta=&XnzCg%4GZTE4F*{nL zqy2QvtGey?)vwZ@9ow&6{V_?fkH1R>#(dq81@vq-*Nm+Wj-SxIP3?9~F zu$pl6s#&pcjeh#(jn+n5Cd-10-#rLnEVAlCD+Y@2c6z3qCitY0HAZnBk(w8lsG-3R z&i&IUshF^t*f46N|GJM~!n46ARX(l6djj&|isX+FE$ss=AM0#n)F@hy*h*50IzFu1 zoJ2za2G^Tq`dYj>twO=2+l2*^o<3g&2b<~g3q;Eo59d>gV!10U^e-Z=PP!OerYu?O zcgiX~(wQ`lK_P!s$3Mc_EVS06Uf~&NFlzf+SotY0+D+0EUaX>U*mU29Ue{tP@IN40 zr9{RWA{(gjA58iRn)$n}B=1?x1DHf|*<_wlJ>p!|-aoVl17rA^yPzu(Vy zj0Yb3J+D66N>x=*6}6Ss&wkI>ps)Y^yUNhX!oB8gg?YfXDb^>mHDO<%u(V2DC!{!! zy@IiWQw5^)QM1=Z!AN$*i z-A5Bg)6e@!35u~1vk{Fcn&kvS<%M5z1aofR5?7Ye{8esj5^zv^t!-rf5XDtRnEO!$ zF=v9dwrXIG*mL-?UlCCDP!jJ~?Xn9@oB^=icumkdp-;&JxB_`7g0H+1*zR)7!!^A$ zn$(kPDRC9ir3G?1o6-qCN3|YX*2`~7xiOcAa^UV*Ssr-b5B)XNm*BRQFcUHCCIgJf zNTi$Ee4ja4d2%|ow9o$I9V%cf{q|&4&eaEU&N9`F3PMKD4&@K~`{}~U@)MtbxOskKqJj6qzx|8gUDk_4kE}tCH3Pz86gMYx8_+`@UqkGaG zMDd{%J%~5|xJa&i(W~aFOHD_4Y*CiLs4oAF819tRNqu}IFMjF1`J={KA_?VuGawDZ zaePmn-CyZd$6lme0{^cm=n$-nFBs?mZ>Zj(ejbb5$^t0I|E>V4p7p)#ufrN eP{g7{=7fE;e0{)nLz;5c6$!HC5PZsirvCt1f<3ta literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_item_smoke.png b/mods/default/textures/default_item_smoke.png new file mode 100644 index 0000000000000000000000000000000000000000..d62fb3b07a48961029e9adb8cc966c2e9d02938b GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^93afW3?x5a^xFxfG6Q@BdV6~(PMkPt(xfRFVdQ&MBb@066`0SpWb4 literal 0 HcmV?d00001 From 9b62d8a504ef8a446cd2a1cbb2239a03b52cab5b Mon Sep 17 00:00:00 2001 From: paramat Date: Fri, 21 Oct 2016 04:22:00 +0100 Subject: [PATCH 123/196] Default: Add damage and falling damage sounds --- mods/default/README.txt | 5 +++++ mods/default/license.txt | 1 + mods/default/sounds/player_damage.ogg | Bin 0 -> 6490 bytes mods/default/sounds/player_falling_damage.ogg | Bin 0 -> 6701 bytes 4 files changed, 6 insertions(+) create mode 100644 mods/default/sounds/player_damage.ogg create mode 100644 mods/default/sounds/player_falling_damage.ogg diff --git a/mods/default/README.txt b/mods/default/README.txt index 06739977..4d26a932 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -192,6 +192,11 @@ Glass breaking sounds (CC BY 3.0): 2: http://www.freesound.org/people/Tomlija/sounds/97669/ 3: http://www.freesound.org/people/lsprice/sounds/88808/ +sonictechtonic (CC BY 3.0): +https://www.freesound.org/people/sonictechtonic/sounds/241872/ + player_damage.ogg + player_falling_damage.ogg + Mito551 (sounds) (CC BY-SA 3.0): default_dig_choppy.ogg default_dig_cracky.ogg diff --git a/mods/default/license.txt b/mods/default/license.txt index 45ea3e45..137923c8 100644 --- a/mods/default/license.txt +++ b/mods/default/license.txt @@ -143,6 +143,7 @@ Attribution 3.0 Unported (CC BY 3.0) Copyright (C) 2009 cmusounddesign Copyright (C) 2010 Tomlija Copyright (C) 2010 lsprice +Copyright (C) 2014 sonictechtonic You are free to: Share — copy and redistribute the material in any medium or format. diff --git a/mods/default/sounds/player_damage.ogg b/mods/default/sounds/player_damage.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e86f2864010d81c8b08e9e342a8d68e2a4b17669 GIT binary patch literal 6490 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 literal 0 HcmV?d00001 diff --git a/mods/default/sounds/player_falling_damage.ogg b/mods/default/sounds/player_falling_damage.ogg new file mode 100644 index 0000000000000000000000000000000000000000..532462db48d70eded6d93544ca26a905d782e3b0 GIT binary patch literal 6701 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 Date: Sun, 23 Oct 2016 06:16:19 +0100 Subject: [PATCH 124/196] Fire: Add flint and steel sound --- mods/fire/README.txt | 3 +++ mods/fire/init.lua | 6 +++++- mods/fire/license.txt | 5 +++-- mods/fire/sounds/fire_flint_and_steel.ogg | Bin 0 -> 10443 bytes 4 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 mods/fire/sounds/fire_flint_and_steel.ogg diff --git a/mods/fire/README.txt b/mods/fire/README.txt index a0f298ce..35affc26 100644 --- a/mods/fire/README.txt +++ b/mods/fire/README.txt @@ -23,3 +23,6 @@ fire_small.ogg sampled from: fire_large.ogg sampled from: http://www.freesound.org/people/Dynamicell/sounds/17548/ (CC BY 3.0) + +fire_flint_and_steel.ogg + https://www.freesound.org/people/Benboncan/sounds/66457/ (CC BY 3.0) diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 6543ceef..731505f2 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -87,8 +87,12 @@ minetest.register_tool("fire:flint_and_steel", { description = "Flint and Steel", inventory_image = "fire_flint_steel.png", on_use = function(itemstack, user, pointed_thing) - itemstack:add_wear(1000) local pt = pointed_thing + minetest.sound_play( + "fire_flint_and_steel", + {pos = pt.above, gain = 0.8, max_hear_distance = 8} + ) + itemstack:add_wear(1000) if pt.type == "node" then local node_under = minetest.get_node(pt.under).name local is_coalblock = node_under == "default:coalblock" diff --git a/mods/fire/license.txt b/mods/fire/license.txt index 87ade6b3..43f9cd7f 100644 --- a/mods/fire/license.txt +++ b/mods/fire/license.txt @@ -15,8 +15,8 @@ See the GNU Lesser General Public License for more details: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html -Licenses of media (textures) ----------------------------- +Licenses of media (textures and sounds) +--------------------------------------- Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Copyright (C) 2012-2016 Perttu Ahola (celeron55) @@ -56,6 +56,7 @@ http://creativecommons.org/licenses/by-sa/3.0/ Attribution 3.0 Unported (CC BY 3.0) Copyright (C) 2005 dobroide Copyright (C) 2006 Dynamicell +Copyright (C) 2009 Benboncan You are free to: Share — copy and redistribute the material in any medium or format. diff --git a/mods/fire/sounds/fire_flint_and_steel.ogg b/mods/fire/sounds/fire_flint_and_steel.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6996e16fc3593925f73772dcc24ed65833a4a794 GIT binary patch literal 10443 zcmaiY2Ut@<)9#`7-hu=TolsOd0jYvQAe2DpMY?q9(v&V;got!$L3-~S&VO17bkA1)tDLPoqdW{-E~HoZ^M93BM1L8Hf^-w-JGU?EdON|~ zoNbNH*~2tp;#bA4ih&g-Xkd5S#?R5g!_Udd!54nUoq*);Vz}ycBLaXN91+uo^@ok8 zU;uy~0B-TZY114v;W%u8U|fQgIv#YyeWlB^CKw52Vs%g;+w^3I&zz(MagoX1slgzsYDwmklJF?Mt0Smq?RE* zqlopKe>4>5dceTFsFJeV)2ou7v5$q9WO#$D{;CB7!ay~Fn~#_^>zIe@ps(NX>i!VX zXOem&p>AM^!hprk(%9c&*57Z|Kh!iM+PpQ?v^Cm%F52=i+6EHyk9rikba+%5%;pcb( z72(QtOm_(*mq@WWH%l1E7E(Zdo%*jNa6)Xs3M^|pYxgyRHfuG%j5&MqMVw)_KwDWx z_PGb$M%kA^U&4nn`|~r$vwTK1sk3l@dx4DEWL0Go;28UQ4lSPD2AtM;Y{+ z%^U=u8vzSVCbebeD&b1I==+d1EnjR9UVJer`3ABqQV-28fb)$w*Bk}_QS|31{%3Oz z<-aH{PK_5D5^NX|9~L=lDtkxewrYFnuTzVGC>D_dQJmDYmgiHA&~U{y&6o+}uxKP4 z_cx+Ir^4)0R7ly+gCr)ydkFpvjEets+&A7a2F^GCQOCYR^%?oV`bJ#TKtcgyh%xqe zH+|x_*b;3y=eIN)x-^?)%@*_D!1`C@0ASEWoyR2BHc@OKCsIe1;;)1M8983e1COAu z9`S0`^P(n1UjLBP-IaX9q^>WCGGMWM!{Rr|>R=#kIVt5ZiE)_rcbIQ>FmDMpZT?5V z{0*C>S-<~?oU;(&MkFt5q!Rx-a`FX}KglNZXr}U-rt$}-JH=&{W#(;`6;l3J!pNeU381$~gHXY>-(2pVqR6cqu5)>K3<_3j6>Ad8xIWD=iDGK}VB ziG}8>EID}W5d-=F5GFP#)(7z()qIt&HY!GuiycG=;L;{E;iBmf2{>N~qup{&(S+u! zVk|@}KDU_BF0Kk(1dxGWs)F$p76N5v0I;P-Q^KRM=u!Au3VKLv6^ce8p5+*fBFH(T zhQvs7BkAEdsKF?F02(!-vYHb)t|ABkupR>Nt12jIuMW@)03Yt~j-^RzG4p9LsgE%` z%rc>7A4|TLl+riE3^QS-4Ka(XC`>aSiV20UA983){rv475hZy6T zP%V&ZfSPB)V45-W`|gx&5VOhi{Fx< zbC$D9VQG1mV0n32d9!&cfO+~fa7D%lwEw2|TFBhq(ul!Xm zvejH#-d;6SUz=TBvDLgo)hn{qey6;;x}yHe8MVD?3-7hnel?^7K3r1qxxK8t-D9iW zYoys7T2%hIOKA9I?NI&BR{NDkKQ4WY-#e`3vN5QKyLCXG`C)XuyL@-muOX1Z#1Uf5 z6WRtYYw+Lz$MCztN;a~|IHxRdr{z`ITqqTdMk)P|L>-OEQ+GY#vK8$>y_3 zh2@{yg@(I8L1J(5p3sh~P|HPWkdRwnMHOl{ct|nkx`_AsCAWOwS5!kyG4K$?2EiFN zn1+-KxP%GAWC;LLu61SudZB)pFFpD*tk_VDl*>m4*$>6)AziqzQ$l!{VY236P8uWf zHXJ*FCM&?{AzcfwGicYkk}2D5STQToSrj{A=2C{AGD~EzqZeN19wq; z77rcrauv&u6WTHqVP=V9Bv5qRo^5dq3!6b|`k zN61;&s>Gs4HJ$0bM-W03sv`)2GH-2FI2<#gLeAGTih#rWXAtCkI94qo(S9RWI2_ah zOd0df!I}Q>#4k>1~qvys!K)>La?LgZ?d}vjL*zHDD z1mRJ7NFjJMJyMeo2d21`P%xi!8^@YJ!43UAM{ZHuQj5jFd=15g7^1Y10%hT#MXUTk zDB$`>%v`D(=ak8-qG!al_&_K)R`q3=2?M|va6@0t&k;T#g$z)J6oGOPPV}}Thz+PD zcrrqxXoc`Ok+iDhEZ{c4chv|2Z0J=%0+{a=M1lC1_RBQ zC>FzP8!xt=bDbRCp8@7LC6Ke!1ANJzI@@XQJ@?Cjzy*XYm8oQ{V%jYK&}6sht*R(hZcDOI0okg zK_+yM{C5n?2+BB5@381IM1rO{Bb-C^yhp)xX0G$eTz}V| z<$@qYiOx=8o(MBa^NaGmqfTS0W)L} z6cj}a2l8us#>Fg%iB}lKDXA$3qI@Qti2(YjLFz}bCe(~f<>7_4a)61&twFLd>ZGK` z1gZ`39umv9ey}JQF;{Fq0dq=NB$LP8Pc*u%FDT^HakPK0zy!cW07#{QadT%Ol4&2( zrO-cONM%f8!h-MxfDZ&=bU+v{No;JaV{%dNG7+zueN=JZ3Nha~`K%!)|9e#-KJWj% zBKJuDC7)f9&&0e=?O%|%DkcEGDlH?m{$5ZB{7A~nAOwZrB5)~bX;~R*DJf~uD_5=v zOUlSzmXluHT;2cn>vPV2JpUsrEx`ve%NI0^fA=RciYsWn`y&14>s7_04_iW6f-eNS zx-V5VS{?d(@<-D2o!lZs-X(RpxXqF5?Pc=;&5;(PAj*S*T8jplWhS(mi~5U59Hc8cF9$^+mgeGV-8PB& zM(icXUkXs%G2C;tyD$w|$-tIK)h(;A2y zE|tW%l|Q&~-68gglCk=GPr2Fea?$}I8&A12o0*I{i(h@O{RM*oec$~BAAf==A79}r z*n3gKTi7!zR8@2IHhQaO^lh^-=R7xaiOn^t^%N{2yJnK9^=n&>$AJn z%$w&|IFfE`P7ewhx9dA*26BvT^LeKPTJ?t7R<~^htHs&lL@uSL>bM~K~ z<@WS^FZj)Tr+IVzu?u|eNrtc7_hGY14>w?8_GZKFPeiv~B_PNwicA5=z0&=BD&_FP ziYnY^!?zcif9(Adq{+B((6G`_m%;p^-qb!ZuRW|^oU+}Cg`Ui%Au0c32geJSdODl9 z#8GnR728hNwpK+mu2TZm8zUb{r|2lZS4T+MWPB;E0l@MHN*nq^^>536y|&T-@% zM@OpU-ueKgQrGW&Nu{;>{(-yelh-d%CST<2SRem_G$`~hJe#*^yi<>oFy>-;PgINkWonV;J(;$fvHL?D`qR za~ht8`jy=%NQhIsGdA^SIte@Bx)zuUW|uR$8OG0NMb4DzG~StBWcGa zl4|pU`dX$V>_i&3cDCr_PRwB|7Z((KO|9qr$)5AoaKa3P+nD8kb&%<8Dzxo($;vA% zTHY@yiPO2qX8&NN&rtq6Zu-#yd?cM#Kfd&T;xAmLWTU_NKp3xbKd967gsNQLde*Q(>JY6!k_wXzcUa*Sl6 zcigd9eM*~OsAwu7eC5V2Yv5D6!!r((qo@P(~pi-KCWPCL78e2A)JlsYQSNi6S0e zFOjKfE%Cs&059t>%JH=HRb%XaK}5aT!h_2Ct{}wJC!Ji8ZhXYvPd;M5@e`N1`|ir{ z3vrFEf9wiJ`eq1!vkc25^)qnuR>{*y8fM5EazA0epR!olQkx^g=^O+_4zPDQxTY=# zD-orp7Ic_bl;3@*@LM#%MER}9t>Y*XAryQ6kxrd^agFUld*^azW_vf6Y~GJPj(cb_5DUT@$JbN5BKVsxd_eU|IoM4#;T zo$yQ$)Qis7PvjAsmzz8QVsymsWs@_!Ihdh?+{mpm(QG_c3);h#@e0zO zgmBAAD%K>uw0@*o?Xdq?iXIpmFTyVk1>?Mk*t{1rOG*PXs04&gJrEo(@f{LEg}Ne& zHN zT+!nq^lCUrh~t9Wc=b)&*|daKxf`Cc!m|%OqvS2i%fDaug^CBLPiQ+;D$lJO!z?SZ zH9p>*vRR)C`l0)F&Al{Cj+Ln2+{$>OgEHYyEx)gGr=FdNVvakZ6Or zqQX)+C1-?MjP-OTb%^+(lwDx9(2hkc^MfC1l4)JSbsh3U*;0p%U3mgRvf9W1;lR!x zir>XgNJ`2rGt7JC6b`OpmSI8cNlRm;ZEA#^}&|wb_%*nn#M%Vu87B@l3AAt zo$62OAGKWgh1DPUU zKz;NFiR;YgUI;moUJ~Q|{Z^at!7I#BgP4!)yR}yi()md_OLw2=!H{tC@1J>u?P9D1 zjSpn7ztnX@l3EU;EeK(?ZvaIz8Un%#K#z}~O;a?6DA8T`$rocQD#!HnX9JBsbb|+V z&)bu4j#a(l%(f7HIQS^8+L9wc1oFdq+hcfBayI!B<-HKXhC#YFUfybrC%j9J4_|)W zDwZedZogwo^qA(#)_X6};f(jfR%7lvB8xj42Tz`ECOYR7TAix=*z`=^VA4E@s&+<0 zMSfCg_nV(ME|zEuI#aREdMDM@uwI;q7uqcL3*v>sVfW%>AOE1-cZ!6lndMIXD34z- zI^h{#$Efc-mua)b^_6%>KqwUs;kp@yBG}KAyTm_kA`|39D|84oYzdzG(wv;=iZp75R%sL|l=Q}ra9`L^t zo3hkIwd+dv?evXkChY#n!>mUmFOSwlK4?)~oIADvMpw8*Q+|hdUZ2I4e9!Bz3!1;6 zxjf=?C_8hMvRv70(yD{z4aiH<*xGG;1kW}#*ZG1W$*lkRJ>r{6F7CRb#{=AZG7jpX z`(H0uL>jHljKo>~e(Rp3;Xcxr)vjtr)|wFNX&8Miv+*)FJfE3Xbcmx)IG7f<9QNJR z#AGr13iO?bDqXM>apz%;&OLY|KvD|}g1mrx&_WL>Z=vV6`vfiH(oGx7W+%qRo;`(R z-n@8fy5wxV@@v-0&9Nk@8FN{~&3;1iN^XVdW^bp5PR7@PKE|<@grZ7fuhmJV6rw!2 z`?8V_GeJw`O7d0a!4p4%@s-wFLqQ8_=){=?REN1{i41FACUsH`Q+vrV#Fmn~-6uD_ zwad3OB5vV@BkMe>!rY?b@xU_M<-G}IZ_~JA5oX!@I-hUl{;?{Ij?r{&X}Ijmn7yKX z6y&fKabPwjoP@_hr6}t99A0QwxeeL~y||!PC4eS>I4L`XGn!|$ z5+cgmFbE?Q%(o>rt}mZxBGMi}Y8~Z?2(KRfR$n`92oXK`Q{?nV>A4i&Bgfs@wsb^I z@S)wz>&KZNbw0kAqGfq*6yYfSDQ4w|j+ZO-#@@s(f9n3C0!G%B$=7pFa}YOjmotk0 zPC?E$#%2%JI}>y4YkAaC9sJ#BC!Kt<-Wx)Xp8t%oS^J=q3QfxhqCIs?s9C(|NdEAV zVxs$l%eM-Tt(J7k=mMq>+N!kgcT2ccH+C#V#^%~5+NjRCXl`~o6sqwwp!^Z?cvT6# zK;d6Xzvg8>2S@Hzb(DMHr^-X=Nt^EzB)>i?4`A_%$x3kgMsP|t!a&}r{KzZ*V?1gt zwb@tV7IeVh*Nk_;2ie*9=bF-;qYqWbqUKkijgTvO7qfruj^az&#_(7hR9n`w{WU16 zC7)qHZvT?UyjKPOj>x39i|-#3ajE=M`VQM)fIx|Dn>;<^3&i%SbL4Xky&lT>)ElyI zst1jdFA6D%_71Cmktl9+c%FEoAepg-5@K4b4-{pQvwJ>iN~U?`qedL(JAE2%MN&SQ zA;`SKL-W+awd;-bE4urHmM5lfz5rRXj~{%v7i*@MFTOin?PkS!s^OA$BB1qgz|$ob z^*Iqatc$;_rKp)8a5G^yv>I1bFVTEuktD0*aSH+Kz%ZJ2;88x%17AU!X(2-Z z;GL6-9IB$z9}C_V8_K-))->nfC}DJCy{Wq`4xV=vC;5%erG07Nt@y#q7;RmVmiLD* zSyrPVX?W9=IETKqL_dftuVu4eVA04ltd2KY@9^r^9|=2qf{V=T58n4Ttn1)y)Nhz} z&A2$wYz;HkY?#D|5gDC|RcO_di$K1RBv7?L>=cd*IzsCV!Qlsz4bGWFfB!Q<1a^P-((ZBai^@t#i%UsM$%=gxAq>>vFBgvAUAaH1Enebb@O2~^S5 z0ngOMsuN5Lk5Wry>nok!X>P?S2^dVs5bu(OPEv%B1mxqnDfCkWVxaiNMsQ+@HAT9z>MS*953!f@O*Vhv-e07Fe$o_Qar7* z`^0uykEtqeY-%N~0Qu=VnrlBtbxrKR!n@bljInt?7Vy?|c}}phO39l+Now-*GmnAe z)rQ3uPJYZc*S2}rmC=CgJkg>raLfjbr|(IUh&)OAl$XjRVdXYuEGNBCYxpKr66K_# z+qSt+-1T|?Q8tFLZruA#$>q^3w~VP9kj)Kjebp@jLiblGa3=fhY61$DQ<}4DkkpI z?kQm(ef_%XNl?_!A;ZL5L8&h9KIDD%+iviCYTa%SiN}6%=Z&qckU#3KCc=Kd7LmkH zakN3jRxEa$X@#~-H=d7txrA7d3gL3jq=BKl4h=2bRO12b49DNGP}M%CnXzfPjZ#E-{ZvB(i)OepW(mt zyx^q~F37hh3)gDXvLRuQp^I!|Vn2c<8ON!y9@3f(k8pc9I^=$4x+R)j@-t6Sf^=R| zU3SWlXeYC(gD4M~LJ--WcL{Z6UzWgPtB>G){IBs2)A5_y3s6#(+w8Gwa&J@>E`@(k zejl{un6gm=HFz)Hx)~unMpfe3VKlZ#b#={F;`30c1Em@#ejf8>sP4Az^^bbS8FYxN zBP4VR_w#vT*9k1PhuA-S*5e~DQ<3QFBWWO$wnY1&nwFW`;?&!r?GJSF=J~hnC*<9Z zhX@CGDg6(KTW<^`w7BO8#?O`x(Rm~H`|gx07VNMhoTc4XpF^`*DCx(IG70t~PysLf zv-!ST?qIcRo~D(KKgt}6GVj*sl>jXEk+li{m0OJ)?45{?(i$&U%k2}ojfUl0`U9U| zvrRhIOa=XVkr=Q!Z8p2(^~+7;kvJ82lcp3gNz{*cyMR<~yL-}&fzVy<7759d&Abt# z)E>V+8dA~pE}ihk*eRPjpO*XQ8CD>XB%mz+W}zwt2`rh7%KoQa5W<=+t?M*D)W6w8 zg#X(+9-}v9oeUf$WCSJ#W=v@LUnxJI`W!F<)UI92c_sPtgoz$I_vQ&Jy5xQtzJN>T(`PS2oKoCpGu;eMu_0JGGabBI-B#Lv4i% z_v80%F~<>i6wNH<45IYiU$tJQdiE*K0#0nY*fByJvi*F7D2zl>RFmz=pSda-bmFdO z$d8sPv5l`mC+r$1sbo&qI|CPFf<`MUJlSu^Y%zxHKgYi>?Cqo3EKejJhgr(k(Wr#Q zz)Je(?pkn!iUsgnmvNapC>;fxGC1YlZO-CnK@$9wGBmM$Nf@@n5o7Rl<*SX=@=p&s z;Fd`DLg@*l$>=ssySc)EkL&ZjJ-B4!9qWoxXcmWOai(TCQmZ>}O^2b=w}CG9c7(BY zqlxineopQ@qB0gct>V-7J!a-E!hs3KW^Y~D5uBp6J`B#UCYu7`>W&ahIa7uv(Ijh8 zlG*VW@@M|IwG{eW!N2tGh{sLcWnMD6TEVERuDU7LAB*}~!ZE!VGWP2sHE*Q<$6U0i zgXPAYUi4ayksh4&Knwq6$a`B%iZ(R>w&zm6o)KwzDl2tc*z|#$T?32`FZns zxaiCG8P;sRm%c^3Yh_Rp7H>A5-cC2kvYwQQjb95U4xys{BKWG5b-j@?nKpaH>HeOL zvHzR<-}7v@IjKIW$NQd26AKQ;-jvq*xNPJ@GwAgs_WG`Vi0{XvoVo1JW!g|}Su%;v zcws(LB%vR>|E-Koqu8n<#{)vZ>IPP|H}%Rf$u~<|mqlW7U7_?Qq_De4n=+ zyw!@ade3*iE1s4NuVDuj>MZ)I#w=@v46adrQ(iSW(thqdLl)?==v2vky&7 z6?t~7UhTGQ&JF%O{pd>%H}d1lBXf?)3%%jSguFUI-^n2LB6g-~?yi1M5_IM4y6smw z<*1h~n4nprh}%4-;^<0>#f#QCSo8x4fIQ5UHqmLgU}4U;r=xOhL=TATOu&*_uXP=5y4vx|a!R|x3CCcou+ t%+kdF4!ZZgks|(*L53~RJB7V;cjk_glG1FL`^wLPFgqqd(7@o{{{gftrv(52 literal 0 HcmV?d00001 From fa9a34554b96d2223cce2a9a53991ebe3c5bedc0 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Wed, 19 Oct 2016 16:23:05 -0700 Subject: [PATCH 125/196] Default: Add metal sound table function and metal sounds --- mods/default/README.txt | 11 +++++++++++ mods/default/functions.lua | 13 +++++++++++++ mods/default/sounds/default_dig_metal.ogg | Bin 0 -> 5245 bytes mods/default/sounds/default_dug_metal.1.ogg | Bin 0 -> 7076 bytes mods/default/sounds/default_dug_metal.2.ogg | Bin 0 -> 7260 bytes mods/default/sounds/default_metal_footstep.1.ogg | Bin 0 -> 6847 bytes mods/default/sounds/default_metal_footstep.2.ogg | Bin 0 -> 6926 bytes mods/default/sounds/default_metal_footstep.3.ogg | Bin 0 -> 6970 bytes .../sounds/default_place_node_metal.1.ogg | Bin 0 -> 7518 bytes .../sounds/default_place_node_metal.2.ogg | Bin 0 -> 7854 bytes 10 files changed, 24 insertions(+) create mode 100644 mods/default/sounds/default_dig_metal.ogg create mode 100644 mods/default/sounds/default_dug_metal.1.ogg create mode 100644 mods/default/sounds/default_dug_metal.2.ogg create mode 100644 mods/default/sounds/default_metal_footstep.1.ogg create mode 100644 mods/default/sounds/default_metal_footstep.2.ogg create mode 100644 mods/default/sounds/default_metal_footstep.3.ogg create mode 100644 mods/default/sounds/default_place_node_metal.1.ogg create mode 100644 mods/default/sounds/default_place_node_metal.2.ogg diff --git a/mods/default/README.txt b/mods/default/README.txt index 4d26a932..9ae2c002 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -231,3 +231,14 @@ Mito551 (sounds) (CC BY-SA 3.0): default_dirt_footstep.1.ogg default_dirt_footstep.2.ogg default_glass_footstep.ogg + +Metal sounds: + default_dig_metal.ogg - yadronoff - CC-BY-3.0 + - https://www.freesound.org/people/yadronoff/sounds/320397/ + default_dug_metal.*.ogg - Iwan Gabovitch - qubodup - CC0 + - http://opengameart.org/users/qubodup + default_metal_footstep.*.ogg - Ottomaani138 - CC0 + - https://www.freesound.org/people/Ottomaani138/sounds/232692/ + default_place_node_metal.*.ogg - Ogrebane - CC0 + - http://opengameart.org/content/wood-and-metal-sound-effects-volume-2 + diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 0e0ab843..429ce9fe 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -95,6 +95,19 @@ function default.node_sound_glass_defaults(table) return table end +function default.node_sound_metal_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name = "default_metal_footstep", gain = 0.5} + table.dig = table.dig or + {name = "default_dig_metal", gain = 0.5} + table.dug = table.dug or + {name = "default_dug_metal", gain = 0.5} + table.place = table.place or + {name = "default_place_node_metal", gain = 0.5} + default.node_sound_defaults(table) + return table +end -- -- Lavacooling diff --git a/mods/default/sounds/default_dig_metal.ogg b/mods/default/sounds/default_dig_metal.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0b585097a833720ae1a8bea3da50b66987cbed25 GIT binary patch literal 5245 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 QSSeEum$ieyv4no`A2D0cTL1t6 literal 0 HcmV?d00001 diff --git a/mods/default/sounds/default_dug_metal.1.ogg b/mods/default/sounds/default_dug_metal.1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5d6cb5b1e715b5411f3c99e2524b9ab7b1f2eaeb GIT binary patch literal 7076 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 PWR8bq-Z`Fg*}(q*XiHWL literal 0 HcmV?d00001 diff --git a/mods/default/sounds/default_dug_metal.2.ogg b/mods/default/sounds/default_dug_metal.2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..63567fc05ae56d13f5a2c6976f2cb1b140ad60ec GIT binary patch literal 7260 zcmaiY2UJr_*XRk-K@8P^L4(qQfP{_;QVb9}A)!a46GAA4P*gBT5h5VcM4E_1AT&X$ z2znKe8bN7F6_l#j8_4xP!F#{=y|>m||ExK4_Utx$_UxHG=h*uDI{+NOKcy4RfoFqy z@74Jr`ymk_XS|3MHUe_8n*9QRP+`clVvhNv0WB@V97ZDH=yLj98k;ym07C$frNER-85D^GsFbmtY7k+LHFVwYO0L;|Ol zV(P`$YQ3ZJ0>;Vt@ffWiQVIS>Q4)W~kTo*Ti03xyg(a98ffjJ*#mn8SjI)G--gz0Ksw11sU zgINfb^3~|g6)u*z2<2PU>q!@yH$`U_(A)Hu3n{F=r9u=7gh~rt1oJ_@<-)EK7ydtx zLVfgbz7iW3##%jHDBJ@=@-@*J`Dslc#8pE~&$p}xA@jCqY=I>kM`5elY1X<|;f12? zZbe61ZozOj2-)_m&K5%d!?MG-<79BYhR~!m&uJv@v*iGUsj!!n`l`|Q6*WGo_(J2g zk(Ge5?4!JLIbm1}g+C7G01SC$62-9Q|2AI9GD)yA{mAl?ixx_i6{V@_1Il*?cbcPb ztM3XO6GU}EO%B&|VI9a?UuG{{;$lO1}d zZ2MW$R#e|!4EYDG=_n5i=ssx^$DT)BV z(ab~0%!A0xMcs5+jA1~p5@5*9-jVbL#q>qpOj%5(95K^BI=A9_{_6E&CFTwb0A;hV z3;lK!y)uek5tY7@oEdOEx1uutaR2SM_iESww<@p`;IaS^E^Bs1)(k6)#)80(cWHub z@4_FWWYK4o2cBvEnd6A4KIl-V@IQyfKMMc=f_-a;YQP8pADGLD}!V_336&V;ll{~s)m+T7GhzGgCQoC64T|_Uw@QIk7aYj!rCLxc# zuQ&mFa9^Q%QC;veEc-QCG)qrOn$e?YR(WgG-lG0COv6I18AnALyvoLQ8vz}oT!T5Lx0Uu*UO&>G>RRHEg;X_%P)?#wjqG($&!k8#}EJt%lQ_CKQ zw-&P=!{J>dtjBWXtTn8y#qbWIXuLSyA=et8&saF*Y(ihu{L(gHPu zR*^wfPXE}9fAN(%MkNzO(GzUVXnYOf(gs_o6~}}`cdnh8ox}#J#=%&nvr$E0*|ZLe>~byZvSvt|9K=9p;$UB zK0{AI&fCTUDc59Y5h&~pReDn9!@}?}8pSM#$n0mXNV#S^i_0}lt`4O7B&@3dqtV%d zh-z~5Ce`#Lqxh~sl*%$O zZ$-JDOl+zgL&}Y=(gLFhfvT`6^&sIg@`;2uOW4~ER0R%>WHdTj1lF9fu>e&K8eu?H zmKdZT3$unO8#OXxtHK~btAapPmKansj1r7&ma-s%sz?}Q52#9|dHN`CO(M=qkkK{i zHQ3hVNZJ{^T8{D3tGWpsd^e-Z8C%JgsH&fUc@H6*-5oA#wZP8RslWWHJg9P^Al|3+TR(;PY2U1fr z?3|6txI1N|qX!-zShEDGLN*tYYC9&TFM?OT(>q%(LESE(*8)KB1Atl*Y8j!)4`#7! zZg6*IW$N+BBxI{EBN8&O%kYFu*Y(19I|~vcJKObgeRd|6gpvSr{XCeVPsiWxS^yH0 zsyP8H1Q1O3b}9DHX9f=tF3k0!Q88@S}!K< zV3gN8K`AD)_V7Sw2$Kn(wBWVkLjiN`9*AjpCs4KC-=I9z9K7%G+CA{b(M(?N4+ELD zI_u$P&9z(i)PD7Zg6Hn>zaT)x!=y1`8+s3i0Q)HP0Zr^d_&~9}hy*a7A``N)U`pbK z0|1AW;;tRDOTjb$V0F{Dt9K39TxLV08Zc$<ugFv;By? z4UZQ*`Z$|1j8T+hfNm{}&%|2fP_P!5%BFF4w6eYD2gMRqdZb802+*UcsBd8WsPwo} zp6Y`!f4OOVngVv==bjqzW?`$Emf#6O%qCY7OYaB5ic~)?6%I9q0kr3!`_GE@!n)p*%_HlWnV-G!8MNuH)Ih-Xy;0L zbcf0-6aJ@b4BkO^?yAH8+*)t4nc4SO2teZ!0#l84b$TdPQ^J`YO6+^$#g}K4Q5xoY zOUl}uGF)wVb7Xg;pQ+@VRy@By!?Iu?JvlqWyA_6 zZ@M=4b&)&>O-V|e|4<@=ICz_b*2S6V4piJ}HE(aFsqS(g?go=RuQBwZGu#lur>pxa zNn!Rw!oI>12izJ0)C*=%U>*X@w*m(b=0ENoo}6F#@B`pue|`V}4EO;6x+iJL$xCYL zn%cTYj~f^ogE8@^&}g(Bzz}R{w4Ki>&V!CSD1iMr#b$(OOf|ril^)bKHn+7@Ro%JU zSXEYAQ&&?}ofD}NJ|oC|?fGUC2AWq-`SLPm_kjKEIPP)nF^ZP$vGkUo>z5B5uFd-y zVzS4RGr^m?hDX})%{rv1wBQ&@eL2wVD{IccsQ3K%ebv`n>E(eM<%>^_F<$Z?JtiN= zn?6sB`)05ia-#G11D4KN-A^Z%iw8xB2(q%(PJOk|_fPHKEDy|&KHGkJuaM>@qhRmr8v(lv9SQC9f#gvd zk(AT&Wdno9jTKKAdYr$`??(HbIvARrdra0{pU9Z#yXdMlr&6IHQOaHYd8~h658 z+OKm))FS(>RMRcR>X%ykT7++O#@D*f+vM3;-Goi8KYE>3b+1pLuE5Tzw_lGl#f8`I z>trkDuLYsQ2$uS4NWXQM}>$sehSMp9I+ggdsqEGX?p%0*>T%XnBU_-<85zwOeXcgr~J_3V#xTsFvPyN6oy;yB8s_b;%kG$aQ;E{c= zyS4TUH$$(-oEsb|k}^?_vACl1aBa&V||FQ+gsi)xksa# zb6oi5I_nhWWKx0}#ZTp&Oi;x)D$pwSO9to+d^hyuTPZ5;r$AME=AlAZQig215k7if z)H}#S(bS-qFMdv*EI@r%ZLU+1{W-agbds{8DLIc(va27|#M5suW18?SPQ!eQTKXiq z_+P?=w{@wb@ngfXn_cVn4%2fVd2c!pZuhJkrsmqTv5L+ryiz-`o!+NZ06k}Qk*C7$ zCH1P;qerloVZ==Z25%^*-n!odX8sH{SZQh8LBK_>2j`Lgt^D@-RJB-MBz<{2+oZ7) z$@Mp%bO)x%efj$}tb7b*CRPvoTDL7;pt35kJJMqpj=B4YUy$GXZw8&cx&wJU z!s-n@BW2g-dtJ(n+)~V^3GUtmT#K%<`}e__1W3gTQP*Wi#JL~D;`h4>{8LrA472*> z&ths?v|Kc93T#(Dxuvz#vPYsh^I+wxXQ7yF#+K0Jp-yBGiJo`O2=e1_{;FEO8mlic zKqAJvPvinXvl*;}FW*1=c_JK>MGPyqUCJdZNqw{x^F8 z9 zpx^PQdFO_tZ*E4eD)czQ{byUa0nAy% zp`s^ONt-1+ZotI{ZgK6^BGLv32J^w*&-@)c#fs8XF!F#O$FEdX9>wus4#_yXj}RC~ zNzNl}pw;M0aihj6q4q!`;gPmNwCvoCjm!(0Y5PBGyXrKiF48!-VwLu+G3V|%GmI+e z(j!OYA2wH#FK#*vl!jiv8P^?Rt*hnD#|mDL{Atkl-Rpf*rH)DNkp`OZLPyHmbS29k zVcHt!UKL?FQq+vcHdL{`8)CK5JzMJcMdGbH|F9X?_{*PkjmPOc_gl8=H&joU3yx^oIB!)r zG8SFtGB*P^Zd!ee?01{zIv%Mru= z*JE;s!zR-gPRB!&rSvsFV;wk*}W=_NRPF(x?7cDikVCey0>Xp+DYZQ z^+mu)yIjKVz#i!}lLf#)@!g`faNj)eD>B6zD>!BOoM!jYid42=@59fc0XSyt)#pY+ zfkLFqQpZ$w+t-BAQ*~I8{nZDnE}VACkA6Mcb18c6&X3dfcl&;gJU8~M_ba}??wxkh zL!-uAP2i(?f}xLXbnu~1@^+VltJN8be2dcclOB*jm%<2@qbkTh!CjW4| z;U>B?C*;W=*vWe=y_ zK{%#*+(;RU9sb($ac&=1r$W(fvZ%_;S)Fvq-`*UXoHo6?;Q@9=t}pTs3zeg*w<0Oi z@zGZ^mm4dRX*E%<7?B0ubwR%^VeIqSz!SDsE&k`0IwfPS-%-x}hVxjtDEn%7 zt+L*dQzPHpw|Ty;=Vsa^ZvP0IbK6EoK4x5PJQ=PS8y>Bv;;{Vn@36tkdy$P#v=10v zWn3w+j>zlnZ9jO)9NnaCJW9fyls6u%JL6T(TlwsDt5}MXJu4`UH&G^hCg&C~$gMk4 zw|*sh;8+lg8EUpCR-vQFOm3Q!b|KYuU9V@P62m8TYhjYxOSWNX>&9#pePCAIz&hAC z?~v9~@zU3it4%jP1&STp?R*2}%s+H2@3V|8O)|Yyvy7}z6$N{hkJ(lZSFXLke)VHa zz383%n~fE)1NVzMK4rUGM^K+)nI|0s*YO*@$zN^$N|DLTmoe+&6ulvR*=hNm(A6&k za|b^u5myA2RmEeumFtU__FHwIT<08oWu=8c&&y*@DHNr0?s^=|LeNuyhD6AcVPVxz-EZp1t}kSJ}d-@_t|<*doKwRG7RR@hChVn-`EPiCKA)5FY2apO z(wF@c=0EN3K;Kk-e;Cjo5_$h)P2PI!ssi);uvN1Bq$-dVDqeJb6!JK2URqbxRP5_( z4g-amjVEZzL!gsp6q!Dl0nc#uawC@cAX_po1&Go*=hT%B_j)=?s(E>GoZCe%ZSUQCo~Up@bgJXMyxa>;3@)*XTz$wL6a2I$ zI?Tm1TzIc|rle|CNh+Zrb@i z5^m436m=eS>~xt4(tg8qPYseuCK!iQ^vJYTy_AoOy+YuPRhT(dccNY(FC9I2OZ05e zDCPA*E|b%a(^J{dur&NoO563Ir$fiXe`ao4|ETqK{Mwr}^|?&r^krMz?#Cmvny!fu zNRm=4J;l!0t25Gea{gAXT~zXF7I|?-HKw-BK&3JoNAUeFm+xRP7jG>Gg$D)eG5z)3*+?2O=u)(z63ja&(?q|X8phdd= zvk&x5^b#*K3msr1cC+FB6NxWw+**;12LDo-ln~Q4Y)|p%ctm#VtnYcTV4gP%iB;HM zZvGX(uS?4o(hxpanjWh$b#$bTGQi<)Ep+_pamlb`v;H8d$q-il;pv$iS@AZfEy)?b z?rhOR)$TL=lsCT0s{Q!-6Q9>$BWG)riNjvk7R%gDaPSb9dv z8W~hbwz4y#o@7b#`;5NN_xJt%@q2ym>&~5X@44rF&pr3td(ModmzNE|0sO1{$b2Zz zCd-0$EFdzFtNwv*-X!(_o6!_DAoswhoWl&U6NaWaGQ?}}tYL-zcZl`}kT2Lbc}06~H& z8PiB&6afiCEAc5QL#EG?xZyd$J5p-roV(>o@v`}k4WpeEZ}-LH0JgxN2G>O>R0F6i zMgD|CLWIHzkcviwW8UmB0mFY9BlIPZYXFs|OsVSdMa<}INKuT?4g%oVJe;!Mus%Ja z6b(*BXqs9@aHHp?C@+;2sdrjc>%}Nsnu_=COsjUji`ZuvogQJPxgkOEGPo}Gdkutv zX?z5?K_`r2YyfJ&jjk7=bQ=^(P?XTngA}-ihbRya0FQGOskw^00ut4{KqmkQ=v#|) zT#YJ>|?Ra?XVF>*Kz!=KAjhMvfrdhE!bj;TURXPVXqCuC3? z&~uq2=BwFE6ceO!GadQT!Fh9;t&bgfe^Uxo!F}mU?6E7%g$tR2?I3lyEI2+rwicxJ zlzGRcpREEZ(}rMd###0li4C>eEVeC3WeT&qg^Y%jjJ`IIvTR=%&lLFgl-+r|Mh5q* zFAx=baTE!CGj|DYEa)bowqUS6ugW74k!iTtKYuAdNf#=gd$^Pcj2}l?s2G6V5&w0I>X9s$Wq0f9qGN zUO{}lN!Yo1FJHabBrSM_;!ow`3;@v5L0DB6%Pz$b8i>^}(ugA?tCtP}%QdpFJq^n@5 zv7Gha>b_kEM*u(&!Xyx3f<+i%L1Nds;e2fCO0}R6MuE!RZ!~`Iv0wNEXi)p0-;c(> z4gdi7UR8>8_e+@z$q!&va5gFfSfc?O+YHb#GP6N3ITh;&%T_#cu|PH2mss`!15v^liZld zxp-_BYE}wMML)^3VWJfuC3T?>KS~rr(lXsaZe|kGY$h}DjhQ0oAI%W(W2mU%VFU;$ z03QRSdJ;9vMdZzejVwj*1HwiF$r?Qxn%1^Ba}o0aTb!eq`9QL~xw^Tz2+l^>2q%iO zNioMI6M8j>!?w6FF&wUr;JgO<33)=@d{_)OFldgeC4=3uWa3!rzoBqLwm4@k+yGtE zItXu#BRGP{R|!LOoc$o#Tm(O4V?Hd3!=>Pc2MD+nvTG0yZ;u}u!r8Bd4G)Il2gw&< zY~-Nx(UBnXe!#@i1O@!C<2Lt(DA zI9GeZu(qA!8h8(@$P+MQ+yL3;YNRWf;95_1b@ao}{Y8)U-ReTIn$&+92f6B`4A7Ak ze*0QVSsO2xm7je%a^h_b`7Mq-W{Y=CB|3}y;Z1fy9XHJF*CL&VVy6bfyu|UTQ*FMmbYG3f1qD^O^@?obyaO)2%8!C257&I#y; z^AH~Ix<@7eM8uP#k2x+!f{96R`K>X%fy<3(`*r*|IWaK4P}M|wekg_&YGdJ=tJIw*@t>@+D}^1)e(#RVmc^h1tW z3e@7_VmdK63kiNVmX|y4jx?5+u(G^&N0eDjpj2^j`H}7>|Keisr3KT9FB!#)jo?W2 z=Y1utu4?5Gx}RjrVk4Mw(21d*E7@ZHsW0Rak|qXq;msO=p4 z*iWGcsA4bsrL}`j?qy&T!=`-7z>v8c zH~-%T0$_#t0qlOQOBiMT-*yyb+YwnH6~U+5l0@n=QSB2>Z1{q{cx0Hq|ky#^OOjX}+_QS9?wR+~Yl|Fu>*7!bVrMVu>sJjY z&oYw!&dRonM-Jzzg|p*u7JqnPQgh^<$VTO^KCy@aYRcHu67kNy!!H!UrH`HszE$)l zy!m+0nY3W9*p>n3V0!4rT8dfQeH-!BbIuI-ma#j;yZ8M}-hRm#JL;z&d)`$_ItCm$ z4hNQAhx@$+1V$i@S5H}CbRWQcYkW6N=8p=}yw~aq%v?C8`_4RS+gU*lPM)I-r)cOM zj};zZjcZ@79b)QHL*o|XH9ItWiM)tjgZwMc%f~6JH$K>1nchnO@K>?l8Ql*9O=Enw z#@*|$6&oGv@Q;x~^ga$_?NlD`zdEdb>7nyq6~C_8Y=)KcYh_5h2-*8n`ZGf8NOqMl zqNf!zehYO#$S`|vNxP9uTV3jHAZpL~+4lG#97{~Zd}aQNy-b$4Rb1uFhk`^_NTrA~ z>Gtt02wAf85toR$Wn8wUi}GWxy5p@DLCp23!qulylbaaRUfYieydpjG!!_$PiT8F( zsNSH1k%>D;32x`0`AW|pjZV297*>KoHy;IXXqdTp1_dMES#542G#h`Wgj{XincJD1 z!!ndjYV9MB-deMpKXGr6TiJRzW6E{gy}epzv1H?FSzGyJz7kr?LA`qNddKG0(QL-` zwe9VVpQ8;&^B~GLxId0L?vMY&K~(GuVymy$1@>!6;uUmU$8{d1dFktY%dZ+M3tLZF zpR*w8X40*UP946&!+tCPAf=0Zwn+$F;P1bGWG{0k^y^{*b}05_olqk7d;MQ0x7MGg z-r62QM|}>n6DBPp&c;RMG}Ki3xBNKLuEqMHNXd9oahth6^;X8fp^;M((n|i-htnei zOB`zR{;tnVTl?WjQ^`6T6UMmr-v1NxJ0h#>u%iDk>DT*2)%N*&4o|xylb_zzM#t!N z5Grj;@7l+xG9$h#Tu}bOkSoY56!I|a-Ll)y;DqE6eGH#Z>Ime}_mC0NLSRL9GVw!F4gj8t*0&pSDvWV77Zk@_y z6;BjP*M7IA+hQa${(SfAWme~d_f%A9X8Y?iB$KPd>F7mae@Q~o0Wodqo8^~}*Of@q zq~*->19Ah7%nEdGyF?zSdaK-F-P0iZ+-cND?NzXBth9T;q~T2Gn}=s`QBOL?InIMR z%V;0Kwa9W$SVG)NrVtz-Aomt%wiv^Zd{T(c`aLBH<8M9JmX;$6aItSOPp+T%L-5zo zwdZf)_TLtZ5EH8OP`qf3cj`$9VTUhA(lPJ2C2i)-=I!cnn*pDXV*xI_HH|ECMM{Co zU6CnXl=~IYx`h1EbK?)45N;ED_Dafgz4V!(xNP>L4xogbaXVa$)K=f!39G zz&eBcjffsctqSkF^7Bo%PeX2s@A>;23KIS-dr!~@=_l??Ohr#=&6gvL51$6KE)~@c+pIV}$*5i|` zB`ea@YEViX%6k0{*OdCw#}bK9GcTJ%gY`V|v6uImD`zOK2Mpb7tGzwa5-Y+RJ#sl!(35DViVWB4Y!huDymX_$Y?svYp$n^|H;bf3xUn z+ARxZ8lE21&hDD1`|{#$0_*a@^?=s`pXxoNq4`eN?hdH@YUq~P#A@>%J5W70v8fvK zc^E(U_qvuk_41j8YMH)$2yu*PEdt<7O-(uN}~>1clX zp7gMzYi$-jM0l`N@Ors!Ym?y830sNG`3Y>f_fz_Se4#77Z@PG!1bM&uAH)twg{XZ z7G%JBHoX0|d&bvP+q$21m<4&37T4zw^4(0SRmlOdw z&%_j1O$Qb-HEonlT!qUe)xB0!QmtS!aW^|xY14C|t}w0M#ld3jK%ql!3&ydAg>c)t zkuN0-@(i+-Ah z#dP*3;O>Xjt?I4?op_VUP1QZl8|+&bEvGaQ^*)&wRY!;2PdntUox57&vw!3d=kLnr ze%-v5{l>Whxg%R6i+$idEir@rfwpN$eZSkTI?`dSrgW%TsTzAuuDM^N7N3Eu#NRd^jzbs~z#Gv18Zz9XO1=E0L#<2@eA2}4QguHSx zlOUYkX7tJotd>mJ9rQa{;@5ls$MkAZah4Q%t-pV)!Z}n?>xuo~oc}dDJKyPk+CXT= z;#^_OC&s{-y(V6ox8c#NLwn!J`z|=js&A`debEmy@*3j3y>9FBO!#ru9x|(NP`sx3 z>mh+AcQ){*q zZ=(iOa&L+PSxDkH`J=od;n_znIvP76F9BQez+>!r-oK*nOXsbJL^1I#hJ=y1*eScA z!4G3mZY9S#St`R>d*q_e3eui(Mbm2reR333dOWrrAPm-u{<(Y~@yrI@IgddpL|y!r zz(~;};<2g^M!KJL^OqZWZah~N{AH?_v$eh5>#8+ko<@urbxykZy`(kuaiiMxpM?Y> zVtHAGpOKq}DX*Be|L~!X8I2Q$U0i#XQC^(80qv6<;LJjP?iL~@8oY%5x~#Uen72o; zNTs>dLCHtnf*W$MihtHCby;0w3N;B;ayC!|3l-C*}sAhhMTJkVzYj&a&}hg zarYK}siQq`J0d-@n!|8KU;8UMNhxVMjb}9_*4Vw!WD&k?bytTjF?y(jhJL;!O~W@H z5@<@UvEe@X^YE>^`+#vIo~eHQj)OzXb4Z5tkd%h9hOOsgHF499HymDW{=cF;wU<*~ zEc(A5A6#t`$@-~R$lCuwF!Flh8lzs%`(&H@sDD~|zoyCcQ(Wb8@{c;k(i4|P&3#Qs z+wY1wz6SmTA0oZDRx?-w^B|x5PPOni6{%$HbQPfw`Iny1bB-VaMg~5ZL?~2e{NEfkqk#81fu(_?m4P+^P|C(U;0?sP? z)a#Pyb?55R;dlEk*mb4Ip3iJKwe@91gfQX$P-|(UOXvVJN@$nEzNz0;{qK7_RIMk9l88j zv)&kD-{chQ`>^PV$Zg`s#5^ENq3m;2uP6M8gqVf@lMucTCW?D5Q#hRDdrEznx6QO0 z=X#zh-Tvg5@cmn!S4&rPn!X1wWnKv*O^-7|)V#R-1#!2+GK6QxT$i(2EjWu^qddAF zs^nzvDcL9CIX*7u5MNS~Q5EN}z3zF!Urag6vB_wfeB(!V tWo;k6kaNo4-~Z*EbgpHAYfU^dJ~wVS{W+u!vE+KIOL{RBprAhq`5(HmIdT91 literal 0 HcmV?d00001 diff --git a/mods/default/sounds/default_metal_footstep.2.ogg b/mods/default/sounds/default_metal_footstep.2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..aa61ed3386494085a1d81b587680a23cc888903e GIT binary patch literal 6926 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 K3H)D0GVnjGFILb1 literal 0 HcmV?d00001 diff --git a/mods/default/sounds/default_place_node_metal.1.ogg b/mods/default/sounds/default_place_node_metal.1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5da085ea22be01f93c63acb6e74627b6b998c105 GIT binary patch literal 7518 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 Jk}7cje*kTV|D*r_ literal 0 HcmV?d00001 diff --git a/mods/default/sounds/default_place_node_metal.2.ogg b/mods/default/sounds/default_place_node_metal.2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5ee67fcf605e3804a42579bc665873ee06343135 GIT binary patch literal 7854 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

Dtb>4_A6_ zBxv@J7i8=4WQ&xiizvV*?>P)@9QqL?U#GE<@#D%SwxzPN+H5c1+<^PgmRSPQr0qt? zk?xvcjc!=NL5?UIjKVKi9!sj_SC}xwfD`OhCPX=oJcEAr^z*X z`N!|E!`nhdS05l|KCycpX66oP3k#{3M&j?ixq?H>a|M0>HDQP53Q5DXrMy$k35Xk_ z@FshCakBpy68>o1H=w^+?iww8ij8=Rni;H6I6nMfaSI;0q;2#-eal{MD>Vc$gz;5p z)Y^%1CMU&RS07<=7Zv!J*vY)T8MXc>DKveAdBH)R~(}^PPvJW`kxG zFY3FVCP1Sn4@{>E6iAyEg3bJYyqb;e7E!dNjFF8(d>6@JtGdWB4qs#f&%Xz+fC*&D=BwN02n#JQ_=akKeyt}k{)iB)%=#|EE%f${gtDrNcDN) zr}%n%zUF|Kk?t4qO40s%RqGuAD;Mn%`0yi(d6HFV8Q=TKSBA&pk|hr>oOxN`C1cc6 z@ArkH?zNBmHz4Rm&FdiXN`I2+Cy}^bv(o1!k*cQ`ELNQD9v40@{1}+twp_ogeg=b* zX3hK_XM5Ma?O_A@o@(&+aju^y^?lZpYLDE>^l+fl3@GUeIC8sLQO4=g5UYmrhf{v{ z!-e}5N=%3%Ve<3Ei>+@(CWGWSFii!aJWZY%=rc8@+g5e}kLGD5c6|ma*X4Rf{^DK9 z(>km%-=;MJB5Le(X0=^ysPTdIZ@)#JR~vkWIP7XFnt~GX-;HXhVJEC?Z+Ld#v3wVo zx%NUY&R0ix@3h@#i8sA7Z9lK0sYyK=(8A06p<&dHnoHOiKen<~5y&I&oj=ozT)Q@D z8esmGWcnubP=h#@VOu3MAUNlg?%ttvN7x=~deHO>#|ay{0|I)os;+sE!zcytpYfkc z4<5t>+BN+o)rsx3ja#J(wlv!GS@2D?k_^@7-@a;<4`VWW=$pR4d@U3GNx|g_`tfQ= zx3NU%i%*;iC%VFfO3%qCnd^sH+JB+59?(y8IJX`|k`phm^%x9_!6^%PomMQjOZr+B zW0~J8xahYwlvmVWJxaLwWwE`l#{PUc=JFAlpMt_L? zRM2LDII%hO!As9KOFv((hw=p1ZTu=7^-a4Zs3N*4A)w+cabP5ln&x!zBA@?gjrvZ@ zB}d|_d7LxXiDc?D$*QB$a|k<@C3-1KH0aa&a|fe|0x^u=t~8Fh+}!#q)XX-fR=H5Z z=P1294zuR}N2Ohqs$NF`?ztUDShTWhlOh2a3MW+T^*VRV@``sw60* zak?I|+>3YM-|Ea$PS xjP_Xj;AiRDUF~w5u2cO)_|vehxG#c~d)st3^;xgb*9TPo1imKUvQN(i{s&z4)|vnS literal 0 HcmV?d00001 From fbac9be51cb8acf23b9c1983d2f21dca87209306 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Wed, 19 Oct 2016 16:34:22 -0700 Subject: [PATCH 126/196] Change many metal nodes to use default metal sounds --- mods/default/nodes.lua | 12 ++++++------ mods/doors/init.lua | 4 ++-- mods/stairs/init.lua | 8 ++++---- mods/xpanes/init.lua | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index b575704a..5c7b1638 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -956,7 +956,7 @@ minetest.register_node("default:steelblock", { tiles = {"default_steel_block.png"}, is_ground_content = false, groups = {cracky = 1, level = 2}, - sounds = default.node_sound_stone_defaults(), + sounds = default.node_sound_metal_defaults(), }) @@ -973,7 +973,7 @@ minetest.register_node("default:copperblock", { tiles = {"default_copper_block.png"}, is_ground_content = false, groups = {cracky = 1, level = 2}, - sounds = default.node_sound_stone_defaults(), + sounds = default.node_sound_metal_defaults(), }) minetest.register_node("default:bronzeblock", { @@ -981,7 +981,7 @@ minetest.register_node("default:bronzeblock", { tiles = {"default_bronze_block.png"}, is_ground_content = false, groups = {cracky = 1, level = 2}, - sounds = default.node_sound_stone_defaults(), + sounds = default.node_sound_metal_defaults(), }) @@ -1016,7 +1016,7 @@ minetest.register_node("default:goldblock", { tiles = {"default_gold_block.png"}, is_ground_content = false, groups = {cracky = 1}, - sounds = default.node_sound_stone_defaults(), + sounds = default.node_sound_metal_defaults(), }) @@ -1849,7 +1849,7 @@ register_sign("wood", "Wooden", { }) register_sign("steel", "Steel", { - sounds = default.node_sound_defaults(), + sounds = default.node_sound_metal_defaults(), groups = {cracky = 2, attached_node = 1} }) @@ -1895,7 +1895,7 @@ minetest.register_node("default:ladder_steel", { --wall_side = = }, groups = {cracky = 2}, - sounds = default.node_sound_stone_defaults(), + sounds = default.node_sound_metal_defaults(), }) default.register_fence("default:fence_wood", { diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 7a8006c6..52564b0b 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -422,7 +422,7 @@ doors.register("door_steel", { inventory_image = "doors_item_steel.png", protected = true, groups = {cracky = 1, level = 2}, - sounds = default.node_sound_stone_defaults(), + sounds = default.node_sound_metal_defaults(), sound_open = "doors_steel_door_open", sound_close = "doors_steel_door_close", recipe = { @@ -621,7 +621,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(), + sounds = default.node_sound_metal_defaults(), sound_open = "doors_steel_door_open", sound_close = "doors_steel_door_close", groups = {cracky = 1, level = 2, door = 1}, diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 132c0e6c..6a433525 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -473,7 +473,7 @@ stairs.register_stair_and_slab( {"default_steel_block.png"}, "Steel Block Stair", "Steel Block Slab", - default.node_sound_stone_defaults() + default.node_sound_metal_defaults() ) stairs.register_stair_and_slab( @@ -483,7 +483,7 @@ stairs.register_stair_and_slab( {"default_copper_block.png"}, "Copper Block Stair", "Copper Block Slab", - default.node_sound_stone_defaults() + default.node_sound_metal_defaults() ) stairs.register_stair_and_slab( @@ -493,7 +493,7 @@ stairs.register_stair_and_slab( {"default_bronze_block.png"}, "Bronze Block Stair", "Bronze Block Slab", - default.node_sound_stone_defaults() + default.node_sound_metal_defaults() ) stairs.register_stair_and_slab( @@ -503,5 +503,5 @@ stairs.register_stair_and_slab( {"default_gold_block.png"}, "Gold Block Stair", "Gold Block Slab", - default.node_sound_stone_defaults() + default.node_sound_metal_defaults() ) diff --git a/mods/xpanes/init.lua b/mods/xpanes/init.lua index dc7428fa..7137aeee 100644 --- a/mods/xpanes/init.lua +++ b/mods/xpanes/init.lua @@ -164,7 +164,7 @@ xpanes.register_pane("bar", { inventory_image = "xpanes_bar.png", wield_image = "xpanes_bar.png", groups = {cracky=2}, - sounds = default.node_sound_stone_defaults(), + sounds = default.node_sound_metal_defaults(), recipe = { {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"} From 3c9d71e6f7f770ca6039f4d43f11e319918f1916 Mon Sep 17 00:00:00 2001 From: Fernando Carmona Varo Date: Mon, 24 Oct 2016 20:34:00 +0200 Subject: [PATCH 127/196] Make flammable: Flowers, grasses and several crafitems --- mods/boats/init.lua | 1 + mods/default/craftitems.lua | 9 +++++---- mods/default/nodes.lua | 6 +++--- mods/default/tools.lua | 6 +++++- mods/farming/api.lua | 6 ++++-- mods/farming/hoes.lua | 3 ++- mods/farming/init.lua | 8 ++++++-- mods/flowers/init.lua | 18 +++++++++--------- 8 files changed, 35 insertions(+), 22 deletions(-) diff --git a/mods/boats/init.lua b/mods/boats/init.lua index 37cb916b..cc55b93c 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -221,6 +221,7 @@ minetest.register_craftitem("boats:boat", { wield_image = "boats_wield.png", wield_scale = {x = 2, y = 2, z = 1}, liquids_pointable = true, + groups = {flammable = 2}, on_place = function(itemstack, placer, pointed_thing) if pointed_thing.type ~= "node" then diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index 59539f37..0c51c713 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -3,12 +3,13 @@ minetest.register_craftitem("default:stick", { description = "Stick", inventory_image = "default_stick.png", - groups = {stick = 1}, + groups = {stick = 1, flammable = 2}, }) minetest.register_craftitem("default:paper", { description = "Paper", inventory_image = "default_paper.png", + groups = {flammable = 3}, }) local lpp = 14 -- Lines per book's page @@ -132,14 +133,14 @@ end) minetest.register_craftitem("default:book", { description = "Book", inventory_image = "default_book.png", - groups = {book = 1}, + groups = {book = 1, flammable = 3}, on_use = book_on_use, }) minetest.register_craftitem("default:book_written", { description = "Book With Text", inventory_image = "default_book_written.png", - groups = {book = 1, not_in_creative_inventory = 1}, + groups = {book = 1, not_in_creative_inventory = 1, flammable = 3}, stack_max = 1, on_use = book_on_use, }) @@ -176,7 +177,7 @@ end) minetest.register_craftitem("default:coal_lump", { description = "Coal Lump", inventory_image = "default_coal_lump.png", - groups = {coal = 1} + groups = {coal = 1, flammable = 1} }) minetest.register_craftitem("default:iron_lump", { diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 5c7b1638..f185bde3 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1103,7 +1103,7 @@ minetest.register_node("default:junglegrass", { sunlight_propagates = true, walkable = false, buildable_to = true, - groups = {snappy = 3, flora = 1, attached_node = 1, grass = 1}, + groups = {snappy = 3, flora = 1, attached_node = 1, grass = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", @@ -1124,7 +1124,7 @@ minetest.register_node("default:grass_1", { sunlight_propagates = true, walkable = false, buildable_to = true, - groups = {snappy = 3, flora = 1, attached_node = 1, grass = 1}, + groups = {snappy = 3, flora = 1, attached_node = 1, grass = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", @@ -1154,7 +1154,7 @@ for i = 2, 5 do buildable_to = true, drop = "default:grass_1", groups = {snappy = 3, flora = 1, attached_node = 1, - not_in_creative_inventory = 1, grass = 1}, + not_in_creative_inventory = 1, grass = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", diff --git a/mods/default/tools.lua b/mods/default/tools.lua index a948886a..d4dd9739 100644 --- a/mods/default/tools.lua +++ b/mods/default/tools.lua @@ -32,6 +32,7 @@ minetest.register_tool("default:pick_wood", { }, damage_groups = {fleshy=2}, }, + groups = {flammable = 2}, }) minetest.register_tool("default:pick_stone", { description = "Stone Pickaxe", @@ -110,6 +111,7 @@ minetest.register_tool("default:shovel_wood", { }, damage_groups = {fleshy=2}, }, + groups = {flammable = 2}, }) minetest.register_tool("default:shovel_stone", { description = "Stone Shovel", @@ -192,6 +194,7 @@ minetest.register_tool("default:axe_wood", { }, damage_groups = {fleshy=2}, }, + groups = {flammable = 2}, }) minetest.register_tool("default:axe_stone", { description = "Stone Axe", @@ -268,7 +271,8 @@ minetest.register_tool("default:sword_wood", { snappy={times={[2]=1.6, [3]=0.40}, uses=10, maxlevel=1}, }, damage_groups = {fleshy=2}, - } + }, + groups = {flammable = 2}, }) minetest.register_tool("default:sword_stone", { description = "Stone Sword", diff --git a/mods/farming/api.lua b/mods/farming/api.lua index 71c5a67c..b9ae818a 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -92,7 +92,8 @@ farming.register_hoe = function(name, def) 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 + end, + groups = def.groups, }) -- Register its recipe if def.material == nil then @@ -269,7 +270,7 @@ farming.register_plant = function(name, def) -- Register seed local lbm_nodes = {mname .. ":seed_" .. pname} - local g = {seed = 1, snappy = 3, attached_node = 1} + local g = {seed = 1, snappy = 3, attached_node = 1, flammable = 2} for k, v in pairs(def.fertility) do g[v] = 1 end @@ -307,6 +308,7 @@ farming.register_plant = function(name, def) minetest.register_craftitem(":" .. mname .. ":" .. pname, { description = pname:gsub("^%l", string.upper), inventory_image = mname .. "_" .. pname .. ".png", + groups = {flammable = 2}, }) -- Register growing steps diff --git a/mods/farming/hoes.lua b/mods/farming/hoes.lua index 31da19ff..5aae3903 100644 --- a/mods/farming/hoes.lua +++ b/mods/farming/hoes.lua @@ -2,7 +2,8 @@ farming.register_hoe(":farming:hoe_wood", { description = "Wooden Hoe", inventory_image = "farming_tool_woodhoe.png", max_uses = 30, - material = "group:wood" + material = "group:wood", + groups = {flammable = 2}, }) farming.register_hoe(":farming:hoe_stone", { diff --git a/mods/farming/init.lua b/mods/farming/init.lua index 45370e73..9fff36e0 100644 --- a/mods/farming/init.lua +++ b/mods/farming/init.lua @@ -14,17 +14,20 @@ farming.register_plant("farming:wheat", { steps = 8, minlight = 13, maxlight = default.LIGHT_MAX, - fertility = {"grassland"} + fertility = {"grassland"}, + groups = {flammable = 4}, }) minetest.register_craftitem("farming:flour", { description = "Flour", inventory_image = "farming_flour.png", + groups = {flammable = 1}, }) minetest.register_craftitem("farming:bread", { description = "Bread", inventory_image = "farming_bread.png", on_use = minetest.item_eat(5), + groups = {flammable = 2}, }) minetest.register_craft({ @@ -47,7 +50,8 @@ farming.register_plant("farming:cotton", { steps = 8, minlight = 13, maxlight = default.LIGHT_MAX, - fertility = {"grassland", "desert"} + fertility = {"grassland", "desert"}, + groups = {flammable = 4}, }) minetest.register_alias("farming:string", "farming:cotton") diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index e572357c..436021a8 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -57,12 +57,12 @@ local function add_simple_flower(name, desc, box, f_groups) end flowers.datas = { - {"rose", "Rose", {-0.15, -0.5, -0.15, 0.15, 0.3, 0.15}, {color_red = 1}}, - {"tulip", "Orange Tulip", {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_orange = 1}}, - {"dandelion_yellow", "Yellow Dandelion", {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_yellow = 1}}, - {"geranium", "Blue Geranium", {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_blue = 1}}, - {"viola", "Viola", {-0.5, -0.5, -0.5, 0.5, -0.2, 0.5}, {color_violet = 1}}, - {"dandelion_white", "White dandelion", {-0.5, -0.5, -0.5, 0.5, -0.2, 0.5}, {color_white = 1}} + {"rose", "Rose", {-0.15, -0.5, -0.15, 0.15, 0.3, 0.15}, {color_red = 1, flammable = 1}}, + {"tulip", "Orange Tulip", {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_orange = 1, flammable = 1}}, + {"dandelion_yellow", "Yellow Dandelion", {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_yellow = 1, flammable = 1}}, + {"geranium", "Blue Geranium", {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_blue = 1, flammable = 1}}, + {"viola", "Viola", {-0.5, -0.5, -0.5, 0.5, -0.2, 0.5}, {color_violet = 1, flammable = 1}}, + {"dandelion_white", "White dandelion", {-0.5, -0.5, -0.5, 0.5, -0.2, 0.5}, {color_white = 1, flammable = 1}} } for _,item in pairs(flowers.datas) do @@ -136,7 +136,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, flammable = 1}, sounds = default.node_sound_leaves_defaults(), on_use = minetest.item_eat(-5), selection_box = { @@ -155,7 +155,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, flammable = 1}, sounds = default.node_sound_leaves_defaults(), on_use = minetest.item_eat(1), selection_box = { @@ -229,7 +229,7 @@ minetest.register_node("flowers:waterlily", { buildable_to = true, sunlight_propagates = true, floodable = true, - groups = {snappy = 3, flower = 1}, + groups = {snappy = 3, flower = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), node_placement_prediction = "", node_box = { From 41a334571890de03a74e13c74242a9882ab2a2f8 Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 25 Oct 2016 03:42:08 +0100 Subject: [PATCH 128/196] Default: Update and set volume of damage sounds Use 'player damage' sound for both damage and falling damage. Gains for damage sounds are set in the engine, however we cannot change those gains as other subgames already use damage sounds based on those gains. Sound has been re-edited from source and normalised to 0 dB for maximum volume, which is only just enough because gain is fixed at 0.5 in the engine. --- mods/default/sounds/player_damage.ogg | Bin 6490 -> 6176 bytes mods/default/sounds/player_falling_damage.ogg | Bin 6701 -> 6176 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/default/sounds/player_damage.ogg b/mods/default/sounds/player_damage.ogg index e86f2864010d81c8b08e9e342a8d68e2a4b17669..788808710c1923c9ae797b7534b66a97dd18dd6d 100644 GIT binary patch delta 2306 zcmV+d3H|okGN3RTPiJRS00IC200000001+a`8@yt004fKx^|HoE(|l9`8@#u003d9 z&Wo{B4-bC>GXMYp0000poB2Hg00022`EXkmCL|{*GBh$U$hp71v8t7mf_YX>5lk6% z5nv^yrQbRGCU8VBy^G0|b!yXel`ogXmAc5FXk#9ZLk}P32zJ-J;M_(L);6xXe1^`;BrOc-&8W0Sx z-!ERK=wZmgkN{&MCvwFY5(fBU>a&F{lAX@~cs_fY8R*-_? z!^2z`+Q)^Zi?9e%O0=yag7QAn^a2M5B&lTaYPnPwf2N+tf9K1VmBm?vT3&{y|x zRxo#`I#M$Qg5#@P>H9Y>HIK(74Re1ItCjxzKj$@kKPY8MRDobVm#=I@Ja0Wwp!2C) zoF8y--Pa{nt38H%CSi{U>&@Yp^=mOIh-uao^(6}l*){r$mt<{MrowlI;t?OrZ38gV5KNN{a?vn>#g6J+dd|r zy!&ChG0Xm7^*=^dnz02jU4hib+Oi4wwm3AL_NE2fE#d$HRxiJ;>b!I>FJ`25lP%ou z#wCT`1$RkH%9WEjtpTGDz?&oO?IHOq*wozlfxuJRHoEmm3%(l%+MRN}Eo^p25u1TboN;pf8OnO<_7Gf%r5PTGoPDp1erdf;-UW&J-BW#SWwt z`bP>1$~wC#FQ&J2d*bhR9+SsSZ-t~#Gfko{ zwtPYEDm>o_#p1Y;td*H1plHXnd_Sy-$RWP-Ak)R|d!t2_G`nTFwaYnggvlHpG$^C#Qe{ zr~wlIUWhDyjc*JS6YPtT8&V4^oC952Z6aYw=@`JxVa5aJ+c(eoJO96JoJu=C(2f0s z%_7{6(9Ga|WK@5J1Dv1V2Z2=M0dj4l{J6I8Xo82Ne#(su$zEdmQfc?flO+IO4n@Av zxI(R_TLd+taz)QRg&zI8Diif|5qwCjf9^-K^tP@Pu*;=JoB+&7A8V!7k5xed;kxJm zr{fG~3*`dW*k7C{aLVi50vZ7Rhb-}k*$5_XsLSDdf^2^*f!9IXbbWIGWR7ML0E(AL z{~C_ltGy>A_A6t2^y5%2e|;gsByO-ukT44*WD$#U8t}dhz@i)G=$j`Ra}*L3yaBOv zesMJS4*b_LK0V!5P3_?K823Sk$UD%^Mo!tZhXB4UW45KvX1=Xq3gq-~Njw0|8}1pr zM^XR)fD?ZJbbw<30091mbmkUv#B3sj>(Th4#GJs=P0+Tz4IqnbAsqnl3g~EcdL>&e zcz1c*u$D|Um!AW#DhxH6>uecCL432FS5GET5CTAr$IFraIrEX(So4q8;7LNC+jQ~5 zc9^0jKhEXr=mDt9#X%BYUq=`O9Z|^)MqO(`{$YPLH&LtMb_$TDeZ>I@K&vi%(&wrG zZm5EC0RTRRH2MH7z&Pfy+}p5;cnfnA@d2rOrY=NzDA6bRzQIZyxqt`CB>E?via5aL~ zIOWZo1Yo(SK?{^0d3pztu(c-ObiMu7nx=ndz*w?SmjVO8Tu%i6AWs{B{BiJrK6NXcrO004gl0G80+|0SXi0OU)60pR}~0G@^X_e?zdX2&tkTh1&dkTp)l z1E2#!T)?3rBme*a5CNZ20C@3!^M3}vUe5vm007W_&s6~6e+mEyaLfEI27n1*`jrN) cqW}Q7zH9&h-i7?h($ delta 2623 zcmV-F3c&TCFxoO2PiJRS00IC2000000053>c{%_9002r7fen!wE)0%mc{%|A005i& zC&RH+4-bFGG5`Po0001vXL&jT0001dyla*fCMzd0GBGeM$hf({yREFUqphW$5nLHX zMwX!YMws#m0T>BRHfKoO$?XzLnxJ`9aWiUDnQx*{2lY8z5j}yhuMHtXREKN;E?5Tm zb4Z+L$uEn|!xGAr42m!86iyxjC5}1RCICzkeM)~J14l&q8-Pph9IPKuPaI-p>Mqt! z37#*3^F+P3qN7I%Y5+6=b=a;*#v)9ys;2}fXPv|a;wr5kf1KyAF2fNZ=;$shP+rPX zxXu9mNL2cc#EjhmG)jxK1Y@>&gL*h;0B*3{mB)b$sjEyp$&*U_U($bKl=wf|soxKA zD{p`Qb@cT5(|Z7HQVY2U;b8~j{DlPN*v5-sbve7`F`nX_urNfJX`5X zYmW2yAO!galwwPi5rD#QogV@z1}TyqV^v3)zW% z_vvYGA0{*7eC=mt&Z6$ZeBELZ&eN2v(H;AQQMkCEX7IoO&uU=ta?8kmVQKE}*lB-u zG=kyZUfjSjMNmKPLp6OIxSr_yp)D$xYD>u01xhe(OvYZZo3LA>F3-3!PsCL4V~wm4 z&;HS1W|K*suw?~bVwy>ze8OtPJfX-*nc~6VrS+Z0taYKODXyMy>?#2MX-%aBSr`B{ zChsE$u+laFZCYuJMk}Vk8qaJR`09UqD-;;ryw=mOI_c)jyz=$bppE&MRSysuxx*F4 zGDH#wiscOh+HBCVaK6duiPdg~Eg!#!^*y7_HQ%1*prTa`c9Qv4Z8Nb2$nj>fEx}48 zP^a$N)5t~(9g<78G`uag7Pxjo33jq4Vpm4e#5uIOirqV-f!agltie2QwO)U@zD0b9 zi^9gMnt5Sz*e2h@8LQS3wO-b%0Dk$5t;S@HDX55=yc^60U?HGaNsO{)E12STwoF?4 zKmPc}MvY83pj~Wi!|6xb)Ts1PhB%5O;6|qy^cfF08rNa@S{JfNw@5tn023)TiX6eq z`zuMKkBHkz%_@_9^w&m`E7mv%>D4tI#VkDX(`x}}3$tyblt+P> zCZFl4`AOmYOmdgR1X29?iwApnGd=KiA(#|g>j@hmYlXR8SL}y>6$UXLT()c}^j57Y zl!<@hC!@`@vdDF&`7?hjRrI5;b&cWVNGUb)Qi$g*LgoRd30{aSu0*#5S_{UhJ$Xf9 zP6^s~pvJKhFJX@vC=^NjqJUS7Dc%g{Wd9Fu?~Fm0^5;q?Ib+%toekiaVZ%P|6?x`= z3X#DPTf*dwd3nKsDghj5z)-OUtFelJiW%d7Ew)sy|8CQo4uBJ&4Ft} z2AcBVtvlrD*k1d&DAR@BX+DTdW=#x^feCdy@@_$PLc)5i<(t8W{4G1w`d86yFd*haQa9H`rjYbs1sM|q#H%_NFx~Phc5)hM$EgBbR325` znj!$#*El5%=T?K;?biTYRRMtXqL@%c!X$Pea=M?2bLf8n-iIt@j~xXGZ$;FxlJ^8X zqb-S&P}Ma#i5%yc0scA4<97eS+gafq4tDrQ|2oW-oF^T!q|5#Nr%2N^g}|e zf`jw)FP(qH(J27{AbkwS!2R4D05H%-72pJHK)wM00HEuKEM41lOSb*BVU<1i7Ofd| zbY6!{=^k>#Xv$Qk8pthZ1~nbfjA_?Tbab{_g)GJ0gf4UDX_K$b-Pb?1eomU!x_JAu zz=n)+){55PWZwi=+HpmP7~pV>G7_CzCtc_k7qWi<1Vpu(bLWjgw`MVU1|(Lt0Iy_k zpt^rWXkbSM2+1`5GwO$3HXy1?{dy3>uK|gj3xTH}aMCNN46PF!9F)&UVR45YQ|m^M zsJN;(q+4Ve0eqUz7oDv4POi3M02>MbK8DohmNYL5i>wc4WwP;<=B#} zm?D3&L8a4k)AW{qm%i$T!?TKGe=b2qF=fqDNDR6A&HWC05B0P=P`zR}Y|{M=J!==n z(|6EdU3?sfA;8&o2K+KHYWXy1nu@u3wOa>s|EQV+0?0Q2aQkNsbR+|40GyKknLAsn z6i&p$77sQ6li>N=fP$ZeJ$%hTuI|a5NV$JoMa=eW0RDxn?TT9ai(xwT*=*O+ylq=V|yia7)@kk8JSlHVqdFxEtnD_UHfr diff --git a/mods/default/sounds/player_falling_damage.ogg b/mods/default/sounds/player_falling_damage.ogg index 532462db48d70eded6d93544ca26a905d782e3b0..788808710c1923c9ae797b7534b66a97dd18dd6d 100644 GIT binary patch delta 2306 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 From bca0142e7f0318a9a17bf8c263af40ad2a83c7fa Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 25 Oct 2016 03:54:09 +0100 Subject: [PATCH 129/196] Fire: Reduce volume of flint and steel sound --- mods/fire/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 731505f2..a3457f64 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -90,7 +90,7 @@ minetest.register_tool("fire:flint_and_steel", { local pt = pointed_thing minetest.sound_play( "fire_flint_and_steel", - {pos = pt.above, gain = 0.8, max_hear_distance = 8} + {pos = pt.above, gain = 0.6, max_hear_distance = 8} ) itemstack:add_wear(1000) if pt.type == "node" then From 138eb71db60c293ea199872038d9aec5298ba33e Mon Sep 17 00:00:00 2001 From: LNJ Date: Tue, 25 Oct 2016 17:42:28 +0200 Subject: [PATCH 130/196] game_api.txt: Add new metal sounds func. --- game_api.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/game_api.txt b/game_api.txt index f758499f..6bf51af4 100644 --- a/game_api.txt +++ b/game_api.txt @@ -464,6 +464,7 @@ Sounds inside the default table can be used within the sounds field of node defi * `default.node_sound_wood_defaults()` * `default.node_sound_leaves_defaults()` * `default.node_sound_glass_defaults()` + * `default.node_sound_metal_defaults()` Default constants ----------------- From 581c3905916cf6cec6cfdbf9999364d4f415107e Mon Sep 17 00:00:00 2001 From: paramat Date: Wed, 26 Oct 2016 07:06:32 +0100 Subject: [PATCH 131/196] Default: Remove alpha channel from acacia tree textures --- mods/default/textures/default_acacia_tree.png | Bin 682 -> 579 bytes .../textures/default_acacia_tree_top.png | Bin 731 -> 639 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/default/textures/default_acacia_tree.png b/mods/default/textures/default_acacia_tree.png index 169823d41612d29e16c7faa44baae5d51b842de3..58bb3c4072b617af47b645cf78c3d92845fcaea7 100644 GIT binary patch delta 539 zcmV+$0_6Rw1;Yf883+OZ005AYXf}~R9)I8p8U_RcA#29s0005vNkl$T{@q_b*P;TH_?OmXeFP<#PP}{{H&;_4$li zYhwC*22q^n$qq;%@Nj%O^$wfp`N+4EKVuCp{L4;Wt#BGxY&9Y>vjCMW^S<`ltv3+gbLm{Y)_W~C1;8NAoU){QjEDe%nXl`r zMxYom)2m$wim8)}&MiI6y?HwDNrP z<7kOVRVB;$?=2#PnD>>KL?q_~fEl>PReOKG-_O@`j5|p};OGs&ecu2g;(xwIYb_9L z9@lyHM_+Tzy_uk@rgpUU`0*OoopWxzZM8KQffxi=o!4~tJ*Sz05D{525$!cgDSL0* z=HUPs;kg`p@1q_7*P~|1%sl7py)&~1YON_J0x=*U27mx3>4k}?_8t^MymfODGXs!Q da`#~R4^J^#!Q0JV8vpD%PDHLkV1j5c{2c%Q delta 642 zcmV-|0)73%1gZs)87Bq+001BJ|6u?C00DDSM?wIu&K&6g000JJOGiWi{{a60|De66 zlaV1Ff8GQQ2^1XGbQyO500JsWL_t(I%Po^jj@(ELL?4+SWvZ%e_(Zdt?cDzk#sEfF zNy;DTg=$9-AQ=&ikpKSu$2CN1t!RjplF2EvY?1QD|G$6p^Vd&auY*zwL50`rK*V{! z->3mGXL_HQP0Wlj2aXeia=c&Ul!-ACLI6?bf0~F2EJIZwMn$87D6KWdT$mZ=hMCcO zXRn2|7RPx2u;u~*MUK$A2 ze_ntnNdqYcuH(SnZ*Hob=SkTzf>XB4;-)uxLq$=z zPRiS-UMyP}+;2=NaU2(0sr25#jTFPDe=u7o=geLUtq&g0FWlD$0gj7vyk3;LqYCEG z&c^fk zQn*D_;5<&szVrS4&GYNYaa@ELz+u}f0M~T^;O<=KL9G?X(Phs0ezQMzdh4_?P~kSt zTx_-S`0>SYUZj+$du7Z;ZyiBU1Z+;)+3p;)##*;c-JKK@BEsm6oHJt#)>xR^P{#*u zq`Wc4U@IG-l&z3rLiNtZzVE0i=G=));d31#qTJ*_LuAj2h*0(&7bl7`=0HQdkpU?L c%nVoIFZeTCz_Zoow*UYD07*qoM6N<$f|}YHt#y0006WNkl$@J8#rL z6ov1M$7_3%S?4i^%`RCf0ucccJ)-7+01Xv%P^O@wgdQnBBn1*R5|NOI00H75lE}lx z#$G?>Nij>3f?J(?r8}c@?uQ;dxC{SE5&(F5?~ZSDQxVE^Q-1-# zd2zbDv%5#UdiU`8ub8Hc*cpyg>EVngtM;&-@ZWBhF~#FHCbIjQ4(Ne z9n^2%2P2wNCUQY|#tCK6Nkfp;x_>zMzH;S~Ixbby6HBy_bUH=|d4~Y7_`xYx&RsNX zT8S76lbhQJq3-ugeJl06Mg#%2gfgCS>^-Qm%GOajPAPzH<gS;rg_`#mf$3T; zt!^rj3+w}~Tlm<;U0IU^_eaOp+8>_|+qSiR2LM({tE_(-i(C-OD6w0pkAI@*q)-^+ zWG$I&q#*==2S)ZrIcJPNBJpkzLY)S!b*q$ZZ9j8GhfiF1EyGT!rq)Xuh)>Di(rT@( zHBCRA#Ma>DWt+SYA9qQJJ+ z$vQntiBR@JI9W+4?S#Q7hD0QA6l}U0ZC*|XqoH%|&Hl{Oxj^ID%g5)*TYyQ~>2N~X lndzO~z5lX(3if%t{{l{WK-J4`28;jz002ovPDHLkV1n(P6X^f| delta 692 zcmV;l0!#h>1lt9W87Bq+001BJ|6u?C00DDSM?wIu&K&6g000JJOGiWi{{a60|De66 zlaV1Ff8GQQ2_zerR=Otu00LV{L_t(I%YBo}iW5N;hQF$=PSWl4WG)@eOmsjL2Nm3l zYu`iNxYC_2UAS_od%*{BA-EPC5EK;^FE~otOkyW}tLiEjne>b!cs6zTDGulS7jgUM zHOHY!h6w<1FK+rpEwH#3H<$vrfBk9$m@Gwwe-S22=O2#rhwI*xr}F^-uWmhLaQOs! zrm26=5FH=6+`(3smahn`!z_1Dr#5-}>jns2QGFbv ze9&Q=ncu=oN`kt>xeIHUEG6#6sAQO6vXt8M8GRZPZy!gkErXS?Wl*ath<1P{1=hjz zf8}euen>Zr<{QMlcz#<^Q7eHphVh#(teicG{y9NsCCVyHT@h|=B7|tT0uDBC+A*0q z+M|rT5=6o$xU`KBg5uW*{dt0!O%Y0fw5Tv5?#0Lj2YQmyTNiXUyM%zrD}FrRA^osqNLq!vp3dADGAmB1{+;`JdiEws-)HqSJ#cP)PfKp1cd=(47t|W+)|Dl z<3h6Me9reIPHVEM;h345s_}seBdjqPYpJu6tw9G{OO}=-L0z-y97=iQ$%JSSe?e^y zRET>qCQFf%f{nNk4?>^g3!i{96STMm$O!Ra#M1mO%vl z4g{Vf#L``DbLvc&R(~1i94~f8P4F5kKX`oSpCC1f+s78~U_Vq1iT9p7{cn^H$M|TR a{{S1^LDaALQ)vJI002ovPDHLk0$_r>NivH7 From 048aaa2616e25ee15cd04a0d50f1a61ff2bdcd38 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 13 Oct 2016 00:48:56 +0100 Subject: [PATCH 132/196] Default: Add bush stem and leaves nodes To allow mapgen bushes in green-grass and savanna grasslands. Nodes for a generic bush and an acacia bush. Stem nodes are craftable to a single wood node to provide a small amount of wood resource in grasslands. Fuel times are that of corresponding 'wood' nodes, 1/4 that of corresponding tree nodes. No leafdecay to enable use as hedges or without a nearby tree trunk. Uses 'default leaves simple' texture for extra visual thickness. --- mods/default/README.txt | 2 + mods/default/crafting.lua | 26 +++++++++ mods/default/nodes.lua | 54 ++++++++++++++++++ .../textures/default_acacia_bush_stem.png | Bin 0 -> 476 bytes mods/default/textures/default_bush_stem.png | Bin 0 -> 428 bytes 5 files changed, 82 insertions(+) create mode 100644 mods/default/textures/default_acacia_bush_stem.png create mode 100644 mods/default/textures/default_bush_stem.png diff --git a/mods/default/README.txt b/mods/default/README.txt index 9ae2c002..19901674 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -92,6 +92,8 @@ paramat (CC BY-SA 3.0): default_acacia_tree.png default_acacia_tree_top.png default_acacia_wood.png + default_acacia_bush_stem.png + default_bush_stem.png default_junglewood.png default_jungletree_top.png default_sandstone_brick.png diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua index 7ce62d2b..a7a0daa2 100644 --- a/mods/default/crafting.lua +++ b/mods/default/crafting.lua @@ -35,6 +35,20 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = 'default:wood', + recipe = { + {'default:bush_stem'}, + } +}) + +minetest.register_craft({ + output = 'default:acacia_wood', + recipe = { + {'default:acacia_bush_stem'}, + } +}) + minetest.register_craft({ output = 'default:stick 4', recipe = { @@ -929,6 +943,18 @@ minetest.register_craft({ }) +minetest.register_craft({ + type = "fuel", + recipe = "default:bush_stem", + burntime = 7, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:acacia_bush_stem", + burntime = 8, +}) + minetest.register_craft({ type = "fuel", recipe = "default:junglegrass", diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index f185bde3..23b91454 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -131,6 +131,11 @@ default:dry_grass_3 default:dry_grass_4 default:dry_grass_5 +default:bush_stem +default:bush_leaves +default:acacia_bush_stem +default:acacia_bush_leaves + Corals ------ @@ -1216,6 +1221,55 @@ for i = 2, 5 do end +minetest.register_node("default:bush_stem", { + description = "Bush Stem", + drawtype = "plantlike", + visual_scale = 1.18, + tiles = {"default_bush_stem.png"}, + inventory_image = "default_bush_stem.png", + wield_image = "default_bush_stem.png", + paramtype = "light", + sunlight_propagates = true, + groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("default:bush_leaves", { + description = "Bush Leaves", + drawtype = "allfaces_optional", + waving = 1, + visual_scale = 1.3, + tiles = {"default_leaves_simple.png"}, + paramtype = "light", + groups = {snappy = 3, flammable = 2, leaves = 1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("default:acacia_bush_stem", { + description = "Acacia Bush Stem", + drawtype = "plantlike", + visual_scale = 1.18, + tiles = {"default_acacia_bush_stem.png"}, + inventory_image = "default_acacia_bush_stem.png", + wield_image = "default_acacia_bush_stem.png", + paramtype = "light", + sunlight_propagates = true, + groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("default:acacia_bush_leaves", { + description = "Acacia Bush Leaves", + drawtype = "allfaces_optional", + waving = 1, + visual_scale = 1.3, + tiles = {"default_acacia_leaves.png"}, + paramtype = "light", + groups = {snappy = 3, flammable = 2, leaves = 1}, + sounds = default.node_sound_leaves_defaults(), +}) + + -- -- Corals -- diff --git a/mods/default/textures/default_acacia_bush_stem.png b/mods/default/textures/default_acacia_bush_stem.png new file mode 100644 index 0000000000000000000000000000000000000000..290391526e7bb902bb49076399868d936f0f073e GIT binary patch literal 476 zcmV<20VDp2P)+b|S`KgqI*Z6-}p`aHN@)Y%j=eb7!AHlYg&@6!Q>#(%P;+l3*6sasy4 z+DS*}N4f|8FZDNIvo0jfb9(D>y=A+*p1iBi*B@mH5D|Lk3EuH96P@K5oAswZMU*Di z5n5^V1o^x?6>~HjFq0&FeI=qq&_?5fC%kqp3(2x$LhsPYEWz29Ko}(nKpe-2_)&th zvXI656>ZxN>F$5tvskTAD#AqOAfgaN2_~5x5}cKVEKim^+}$DKao!D6*p!8&Sx(n= zgL?=B39LSx&@~NB)qn&RPy4?21Z(-WyH*-tdv&AgdXJ6`Ix?hLidLGYZb;JR1ltm}G`4DcJfIke(r Sq7MrI0000PyFB&2tgp)BDSdi|2Y-gDt)L`Ng$ZSvC~CLMMc6F)VnLs%$=(l z_SkcgMp5AK#TR1mZ}>1%yO zetZ9-s%r{sn-tELj41%9oX2~|dc99HrWMfc0g-|6q3n!h!B!A zJu(T0*q;+|jk(KM#o69A*#-I0Fd7d4m_{M{{Q*-p Date: Sat, 29 Oct 2016 13:12:48 +0100 Subject: [PATCH 133/196] Default: Remove 'player falling damage' sound This plays when damage is disabled, an engine bug. We can remove it because both sounds are identical, now it is removed the 'player damage' sound still plays when falling damage is taken. --- mods/default/README.txt | 1 - mods/default/sounds/player_falling_damage.ogg | Bin 6176 -> 0 bytes 2 files changed, 1 deletion(-) delete mode 100644 mods/default/sounds/player_falling_damage.ogg diff --git a/mods/default/README.txt b/mods/default/README.txt index 19901674..4536de9a 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -197,7 +197,6 @@ Glass breaking sounds (CC BY 3.0): sonictechtonic (CC BY 3.0): https://www.freesound.org/people/sonictechtonic/sounds/241872/ player_damage.ogg - player_falling_damage.ogg Mito551 (sounds) (CC BY-SA 3.0): default_dig_choppy.ogg diff --git a/mods/default/sounds/player_falling_damage.ogg b/mods/default/sounds/player_falling_damage.ogg deleted file mode 100644 index 788808710c1923c9ae797b7534b66a97dd18dd6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6176 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 ZTKuLI{ZdhgfMUU(GDQmUQ2EEd{{a&>6XXB@ literal 0 HcmV?d00001 diff --git a/mods/carts/rails.lua b/mods/carts/rails.lua new file mode 100644 index 00000000..f929e84e --- /dev/null +++ b/mods/carts/rails.lua @@ -0,0 +1,58 @@ +carts:register_rail("carts:rail", { + description = "Rail", + tiles = { + "carts_rail_straight.png", "carts_rail_curved.png", + "carts_rail_t_junction.png", "carts_rail_crossing.png" + }, + inventory_image = "carts_rail_straight.png", + wield_image = "carts_rail_straight.png", + groups = carts:get_rail_groups(), +}, {}) + +minetest.register_craft({ + output = "carts:rail 16", + recipe = { + {"default:steel_ingot", "", "default:steel_ingot"}, + {"default:steel_ingot", "group:stick", "default:steel_ingot"}, + {"default:steel_ingot", "", "default:steel_ingot"}, + } +}) + +minetest.register_alias("default:rail", "carts:rail") + +carts:register_rail("carts:powerrail", { + description = "Powered rail", + tiles = { + "carts_rail_straight_pwr.png", "carts_rail_curved_pwr.png", + "carts_rail_t_junction_pwr.png", "carts_rail_crossing_pwr.png" + }, + groups = carts:get_rail_groups(), +}, {acceleration = 4}) + +minetest.register_craft({ + output = "carts:powerrail 8", + recipe = { + {"default:steel_ingot", "default:mese_crystal_fragment", "default:steel_ingot"}, + {"default:steel_ingot", "group:stick", "default:steel_ingot"}, + {"default:steel_ingot", "default:mese_crystal_fragment", "default:steel_ingot"}, + } +}) + +carts:register_rail("carts:brakerail", { + description = "Brake rail", + tiles = { + "carts_rail_straight_brk.png", "carts_rail_curved_brk.png", + "carts_rail_t_junction_brk.png", "carts_rail_crossing_brk.png" + }, + groups = carts:get_rail_groups(), +}, {acceleration = -3}) + + +minetest.register_craft({ + output = "carts:brakerail 8", + recipe = { + {"default:steel_ingot", "default:coal_lump", "default:steel_ingot"}, + {"default:steel_ingot", "group:stick", "default:steel_ingot"}, + {"default:steel_ingot", "default:coal_lump", "default:steel_ingot"}, + } +}) diff --git a/mods/carts/sounds/carts_cart_moving.1.ogg b/mods/carts/sounds/carts_cart_moving.1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..869e765b84acb081468bba060ba973bff409dec5 GIT binary patch literal 14761 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 literal 0 HcmV?d00001 diff --git a/mods/carts/sounds/carts_cart_moving.2.ogg b/mods/carts/sounds/carts_cart_moving.2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b4cc5084388f475ef3c47842a1593d6a1bb71604 GIT binary patch literal 14749 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 literal 0 HcmV?d00001 diff --git a/mods/carts/sounds/carts_cart_moving.3.ogg b/mods/carts/sounds/carts_cart_moving.3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e19a782d85038a12ab273870ab8e2dc0a4eaa3c3 GIT binary patch literal 14989 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 U1LFgu%}!PAYO%eVzRv*v2hvqWL;wH) literal 0 HcmV?d00001 diff --git a/mods/carts/textures/carts_cart.png b/mods/carts/textures/carts_cart.png new file mode 100644 index 0000000000000000000000000000000000000000..965347c0f374d91e277104617b780a41fd773b3e GIT binary patch literal 1103 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 JPDHLkV1mku)35*l literal 0 HcmV?d00001 diff --git a/mods/carts/textures/carts_rail_crossing.png b/mods/carts/textures/carts_rail_crossing.png new file mode 100644 index 0000000000000000000000000000000000000000..e10f3b1ff82d8e8f941d45759980b3685a04cd4b GIT binary patch literal 612 zcmV-q0-ODbP){VLU7ZS zJ6E;?g=~UfZ3AFg7GW6b z#xy_Oqg>aOBuOw$^UUkO|LZ9i&-1hf&+c57H%m7)&)UOzdAoc|LJzd>oX2*6-CW>+v2hrJOq7xT39i`ceJZ|fD0S6eCvu(KO$zI)LRT0sYZ zPhTQFe%@od9Rbh^I+&)3Wm)X(#sK3jtZZ~t%B$Xp)pRjO_n=R`5v#RkR}DwwN$QPQ zB}qaUhPa!N(hsCa#roAh!kjX6eY%+AJe<+s`sh7}y%EI=ISPiNd(b~|VPHL?QmOFs z!zxeeTgpf^$RBHva=TV3v)zs;7>dDAD3|8=-rZ+vZan4JZ{4#Rr14-V^nV}WZboWl zqoal+;nGY&^9FRR9LJGKX35t66)WHOC0$|Grdecd9RvZ@YW1(pCpq!O{VVeN=?(3+ yrF&(0_wu$(`WubYV`urLs5fGjUA1Ld`s@$<#bm8NJ#DD~0000x=c4=7bA3W9=Lb>+e$6w#3iMH51+eQ^E|>(mSu?_ z*tShFnFPQv3>?P^68(5}j!LCc;&~pruK!aV_%B`nu`Dal;L`DJax7G+91MlzXX z>2;d(w_hj?;N6T%q&Dw|&tIq@9Nf19d%D1KsZ6|4W4F=FOM8}<$-(UR5=i z{^(L))8Oq)9)ONr+j%pUBdSICUJ(+_TbXsg65CSk^8Kf|ss>6axs}NUEe$-(vr-lo zi)GSd1qQ4f#gz)1;`I!UyFp%h%ta|B$}~+`%Pe7Ty}Qb0v*KGeY|}8pwzh4X?(Xit zHutwG?8K|55;Aykf3R^^dJ-~n^RTSDjebi2=}}jO`JwSz+^@v*JPgAK-u?hVuTh$L SgXpsW0000;huIom^uwJQAmSu_W`{=s9>U7}$e7K%%+mQzsk8hECR}Mt0Uq90-_qz^>2x6LM z&4Zw)M12>fum=#_LeKD&3is+C z^++`&D12XJ;Bi3>KATZX%M}E;`=p5P`?#)4U#_5{144vm%`cSM*whg5>2(^FDr-WC z2oJ8c%kIv=gFWTvER-r}b&8~>D9$a?m`qTv2De?>ewMbjHs)U3=KR3xz=MfT9`!X3 z-c1$&*t>HpZ^x%eY6*T+g-r8iro3;YHU(3D_&gJOprmJLIvT0hF0fn?7D^SYT#?>~ z)0CF0Y)IGB|HzAUR?Y*IDAP1$t+2$ofBma`J}+Tp<1vjR9&5*O=;-M98}l$y@g!b7 zm61Ca_D3)7a%VgkWN^!-yn={aa1ow~i%P(1bK^^zcsqo=n6!qLp81^reE<26&{}hpI(C@m z)%j8VEOoVQW6xm(id$taUSGkoES=Bi0T2hZV49`|ux%Tq)WHdw+oY5LY=3-8BzT6q zYahga1(xQ9^@X89e6dA$&@c=EurRf*Px()DC#Y0w_+pFLw(Sl!YjD8BFSXM>g&X%? zBBiAEX`NTglWj-3|NOHkDTgP?3B9j?X_`8h%V8LXC~lQ0{MhEvoh!OCjjjaED`z$e z;(Jk1QVyN@SE_&a#%NiV&StZFe5Yn3+SA)ZFfhRF%zFWloDS)sbNvm1rMY3fIzQ?@ zM`xwYFQQbgqW)A|lAW5yf6~(+NX}el;elJew z7D}m>1=BROZQFc%yGEa{m!H2YT$>1@oH~B*ab}EnqG`uFmLM99w*Nsm97ak>W~1P4 zU6?xGI?(c@R!$x7Sb}&w&Wi^#jE@9b0{i)Y{Q9f-7aySia-(;ABtRm)DRu#)d)N{2 SQJP`^0000Bo?%y7Gr(Eq7sZ++A3Z62M7_7(iRC=L>De9MF{B!NDEiQ zh)|*Es!)W2h*u~G*|^HGJQM^kxbyn#LJKKsnww`|KE_4Ji_u0}ob{YDzcVw8i10t< z+evf!MwFJO&NfX9?8M;fx<>Z}4$HF0wrv0a+inCQ1Ob3j3R>&!6V#_kDFFb5_fHWC zcVPVSyVeGG62~ZN?uF5t@`Rjo0KnMA!{}%?Kt!yif$O?3dQ(tJdBVD2CUKN<`OSY{ zVQ4}?N{P~kMZBCD@WcSXpM7K-`2rS_eYB;45Q4JVEI8-LeRp85{lNUKo~BK&Z@4H` zs;vp?TYj``voE7_63|*VA_yT!DTTF_CkO@o_*N+4{FyME%?g5T zeq6b`!Wd&TH5`Ev9Yrh_YknltG$EzL-128H|M;aYDpdd@zz~=npoL@~Rzq>b<8eGs z525FHXTxBt{PV9?y$H82A0fYwVfU$8@5$~17)@L37bOJlR5soy{Qv*}07*qoM6N<$ Ef;&nLHUIzs literal 0 HcmV?d00001 diff --git a/mods/carts/textures/carts_rail_curved_pwr.png b/mods/carts/textures/carts_rail_curved_pwr.png new file mode 100644 index 0000000000000000000000000000000000000000..781bbd0ad6e223803e071b05b19767a802ce2ace GIT binary patch literal 614 zcmV-s0-61ZP)j zK~y-)rIO!kl5rHqKVK*B3=_(zMz)kjg=96h6}#vU2&9OyBnFMBi*B|EhLsSAMr1?< zi>`tZ3?h1|An>LuFULzk&}p{B^o8wbhJ`&h>eo^LfrWN<{dda;&F0 zbv`JwR}Zh4=viAR~Wsl zW11$F_cJ_;54Xes$;ThmQog{$sX4l{-m0G!KG2^9mBTmb_8A5#j-5s=N{m8b@8oG;pibBrR5r~?k-MW zpHrYD773sQ#|ec(D<8@4_hXtScbh4yCQbkV0q03X zK~y-)m6JbcQ&AMge=m9AMX#b11Utw@P;fF5LCMy^QE+l`5%)M17llxSK!ZbuNS6+s zS|nX6q&kSJ5{iNn0t#)oZ9>|HrXl)jUjAK&+q|X*ZT#kQ4(I!w@4%t*`Mgdf5}Ff~ zN~Lr*oAv8#fLt=Bl~M>H$iyQ$>;w^x?Kinz7l3-RjqADqEIhfXAHDcw*#K`oY%+Bf zT-RlPr@>C6&3R$tgaUY-zCY-kFhix3yjt2l+F)+AVog0n1I#Wf>)#fHR!Wgx*|Gov z{HF#MjxktzdP_?wDHICKPe*mj>v4JVGyv7Qhj47XPLJJ&$DlozjOn}2J{kt!RSjDy z0E+81yiT8uvRQ7x!Rz#KLIEyb5lAU{`+ECmgPFyWmA!`+Lh$_1+uxM9?rNnJGmE8B z27me+M)pUA+}&8=3BGmuh_?R&V^2AH3Y`oEA%#&px|`FFo` z!Q^4D=>bp!lu~5k5&ih(7sFtEbC2k4bA|U`%l_@1P=Ni$58r>o?Q-pof%y5`&@ap` oD=T|{%pAmAEv01PUDX2k4GN3zvr-!!H2?qr07*qoM6N<$fCV8v+V!?0wGC6 zK~y-)m6J_KR8bg)pL6Cq<8;6Xj1~qrsJ3Zlf6_u)2kqLlh-m3TkXqzo$QFs&B8iNG zXpwG)qU_IQiy{y$C`^dLJpSOArlOwa-kE#vX>t86G<#QP@f~>I=X*a`Qg3gs&15nb zuxu>b+S+Qf+3d=U1JKiQ!fLHiO3_|liAp=R)R9CMl1a&8J|GA!GxI*i7yuqzs0f{26^RP0l@u1imMZq-3^*LRUU zja5o<_3_B23^G*)tuLV-QI6hUbD zG3Vh(!6cxyroFz>Hr)QW+=HLg9E-Q`=F>Q(DM{Xs*p`xfm|ehlAwmd@7qb6k46$!; u%`IGiq(%13QV*W~qX$P#d`z!%0^m3LBm9nEw3qw<0000_pdYGnWb0wPI7 zK~y-)osvyR6k#03fA72FuIqp$7!?~#qIsG_M1@2L=^Pbxt3yQhf==aOJync#5bOiG zWZ1NmMuxUX-LL{x@2d-&q?M^$hJ2P*GDQlt3dQSg8Jcs8Cz9XN{t86x_ltS?b zD21{tOXYI8HI4uny?RiU+Rsra6lk2jkDk_O)FhFDWKvSD1O%aC`HPR2Ie}@KxMO{s zxi&5|fRSfYbhm@+x~wj)viPM&i{5~gPzw}c1X98#T?4={3e%KaOddG)?w%xaWDC!Q}K3DaQfey|aW{iTE&^KnTzz_%%f}h)765rbEXt z3`U2G_0n>=oU$zIuQg_~*}59#dj2*70dTKpzv?(TfNk4s`#eHADJgp)sib5_YnrK| zOR_;y{u<&NCuwVIqx8b!?Ddy%24ipMY1kcS@NQ}eEg`8?LlOe!i%DERBnT7{(A*lU z9G@uu+(G~Fj5u&A_TE12Q7-@kGNz?}6bc18y&+sL z#IJ=cm#XaCsuP5YkE3{|@r`{2J#Qs45JfUoOA800000NkvXXu0mjf=&2yY literal 0 HcmV?d00001 diff --git a/mods/carts/textures/carts_rail_t_junction.png b/mods/carts/textures/carts_rail_t_junction.png new file mode 100644 index 0000000000000000000000000000000000000000..8b1b946242544b69c643df109dbd6c0b10df4b92 GIT binary patch literal 707 zcmV;!0zCbRP)VYK$K`w5h)#fdNq@)O>ZBUDF(;~t@z)dtn!5apm8iQJd zwTKo{2+gC=>Q$Q}D5x35Mcir=JjV((%f#{JjLw_WVrCv1_T#|eayj37&-a|~7ZE{3 z$Ye6&IF8irf67!UCFyiJ!WkmM(@O^>-`g!Dwmr9gEVQ!&F zq4gNHZ4-?4bFzQbhygr&H9>bf1VO<3>^!pzE3{a3m?o^0gs=>z37f1K07@xx#Bp6$ zVgLh=J{hj-3c!WC69(%!H8Z?-$o~#q&J0*0dKMV@=(UFy6%j5;6EV`HhBL4glM>(Hfd}+4#QC@`pi+ zD?+wZW`k+a+F_xT;>pM~hk;0*bUH1mR7(COspB|nWHeXL6$AkQxhk9g2}48}I=4?c zj$Xs_yy^%#I=h;lF)sON8mw&=Gp`3I1I=41EXUqY(_35O)#1s=2bN`#ytl>+qLji50xZjl#=P!*HrDt+ zDTUUWcs#zwNIgA0Ms+VzW2lrOkw{3igPW)J$mXsy_`c81!Z1N0q_`3?mtSW4R*O<7 ze4Q^4GYw{1j$qq%)U@h@?{s!mRCxLJ3ylpXOT{u98%)N3&J7Zj7#0h@yzu=~<@dmTA#-I1VhAg?I%V2by&X0M~U1xkxUT zlN7+6=U-GVmlJ^NUWkY&)0wFcmRPlqHb41b!WZeOLV@B2jl1Ky0pbe+73 zwHB>4XL@_9Bpw6c!{;eZ*9zPk8c%$nwdUI6vDH2h*L9OZwJ`@?OfaC7s46)Wi$%%j z^JFra4UOdcKIwEikz9!gcQ5Rht(}($f`GQt5K$>+aXDsYeu>@NHRV|NHd`X)D89BF z#Tb)Vy6S@;baYl!c>8gJ#s-Il#TA+w97cZ56P03=QbeVgJ%=kKJ{{=h;p<8DS08Nj govpP}C=`;MKcb3xV4`WA^Z)<=07*qoM6N<$g3BW@R{#J2 literal 0 HcmV?d00001 diff --git a/mods/carts/textures/carts_rail_t_junction_pwr.png b/mods/carts/textures/carts_rail_t_junction_pwr.png new file mode 100644 index 0000000000000000000000000000000000000000..dd0eede22302af3278a9ca5acef885b748055f63 GIT binary patch literal 697 zcmV;q0!ICbP)|Nj>vf{0Kk z6vTDia$4H^b0OJmR&u#qQlmtK=NER%Oj9R85KuePi@i2QZOURvpt{=P`|Ki%u`oG3 zN3roBT5F<#9uD^ms1(4H*TZx)K@>$yO-wN{y+DIqg=N9Qq7W~EWkJ220>E(`Lb}Q4 z^O6F%{`8~D=ko$^{y_+cVntNWgCHObLyR#1q*fMso=Yb4EAQ{`m*s#;WHRRfN*vrj zvqPE>T*LQ$05<>d*-&52e9Q3!SOIvRi`JUDp(~_MzbSDrH1dU-Fa$trjWMvUMH2); z0z9^N6KgC*<1QP=ad`G$<IFGTS+fF=(yvJQq*`N^WOWTa7V9<}NP>V>%99 z!t-2g+ot>C$uf!i0eJgioFkP6m-|K%AK11{=Hc*iABf{PNh2tYdBYzClqeBN^!9zf z%=+p^GRBZjrxVGQh;ZvftE_K7MGyou7yF2cF>?zslQZ*d*=VyE3!kToq%6g!hJ9$Q z6HAwU@Rhdqk_xZhjZ#}q?t= kv}I1t`yY%Md@fuJKOReZY@RFe6=*kur>mdKI;Vst07}+XIsgCw diff --git a/mods/default/textures/default_rail_crossing.png b/mods/default/textures/default_rail_crossing.png deleted file mode 100644 index ba66e0155d6a3d63907ebaf7ddb04b18e8175893..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF4e$wZ1=6clt*Wc5>+I}2dGh4) zYSURoMrA=#{aJc7VbVqZk_*dCvc1H2?cEj{9_;jNuLV#8V@Z%-FoVOh8)-mJyQhm| z2*>s0gn}dnCT9h)H2w#i0VxSPG*mQ{G*&2`_z-czCGzBnfSHYs6Vw}vn-!RuR|jW* zxfXJimuHUC>P3C&GesCm3(X2tHJG+?7pfL8NjjJ&Mq69)2sdP<<;}mhjw3|*(7Xez zm)5;eS+ZuyibZE0Xy`C)aTe52IdboSD8n|{Cp@BT490gPPOVZkO#(WJ!PC{xWt~$( F69ATGTDAZH diff --git a/mods/default/textures/default_rail_curved.png b/mods/default/textures/default_rail_curved.png deleted file mode 100644 index 9084ac24d97fa0252ba9ab6923a5260d3a87dad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1=4kOb-VU%D-4ibP-e1f z)vDG6^&B6W)ph0*v-NAEl*>ZoJ3BjP6dIm9d9pV{>&)o}d7vJ~k|4ie28U-i(twN(Sem9dlSDy&QPnIk2@&RbYF)k&SH|w?muK zXMeUdgXYB9%%52n^e`}gk7BE4TepOnhvysLR-QXux_mrmW;!r4uhp`VFwzARx^0I`njxgN@xNA1W!;I diff --git a/mods/default/textures/default_rail_t_junction.png b/mods/default/textures/default_rail_t_junction.png deleted file mode 100644 index 486c416adfc4be4112940985a81ab0ead5f76550..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b1=6clt*Wc5>+I|-3Y0y0 z^5n#9-IcXw^Gc1gyrmmrRja}krWY7iel4vADrGDQ@(X5gcy=QV$f@&maSY+Oo}9pu z#K7dt##Z)FIMdRyi<4)LQ{3jgwxO<)5-klzO>J%oZ3{LjOb|a3n{i|TM+(PAhNC`> zJb`YjnL0WIyrpIc>YRCSHGxAYFyTSm;xh*hsHPk^@PJJuk#ki>LP8)b7iYD9etLii p%gi&DOAlRO)L^>uV9_lGhKD}|U)A!3yaT#~!PC{xWt~$(69AqbRZsu` From ec95f470215a5547d62aa7f4d23c9a19a47d2119 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 17 Nov 2016 02:41:38 +0000 Subject: [PATCH 160/196] Default: Add water footstep sounds Plus one silent sound to break repetition 'default_water_footstep.4.ogg'. --- mods/default/README.txt | 8 ++++++++ mods/default/functions.lua | 8 ++++++++ mods/default/nodes.lua | 4 ++++ .../default/sounds/default_water_footstep.1.ogg | Bin 0 -> 31719 bytes .../default/sounds/default_water_footstep.2.ogg | Bin 0 -> 29335 bytes .../default/sounds/default_water_footstep.3.ogg | Bin 0 -> 32107 bytes .../default/sounds/default_water_footstep.4.ogg | Bin 0 -> 3974 bytes 7 files changed, 20 insertions(+) create mode 100644 mods/default/sounds/default_water_footstep.1.ogg create mode 100644 mods/default/sounds/default_water_footstep.2.ogg create mode 100644 mods/default/sounds/default_water_footstep.3.ogg create mode 100644 mods/default/sounds/default_water_footstep.4.ogg diff --git a/mods/default/README.txt b/mods/default/README.txt index 84213368..c76cf7c3 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -249,3 +249,11 @@ Metal sounds: Tool breaking sounds added by sofar: CC-BY-3.0 default_tool_breaks.* - http://www.freesound.org/people/HerbertBoland/sounds/33206/ + +AGFX +https://www.freesound.org/people/AGFX/ +(CC BY 3.0): + default_water_footstep.1.ogg + default_water_footstep.2.ogg + default_water_footstep.3.ogg +(default_water_footstep.4.ogg is silent) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 4008547e..175365b2 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -109,6 +109,14 @@ function default.node_sound_metal_defaults(table) return table end +function default.node_sound_water_defaults(table) + table = table or {} + table.footstep = table.footstep or + {name = "default_water_footstep", gain = 0.2} + default.node_sound_defaults(table) + return table +end + -- -- Lavacooling -- diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index e514a48f..1dfc6644 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1350,6 +1350,7 @@ minetest.register_node("default:water_source", { liquid_viscosity = 1, post_effect_color = {a = 103, r = 30, g = 60, b = 90}, groups = {water = 3, liquid = 3, puts_out_fire = 1, cools_lava = 1}, + sounds = default.node_sound_water_defaults(), }) minetest.register_node("default:water_flowing", { @@ -1395,6 +1396,7 @@ minetest.register_node("default:water_flowing", { post_effect_color = {a = 103, r = 30, g = 60, b = 90}, groups = {water = 3, liquid = 3, puts_out_fire = 1, not_in_creative_inventory = 1, cools_lava = 1}, + sounds = default.node_sound_water_defaults(), }) @@ -1441,6 +1443,7 @@ minetest.register_node("default:river_water_source", { liquid_range = 2, post_effect_color = {a = 103, r = 30, g = 76, b = 90}, groups = {water = 3, liquid = 3, puts_out_fire = 1, cools_lava = 1}, + sounds = default.node_sound_water_defaults(), }) minetest.register_node("default:river_water_flowing", { @@ -1488,6 +1491,7 @@ minetest.register_node("default:river_water_flowing", { post_effect_color = {a = 103, r = 30, g = 76, b = 90}, groups = {water = 3, liquid = 3, puts_out_fire = 1, not_in_creative_inventory = 1, cools_lava = 1}, + sounds = default.node_sound_water_defaults(), }) diff --git a/mods/default/sounds/default_water_footstep.1.ogg b/mods/default/sounds/default_water_footstep.1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..63b9744ce5f53d8fb467245d06cd92680d7d44ea GIT binary patch literal 31719 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 literal 0 HcmV?d00001 diff --git a/mods/default/sounds/default_water_footstep.2.ogg b/mods/default/sounds/default_water_footstep.2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8d79c1f4b21f1b45fe9b70e370efe29d1927bd14 GIT binary patch literal 29335 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

^%a5VKE_cnukzrqZRKcouE3oX3N@I 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 literal 0 HcmV?d00001 diff --git a/mods/default/sounds/default_water_footstep.4.ogg b/mods/default/sounds/default_water_footstep.4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6f1eab8245fdc475451e6eb98186bd6db141fbfd GIT binary patch literal 3974 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 I`T9}qKQy`}3;+NC literal 0 HcmV?d00001 From 55ab3a117dcb4468638895811d1dae719be151ee Mon Sep 17 00:00:00 2001 From: Thomas--S Date: Sun, 20 Nov 2016 19:21:57 +0100 Subject: [PATCH 161/196] Farming: Add forgotten colon This makes the itemstrings consistent over the whole file. --- mods/farming/api.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/farming/api.lua b/mods/farming/api.lua index b9ae818a..cd1e67f1 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -331,7 +331,7 @@ farming.register_plant = function(name, def) lbm_nodes[#lbm_nodes + 1] = mname .. ":" .. pname .. "_" .. i end - minetest.register_node(mname .. ":" .. pname .. "_" .. i, { + minetest.register_node(":" .. mname .. ":" .. pname .. "_" .. i, { drawtype = "plantlike", waving = 1, tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"}, From 208c9f4901088140fd5c074bc7df112dac242d31 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Mon, 21 Nov 2016 18:25:41 -0800 Subject: [PATCH 162/196] Make smoke puff sound mono Stereo sounds are not played positionally, which should never happen. Convert this track to mono to fix. --- mods/default/sounds/default_item_smoke.ogg | Bin 11917 -> 6651 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/default/sounds/default_item_smoke.ogg b/mods/default/sounds/default_item_smoke.ogg index e1c84078650aa03625017c458ceacce324422deb..038a46e4f7ba09b151b9a45d9581564c8e836038 100644 GIT binary patch literal 6651 zcmahtc|6qH+h2sSBztHGnHWnMTPVd?XY9k+$3E7^Hl|2iWyqzZu|-o+#!ew)i@M0Z zYb+s^vW1pg=t{lcneM&6-}}e=dC%v}`JVG^=Q+=L&Uv0Qwt;~T06Xw^(dYRP#q1(r z3BGJHZ0EwGe1nNh0Gmk_^8)}8LTs#W6PqoQ^WVbcWMcM@%OC}={QR#X#PLgvDu{In zjtDwt8x<&fHrUsRC0rIItD%n2R!697%PPIOMgF(KIY4?o@MnZ^L^(JbAbp~u4}e3f zU_X2q5pQ5@tS*Zh0dicyRxIn4+nM}`@=P?8i4z+S2z2n%My1d;zVrg}jj)(9d^UR2lRPkN`j10|d4 zxd?)=6l^#f}plxB7#HF_aC3mPQrCsh)ZxSc((^k5A`K@~I^CUiGYC#f8 zdq;{KXcQy$IZT$-@)rX#0if`nQrbNw zUO}lkUZ58M1P$#)dm^EIH=upBP(H|hS59y{0SHKEkydPx@z#Q(;7Wn9>eBBOssnYb zs=;En0029Ce$z-%ZWfqYrHUO$1b}_uG+M?Er_8fWMjWwI zbi(X^Rrg%HB#Rxiq2PFMKsi^cI)@||Yac*05{1&#yAuB~a-sxU;2ux4-U4;8&{d!S zU8^TewP=W?+)8WKTc#3+`dIdL(k)ZF3SD`B^%QGkM+=mhu*l(6Z>mr? z*gIMsn^|zJ0qk*B2WJ#m)`C5Y=2*-vOD2rS6vb-Ro~=TuBFte~TXXKM(Pv=KwtMv@ zRq$UD79GpT;Cc-OQ?B{U!6DiM%yduJW@$is9pvC;1Uwg2pPzZH#xHPR4D=&x3V`emS$@H4{vG8C76~B8Bw?1cl9;sen6$E(jFnVMP=0P% zd4WoQ$$Cr8`~R=QY$27;(c_hSe_@ZVT%rQF}!7keS`NDDq9_x!MQVgXap-i|B$z4co6Nm=5bH zOVhgb%**dTw@25ONNA#AbjQ#|DmYwIqDfh%OVdRC(rQ5_fE)br6^&+!u^Ea2z$HNp zFFZNhcNo5$iRniyK{081rBsJuJ*C^({dz}lX9>e;R6h_)%^pU*qh^hxltBM@$_DsKHsam4KtCZZXj;#RV;Pgy*ai|foX;W5=lv@RJLQOV z*TFLA+V;^ndo11+lza|9MaMc%lB`8>Qx4WMVpwc0c7}n+=90Xku{dYk)D+fvD}H7& z9ydwykzh)mVvw-sNM4hKg*+0@{B9QQ zrJKv3!ykn4bymIK>DW|l{itFv@rX2mCCxkHyz&U{l3_S=mQdFnYv-+G_o-`(lktI) zxV)PFy5m)KRs4+~4s~wscGSI~M-I|6Lf`k-?xOMAIrtdDtaAWPaj=B|ZGE7b-~+~j zr->YZVImK{kmVj!07%LtrotgNe8J!cPZq?aNhD?JDZ>10&~R9T9XdqFPf)q1*nb$s zLwh8O4u)rsyTM^}J9K(=gPTKWZ3@PXkM_s~9gJvj@(Zo*PDSwK6EPag#n~7)722a* zJ#!i{6T>Y>qhQiuGzpdEV*gS5RoP-k%F^$LzhNOiJ5UrjIh^*$2^~@$WrGGq4H}_9QI;rpz%Xh}w)nY`Ia3r04r+B46lIA* z&?SgraJm#a7!(zXf_HO{@IQf2BmkXwx z$x&H5CE+&&r+YZ0Yd1>7)u=Uk5(Q2-I1$s}Q{sM`h(_7a;kNUF;L5us(7)F{a|%sI zEZd=(>##)Cf|C=fCuKkcbMo?T3BTdmZcm5M2D(I?joPFKakH%(niNvK1d4*wsi8G( zQ*)QW%*vZ}(0o;pciMu%IGjAOjYAN2#Ku za*ck(^^Rg%MMVXj5PJs>ep_m4+*y#8n#%Wgf>{vN_w688MMaIuKzn#a1$fhfX~oA| z6>BXZq;7++@_m1u>MT9%Q0H0;m~qev@B1S`qTTjds5!l6w?+MXcLaFvp8A6gD0`a1 z5VA?@X6IvGh5n$5-Ln3Im|j^j7*FBkYz!EZxS#;QZl%P*Qu`iw=gU_$OuG41gH1ZK z7g`O5Ojg|dKN~gxBO(A`4(J4-RRw<8QH*IvcnLI#U%xY(IEqq&(Ll3OlPDN;4iSS! zl{ZW>y_IRb06|Q!TDMf_kSu7?tB5Vof7H6&h$9A|&!;y`&Jn>OG;YKQl7*>kSb~xT zDjM8EhxK-3twL)jrJ@Cq509YygCu?K=ogYK%rKF;kT*zlKB` zL^n7zf)p{a%!tgyG8553aL<##19_V$z)DH=Sy+f%^sgZj%t2YX>geBDYY~%}nZL3D ziJSspsL`p)h`?xxyD(jenI~R;5v7XIw9s2p)!8S<*^IS-KYJ8lCi$)j%PUu`XJD|0AO$bGKn>Y=bah{+D8BqiK13~aa9ooG<$@6uc*O?1Y69ft z3p#s8r(dmn+yQvNzz7xzU*KJlw0CML2vhG3hR$a=Kw z+aJpU0nA4Wlh9#mR#P6Pc(mbR75za~RdrQuab;ogjm*@msmg5sDaGTR37ni!2Z>1J zhwN?eiKA+8&7Cn3+7}rOHM`RZn4wxfvppKGC&3{*QrMdHhp2I(n9~`b+!u_#2pG}Q zTc0?8^0WQkEeE-Dm{kZLGG2ho~@4xsFZh8KI z6t}eKm9BKv!YIT@_}2E%od>Spg5Sv8?|nQq8B{nos_cqHq|7K16pVj9e?mRxSCXU3 zxR4*AL%dd;B@!$2O`uB#rO+huVfWCBAf3g#Qz3I@Jj6devlq8VYcICMl&zd`3k4EA zGeo@ysIvXnkCpqGM2v`*KH3(G?}CdY-{5`8CEa}&rE_x)z4WavN+zt~;SN#Crd$dK~Y1v{Ko{ugz> z-MOzt!|Ukk2Z|ie8~pEQ!z@<`m=2fw&qnB{#fV%Us1dySA8T$scjR6Fq|CZ=v~x+< zQ2VTr)qPq9QCSgYYXO{fYF6%dTum_8caJ}p5)OaZ2?} z>f)NWCE_(az_j-gf92Op@}ar|F;0gn?7domInAy7mtIb_M6393t5vQW27H3X!*DyN zpskDb!~K#XZ}pc>$|-=hEeW&57`l@rJgYrVc0;dK5d>U#;&bx&Z@hhSt$fpGGIMP* z>%!|BbCT6?6}QutVY&T5PVG|it!FiTa7sG6Fb>Uu?<2hkvG|{JFEg6R7t~;U>C^kJ zIOv{SoqiCS3Vd9?J0Nl^)w%WR;2Y7+^4bjx#mOT-u?>}FuAg60p8q9Z+~<7efW1Zu zpAi05Wc`TucIyORWbL2dr4Fj10^D8h@h=j7asb?dg?`1YV=tn+h)?ue;dG%=+818nL_R=Jex(9Ag% z4%MEoMynj(UN5G8@j!gIj`&$BaK0Kg^JX|1d$M%+(=rxj27I^p~w-MZPo?FqYk%KjMO78&_D;svVX%IJOteXEvx4RLSraxWOL5Gm!1PnFQj?ZxUW# zPyM!a!sg76@_`;~@T~8*jEW`o$+Zh{r#V*UKWrA=A4gd~K049W_ppgKuCO{0wc({c zc*D4?*=Cmg>8{B{e{Z7n!I)1aF$W$}qsy)nqOZuSo?o%xt}V<%HP0(NL+9xDAop?) zI}6X224uyJYf-1nrZ^MdSiaLlHgz6qMooA(dwS~3CoXWs6_#5bJAg1xqoNc;g=7my zKEsh$yE;55XU}@xUl@)YAuy)(zl#<|h##wsouAdq@RX2quAP`1dhcy@^NSlaa#QF&8joHbd&^K> zICRUx8fmRQx1X^PKx){$uvW3xKI-QrEr%P*eM3zB;xv2z2X$p@&vh*C_9)vO?xFhk z2OUQ3a}i zZ80k04d)#W?t0rR4231>n*uovRyUbe5&^A^r*_Suu#4-<>M;yJZE@rI<%!U z4h1^9+YZBqmtJp`zN~SIOD3|3>@=?U1g;NTT8!^HBp8%2lE&^E9WnCV;3y9 z`>oL}0jp%5*nGqHqesx8Lp(Ncn)K8@^8m{XY301Mb{%QMJU(J!NbTpFL#=Ag_2>PJ zfq1W%mK5?-%m`I`vHb(Sa&`HZ%c^tvPFdfJV{3yWn?m}LankD%+d-4pZLUM=gXRN& z$B6u&nA!dII)On{&8h->jm7jDSo#* zRu^bjZ20mu{r2b$72iC?lU?$UtiHJU7nYFx#BWG6eY<$~yBq-@kIlLhVx&AKrP@u_ za$A`w>2xAL>)CH#ukUp2&)dYMEV^zZ>A^%w?(zbTwB(@L7jjp&Ueod;gA+I=|2x`2 zwh$e8REpQhC63>qz2mI1wt#a?9nI%uuVM$r(5y%$PI(qr!R@#607?CMP%K>u7pYl*jnZ_N1QdGN~b%cgBZnMHlP8 zWvKy=td!2r>34nL6omP=ghsj=*ghAEO;0X;2Z`Vko5;d1x~2c&argsA|{OBt1L$%&Ga3^I4kN!L47@@}bWk zrR*0$bj0=xs3D+t5xX_P85Weh?c5WKj^)~c>+!7)*dq?~p)T9rjy-5-_e#+tb5k7~ zr_R28^)q#b7o#iO6k$cSuFi=X!2DKY-8m~^&qH$sJ*%sMEJwBudx znvsQy0t${TSndYBp!~(_^~5V@;nW?mu$RG9|4+oL1%3&+UKQ#U`A$#McEjI3JZF*M zdD5@5aNU7W95MW&!->su)1=JizGGzjJs4_}y6-9UUUO=Q_&!LEGDVH1@+9{rap4^< z>%O>re2P2cz-tRU(FkiA96qzeF&+8z?Y*J%jfor*n@6Qoaok!fz-h&I6IV>EjQQBF zk8PYyy_Q?m?UOexx+^L#A4AE=9M&Qo-Ut#KO@*C!^La0DWWd;`x0lO|zw-|x(I1p^ zdr`PbQP|_k`HkdNt+I*AyqbGD6{flGp6^RQ0_Jt!VlchB(1V{^=nzlr;?Vr)L9> zUnvqoMbBfOgbtnTJbPZ1)-y3V{=Gg(4B%}>5MLo&_`5!PV*@Y#Ily}l$Qr$C2&4Bt9?Ydsiu(Lm#B1z+Kl z6V9nXZ{XLrFMpgkdY@W4Wx5`HTck9f?NdYVKp9_9P}zrYWQFo-X>vyW<;yX~!t4qF z=uEUfADo#qj5@MpRF^-K-B(4D4w-#(bs$ZM7Z`M;@sD)%v`~Z9KV399+;{wavs+;B zx$)+kmN`@7!2u*fJ}oKz zMvTYTuQMX3A{PslrQ2H6FO;GV247l#l&PT_R`FbXRBpwJ4{}=3diHvF*tK)PuU!&k z3VU9C={7qcTbM7FEm#BqqfgI$d*bm;ONY?*se5-1*rmh9LcD@{zV2k+zH!6sg)(D( zUSg|_`MO{<*@NQxy!FtN@;uqM!mes*5V064(**S=DLwYX)QUpOk zq=_^^Mdf}0f9ITc-d*>;weEWV-C2`aGkfou{mm{jduC$j7j#P$3~!u5oJt=npySX#x?e@jXD=R*mD6lN}WoW%^i zojBZG>`l)YaOiMIic3g}ONvWz2pD>Jy4>+b`Jg;~1#zQ82+z9;s;Zen01^-)q0iBS z9#2F705t&E@(5Cof~i8j2})t8tyb*OG5 zvcBgtD*q|xPeFP%4-W8KREZdo)T$)7;iCjgGQ7c|&ZorzpuuSZT1ilyTIf(M%g6+e z;l79woy>%khOvnO0!)6^H~mpF{(dw5_suiHEnnO>e-Umu8*Y6ZZpRSuCx5%Ybd1Yq zQ|EvH`P}kpD}sewOoboh3-QAuD)9g$P9z+p$y|cTMLH#puGKEtP0kff9z%5^Lv`e5 zB%oFaa9;!DyJVI8U)j+-4fWq=m~+1n00U*&=f%?J#iIe|>GKvLK9g`i0O}M57wPeq z*7A|=^HBn`maqB%Mt|f`pXzTV;M5KPFbS3(FO~sN8gS7`Z<(7u$}>I&GoUDN68W!F z$eF!>6XDEtOmjt(NF~~xi3JS~%TPd~Mt;r-B#0_l<;WV(IvA0s%=(yL2F;#)6>XBu z-&~fFeWpS8QN|Temx65d=n^B@+JBOi`nAhHFe7#-GDRlV|_!|Lr+m z(7q&=fg~QiIv#`9A|w0Kh6mCUbQ(s|2F4eyCocL;(xZ%JttVwrlL*wbKWeTCW%>NR zdD9<m>7-C-ViSIYnocW#(;^6<+u^ z&vA}gC;7;;CPyY!oBN>R{zwm-d8^BBq{^y+j zcZC0yz<(;E!IlfKwO`Ee8Q2S76B;I=j+n2lHK}yG;6Y%VzXSR9VE6e|rbG z!R|}nWmBRmAx)H~$|D|oG z7(&nj01#PdMt_H82ru5j9F{CXW@`=@;NN9}K_NI|JlxkYOY_nb3rHh*0ct{E`3`jG zwY1TyTpHG;u-{8WZ&E!81qMOUT+(2bCht>V3F+7YIB$WNLKi%6djZ8xh!eZ4v#to` z4d;GcfP)9h? z?wqs!0hTs^f~zpN8e3n=T8qYwP+ne522xH+8-SEEgoVyoC1vH{P69h4oc6Q66orG8 zgS!hJjtF5rlZrySfc;vkMet3|+l=|;<(n?c=8A*6VB>}JxMtcqz`(gP{JgT}9YdJo&oLB}hyeWe^ z;9?w1vIH0>U)LST0Ac)CBuJN&0#^WGlwiQ&3z8IL;Hv96K4AQj3z9$p*txW0+^>t% znw*LIBG9pnQ&%28C~lqPlE6HEFm82CEe5d+qVcA02tl@0HGQ?zp#|T+757| z!^7>DVG<;QV9Z6tSxl{}Ef}8of0{o84fa7(|2d(^#@hXrVMNE}ylmrR3 zc*??Ef__Y%xS$wg5hK|20aOqO1E*qPMaGH6SUeVOV#s#q1hwV{!W^V@8$lR26*m#x zW)N1}!{8RDA&_l}!@5<;2!8a@tDUxRsBGjbicQABDjVN$Vc?RzP-C!`6(-($%-~Qd z@yQ~Ew(}dCu_#FF2HFBQGOn!G0yG>_RBW8+G{$F?5P&Jm0We+$6@Eqpyz4fkfyH3pXMIV|LS*nLii=cfLEFW^!G7T&kMr0W6vzdT#~DHwJhDPnNzW0O zWRMQ~2LUny$Nz%>8G*x`_W&!n5Ihw}i>sWKWw;vHJTK1?SdbA2JO|+zfz3bToiW0| zh0dGc@{5mK{kVlhyRS=CE8%HDCG}xvJ`0}EsEKPE-dI$`dJpR8RHqWb>JW1_ zn(3i9R0ef)b3;i4iORxbg|HbZX{tjRaB_QL3Ex-=E%}cos(lRLk{t>F_%xDqBv4pL z2st1J(@w+#E|8J4c4@$1Vw^=C`FHf?_;Y0eKqYFJIy$O{L!y95K&S*C-9s3059lAC z)oy)(7Q?q1@3AIUB~hggHDiH6Naf_-NASPf4P(y9H#XUXfqVdf4Oj-3uQ`B=t1xqA zefJwcO2f!0C?T&xbB0y~z5#$X932(qye6lhbQPwmuBol7fBgoyyg|-(LKpxcAvr&A z;@Tu6=NBC?{%#PGiCH(P{Ll@9E=1mZ7Uk0+GLx z7y~xt)0DRZ+LIn?Uib66_VA&A)MR%dIlyi?R9!2k=hq0IjtP2rb*ymo;MphkYrhv6 z3FMnT4b|U%m$OF8c|6o;!y_oQHS#9y(~_kj)-MDQp$MSx(Bpncyxygtu^{u-A#IDj zHcW7yYP`yXb61H@iPO*PD{~_q*{IE77Q+TPF&nmVMhttIivR6jx5P$dpH+PB1Lw*goBXGt1N=&{6nO6|j<->J+GGmk31 zRJ_Z5@df3^lKSh8gk5aKhObnt`Iq~SaWxUT!aZxr4Lp#SLrhy{KJr~PKkA>SP9?rx zcw*UhDWT=N9Ci`C(kr{&`hB#)FimaVvPgrde#MGJK+j#O=g!Pj-wNH+soc1lnR@#m zOV#~EU4B13G(03`Xq;3J#yJr}+^N~KSgT#9YlojA9$$c$T`xxU-EFC_+_hSToif8YF*IWF_*IBA*J#LO*(oKV6 zkKkJvH^;;VBxSunr3{TPGe2bRIGy=czfG}Yr)jbuSIXlyXQH_06>GwKLg+yn6D0rW zMvhzvylT;&)t)E&QoaQFk%^MXWGaQ3>VXXMHaV9lP zqyr3|04D@+l*rG&(=o=LXfLTD+e8!qe{@CG6^+1os^L}Th1KVHPmwAFS^Y|hVD$DJ@CJP*oFAJ#nFU;k@c?D(qw!?YTw^j9Cq9=g9f zs=mBk-O9W<1fPf`fA@f%U`e3{yo(HkWON_DL|J=T|ETKF98beJ9|-AFAD zSZI9ndJ5jSEs%e9zC({LKdE}HW+ZY&-Zxb@$u+|5hgsqE!yjDT#;ekwqZg!Ok**v@ zjq`a~70ezM!&wvzHr=mz#BUhAf7kfD+gI5NqBC|F_B18bCO9Q7rYknL#;SF%nqgIF z_@g#H$9{AVzDN{rgepe7pxy#qc%z8tm^NRS$l?{R3F%AQgt~2Q+9+OXTcrw*;)SnG zzMqyuT=9K~c&LDo5BHktV+otcZOLu`pbq3v%$2H6^aoeDJ=LwHcp@T%*6#ZZ6M9`> z-FAC>eQ6>hyj)0wkgR+Nph4Va`u)jv+&}eb-=*YAmisKj&i9B}74P!jCmi2@$}K1b z(h)ZvhglpYeEC^5a1@#Sy;8w(X3g8JM*P;Dfd)*xMX;mu2B zNpHBq%=8MXAFw#pNmD6R=FSbzPAGXO?D(n;NNH`M6_raJF0b}itbL8C+cEAKy&B)M zM^~-y(gbh!4i+!Wi#KmgX_FE7UV=>*^P9dFVC`|XP}-VBVh?8qtHp}w+VVa^@m>f7 zCwqPoFErW|N+^-EFK0R$6`@v`B=a@U+;DFsT&z?O5?D7gk)ohcHdb~fdJ#2uXt3w| z&i#w|RAsZ~$Tu&F5rt)S3Vrz|VyVZGsqZC5Nv-57iC0I4THH;_YXoTShu$fmVJ@39 z)Q$2UKeT}D+6gHU2;bMEVtP5-jhE6+Tb#(J=K9xfjzSZtYd?PCqGu`t_E`NnMZd1t z?kC{^d>G^bVxfD1F&Sp*8==JxQkL9J&~O7rH?LH+4c z4f*TTK(&~5YPYMSgFl=H4Kw9nHS#CdrIVCn>?^FfXEr3bzjrlQm|mqybqj)CW-6gb zk;#2Qzt_*j{gjM8bcC!nYNWx(|6@L?ZG-DIfsj(H&t61vZqgTav|o!;bh_e+wQy-v z-$~drqxMy@#!5Eh5ks6aI5+$-{b?2xdN}c#Z*r^{^;feV)}34GZwK? z=x~{W%Z?zP)6pwAp2j5IRpafYkf*Em)S_vTGLQK(HHqu!FUkNq&FQr@IglGiP-`8^ zak86Q`uK{DA3087eMeAXMTZ~3ruceu&Z1IHWjw~3*bi0oYnm;(5=1K|6E82#h z&|o^3t5G}8t{%<(crO)FIZ>VkcU93z;X&Kwy;KTpc*|Bz5tlc)v9$5m;fmbxPrn;q z+;4yMld%7_kU4ryXDP>%feJ2>=GWfK#kZA9nT``N%?q^{-gDs14%E2p@lq>Y zoK7(2fnaT2p^U_FN`v8q2Gnq}kmW11xlE#hD-u{?fSjsGR!#!^bbbft*j z`wv|Do`Ja<_vj`&Z5$0N9uBV-T;LZms8V-T*Ib2yv*~SS{j@ID8y5^x%b{Q@XP*^@%x>OoF3kIvaQT+v0b+i0%6{cdTb5t zs*5hSzz{EBsQpw)8G}G%URMFoh}isD5)vAi)GTDVAQqtkeWR~%l~8?Mmsk$Sx16V3 z=q}*lpB5j?BajP|RLG7s32{DyWGv=7< zpnpq>4B=2>klc_2Tj$OG95J#w>$SUnyxZmZ-AnCj(|yIP=JkVsqM_A+ik^%FAg4|vf1C6Ut^Ix!iIWh>{}L^>G0)hvD#UPC~j}3y?AT>GT%UiJH58#j)=mEsESrzp@~RjOU_80HZ1a&%UAfFceb1owiKcyw)X*JtVT^W>MG5 zw3h;52f&;|Lh~NpZQn56sZ=My0PVC~mbmNV#-V(GGAF?o#i%*;7fJ#|_zzIPJH!IR z!!XQvZ?l`37xyNcWMs*D8%0hlb+nCN-uR^P6^AfUUhI9mAWcs)%Di;v~I0xeSP9m zu!x?b_WNhC7h5qF-1b2mo#cc5CP)f4D=Dm{1neWP`RmUY#Cd7qpG|3*T|Sx!25-c& zQ|uxAQ`cms`EE78)RyTX)#)EtHYePlGmg|Q+q|TSIT+@PTyUTB>3S>8HL5Ej1_5ky zeXe=M)d?@n8(+KY!{H-vz*MI$XH$3Si%SJx5es5%0rQl)TREj9|IK#!YTcZIrh%u; zLd1RcyR|$UctT=>YDP(#ydV=4=i7K7E>I5vcmA90qE%9eB&ubMSig* z$-bDAiP{#X{(^vH!I^`A5x60Q;D&Ti^m+-IETB7V%-a|A9_b(l31+MNZz3~go>0>q zQFG!E{vb{45L3BIC!C8=RF3R`fJ@WeuXPTX!XmyC|BF}hu04`*emu~AW!~v$c%TXV z(g(!?{AA9)w9#&M!h z+uLN2QuIM6^G${oM~+2M#A8Dz{>iJm%E;|JQ6;k0ct%Zmv}U^?3n^^16(COM3&n+xC*F)vHyR;iu$hwSNO}Tw#G&Zhwx5U1 zO%ny*y6e-i@0WL;J>Pn(v|-TW@bg#t&!)y;sV_}@+>al%_)QhmkKXRLA?M6yUJAbY z%j+`YOIx}1i^@ypA8g6hgQOEj`Ou_JNKBvbQ z*Op|=%vF~Ql~!xRB(oYfY)C6wE~*?V8`_KXOQHyz>joisRQS8ruhb8ohUnn^VAo>pTHHJvJMUd zEs?MKkW3>@#E;d=zREZ_QGNIBDouUj<$dX413GP_s4XDx+K+-Oou#r#)Lw%;@J(rb=O-7BzcKWG|Pkru77e#ONZ1qtDj5;Y^B3wr>)tY9=M3^B z__Usv?^&fdER!D@n@*D_)(rlGK!8h=Ra}{-XSNO5B~ab}l(QrVOFgE~5pn&K$f`Bj zg7JDATijLJn{OVKV0l8O(KX2|!nf;+%*}d-fH}E*}`o-zRzeEHAKvyjbt1U|Fz+z^oYg6*SwT4R>ffC-+^F)|L)i zeS0**m6W@lsl&G5k^>_nTmWi;RX}k2g{lBi`vO3B7uJmo#z%2>89_i1c(!w$T}I#@ z(%4i3HQ7!*!TSgQ(>tg3r!J>9rwXT{ijaRM8^l85tb?(d*A9#30{W#p5+cgLbYO77 z>85d{%f9Zb`3crmDyYBf+H_c3M^Gy_%9q-c>1yIljj@`%1)`Vx6(dFiXsdW ze&q+XdR=()b}=ddubcI`#Qn6~)Pepx$Ye4f8ANU|rndKElr5Z0|FWcqUqhDiw3;t} z_CtzqDzlCH^{b+M?f1&s3g>jxW4uU*G&Vyygp%qOz`%B4u^F{qns(i>&dAEnIgD|Y z-a#ft$jAfZ!53QGTHd?-Vb+AXPK^d%Lrxs3V}iVXud@1ja-pp#{jw0l#Y~<%h*bWe z^5iH}!-VKeouTp}ab2a1$emZqz>8i8eIjHr3)!0l#Ap)0@N3C|S>ME`R0OuMB4!(m zuy9(=M3S%&&3ZIpr}qr?g{>UzB4nN>piP=A4zPhf;=NH!`063IGnZ$mAD^Mlqtk`& zj#Qt&_4=jL{XE%a{ra`Yqg06bA}0Y|B0w@!yEr!a{AhK#y4r9ltV%U4cxZnIXzwYGm(Y}w>z+%q5Id#%Uvb#|{V4tRVC$t8xIfb|^zX_@no=}t;$$zA0b zMxsG3{Y>fa3T=dXc;4=D5XX}DHKm%1-6PT(wHTEhh-QVoM4i&*5bRpu#`vWEY<+tX z7EWuGvXxQ_d%VxLT|H2&-1u0gzrrVAOIA(Mt6cG=<Sc?j<8R1JXSI+6XvwVjYk$pe>stL- z;j_3+G5@UF4c~B7>8Ag^CrkI;zg9h)ZChEQeRwT!KDS3meyEP^St@xncG1h~693>^ zBcYrZ6qcp2hc=E+lV%h2AQ|@wF8k!}O7@gDHB9x1-*@L#uWGZ}ORIyLsfy%#ba$4A zr}aqV))NlMc(p5%~y%i2ucVO-Kre^(ZsS(ALSMWbbRY8I(*H?b zP7}`I2jG(kG8#xFDxyWVGfOOrU3|~a3@w-!So>h;%hyBbi-ZVU+6cj1+mgC>LAe@_ zLSn0Vaz&F!RI@k;9_`cX%Y;(O$T`jJ1&Bp>yJ4!UCOD^*mgS@_Fg&Lxf1)liPK(!H z$*on2ESgfLg((W+@q9@g&AE|gOUgyw>y2ltLSE-gbMK{=$aM#KLIHTXWPVWUs6kyQ zosJ7ym_vsFc;Lswj|2E_kM=Uol&D|sONF)c`R(N1ONm10!Uy*_d;{-AyL%*Y zz>^jwNQcr&z?of9j2!O)oD`r#O=-so_kZRZ!p1{85{d) z##=9^;XSIl&34Xy0rb)$YSAUXg`I;$!_^4&FJ>}NM%+!H78B8z>Ik?V~>#Zc7m zrri7qNYj_ZsTD2qA<|U(ZS6S+b|K4DfH()ESyYjbFIg@*j0B(yaf!}+%#{YYo6ku> z2++5Od~TG`$nSn2Y<+ad#S=WLR z-Ar9t0ES79%apwTU6#YCF=dh>dwqAb;L?K<*>^7;nbZOf*A`WRmCXYw|1z~7RN!NG zycKU@#^mVQqGZ5gScWN7rx}_)6w^wkg7)3e?~R&LPbsEh_8ry_SEi^GcYvuaBJC)? z>pR`JA-)fEOB8K4>fm#EyCB0iP#67Rp(`+_VL`*q0j@`vm5m~9eimqZv2c=<8N8)0 zt#=e-osAES`&>ERTC+bLhN+gJ!{f<`7b9Y0>t7Q6cw@m#F;%+#{EKk93Vn|C6i1r% zjhh)FK@OInV(Hmiaq}jk}4=7`g~Qn_5F5HADIt4Rv*(+ z#%ah3E#23Rkm2wmdtqvtTU%#aw;fG+55Lrqx8i0QdlvayBr8$ogT!a?rTi?aa}RP8 zwjT_)%Bw-618~nVK-MZ2o1;c~(D2RcdiM2tS>FNF`yI12*Uo6s=RVdDM>LDQWSMAP zdh+FDcST`u1HpO=nkfon#xAS{TFJ3Yi|Wd7z}ikKT8K1$mF<8JgYta=&XnzCg%4GZTE4F*{nL zqy2QvtGey?)vwZ@9ow&6{V_?fkH1R>#(dq81@vq-*Nm+Wj-SxIP3?9~F zu$pl6s#&pcjeh#(jn+n5Cd-10-#rLnEVAlCD+Y@2c6z3qCitY0HAZnBk(w8lsG-3R z&i&IUshF^t*f46N|GJM~!n46ARX(l6djj&|isX+FE$ss=AM0#n)F@hy*h*50IzFu1 zoJ2za2G^Tq`dYj>twO=2+l2*^o<3g&2b<~g3q;Eo59d>gV!10U^e-Z=PP!OerYu?O zcgiX~(wQ`lK_P!s$3Mc_EVS06Uf~&NFlzf+SotY0+D+0EUaX>U*mU29Ue{tP@IN40 zr9{RWA{(gjA58iRn)$n}B=1?x1DHf|*<_wlJ>p!|-aoVl17rA^yPzu(Vy zj0Yb3J+D66N>x=*6}6Ss&wkI>ps)Y^yUNhX!oB8gg?YfXDb^>mHDO<%u(V2DC!{!! zy@IiWQw5^)QM1=Z!AN$*i z-A5Bg)6e@!35u~1vk{Fcn&kvS<%M5z1aofR5?7Ye{8esj5^zv^t!-rf5XDtRnEO!$ zF=v9dwrXIG*mL-?UlCCDP!jJ~?Xn9@oB^=icumkdp-;&JxB_`7g0H+1*zR)7!!^A$ zn$(kPDRC9ir3G?1o6-qCN3|YX*2`~7xiOcAa^UV*Ssr-b5B)XNm*BRQFcUHCCIgJf zNTi$Ee4ja4d2%|ow9o$I9V%cf{q|&4&eaEU&N9`F3PMKD4&@K~`{}~U@)MtbxOskKqJj6qzx|8gUDk_4kE}tCH3Pz86gMYx8_+`@UqkGaG zMDd{%J%~5|xJa&i(W~aFOHD_4Y*CiLs4oAF819tRNqu}IFMjF1`J={KA_?VuGawDZ zaePmn-CyZd$6lme0{^cm=n$-nFBs?mZ>Zj(ejbb5$^t0I|E>V4p7p)#ufrN eP{g7{=7fE;e0{)nLz;5c6$!HC5PZsirvCt1f<3ta From 09a229b412401a54cb635a0ffb9f37063798775b Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 22 Nov 2016 04:45:31 +0000 Subject: [PATCH 163/196] Update 'nodeupdate()' to 'check_for_falling()' API --- .luacheckrc | 2 +- mods/beds/api.lua | 2 +- mods/default/functions.lua | 2 +- mods/doors/init.lua | 2 +- mods/fire/init.lua | 2 +- mods/tnt/init.lua | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.luacheckrc b/.luacheckrc index 3a4faccb..52b25132 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -5,7 +5,7 @@ read_globals = { "DIR_DELIM", "minetest", "core", "dump", - "vector", "nodeupdate", "nodeupdate_single", + "vector", "VoxelManip", "VoxelArea", "PseudoRandom", "ItemStack", } diff --git a/mods/beds/api.lua b/mods/beds/api.lua index 3624ea45..7b409e99 100644 --- a/mods/beds/api.lua +++ b/mods/beds/api.lua @@ -16,7 +16,7 @@ local function destruct_bed(pos, n) if reverse then reverse = not reverse minetest.remove_node(other) - nodeupdate(other) + minetest.check_for_falling(other) else reverse = not reverse end diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 175365b2..37b5d581 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -356,7 +356,7 @@ minetest.register_abm({ end -- Remove node minetest.remove_node(pos) - nodeupdate(pos) + minetest.check_for_falling(pos) end }) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index a3012054..364e7a8a 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -364,7 +364,7 @@ function doors.register(name, def) end def.after_dig_node = function(pos, node, meta, digger) minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) - nodeupdate({x = pos.x, y = pos.y + 1, z = pos.z}) + minetest.check_for_falling({x = pos.x, y = pos.y + 1, z = pos.z}) end def.on_rotate = false diff --git a/mods/fire/init.lua b/mods/fire/init.lua index c600edc7..6f14d727 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -290,7 +290,7 @@ else -- Fire enabled def.on_burn(p) else minetest.remove_node(p) - nodeupdate(p) + minetest.check_for_falling(p) end end end, diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 0c447f95..f9bc307c 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -332,7 +332,7 @@ local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast) vm:update_map() vm:update_liquids() - -- call nodeupdate for everything within 1.5x blast radius + -- call check_single_for_falling for everything within 1.5x blast radius for y = -radius * 1.5, radius * 1.5 do for z = -radius * 1.5, radius * 1.5 do for x = -radius * 1.5, radius * 1.5 do @@ -340,7 +340,7 @@ local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast) local s = vector.add(pos, rad) local r = vector.length(rad) if r / radius < 1.4 then - nodeupdate_single(s) + minetest.check_single_for_falling(s) end end end @@ -598,7 +598,7 @@ function tnt.register_tnt(def) on_construct = function(pos) minetest.sound_play("tnt_ignite", {pos = pos}) minetest.get_node_timer(pos):start(4) - nodeupdate(pos) + minetest.check_for_falling(pos) end, }) end From 0bd2efcfc1fb23bdb078d5aaeea8cad8ec27d828 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Tue, 11 Oct 2016 21:05:10 -0700 Subject: [PATCH 164/196] Merge 'torches' mod as default:torch. This merges the current state of the well-maintained and tested `torches` mod as I've maintained it for the last 6 months. This started out as a thorough cleanup of 3D torches by blockmen, where some of the initial code still remains. The models were redone entirely from scratch and have been extensively tested with dozens of animated textures converted with mcimport, and look a lot better than the original 3D Torches mod. The ceiling torch is retained and functional. The `wieldlight` addition that the torches mod has was removed, since it relies on wieldview to look decent. This can stay external mod code. I've opted to move the torch nodes to a separate file. It's not a lot of code but nodes.lua is already huge, and I wanted to retain the copyright header and some of the readme.txt notes, and this was the easiest way of doing it. This code passes "default:torch" to nodes with on_rightclick, fixing problems with itemframes. Essentially it has a more elaborate item_place() routine to make sure we're not passing the wall torch to nodes that may display it. The ceiling torch is a separate model and not the same as the floor model. That does mean that there are 3 models in this mod. --- mods/default/init.lua | 1 + mods/default/models/torch_ceiling.obj | 58 ++++++++++ mods/default/models/torch_floor.obj | 50 +++++++++ mods/default/models/torch_wall.obj | 64 +++++++++++ mods/default/nodes.lua | 54 ---------- mods/default/torch.lua | 147 ++++++++++++++++++++++++++ 6 files changed, 320 insertions(+), 54 deletions(-) create mode 100644 mods/default/models/torch_ceiling.obj create mode 100644 mods/default/models/torch_floor.obj create mode 100644 mods/default/models/torch_wall.obj create mode 100644 mods/default/torch.lua diff --git a/mods/default/init.lua b/mods/default/init.lua index 08e9efe4..7b5f62f3 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -41,6 +41,7 @@ dofile(default_path.."/functions.lua") dofile(default_path.."/trees.lua") dofile(default_path.."/nodes.lua") dofile(default_path.."/furnace.lua") +dofile(default_path.."/torch.lua") dofile(default_path.."/tools.lua") dofile(default_path.."/item_entity.lua") dofile(default_path.."/craftitems.lua") diff --git a/mods/default/models/torch_ceiling.obj b/mods/default/models/torch_ceiling.obj new file mode 100644 index 00000000..ea51f3ce --- /dev/null +++ b/mods/default/models/torch_ceiling.obj @@ -0,0 +1,58 @@ +# Blender v2.77 (sub 0) OBJ File: 'torch_ceiling.blend' +# www.blender.org +mtllib torch_ceiling.mtl +o Cube_Cube.001 +v -0.062469 -0.047331 0.068152 +v -0.062469 -0.559515 -0.164388 +v -0.062469 0.004344 -0.045667 +v -0.062469 -0.507839 -0.278206 +v 0.062531 -0.047331 0.068152 +v 0.062531 -0.559515 -0.164388 +v 0.062531 0.004344 -0.045667 +v 0.062531 -0.507839 -0.278206 +v 0.353584 0.040000 0.363553 +v 0.353584 -0.397500 0.363553 +v -0.353522 0.040000 -0.343553 +v -0.353522 -0.397500 -0.343553 +v 0.353584 0.040000 -0.343553 +v -0.353522 0.040000 0.363553 +v 0.353584 -0.397500 -0.343553 +v -0.353522 -0.397500 0.363553 +vt 0.5625 0.5000 +vt 0.5625 0.6250 +vt 0.4375 0.6250 +vt 0.4375 0.5000 +vt 0.4375 0.0000 +vt 0.5625 0.0000 +vt 0.5625 0.1250 +vt 0.4375 0.1250 +vt 0.5625 0.6250 +vt 0.4375 0.6250 +vt 0.4375 0.6250 +vt 0.4375 0.0000 +vt 0.5625 0.6250 +vt 0.5625 0.0000 +vt 1.0000 0.5625 +vt 1.0000 1.0000 +vt 0.0000 1.0000 +vt 0.0000 0.5625 +vt 0.0000 0.5625 +vt 1.0000 0.5625 +vt 1.0000 1.0000 +vt 0.0000 1.0000 +vn 0.0000 0.9105 0.4134 +vn -0.0000 -0.4134 0.9105 +vn -1.0000 0.0000 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +usemtl Material.001 +s off +f 3/1/1 1/2/1 5/3/1 7/4/1 +f 8/5/1 4/6/1 2/7/1 6/8/1 +f 3/9/2 4/6/2 8/5/2 7/10/2 +f 1/11/3 3/9/3 4/6/3 2/12/3 +f 5/13/2 1/11/2 2/12/2 6/14/2 +f 7/10/3 8/5/3 6/14/3 5/13/3 +usemtl Material.002 +f 9/15/4 10/16/4 12/17/4 11/18/4 +f 13/19/5 14/20/5 16/21/5 15/22/5 diff --git a/mods/default/models/torch_floor.obj b/mods/default/models/torch_floor.obj new file mode 100644 index 00000000..e2487efe --- /dev/null +++ b/mods/default/models/torch_floor.obj @@ -0,0 +1,50 @@ +# Blender v2.76 (sub 11) OBJ File: 'torch_floor.blend' +# www.blender.org +mtllib torch_floor.mtl +o Cube_Cube.001 +v 0.062500 0.062500 -0.062500 +v 0.062500 -0.500000 -0.062500 +v 0.062500 0.062500 0.062500 +v 0.062500 -0.500000 0.062500 +v -0.062500 0.062500 -0.062500 +v -0.062500 -0.500000 -0.062500 +v -0.062500 0.062500 0.062500 +v -0.062500 -0.500000 0.062500 +v -0.353553 -0.500000 0.353553 +v -0.353553 0.500000 0.353553 +v 0.353553 -0.500000 -0.353553 +v 0.353553 0.500000 -0.353553 +v -0.353553 -0.500000 -0.353553 +v 0.353553 -0.500000 0.353553 +v -0.353553 0.500000 -0.353553 +v 0.353553 0.500000 0.353553 +vt 0.562500 0.500000 +vt 0.562500 0.625000 +vt 0.437500 0.625000 +vt 0.437500 0.500000 +vt 0.437500 0.000000 +vt 0.562500 0.000000 +vt 0.562500 0.125000 +vt 0.437500 0.125000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn -0.707100 0.000000 -0.707100 +vn -0.707100 -0.000000 0.707100 +g Cube_Cube.001_Cube_Cube.001_Material.001 +usemtl Material.001 +s off +f 3/1/1 1/2/1 5/3/1 7/4/1 +f 8/5/1 4/6/1 2/7/1 6/8/1 +f 3/2/2 4/6/2 8/5/2 7/3/2 +f 1/3/3 3/2/3 4/6/3 2/5/3 +f 5/2/2 1/3/2 2/5/2 6/6/2 +f 7/3/3 8/5/3 6/6/3 5/2/3 +g Cube_Cube.001_Cube_Cube.001_Material.002 +usemtl Material.002 +f 9/9/4 10/10/4 12/11/4 11/12/4 +f 13/12/5 14/9/5 16/10/5 15/11/5 diff --git a/mods/default/models/torch_wall.obj b/mods/default/models/torch_wall.obj new file mode 100644 index 00000000..57baa9e6 --- /dev/null +++ b/mods/default/models/torch_wall.obj @@ -0,0 +1,64 @@ +# Blender v2.76 (sub 11) OBJ File: 'torch_wall.blend' +# www.blender.org +mtllib torch_wall.mtl +o Cube_Cube.001 +v 0.062469 -0.195248 0.023570 +v 0.062469 -0.476498 -0.463570 +v 0.062469 -0.303502 0.086070 +v 0.062469 -0.584752 -0.401070 +v -0.062531 -0.195248 0.023570 +v -0.062531 -0.476498 -0.463570 +v -0.062531 -0.303502 0.086070 +v -0.062531 -0.584752 -0.401070 +v -0.353584 -0.613553 0.022500 +v -0.353584 -0.613553 0.460000 +v 0.353522 0.093553 0.022500 +v 0.353522 0.093553 0.460000 +v -0.353584 0.093553 0.022500 +v 0.353522 -0.613553 0.022500 +v -0.353584 0.093553 0.460000 +v 0.353522 -0.613553 0.460000 +v 0.353553 0.056811 -0.121957 +v 0.353553 -0.224439 -0.609096 +v -0.353553 -0.555561 0.231596 +v -0.353553 -0.836811 -0.255543 +v -0.353553 0.056811 -0.121957 +v -0.353553 -0.224439 -0.609096 +v 0.353553 -0.555561 0.231596 +v 0.353553 -0.836811 -0.255543 +vt 0.562500 0.500000 +vt 0.562500 0.625000 +vt 0.437500 0.625000 +vt 0.437500 0.500000 +vt 0.437500 0.000000 +vt 0.562500 0.000000 +vt 0.562500 0.125000 +vt 0.437500 0.125000 +vt 0.000000 0.562500 +vt 0.000000 -0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.562500 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vn -0.000000 0.500000 0.866000 +vn -0.000000 0.866000 -0.500000 +vn 1.000000 0.000000 0.000000 +vn -0.707100 0.612400 -0.353600 +vn -0.707100 -0.612400 0.353600 +vn -0.707100 0.707100 -0.000000 +vn -0.707100 -0.707100 -0.000000 +g Cube_Cube.001_Cube_Cube.001_Material.001 +usemtl Material.001 +s off +f 3/1/1 1/2/1 5/3/1 7/4/1 +f 8/5/1 4/6/1 2/7/1 6/8/1 +f 3/2/2 4/6/2 8/5/2 7/3/2 +f 1/3/3 3/2/3 4/6/3 2/5/3 +f 5/2/2 1/3/2 2/5/2 6/6/2 +f 7/3/3 8/5/3 6/6/3 5/2/3 +f 17/9/4 18/10/4 20/11/4 19/12/4 +f 21/9/5 22/10/5 24/11/5 23/12/5 +g Cube_Cube.001_Cube_Cube.001_Material.002 +usemtl Material.002 +f 9/12/6 10/13/6 12/14/6 11/9/6 +f 13/9/7 14/12/7 16/13/7 15/14/7 diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 1dfc6644..9aa7af59 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -159,8 +159,6 @@ default:lava_flowing Tools / "Advanced" crafting / Non-"natural" ------------------------------------------- -default:torch - default:chest default:chest_locked @@ -1592,58 +1590,6 @@ minetest.register_node("default:lava_flowing", { -- Tools / "Advanced" crafting / Non-"natural" -- -minetest.register_node("default:torch", { - description = "Torch", - drawtype = "torchlike", - tiles = { - { - name = "default_torch_on_floor_animated.png", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 3.0 - }, - }, - { - name="default_torch_on_ceiling_animated.png", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 3.0 - }, - }, - { - name="default_torch_animated.png", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 3.0 - }, - }, - }, - inventory_image = "default_torch_on_floor.png", - wield_image = "default_torch_on_floor.png", - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - is_ground_content = false, - walkable = false, - light_source = default.LIGHT_MAX - 1, - selection_box = { - type = "wallmounted", - wall_top = {-0.1, 0.5 - 0.6, -0.1, 0.1, 0.5, 0.1}, - wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5 + 0.6, 0.1}, - wall_side = {-0.5, -0.3, -0.1, -0.5 + 0.3, 0.3, 0.1}, - }, - groups = {choppy = 2, dig_immediate = 3, flammable = 1, attached_node = 1}, - legacy_wallmounted = true, - sounds = default.node_sound_defaults(), -}) - - local chest_formspec = "size[8,9]" .. default.gui_bg .. diff --git a/mods/default/torch.lua b/mods/default/torch.lua new file mode 100644 index 00000000..0d3454bf --- /dev/null +++ b/mods/default/torch.lua @@ -0,0 +1,147 @@ + +--[[ + +Torch mod - formerly mod "Torches" +====================== + +(c) Copyright BlockMen (2013-2015) +(C) Copyright sofar (2016) + +This mod changes the default torch drawtype from "torchlike" to "mesh", +giving the torch a three dimensional appearance. The mesh contains the +proper pixel mapping to make the animation appear as a particle above +the torch, while in fact the animation is just the texture of the mesh. + + +License: +~~~~~~~~ +(c) Copyright BlockMen (2013-2015) + +Textures and Meshes/Models: +CC-BY 3.0 BlockMen +Note that the models were entirely done from scratch by sofar. + +Code: +Licensed under the GNU LGPL version 2.1 or higher. +You can redistribute it and/or modify it under +the terms of the GNU Lesser General Public License +as published by the Free Software Foundation; + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +See LICENSE.txt and http://www.gnu.org/licenses/lgpl-2.1.txt + +--]] + +minetest.register_node("default:torch", { + description = "Torch", + drawtype = "mesh", + mesh = "torch_floor.obj", + inventory_image = "default_torch_on_floor.png", + wield_image = "default_torch_on_floor.png", + tiles = {{ + name = "default_torch_on_floor_animated.png", + animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} + }}, + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + liquids_pointable = false, + light_source = 13, + groups = {choppy=2, dig_immediate=3, flammable=1, attached_node=1, torch=1}, + drop = "default:torch", + selection_box = { + type = "wallmounted", + wall_bottom = {-1/16, -0.5, -1/16, 1/16, 2/16, 1/16}, + }, + sounds = default.node_sound_wood_defaults(), + on_place = function(itemstack, placer, pointed_thing) + local under = pointed_thing.under + local node = minetest.get_node(under) + local def = minetest.registered_nodes[node.name] + if def and def.on_rightclick and + ((not placer) or (placer and not placer:get_player_control().sneak)) then + return def.on_rightclick(under, node, placer, itemstack, + pointed_thing) or itemstack + end + + local above = pointed_thing.above + local wdir = minetest.dir_to_wallmounted(vector.subtract(under, above)) + local fakestack = itemstack + if wdir == 0 then + fakestack:set_name("default:torch_ceiling") + elseif wdir == 1 then + fakestack:set_name("default:torch") + else + fakestack:set_name("default:torch_wall") + end + + itemstack = minetest.item_place(fakestack, placer, pointed_thing, wdir) + itemstack:set_name("default:torch") + + return itemstack + end +}) + +minetest.register_node("default:torch_wall", { + drawtype = "mesh", + mesh = "torch_wall.obj", + tiles = {{ + name = "default_torch_on_floor_animated.png", + animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} + }}, + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + light_source = 13, + groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1}, + drop = "default:torch", + selection_box = { + type = "wallmounted", + wall_side = {-0.5, -0.3, -0.1, -0.2, 0.3, 0.1}, + }, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("default:torch_ceiling", { + drawtype = "mesh", + mesh = "torch_ceiling.obj", + tiles = {{ + name = "default_torch_on_floor_animated.png", + animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3} + }}, + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + light_source = 13, + groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1}, + drop = "default:torch", + selection_box = { + type = "wallmounted", + wall_top = {-0.1, -0.1, -0.25, 0.1, 0.5, 0.1}, + }, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_lbm({ + name = "default:3dtorch", + nodenames = {"default:torch", "torches:floor", "torches:wall"}, + action = function(pos, node) + if node.param2 == 0 then + minetest.set_node(pos, {name = "default:torch_ceiling", + param2 = node.param2}) + elseif node.param2 == 1 then + minetest.set_node(pos, {name = "default:torch", + param2 = node.param2}) + else + minetest.set_node(pos, {name = "default:torch_wall", + param2 = node.param2}) + end + end +}) + From b0ae48827736eff32f140e327b404cd8ac00b2c9 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Thu, 24 Nov 2016 07:00:35 +0100 Subject: [PATCH 165/196] Use travis' container-based infrastructure (#1314) Use travis' container-based infrastructure (no sudo) --- .travis.yml | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index 805fe08c..5253938a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,12 @@ language: generic - -branches: - only: - - master - -sudo: required - +sudo: false +addons: + apt: + packages: + - luarocks before_install: - - sudo apt-get update - - sudo apt-get install -y luarocks - - sudo luarocks install luacheck - -script: luacheck --no-color ./mods + - luarocks install --local luacheck +script: +- $HOME/.luarocks/bin/luacheck --no-color ./mods +notifications: + email: false From e4b1c935120580b013a6f9ba2212a4cb2ef246ac Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sat, 26 Dec 2015 11:16:49 -0800 Subject: [PATCH 166/196] Keys: Allow easy sharing of access without commands This code adds the key concept to minetest_game, and integrates it with lockable nodes. Currently supported lockable items are the Steel Door, the Steel Trapdoor, and the Locked Chest. The goal of this modification is to introduce a fine-grained multi- player permission system that is intuitive and usable without any console or chat commands, and doesn't require extra privileges to be granted or setup. Keys can also physically be conveyed to other players, adding to gameplay and adding some personality that is preferable to console commands or editing formspecs. A skeleton key can be crafted with 1 gold ingot. Skeleton keys can then be matched to a lockable node by right-clicking the skeleton key on a lockable node, which changes the skeleton key to a "key". Gold was chosen as it's currently a not-so very useful item, and therefore it's likely that players have some, but aren't really using it for any purpose. This key can subsequently used by any player to open or access that lockable node, including retrieving items from Locked Chests, or putting items in them. They key is programmed to fit only the particular locked node it is programmed to. This is achieved by storing a secret value in both key and locked node. If this secret value doesn't match, the key will not open the locked node. This allows many keys to be created for one chest or door, but a key will only fit one node ever. The secrets are stored in node, and item meta for the key. If a locked node is removed, all keys that opened it are no longer valid. Even if a new door/chest is placed in exactly the same spot, the old keys will no longer fit that node. Keys can be smelted back in gold ingots if they are no longer useful. The method of storing a secret in nodemeta and itemstackmeta is secure as there is no way for the client to create new items on the server with a particular secret metadata value. Even if you could possible create such an itemstack on the client, the server does not ever read itemstackmeta from a client package. The patch adds an API that allows other nodes and nodes added by mods to use the same keys as well. The method how to implement this is described in game_api.txt. The mod should add 2 callbacks to it's node definition. Example code is given. Textures are from PixelBOX, thanks to Gambit. --- game_api.txt | 58 ++++++++++++++ mods/default/README.txt | 2 + mods/default/crafting.lua | 21 +++++ mods/default/nodes.lua | 57 +++++++++++++- mods/default/textures/default_key.png | Bin 0 -> 3037 bytes .../default/textures/default_key_skeleton.png | Bin 0 -> 3043 bytes mods/default/tools.lua | 72 ++++++++++++++++++ mods/doors/init.lua | 70 ++++++++++++++++- 8 files changed, 274 insertions(+), 6 deletions(-) create mode 100644 mods/default/textures/default_key.png create mode 100644 mods/default/textures/default_key_skeleton.png diff --git a/game_api.txt b/game_api.txt index e85898fd..db5fc014 100644 --- a/game_api.txt +++ b/game_api.txt @@ -672,3 +672,61 @@ Carts like speed, acceleration, player attachment. The handler will likely be called many times per second, so the function needs to make sure that the event is handled properly. + +Key API +------- + +The key API allows mods to add key functionality to nodes that have +ownership or specific permissions. Using the API will make it so +that a node owner can use skeleton keys on their nodes to create keys +for that node in that location, and give that key to other players, +allowing them some sort of access that they otherwise would not have +due to node protection. + +To make your new nodes work with the key API, you need to register +two callback functions in each nodedef: + + +`on_key_use(pos, player)` + * Is called when a player right-clicks (uses) a normal key on your + * node. + * `pos` - position of the node + * `player` - PlayerRef + * return value: none, ignored + +The `on_key_use` callback should validate that the player is wielding +a key item with the right key meta secret. If needed the code should +deny access to the node functionality. + +If formspecs are used, the formspec callbacks should duplicate these +checks in the metadata callback functions. + + +`on_skeleton_key_use(pos, player, newsecret)` + + * Is called when a player right-clicks (uses) a skeleton key on your + * node. + * `pos` - position of the node + * `player` - PlayerRef + * `newsecret` - a secret value(string) + * return values: + * `secret` - `nil` or the secret value that unlocks the door + * `name` - a string description of the node ("a locked chest") + * `owner` - name of the node owner + +The `on_skeleton_key_use` function should validate that the player has +the right permissions to make a new key for the item. The newsecret +value is useful if the node has no secret value. The function should +store this secret value somewhere so that in the future it may compare +key secrets and match them to allow access. If a node already has a +secret value, the function should return that secret value instead +of the newsecret value. The secret value stored for the node should +not be overwritten, as this would invalidate existing keys. + +Aside from the secret value, the function should retun a descriptive +name for the node and the owner name. The return values are all +encoded in the key that will be given to the player in replacement +for the wielded skeleton key. + +if `nil` is returned, it is assumed that the wielder did not have +permissions to create a key for this node, and no key is created. diff --git a/mods/default/README.txt b/mods/default/README.txt index c76cf7c3..9dde0eba 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -177,6 +177,8 @@ Gambit (CC BY-SA 3.0): default_snow.png default_snow_side.png default_snowball.png + default_key.png + default_key_skeleton.png asl97 (CC BY-SA 3.0): default_ice.png diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua index 23f233fb..50b4b957 100644 --- a/mods/default/crafting.lua +++ b/mods/default/crafting.lua @@ -352,6 +352,13 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = 'default:skeleton_key', + recipe = { + {'default:gold_ingot'}, + } +}) + minetest.register_craft({ output = 'default:chest', recipe = { @@ -781,6 +788,20 @@ minetest.register_craft({ recipe = "default:clay_lump", }) +minetest.register_craft({ + type = 'cooking', + output = 'default:gold_ingot', + recipe = 'default:skeleton_key', + cooktime = 5, +}) + +minetest.register_craft({ + type = 'cooking', + output = 'default:gold_ingot', + recipe = 'default:key', + cooktime = 5, +}) + -- -- Fuels -- diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 9aa7af59..6e391e63 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1619,16 +1619,30 @@ local function get_locked_chest_formspec(pos) end local function has_locked_chest_privilege(meta, player) - local name = "" if player then if minetest.check_player_privs(player, "protection_bypass") then return true end - name = player:get_player_name() - end - if name ~= meta:get_string("owner") then + else return false end + + -- is player wielding the right key? + local item = player:get_wielded_item() + if item:get_name() == "default:key" then + local key_meta = minetest.parse_json(item.get_metadata()) + local secret = meta:get_string("key_lock_secret") + if secret ~= key_meta.secret then + return false + end + + return true + end + + if player:get_player_name() ~= meta:get_string("owner") then + return false + end + return true end @@ -1748,6 +1762,41 @@ minetest.register_node("default:chest_locked", { return itemstack end, on_blast = function() end, + on_key_use = function(pos, player) + local secret = minetest.get_meta(pos):get_string("key_lock_secret") + local itemstack = player:get_wielded_item() + local key_meta = minetest.parse_json(itemstack:get_metadata()) + + if secret ~= key_meta.secret then + return + end + + minetest.show_formspec( + player:get_player_name(), + "default:chest_locked", + get_locked_chest_formspec(pos) + ) + end, + on_skeleton_key_use = function(pos, player, newsecret) + local meta = minetest.get_meta(pos) + local owner = meta:get_string("owner") + local name = player:get_player_name() + + -- verify placer is owner of lockable chest + if owner ~= name then + minetest.record_protection_violation(pos, name) + minetest.chat_send_player(name, "You do not own this chest.") + return nil + end + + local secret = meta:get_string("key_lock_secret") + if secret == "" then + secret = newsecret + meta:set_string("key_lock_secret", secret) + end + + return secret, "a locked chest", owner + end, }) diff --git a/mods/default/textures/default_key.png b/mods/default/textures/default_key.png new file mode 100644 index 0000000000000000000000000000000000000000..d59bfb6b2e74cb7b3b54eb9b2321f69cdfa13956 GIT binary patch literal 3037 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 literal 0 HcmV?d00001 diff --git a/mods/default/textures/default_key_skeleton.png b/mods/default/textures/default_key_skeleton.png new file mode 100644 index 0000000000000000000000000000000000000000..eafcc19585b3239ca7061a7f939e6507422dd2e9 GIT binary patch literal 3043 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 Date: Thu, 17 Nov 2016 09:09:48 +0100 Subject: [PATCH 167/196] Default: Several improvements of character model MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Improve arms attachment The arm bones were at an angle, so that the bones were difficult to orient correctly, as unintuitive combinations of angles would be needed to get the default orientation, or any other acceptable orientation. Moreover, a simple rotation of the arm, e.g. forward, would require all angles to be adapted, instead of just one. The ends of the arms bones were moved from touching the body, to the center of the arm, at an equal distance from the sides of the arm and the shoulder; the arm bone is now in the center of the arm. - Fix body rotation The body was rotated 180° while the rest wasn't, leading to strange results when setting bone positions manually. - Fix default rotation of limbs (manually positioning them in their default position would require an 180° rotation). Is is not know how this was fixed. Maybe just because the model was re-exported. - The bone of the cape was moved to the center of the cape (it was at the edge). For some reason this fixed the 180° rotation of the cape when it was manually positioned (similar to previous issue). The changes above fix most of the issues mentioned in #1376 - Add a player-model-specific workaround for the problem described in: https://github.com/minetest/minetest/issues/2813#issuecomment-198796927 https://github.com/minetest/minetest_game/pull/1392#issuecomment-261669915 During walking, attached tools would randomly switch hands. Walking also happens to be the only animation where the body does not move. Making the body move an imperceptible amount makes the issue disappear for the player model. - Fix body vertex group: it no longer includes parts of arms and legs Thanks to @stujones11 for these last two changes. --- mods/default/models/character.b3d | Bin 86830 -> 84526 bytes mods/default/models/character.blend | Bin 700448 -> 634876 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/default/models/character.b3d b/mods/default/models/character.b3d index 7558e6f849369c419c8d307f022811ed546bc9f2..9ab454366bee8fb6c9e45e64ac0d77808d5ea66f 100644 GIT binary patch literal 84526 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 literal 86830 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 XOIzrRcy5N_d+3Xs7_U|y)V=wCU({5p diff --git a/mods/default/models/character.blend b/mods/default/models/character.blend index 7324325a1197155471dcd0a5aba574d001115c1f..fca9f6597fe998d1aebcac4abe126b13099a5788 100644 GIT binary patch delta 106862 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

-W7H0l~9`+fS?&c5zAo?f_r6Ko;0 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 From e8376215378b0c0ca676e634d7a84936f23e40f3 Mon Sep 17 00:00:00 2001 From: paramat Date: Fri, 25 Nov 2016 02:24:46 +0000 Subject: [PATCH 168/196] Farming/fire: Add tool break sounds Add tool break sounds to hoes and flint and steel. Flint and steel: Reduce gain of use sound and only add tool wear if not in creative mode. --- mods/farming/api.lua | 9 ++++++++- mods/fire/init.lua | 12 ++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/mods/farming/api.lua b/mods/farming/api.lua index cd1e67f1..725cbc47 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -50,7 +50,7 @@ farming.hoe_on_use = function(itemstack, user, pointed_thing, uses) return end - -- turn the node into soil, wear out item and play sound + -- turn the node into soil and play sound minetest.set_node(pt.under, {name = regN[under.name].soil.dry}) minetest.sound_play("default_dig_crumbly", { pos = pt.under, @@ -58,7 +58,13 @@ farming.hoe_on_use = function(itemstack, user, pointed_thing, uses) }) if not minetest.setting_getbool("creative_mode") then + -- wear tool + local wdef = itemstack:get_definition() itemstack:add_wear(65535/(uses-1)) + -- tool break sound + if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then + minetest.sound_play(wdef.sound.breaks, {pos = pt.above, gain = 0.5}) + end end return itemstack end @@ -94,6 +100,7 @@ farming.register_hoe = function(name, def) return farming.hoe_on_use(itemstack, user, pointed_thing, def.max_uses) end, groups = def.groups, + sound = {breaks = "default_tool_breaks"}, }) -- Register its recipe if def.material == nil then diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 6f14d727..0dbd7c3e 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -86,13 +86,14 @@ minetest.register_node("fire:permanent_flame", { minetest.register_tool("fire:flint_and_steel", { description = "Flint and Steel", inventory_image = "fire_flint_steel.png", + sound = {breaks = "default_tool_breaks"}, + on_use = function(itemstack, user, pointed_thing) local pt = pointed_thing minetest.sound_play( "fire_flint_and_steel", - {pos = pt.above, gain = 0.6, max_hear_distance = 8} + {pos = pt.above, gain = 0.5, max_hear_distance = 8} ) - itemstack:add_wear(1000) if pt.type == "node" then local node_under = minetest.get_node(pt.under).name local nodedef = minetest.registered_nodes[node_under] @@ -112,6 +113,13 @@ minetest.register_tool("fire:flint_and_steel", { end end if not minetest.setting_getbool("creative_mode") then + -- wear tool + local wdef = itemstack:get_definition() + itemstack:add_wear(1000) + -- tool break sound + if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then + minetest.sound_play(wdef.sound.breaks, {pos = pt.above, gain = 0.5}) + end return itemstack end end From d42ae715b8a4e5a46a590b0f97683855e5985cc1 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Mon, 4 Jul 2016 19:19:39 +0100 Subject: [PATCH 169/196] Sfinv: Add sfinv to allow tabs to be added to the inventory --- game_api.txt | 106 +++++++++++++++- mods/creative/depends.txt | 1 + mods/creative/init.lua | 237 +----------------------------------- mods/creative/inventory.lua | 171 ++++++++++++++++++++++++++ mods/sfinv/README.md | 21 ++++ mods/sfinv/api.lua | 158 ++++++++++++++++++++++++ mods/sfinv/depends.txt | 1 + mods/sfinv/init.lua | 22 ++++ 8 files changed, 483 insertions(+), 234 deletions(-) create mode 100644 mods/creative/inventory.lua create mode 100644 mods/sfinv/README.md create mode 100644 mods/sfinv/api.lua create mode 100644 mods/sfinv/depends.txt create mode 100644 mods/sfinv/init.lua diff --git a/game_api.txt b/game_api.txt index db5fc014..a2c4e312 100644 --- a/game_api.txt +++ b/game_api.txt @@ -70,7 +70,17 @@ Beds API Creative API ------------ -A global string called `creative.formspec_add` was added which allows mods to add additional formspec elements onto the default creative inventory formspec to be drawn after each update. +Use `creative.register_tab(name, title, items)` to add a tab with filtered items. +For example, + + creative.register_tab("tools", "Tools", minetest.registered_tools) + +is used to show all tools. Name is used in the sfinv page name, title is the +human readable title. + +The contents of `creative.formspec_add` is appended to every creative inventory +page. Mods can use it to add additional formspec elements onto the default +creative inventory formspec to be drawn after each update. Doors API --------- @@ -391,6 +401,100 @@ set a players home position and teleport a player to home position. * return value: false if player cannot be sent home, otherwise true +Sfinv API +--------- + +### sfinv Methods + +* sfinv.set_player_inventory_formspec(player, context) - builds page formspec + and calls set_inventory_formspec(). + If context is nil, it is either found or created. +* sfinv.get_formspec(player, context) - builds current page's formspec +* sfinv.get_nav_fs(player, context, nav, current_idx) - see above +* sfinv.make_formspec(player, context, content, show_inv, size) - adds a theme to a formspec + * show_inv, defaults to false. Whether to show the player's main inventory + * size, defaults to `size[8,8.6]` if not specified +* sfinv.register_page(name, def) - register a page, see section below +* sfinv.override_page(name, def) - overrides fields of an page registered with register_page. + * Note: Page must already be defined, (opt)depend on the mod defining it. + +### sfinv Members + +* pages - table of pages[pagename] = def +* pages_unordered - array table of pages in order of addition (used to build navigation tabs). +* homepage_name - name of default page +* contexts - contexts[playername] = player_context +* enabled - set to false to disable. Good for inventory rehaul mods like unified inventory + +### Context + +A table with these keys: + +* page - current page name +* nav - a list of page names +* nav_titles - a list of page titles +* nav_idx - current nav index (in nav and nav_titles) +* any thing you want to store + * sfinv will clear the stored data on log out / log in + +### sfinv.register_page + +sfinv.register_page(name, def) + +def is a table containing: + +* `title` - human readable page name (required) +* `get(self, player, context)` - returns a formspec string. See formspec variables. (required) +* `is_in_nav(self, player, context)` - return true to show in the navigation (the tab header, by default) +* `on_player_receive_fields(self, player, context, fields)` - on formspec submit. +* `on_enter(self, player, context)` - called when the player changes pages, usually using the tabs. +* `on_leave(self, player, context)` - when leaving this page to go to another, called before other's on_enter + +### get formspec + +Use sfinv.make_formspec to apply a layout: + + return sfinv.make_formspec(player, context, [[ + list[current_player;craft;1.75,0.5;3,3;] + list[current_player;craftpreview;5.75,1.5;1,1;] + image[4.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270] + listring[current_player;main] + listring[current_player;craft] + image[0,4.25;1,1;gui_hb_bg.png] + image[1,4.25;1,1;gui_hb_bg.png] + image[2,4.25;1,1;gui_hb_bg.png] + image[3,4.25;1,1;gui_hb_bg.png] + image[4,4.25;1,1;gui_hb_bg.png] + image[5,4.25;1,1;gui_hb_bg.png] + image[6,4.25;1,1;gui_hb_bg.png] + image[7,4.25;1,1;gui_hb_bg.png] + ]], true) + +See above (methods section) for more options. + +### Customising themes + +Simply override this function to change the navigation: + + function sfinv.get_nav_fs(player, context, nav, current_idx) + return "navformspec" + end + +And override this function to change the layout: + + function sfinv.make_formspec(player, context, content, show_inv, size) + local tmp = { + size or "size[8,8.6]", + theme_main, + sfinv.get_nav_fs(player, context, context.nav_titles, context.nav_idx), + content + } + if show_inv then + tmp[4] = theme_inv + end + return table.concat(tmp, "") + end + Stairs API ---------- diff --git a/mods/creative/depends.txt b/mods/creative/depends.txt index 4ad96d51..975e6525 100644 --- a/mods/creative/depends.txt +++ b/mods/creative/depends.txt @@ -1 +1,2 @@ default +sfinv diff --git a/mods/creative/init.lua b/mods/creative/init.lua index a6c74a29..79f8978f 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -1,237 +1,8 @@ --- minetest/creative/init.lua +dofile(minetest.get_modpath("creative") .. "/inventory.lua") -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(owner) - local owner_name = owner:get_player_name() - player_inventory[owner_name] = { - size = 0, - filter = "", - start_i = 0, - tab_id = 2, - } - - 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 - 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 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) - local player_name, stack_name = player:get_player_name(), stack:get_name() - --print(player_name .. " takes item from creative inventory; listname = " .. listname .. ", index = " .. index .. ", stack = " .. dump(stack:to_table())) - if stack then - minetest.log("action", player_name .. " takes " .. stack_name .. " from creative inventory") - --print("Stack name: " .. stack_name .. ", Stack count: " .. stack:get_count()) - end - end, - }) - - creative.update_creative_inventory(owner_name) - --print("creative inventory size: " .. player_inventory[player_name].size) -end - -local function tab_category(tab_id) - local id_category = { - nil, -- Reserved for crafting tab. - minetest.registered_items, - minetest.registered_nodes, - minetest.registered_tools, - minetest.registered_craftitems - } - - -- If index out of range, show default ("All") page. - return id_category[tab_id] or id_category[2] -end - -function creative.update_creative_inventory(player_name) - local creative_list = {} - local player_inv = minetest.get_inventory({type = "detached", name = "creative_" .. player_name}) - local inv = player_inventory[player_name] - - for name, def in pairs(tab_category(inv.tab_id)) do - if not (def.groups.not_in_creative_inventory == 1) and - def.description and def.description ~= "" and - (def.name:find(inv.filter, 1, true) or - def.description:lower():find(inv.filter, 1, true)) then - creative_list[#creative_list+1] = name - end - end - - table.sort(creative_list) - player_inv:set_size("main", #creative_list) - player_inv:set_list("main", creative_list) - inv.size = #creative_list -end - --- Create the trash field -local trash = minetest.create_detached_inventory("creative_trash", { - -- Allow the stack to be placed and remove it in on_put() - -- This allows the creative inventory to restore the stack - allow_put = function(inv, listname, index, stack, player) - if creative_mode then - return stack:get_count() - else - return 0 - end - end, - on_put = function(inv, listname) - inv:set_list(listname, {}) - end, -}) -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] - local pagenum = math.floor(start_i / (3*8) + 1) - local pagemax = math.ceil(inv.size / (3*8)) - - player:set_inventory_formspec([[ - size[8,8.6] - image[4.06,3.4;0.8,0.8;creative_trash_icon.png] - list[current_player;main;0,4.7;8,1;] - list[current_player;main;0,5.85;8,3;8] - list[detached:creative_trash;main;4,3.3;1,1;] - listring[] - tablecolumns[color;text;color;text] - tableoptions[background=#00000000;highlight=#00000000;border=false] - button[5.4,3.2;0.8,0.9;creative_prev;<] - button[7.25,3.2;0.8,0.9;creative_next;>] - button[2.1,3.4;0.8,0.5;creative_search;?] - button[2.75,3.4;0.8,0.5;creative_clear;X] - tooltip[creative_search;Search] - tooltip[creative_clear;Reset] - listring[current_player;main] - ]] .. - "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) .. "]" .. - "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 - -creative.set_crafting_formspec = function(player) - player:set_inventory_formspec([[ - size[8,8.6] - list[current_player;craft;2,0.75;3,3;] - list[current_player;craftpreview;6,1.75;1,1;] - list[current_player;main;0,4.7;8,1;] - list[current_player;main;0,5.85;8,3;8] - list[detached:creative_trash;main;0,2.75;1,1;] - image[0.06,2.85;0.8,0.8;creative_trash_icon.png] - image[5,1.75;1,1;gui_furnace_arrow_bg.png^[transformR270] - tabheader[0,0;creative_tabs;Crafting,All,Nodes,Tools,Items;1;true;false] - listring[current_player;main] - listring[current_player;craft] - ]] .. - default.get_hotbar_bg(0,4.7) .. - default.gui_bg .. default.gui_bg_img .. default.gui_slots - ) -end - -minetest.register_on_joinplayer(function(player) - -- If in creative mode, modify player's inventory forms - if not creative_mode then - return - end - creative.init_creative_inventory(player) - creative.set_creative_formspec(player, 0) -end) - -minetest.register_on_player_receive_fields(function(player, formname, fields) - if formname ~= "" or not creative_mode then - return - end - - local player_name = player:get_player_name() - local inv = player_inventory[player_name] - - -- If creative is turned on mid game - if not inv then - creative.init_creative_inventory(player) - creative.set_creative_formspec(player, 0) - return - end - - if fields.quit then - if inv.tab_id == 1 then - creative.set_crafting_formspec(player) - end - elseif fields.creative_tabs then - local tab = tonumber(fields.creative_tabs) - inv.tab_id = tab - player_inventory[player_name].start_i = 0 - - if tab == 1 then - creative.set_crafting_formspec(player) - else - creative.update_creative_inventory(player_name) - creative.set_creative_formspec(player, 0) - end - elseif fields.creative_clear then - player_inventory[player_name].start_i = 0 - inv.filter = "" - creative.update_creative_inventory(player_name) - creative.set_creative_formspec(player, 0) - elseif fields.creative_search or - fields.key_enter_field == "creative_filter" then - player_inventory[player_name].start_i = 0 - inv.filter = fields.creative_filter:lower() - creative.update_creative_inventory(player_name) - creative.set_creative_formspec(player, 0) - else - local start_i = player_inventory[player_name].start_i or 0 - - if fields.creative_prev then - start_i = start_i - 3*8 - if start_i < 0 then - start_i = inv.size - (inv.size % (3*8)) - if inv.size == start_i then - start_i = math.max(0, inv.size - (3*8)) - end - end - elseif fields.creative_next then - start_i = start_i + 3*8 - if start_i >= inv.size then - start_i = 0 - end - end - - player_inventory[player_name].start_i = start_i - creative.set_creative_formspec(player, start_i) - end -end) - -if creative_mode then - local digtime = 42 - local caps = {times = {digtime, digtime, digtime}, uses = 0, maxlevel = 256} +if minetest.setting_getbool("creative_mode") then + local digtime = 0.5 + local caps = {times = {digtime, digtime, digtime}, uses = 0, maxlevel = 3} minetest.register_item(":", { type = "none", diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua new file mode 100644 index 00000000..177933f3 --- /dev/null +++ b/mods/creative/inventory.lua @@ -0,0 +1,171 @@ +creative = {} +local player_inventory = {} + +function creative.init_creative_inventory(player) + local player_name = player:get_player_name() + player_inventory[player_name] = { + size = 0, + filter = "", + start_i = 0 + } + + minetest.create_detached_inventory("creative_" .. player_name, { + allow_move = function(inv, from_list, from_index, to_list, to_index, count, player2) + if not to_list == "main" then + return count + else + return 0 + end + end, + allow_put = function(inv, listname, index, stack, player2) + return 0 + end, + allow_take = function(inv, listname, index, stack, player2) + return -1 + end, + on_move = function(inv, from_list, from_index, to_list, to_index, count, player2) + end, + on_put = function(inv, listname, index, stack, player2) + end, + on_take = function(inv, listname, index, stack, player2) + if stack and stack:get_count() > 0 then + minetest.log("action", player_name .. " takes " .. stack:get_name().. " from creative inventory") + end + end, + }) + + creative.update_creative_inventory(player_name, minetest.registered_items) +end + +function creative.update_creative_inventory(player_name, tab_content) + local creative_list = {} + local player_inv = minetest.get_inventory({type = "detached", name = "creative_" .. player_name}) + local inv = player_inventory[player_name] + if not inv then + creative.init_creative_inventory(minetest.get_player_by_name(player_name)) + end + + for name, def in pairs(tab_content) do + if not (def.groups.not_in_creative_inventory == 1) and + def.description and def.description ~= "" and + (def.name:find(inv.filter, 1, true) or + def.description:lower():find(inv.filter, 1, true)) then + creative_list[#creative_list+1] = name + end + end + + table.sort(creative_list) + player_inv:set_size("main", #creative_list) + player_inv:set_list("main", creative_list) + inv.size = #creative_list +end + +-- Create the trash field +local trash = minetest.create_detached_inventory("creative_trash", { + -- Allow the stack to be placed and remove it in on_put() + -- This allows the creative inventory to restore the stack + allow_put = function(inv, listname, index, stack, player) + return stack:get_count() + end, + on_put = function(inv, listname) + inv:set_list(listname, {}) + end, +}) +trash:set_size("main", 1) + +creative.formspec_add = "" + +function creative.register_tab(name, title, items) + sfinv.register_page("creative:" .. name, { + title = title, + is_in_nav = function(self, player, context) + return minetest.setting_getbool("creative_mode") + end, + get = function(self, player, context) + local player_name = player:get_player_name() + creative.update_creative_inventory(player_name, items) + local inv = player_inventory[player_name] + local start_i = inv.start_i or 0 + local pagenum = math.floor(start_i / (3*8) + 1) + local pagemax = math.ceil(inv.size / (3*8)) + return sfinv.make_formspec(player, context, + "label[6.2,3.35;" .. minetest.colorize("#FFFF00", tostring(pagenum)) .. " / " .. tostring(pagemax) .. "]" .. + [[ + image[4.06,3.4;0.8,0.8;creative_trash_icon.png] + listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] + list[current_player;main;0,4.7;8,1;] + list[current_player;main;0,5.85;8,3;8] + list[detached:creative_trash;main;4,3.3;1,1;] + listring[] + button[5.4,3.2;0.8,0.9;creative_prev;<] + button[7.25,3.2;0.8,0.9;creative_next;>] + button[2.1,3.4;0.8,0.5;creative_search;?] + button[2.75,3.4;0.8,0.5;creative_clear;X] + tooltip[creative_search;Search] + tooltip[creative_clear;Reset] + listring[current_player;main] + field_close_on_enter[creative_filter;false] + ]] .. + "field[0.3,3.5;2.2,1;creative_filter;;" .. minetest.formspec_escape(inv.filter) .. "]" .. + "listring[detached:creative_" .. player_name .. ";main]" .. + "list[detached:creative_" .. player_name .. ";main;0,0;8,3;" .. tostring(start_i) .. "]" .. + default.get_hotbar_bg(0,4.7) .. + default.gui_bg .. default.gui_bg_img .. default.gui_slots + .. creative.formspec_add, false) + end, + on_enter = function(self, player, context) + local player_name = player:get_player_name() + local inv = player_inventory[player_name] + if inv then + inv.start_i = 0 + end + end, + on_player_receive_fields = function(self, player, context, fields) + local player_name = player:get_player_name() + local inv = player_inventory[player_name] + assert(inv) + + if fields.creative_clear then + inv.start_i = 0 + inv.filter = "" + creative.update_creative_inventory(player_name, items) + sfinv.set_player_inventory_formspec(player, context) + elseif fields.creative_search or + fields.key_enter_field == "creative_filter" then + inv.start_i = 0 + inv.filter = fields.creative_filter:lower() + creative.update_creative_inventory(player_name, items) + sfinv.set_player_inventory_formspec(player, context) + elseif not fields.quit then + local start_i = inv.start_i or 0 + + if fields.creative_prev then + start_i = start_i - 3*8 + if start_i < 0 then + start_i = inv.size - (inv.size % (3*8)) + if inv.size == start_i then + start_i = math.max(0, inv.size - (3*8)) + end + end + elseif fields.creative_next then + start_i = start_i + 3*8 + if start_i >= inv.size then + start_i = 0 + end + end + + inv.start_i = start_i + sfinv.set_player_inventory_formspec(player, context) + end + end + }) +end + +minetest.register_on_joinplayer(function(player) + creative.init_creative_inventory(player) +end) + +creative.register_tab("all", "All", minetest.registered_items) +creative.register_tab("nodes", "Nodes", minetest.registered_nodes) +creative.register_tab("tools", "Tools", minetest.registered_tools) +creative.register_tab("craftitems", "Items", minetest.registered_craftitems) diff --git a/mods/sfinv/README.md b/mods/sfinv/README.md new file mode 100644 index 00000000..6ff33923 --- /dev/null +++ b/mods/sfinv/README.md @@ -0,0 +1,21 @@ +Simple Fast Inventory +==================== + +![SFINV Screeny](https://cdn.pbrd.co/images/1yQhd1TI.png) + +A cleaner, simpler, solution to having an advanced inventory in Minetest. + +Written by rubenwardy. +License: MIT + +See game_api.txt for this mod's API + +License of source code and media files: +--------------------------------------- +Copyright (C) 2016 rubenwardy + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/mods/sfinv/api.lua b/mods/sfinv/api.lua new file mode 100644 index 00000000..a8c997f6 --- /dev/null +++ b/mods/sfinv/api.lua @@ -0,0 +1,158 @@ +sfinv = { + pages = {}, + pages_unordered = {}, + homepage_name = "sfinv:crafting", + contexts = {}, + enabled = true +} + +function sfinv.register_page(name, def) + assert(name, "Invalid sfinv page. Requires a name") + assert(def, "Invalid sfinv page. Requires a def[inition] table") + assert(def.get, "Invalid sfinv page. Def requires a get function.") + assert(not sfinv.pages[name], "Attempt to register already registered sfinv page " .. dump(name)) + + sfinv.pages[name] = def + def.name = name + table.insert(sfinv.pages_unordered, def) +end + +function sfinv.override_page(name, def) + assert(name, "Invalid sfinv page override. Requires a name") + assert(def, "Invalid sfinv page override. Requires a def[inition] table") + local page = sfinv.pages[name] + assert(page, "Attempt to override sfinv page " .. dump(name) .. " which does not exist.") + for key, value in pairs(def) do + page[key] = value + end +end + +function sfinv.get_nav_fs(player, context, nav, current_idx) + -- Only show tabs if there is more than one page + if #nav > 1 then + return "tabheader[0,0;tabs;" .. table.concat(nav, ",") .. ";" .. current_idx .. ";true;false]" + else + return "" + end +end + +local theme_main = "bgcolor[#080808BB;true]" .. default.gui_bg .. + default.gui_bg_img + +local theme_inv = default.gui_slots .. [[ + list[current_player;main;0,4.7;8,1;] + list[current_player;main;0,5.85;8,3;8] + ]] + +function sfinv.make_formspec(player, context, content, show_inv, size) + local tmp = { + size or "size[8,8.6]", + theme_main, + sfinv.get_nav_fs(player, context, context.nav_titles, context.nav_idx), + content + } + if show_inv then + tmp[#tmp + 1] = theme_inv + end + return table.concat(tmp, "") +end + +function sfinv.get_formspec(player, context) + -- Generate navigation tabs + local nav = {} + local nav_ids = {} + local current_idx = 1 + for i, pdef in pairs(sfinv.pages_unordered) do + if not pdef.is_in_nav or pdef:is_in_nav(player, context) then + nav[#nav + 1] = pdef.title + nav_ids[#nav_ids + 1] = pdef.name + if pdef.name == context.page then + current_idx = i + end + end + end + context.nav = nav_ids + context.nav_titles = nav + context.nav_idx = current_idx + + -- Generate formspec + local page = sfinv.pages[context.page] or sfinv.pages["404"] + if page then + return page:get(player, context) + else + local old_page = context.page + context.page = sfinv.homepage_name + assert(sfinv.pages[context.page], "[sfinv] Invalid homepage") + minetest.log("warning", "[sfinv] Couldn't find " .. dump(old_page) .. " so using switching to homepage") + return sfinv.get_formspec(player, context) + end +end + +function sfinv.set_player_inventory_formspec(player, context) + if not context then + local name = player:get_player_name() + context = sfinv.contexts[name] + if not context then + context = { + page = sfinv.homepage_name + } + sfinv.contexts[name] = context + end + end + + local fs = sfinv.get_formspec(player, context) + player:set_inventory_formspec(fs) +end + +minetest.register_on_joinplayer(function(player) + if sfinv.enabled then + minetest.after(0.5, function() + sfinv.set_player_inventory_formspec(player) + end) + end +end) + +minetest.register_on_leaveplayer(function(player) + sfinv.contexts[player:get_player_name()] = nil +end) + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= "" or not sfinv.enabled then + return false + end + + -- Get Context + local name = player:get_player_name() + local context = sfinv.contexts[name] + if not context then + sfinv.set_player_inventory_formspec(player) + return false + end + + -- Handle Events + if fields.tabs and context.nav then + local tid = tonumber(fields.tabs) + if tid and tid > 0 then + local id = context.nav[tid] + local page = sfinv.pages[id] + if id and page then + local oldpage = sfinv.pages[context.page] + if oldpage and oldpage.on_leave then + oldpage:on_leave(player, context) + end + context.page = id + if page.on_enter then + page:on_enter(player, context) + end + sfinv.set_player_inventory_formspec(player, context) + end + end + return + end + + -- Pass to page + local page = sfinv.pages[context.page] + if page and page.on_player_receive_fields then + return page:on_player_receive_fields(player, context, fields) + end +end) diff --git a/mods/sfinv/depends.txt b/mods/sfinv/depends.txt new file mode 100644 index 00000000..4ad96d51 --- /dev/null +++ b/mods/sfinv/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/sfinv/init.lua b/mods/sfinv/init.lua new file mode 100644 index 00000000..f030222c --- /dev/null +++ b/mods/sfinv/init.lua @@ -0,0 +1,22 @@ +dofile(minetest.get_modpath("sfinv") .. "/api.lua") + +sfinv.register_page("sfinv:crafting", { + title = "Crafting", + get = function(self, player, context) + return sfinv.make_formspec(player, context, [[ + list[current_player;craft;1.75,0.5;3,3;] + list[current_player;craftpreview;5.75,1.5;1,1;] + image[4.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270] + listring[current_player;main] + listring[current_player;craft] + image[0,4.75;1,1;gui_hb_bg.png] + image[1,4.75;1,1;gui_hb_bg.png] + image[2,4.75;1,1;gui_hb_bg.png] + image[3,4.75;1,1;gui_hb_bg.png] + image[4,4.75;1,1;gui_hb_bg.png] + image[5,4.75;1,1;gui_hb_bg.png] + image[6,4.75;1,1;gui_hb_bg.png] + image[7,4.75;1,1;gui_hb_bg.png] + ]], true) + end +}) From 9bbe7f99da97743844d29d8148fe8c90196f51e0 Mon Sep 17 00:00:00 2001 From: paramat Date: Fri, 25 Nov 2016 02:04:12 +0000 Subject: [PATCH 170/196] Carts: Increase power rail acceleration to help climbs This is partly a workaround for a bug. Climbs with continuous power rails were failing often due to unexplained losses of speed leading to a reversal of direction. The lack of acceleration on climbs meant that lost speed was not regained. Keeping cart speed at maximum on climbs helps reduce the chance of reversals. This also allows players to slowly accelerate up to full speed on a climb without needing a horizontal run-up to reach full speed first. It may not be possible to build the horizontal sections needed, or, if players are replacing a previous carts mod their track constructions, bridges, tunnels etc. will often not have the horizontal sections needed. Players will also sometimes need to place and enter a cart on a slope and be able to climb. --- mods/carts/rails.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/carts/rails.lua b/mods/carts/rails.lua index f929e84e..5da4ac4d 100644 --- a/mods/carts/rails.lua +++ b/mods/carts/rails.lua @@ -20,6 +20,7 @@ minetest.register_craft({ minetest.register_alias("default:rail", "carts:rail") + carts:register_rail("carts:powerrail", { description = "Powered rail", tiles = { @@ -27,7 +28,7 @@ carts:register_rail("carts:powerrail", { "carts_rail_t_junction_pwr.png", "carts_rail_crossing_pwr.png" }, groups = carts:get_rail_groups(), -}, {acceleration = 4}) +}, {acceleration = 5}) minetest.register_craft({ output = "carts:powerrail 8", @@ -38,6 +39,7 @@ minetest.register_craft({ } }) + carts:register_rail("carts:brakerail", { description = "Brake rail", tiles = { @@ -47,7 +49,6 @@ carts:register_rail("carts:brakerail", { groups = carts:get_rail_groups(), }, {acceleration = -3}) - minetest.register_craft({ output = "carts:brakerail 8", recipe = { From 81f8c8aef8bd9d8791ee4aee03f608af0658711e Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sat, 26 Nov 2016 09:09:35 +0100 Subject: [PATCH 171/196] Carts: Move entity definition to seperate file --- mods/carts/cart_entity.lua | 384 ++++++++++++++++++++++++++++++++++++ mods/carts/init.lua | 385 +------------------------------------ 2 files changed, 385 insertions(+), 384 deletions(-) create mode 100644 mods/carts/cart_entity.lua diff --git a/mods/carts/cart_entity.lua b/mods/carts/cart_entity.lua new file mode 100644 index 00000000..ea5f4bca --- /dev/null +++ b/mods/carts/cart_entity.lua @@ -0,0 +1,384 @@ +local cart_entity = { + physical = false, -- otherwise going uphill breaks + collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + visual = "mesh", + mesh = "carts_cart.b3d", + visual_size = {x=1, y=1}, + textures = {"carts_cart.png"}, + + driver = nil, + punched = false, -- used to re-send velocity and position + velocity = {x=0, y=0, z=0}, -- only used on punch + old_dir = {x=1, y=0, z=0}, -- random value to start the cart on punch + old_pos = nil, + old_switch = 0, + railtype = nil, + attached_items = {} +} + +function cart_entity:on_rightclick(clicker) + if not clicker or not clicker:is_player() then + return + end + local player_name = clicker:get_player_name() + if self.driver and player_name == self.driver then + self.driver = nil + carts:manage_attachment(clicker, nil) + elseif not self.driver then + self.driver = player_name + carts:manage_attachment(clicker, self.object) + end +end + +function cart_entity:on_activate(staticdata, dtime_s) + self.object:set_armor_groups({immortal=1}) + if string.sub(staticdata, 1, string.len("return")) ~= "return" then + return + end + local data = minetest.deserialize(staticdata) + if not data or type(data) ~= "table" then + return + end + self.railtype = data.railtype + if data.old_dir then + self.old_dir = data.old_dir + end + if data.old_vel then + self.old_vel = data.old_vel + end +end + +function cart_entity:get_staticdata() + return minetest.serialize({ + railtype = self.railtype, + old_dir = self.old_dir, + old_vel = self.old_vel + }) +end + +function cart_entity:on_punch(puncher, time_from_last_punch, tool_capabilities, direction) + local pos = self.object:getpos() + if not self.railtype then + local node = minetest.get_node(pos).name + self.railtype = minetest.get_item_group(node, "connect_to_raillike") + end + + if not puncher or not puncher:is_player() then + local cart_dir = carts:get_rail_direction(pos, self.old_dir, nil, nil, self.railtype) + if vector.equals(cart_dir, {x=0, y=0, z=0}) then + return + end + self.velocity = vector.multiply(cart_dir, 3) + self.punched = true + return + end + + if puncher:get_player_control().sneak then + if self.sound_handle then + minetest.sound_stop(self.sound_handle) + end + -- Pick up cart: Drop all attachments + if self.driver then + if self.old_pos then + self.object:setpos(self.old_pos) + end + local player = minetest.get_player_by_name(self.driver) + carts:manage_attachment(player, nil) + end + for _,obj_ in ipairs(self.attached_items) do + if obj_ then + obj_:set_detach() + end + end + + local leftover = puncher:get_inventory():add_item("main", "carts:cart") + if not leftover:is_empty() then + minetest.add_item(self.object:getpos(), leftover) + end + self.object:remove() + return + end + + local vel = self.object:getvelocity() + if puncher:get_player_name() == self.driver then + if math.abs(vel.x + vel.z) > carts.punch_speed_max then + return + end + end + + local punch_dir = carts:velocity_to_dir(puncher:get_look_dir()) + punch_dir.y = 0 + local cart_dir = carts:get_rail_direction(pos, punch_dir, nil, nil, self.railtype) + if vector.equals(cart_dir, {x=0, y=0, z=0}) then + return + end + + local punch_interval = 1 + if tool_capabilities and tool_capabilities.full_punch_interval then + punch_interval = tool_capabilities.full_punch_interval + end + time_from_last_punch = math.min(time_from_last_punch or punch_interval, punch_interval) + local f = 2 * (time_from_last_punch / punch_interval) + + self.velocity = vector.multiply(cart_dir, f) + self.old_dir = cart_dir + self.punched = true +end + +local function rail_on_step_event(handler, obj, dtime) + if handler then + handler(obj, dtime) + end +end + +-- sound refresh interval = 1.0sec +local function rail_sound(self, dtime) + if not self.sound_ttl then + self.sound_ttl = 1.0 + return + elseif self.sound_ttl > 0 then + self.sound_ttl = self.sound_ttl - dtime + return + end + self.sound_ttl = 1.0 + if self.sound_handle then + local handle = self.sound_handle + self.sound_handle = nil + minetest.after(0.2, minetest.sound_stop, handle) + end + local vel = self.object:getvelocity() + local speed = vector.length(vel) + if speed > 0 then + self.sound_handle = minetest.sound_play( + "carts_cart_moving", { + object = self.object, + gain = (speed / carts.speed_max) / 2, + loop = true, + }) + end +end + +local function rail_on_step(self, dtime) + local pos = self.object:getpos() + local node = minetest.get_node(pos) + local railparams = carts.railparams[node.name] or {} + + local vel = self.object:getvelocity() + local update = {} + if self.punched then + vel = vector.add(vel, self.velocity) + self.object:setvelocity(vel) + self.old_dir.y = 0 + elseif vector.equals(vel, {x=0, y=0, z=0}) then + return + end + + -- stop cart if velocity vector flips + if self.old_vel and (((self.old_vel.x * vel.x) < 0) or + ((self.old_vel.z * vel.z) < 0)) and + (self.old_vel.y == 0) then + self.old_dir = {x = 0, y = 0, z = 0} + self.old_vel = {x = 0, y = 0, z = 0} + self.velocity = {x = 0, y = 0, z = 0} + self.old_pos = pos + self.object:setvelocity(vector.new()) + self.object:setacceleration(vector.new()) + rail_on_step_event(railparams.on_step, self, dtime) + return + end + self.old_vel = vector.new(vel) + + if self.old_pos and not self.punched then + local flo_pos = vector.round(pos) + local flo_old = vector.round(self.old_pos) + if vector.equals(flo_pos, flo_old) then + -- Do not check one node multiple times + rail_on_step_event(railparams.on_step, self, dtime) + return + end + end + + local ctrl, player + + -- Get player controls + if self.driver then + player = minetest.get_player_by_name(self.driver) + if player then + ctrl = player:get_player_control() + end + end + + if self.old_pos then + -- Detection for "skipping" nodes + local expected_pos = vector.add(self.old_pos, self.old_dir) + local found_path = carts:pathfinder( + pos, expected_pos, self.old_dir, ctrl, self.old_switch, self.railtype + ) + + if not found_path then + -- No rail found: reset back to the expected position + pos = vector.new(self.old_pos) + update.pos = true + end + end + + local cart_dir = carts:velocity_to_dir(vel) + + -- dir: New moving direction of the cart + -- switch_keys: Currently pressed L/R key, used to ignore the key on the next rail node + local dir, switch_keys = carts:get_rail_direction( + pos, cart_dir, ctrl, self.old_switch, self.railtype + ) + + local new_acc = {x=0, y=0, z=0} + if vector.equals(dir, {x=0, y=0, z=0}) then + vel = {x=0, y=0, z=0} + pos = vector.round(pos) + update.pos = true + update.vel = true + else + -- If the direction changed + if dir.x ~= 0 and self.old_dir.z ~= 0 then + vel.x = dir.x * math.abs(vel.z) + vel.z = 0 + pos.z = math.floor(pos.z + 0.5) + update.pos = true + end + if dir.z ~= 0 and self.old_dir.x ~= 0 then + vel.z = dir.z * math.abs(vel.x) + vel.x = 0 + pos.x = math.floor(pos.x + 0.5) + update.pos = true + end + -- Up, down? + if dir.y ~= self.old_dir.y then + vel.y = dir.y * math.abs(vel.x + vel.z) + pos = vector.round(pos) + update.pos = true + end + + -- Slow down or speed up.. + local acc = dir.y * -4.0 + + -- no need to check for railparams == nil since we always make it exist. + local speed_mod = railparams.acceleration + if speed_mod and speed_mod ~= 0 then + -- Try to make it similar to the original carts mod + acc = acc + speed_mod + else + -- Handbrake + if ctrl and ctrl.down then + acc = acc - 1.6 + else + acc = acc - 0.4 + end + end + + new_acc = vector.multiply(dir, acc) + end + + -- Limits + local max_vel = carts.speed_max + for _,v in ipairs({"x","y","z"}) do + if math.abs(vel[v]) > max_vel then + vel[v] = carts:get_sign(vel[v]) * max_vel + new_acc[v] = 0 + update.vel = true + end + end + + self.object:setacceleration(new_acc) + self.old_pos = vector.new(pos) + if not vector.equals(dir, {x=0, y=0, z=0}) then + self.old_dir = vector.new(dir) + end + self.old_switch = switch_keys + + if self.punched then + -- Collect dropped items + for _,obj_ in ipairs(minetest.get_objects_inside_radius(pos, 1)) do + if not obj_:is_player() and + obj_:get_luaentity() and + not obj_:get_luaentity().physical_state and + obj_:get_luaentity().name == "__builtin:item" then + + obj_:set_attach(self.object, "", {x=0, y=0, z=0}, {x=0, y=0, z=0}) + self.attached_items[#self.attached_items + 1] = obj_ + end + end + self.punched = false + update.vel = true + end + + if not (update.vel or update.pos) then + rail_on_step_event(railparams.on_step, self, dtime) + return + end + + local yaw = 0 + if self.old_dir.x < 0 then + yaw = 0.5 + elseif self.old_dir.x > 0 then + yaw = 1.5 + elseif self.old_dir.z < 0 then + yaw = 1 + end + self.object:setyaw(yaw * math.pi) + + local anim = {x=0, y=0} + if dir.y == -1 then + anim = {x=1, y=1} + elseif dir.y == 1 then + anim = {x=2, y=2} + end + self.object:set_animation(anim, 1, 0) + + self.object:setvelocity(vel) + if update.pos then + self.object:setpos(pos) + end + + -- call event handler + rail_on_step_event(railparams.on_step, self, dtime) +end + +function cart_entity:on_step(dtime) + rail_on_step(self, dtime) + rail_sound(self, dtime) +end + +minetest.register_entity("carts:cart", cart_entity) + +minetest.register_craftitem("carts:cart", { + description = "Cart (Sneak+Click to pick up)", + inventory_image = minetest.inventorycube("carts_cart_top.png", "carts_cart_side.png", "carts_cart_side.png"), + wield_image = "carts_cart_side.png", + on_place = function(itemstack, placer, pointed_thing) + if not pointed_thing.type == "node" then + return + end + if carts:is_rail(pointed_thing.under) then + minetest.add_entity(pointed_thing.under, "carts:cart") + elseif carts:is_rail(pointed_thing.above) then + minetest.add_entity(pointed_thing.above, "carts:cart") + else + return + end + + minetest.sound_play({name = "default_place_node_metal", gain = 0.5}, + {pos = pointed_thing.above}) + + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end, +}) + +minetest.register_craft({ + output = "carts:cart", + recipe = { + {"default:steel_ingot", "", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + }, +}) diff --git a/mods/carts/init.lua b/mods/carts/init.lua index 7cfee74f..53b33cc2 100644 --- a/mods/carts/init.lua +++ b/mods/carts/init.lua @@ -17,387 +17,4 @@ if not default.player_attached then default.player_attached = {} end -local cart_entity = { - physical = false, -- otherwise going uphill breaks - collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - visual = "mesh", - mesh = "carts_cart.b3d", - visual_size = {x=1, y=1}, - textures = {"carts_cart.png"}, - - driver = nil, - punched = false, -- used to re-send velocity and position - velocity = {x=0, y=0, z=0}, -- only used on punch - old_dir = {x=1, y=0, z=0}, -- random value to start the cart on punch - old_pos = nil, - old_switch = 0, - railtype = nil, - attached_items = {} -} - -function cart_entity:on_rightclick(clicker) - if not clicker or not clicker:is_player() then - return - end - local player_name = clicker:get_player_name() - if self.driver and player_name == self.driver then - self.driver = nil - carts:manage_attachment(clicker, nil) - elseif not self.driver then - self.driver = player_name - carts:manage_attachment(clicker, self.object) - end -end - -function cart_entity:on_activate(staticdata, dtime_s) - self.object:set_armor_groups({immortal=1}) - if string.sub(staticdata, 1, string.len("return")) ~= "return" then - return - end - local data = minetest.deserialize(staticdata) - if not data or type(data) ~= "table" then - return - end - self.railtype = data.railtype - if data.old_dir then - self.old_dir = data.old_dir - end - if data.old_vel then - self.old_vel = data.old_vel - end -end - -function cart_entity:get_staticdata() - return minetest.serialize({ - railtype = self.railtype, - old_dir = self.old_dir, - old_vel = self.old_vel - }) -end - -function cart_entity:on_punch(puncher, time_from_last_punch, tool_capabilities, direction) - local pos = self.object:getpos() - if not self.railtype then - local node = minetest.get_node(pos).name - self.railtype = minetest.get_item_group(node, "connect_to_raillike") - end - - if not puncher or not puncher:is_player() then - local cart_dir = carts:get_rail_direction(pos, self.old_dir, nil, nil, self.railtype) - if vector.equals(cart_dir, {x=0, y=0, z=0}) then - return - end - self.velocity = vector.multiply(cart_dir, 3) - self.punched = true - return - end - - if puncher:get_player_control().sneak then - if self.sound_handle then - minetest.sound_stop(self.sound_handle) - end - -- Pick up cart: Drop all attachments - if self.driver then - if self.old_pos then - self.object:setpos(self.old_pos) - end - local player = minetest.get_player_by_name(self.driver) - carts:manage_attachment(player, nil) - end - for _,obj_ in ipairs(self.attached_items) do - if obj_ then - obj_:set_detach() - end - end - - local leftover = puncher:get_inventory():add_item("main", "carts:cart") - if not leftover:is_empty() then - minetest.add_item(self.object:getpos(), leftover) - end - self.object:remove() - return - end - - local vel = self.object:getvelocity() - if puncher:get_player_name() == self.driver then - if math.abs(vel.x + vel.z) > carts.punch_speed_max then - return - end - end - - local punch_dir = carts:velocity_to_dir(puncher:get_look_dir()) - punch_dir.y = 0 - local cart_dir = carts:get_rail_direction(pos, punch_dir, nil, nil, self.railtype) - if vector.equals(cart_dir, {x=0, y=0, z=0}) then - return - end - - local punch_interval = 1 - if tool_capabilities and tool_capabilities.full_punch_interval then - punch_interval = tool_capabilities.full_punch_interval - end - time_from_last_punch = math.min(time_from_last_punch or punch_interval, punch_interval) - local f = 2 * (time_from_last_punch / punch_interval) - - self.velocity = vector.multiply(cart_dir, f) - self.old_dir = cart_dir - self.punched = true -end - -local function rail_on_step_event(handler, obj, dtime) - if handler then - handler(obj, dtime) - end -end - --- sound refresh interval = 1.0sec -local function rail_sound(self, dtime) - if not self.sound_ttl then - self.sound_ttl = 1.0 - return - elseif self.sound_ttl > 0 then - self.sound_ttl = self.sound_ttl - dtime - return - end - self.sound_ttl = 1.0 - if self.sound_handle then - local handle = self.sound_handle - self.sound_handle = nil - minetest.after(0.2, minetest.sound_stop, handle) - end - local vel = self.object:getvelocity() - local speed = vector.length(vel) - if speed > 0 then - self.sound_handle = minetest.sound_play( - "carts_cart_moving", { - object = self.object, - gain = (speed / carts.speed_max) / 2, - loop = true, - }) - end -end - -local function rail_on_step(self, dtime) - local pos = self.object:getpos() - local node = minetest.get_node(pos) - local railparams = carts.railparams[node.name] or {} - - local vel = self.object:getvelocity() - local update = {} - if self.punched then - vel = vector.add(vel, self.velocity) - self.object:setvelocity(vel) - self.old_dir.y = 0 - elseif vector.equals(vel, {x=0, y=0, z=0}) then - return - end - - -- stop cart if velocity vector flips - if self.old_vel and (((self.old_vel.x * vel.x) < 0) or - ((self.old_vel.z * vel.z) < 0)) and - (self.old_vel.y == 0) then - self.old_dir = {x = 0, y = 0, z = 0} - self.old_vel = {x = 0, y = 0, z = 0} - self.velocity = {x = 0, y = 0, z = 0} - self.old_pos = pos - self.object:setvelocity(vector.new()) - self.object:setacceleration(vector.new()) - rail_on_step_event(railparams.on_step, self, dtime) - return - end - self.old_vel = vector.new(vel) - - if self.old_pos and not self.punched then - local flo_pos = vector.round(pos) - local flo_old = vector.round(self.old_pos) - if vector.equals(flo_pos, flo_old) then - -- Do not check one node multiple times - rail_on_step_event(railparams.on_step, self, dtime) - return - end - end - - local ctrl, player - - -- Get player controls - if self.driver then - player = minetest.get_player_by_name(self.driver) - if player then - ctrl = player:get_player_control() - end - end - - if self.old_pos then - -- Detection for "skipping" nodes - local expected_pos = vector.add(self.old_pos, self.old_dir) - local found_path = carts:pathfinder( - pos, expected_pos, self.old_dir, ctrl, self.old_switch, self.railtype - ) - - if not found_path then - -- No rail found: reset back to the expected position - pos = vector.new(self.old_pos) - update.pos = true - end - end - - local cart_dir = carts:velocity_to_dir(vel) - - -- dir: New moving direction of the cart - -- switch_keys: Currently pressed L/R key, used to ignore the key on the next rail node - local dir, switch_keys = carts:get_rail_direction( - pos, cart_dir, ctrl, self.old_switch, self.railtype - ) - - local new_acc = {x=0, y=0, z=0} - if vector.equals(dir, {x=0, y=0, z=0}) then - vel = {x=0, y=0, z=0} - pos = vector.round(pos) - update.pos = true - update.vel = true - else - -- If the direction changed - if dir.x ~= 0 and self.old_dir.z ~= 0 then - vel.x = dir.x * math.abs(vel.z) - vel.z = 0 - pos.z = math.floor(pos.z + 0.5) - update.pos = true - end - if dir.z ~= 0 and self.old_dir.x ~= 0 then - vel.z = dir.z * math.abs(vel.x) - vel.x = 0 - pos.x = math.floor(pos.x + 0.5) - update.pos = true - end - -- Up, down? - if dir.y ~= self.old_dir.y then - vel.y = dir.y * math.abs(vel.x + vel.z) - pos = vector.round(pos) - update.pos = true - end - - -- Slow down or speed up.. - local acc = dir.y * -4.0 - - -- no need to check for railparams == nil since we always make it exist. - local speed_mod = railparams.acceleration - if speed_mod and speed_mod ~= 0 then - -- Try to make it similar to the original carts mod - acc = acc + speed_mod - else - -- Handbrake - if ctrl and ctrl.down then - acc = acc - 1.6 - else - acc = acc - 0.4 - end - end - - new_acc = vector.multiply(dir, acc) - end - - -- Limits - local max_vel = carts.speed_max - for _,v in ipairs({"x","y","z"}) do - if math.abs(vel[v]) > max_vel then - vel[v] = carts:get_sign(vel[v]) * max_vel - new_acc[v] = 0 - update.vel = true - end - end - - self.object:setacceleration(new_acc) - self.old_pos = vector.new(pos) - if not vector.equals(dir, {x=0, y=0, z=0}) then - self.old_dir = vector.new(dir) - end - self.old_switch = switch_keys - - if self.punched then - -- Collect dropped items - for _,obj_ in ipairs(minetest.get_objects_inside_radius(pos, 1)) do - if not obj_:is_player() and - obj_:get_luaentity() and - not obj_:get_luaentity().physical_state and - obj_:get_luaentity().name == "__builtin:item" then - - obj_:set_attach(self.object, "", {x=0, y=0, z=0}, {x=0, y=0, z=0}) - self.attached_items[#self.attached_items + 1] = obj_ - end - end - self.punched = false - update.vel = true - end - - if not (update.vel or update.pos) then - rail_on_step_event(railparams.on_step, self, dtime) - return - end - - local yaw = 0 - if self.old_dir.x < 0 then - yaw = 0.5 - elseif self.old_dir.x > 0 then - yaw = 1.5 - elseif self.old_dir.z < 0 then - yaw = 1 - end - self.object:setyaw(yaw * math.pi) - - local anim = {x=0, y=0} - if dir.y == -1 then - anim = {x=1, y=1} - elseif dir.y == 1 then - anim = {x=2, y=2} - end - self.object:set_animation(anim, 1, 0) - - self.object:setvelocity(vel) - if update.pos then - self.object:setpos(pos) - end - - -- call event handler - rail_on_step_event(railparams.on_step, self, dtime) -end - -function cart_entity:on_step(dtime) - rail_on_step(self, dtime) - rail_sound(self, dtime) -end - -minetest.register_entity("carts:cart", cart_entity) - -minetest.register_craftitem("carts:cart", { - description = "Cart (Sneak+Click to pick up)", - inventory_image = minetest.inventorycube("carts_cart_top.png", "carts_cart_side.png", "carts_cart_side.png"), - wield_image = "carts_cart_side.png", - on_place = function(itemstack, placer, pointed_thing) - if not pointed_thing.type == "node" then - return - end - if carts:is_rail(pointed_thing.under) then - minetest.add_entity(pointed_thing.under, "carts:cart") - elseif carts:is_rail(pointed_thing.above) then - minetest.add_entity(pointed_thing.above, "carts:cart") - else - return - end - - minetest.sound_play({name = "default_place_node_metal", gain = 0.5}, - {pos = pointed_thing.above}) - - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - return itemstack - end, -}) - -minetest.register_craft({ - output = "carts:cart", - recipe = { - {"default:steel_ingot", "", "default:steel_ingot"}, - {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, - }, -}) +dofile(carts.modpath.."/cart_entity.lua") From 2effe40dc5e04fec7824f060dc843bfe8fba05f3 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sat, 26 Nov 2016 09:20:09 +0100 Subject: [PATCH 172/196] Carts: Improve readme file --- mods/carts/README.txt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/mods/carts/README.txt b/mods/carts/README.txt index 0cfaea26..31ce6449 100644 --- a/mods/carts/README.txt +++ b/mods/carts/README.txt @@ -1,15 +1,17 @@ Carts (formerly boost_cart) ========================== -Cleaned up for merge based almost entirely on SmallJoker's boost_cart -mod (github.com/smalljoker/boost_cart). +Carts, based almost entirely on the mod boost_cart [1], which +itself is based on (and fully compatible with) the carts mod [2]. -That in turn was based on (and fully compatible with) the mod "carts" -by PilzAdam +The model was originally designed by stujones11 [3] (CC-0). -The model was redone, but based on github.com/stujones11/railcart, CC-0 +Cart textures are based on original work from PixelBOX (WTFPL). -Cart Textures are based on original work from PixelBOX (WTFPL). + +[1] https://github.com/SmallJoker/boost_cart/ +[2] https://github.com/PilzAdam/carts/ +[3] https://github.com/stujones11/railcart/ Features From 1a6ad498d74f5130a18c0563c99cde149aafc3b6 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sat, 26 Nov 2016 09:48:24 +0100 Subject: [PATCH 173/196] Carts: Increase performance overall --- mods/carts/cart_entity.lua | 61 ++++++++++++++++++++------------------ mods/carts/functions.lua | 4 +-- 2 files changed, 34 insertions(+), 31 deletions(-) diff --git a/mods/carts/cart_entity.lua b/mods/carts/cart_entity.lua index ea5f4bca..4301b852 100644 --- a/mods/carts/cart_entity.lua +++ b/mods/carts/cart_entity.lua @@ -158,13 +158,13 @@ local function rail_sound(self, dtime) end end -local function rail_on_step(self, dtime) - local pos = self.object:getpos() +local function get_railparams(pos) local node = minetest.get_node(pos) - local railparams = carts.railparams[node.name] or {} + return carts.railparams[node.name] or {} +end +local function rail_on_step(self, dtime) local vel = self.object:getvelocity() - local update = {} if self.punched then vel = vector.add(vel, self.velocity) self.object:setvelocity(vel) @@ -173,17 +173,17 @@ local function rail_on_step(self, dtime) return end + local pos = self.object:getpos() + local update = {} + -- stop cart if velocity vector flips - if self.old_vel and (((self.old_vel.x * vel.x) < 0) or - ((self.old_vel.z * vel.z) < 0)) and - (self.old_vel.y == 0) then - self.old_dir = {x = 0, y = 0, z = 0} + if self.old_vel and self.old_vel.y == 0 and + (self.old_vel.x * vel.x < 0 or self.old_vel.z * vel.z < 0) then self.old_vel = {x = 0, y = 0, z = 0} - self.velocity = {x = 0, y = 0, z = 0} self.old_pos = pos self.object:setvelocity(vector.new()) self.object:setacceleration(vector.new()) - rail_on_step_event(railparams.on_step, self, dtime) + rail_on_step_event(get_railparams(pos).on_step, self, dtime) return end self.old_vel = vector.new(vel) @@ -193,7 +193,6 @@ local function rail_on_step(self, dtime) local flo_old = vector.round(self.old_pos) if vector.equals(flo_pos, flo_old) then -- Do not check one node multiple times - rail_on_step_event(railparams.on_step, self, dtime) return end end @@ -210,9 +209,8 @@ local function rail_on_step(self, dtime) if self.old_pos then -- Detection for "skipping" nodes - local expected_pos = vector.add(self.old_pos, self.old_dir) local found_path = carts:pathfinder( - pos, expected_pos, self.old_dir, ctrl, self.old_switch, self.railtype + pos, self.old_pos, self.old_dir, ctrl, self.old_switch, self.railtype ) if not found_path then @@ -223,6 +221,7 @@ local function rail_on_step(self, dtime) end local cart_dir = carts:velocity_to_dir(vel) + local railparams -- dir: New moving direction of the cart -- switch_keys: Currently pressed L/R key, used to ignore the key on the next rail node @@ -232,34 +231,36 @@ local function rail_on_step(self, dtime) local new_acc = {x=0, y=0, z=0} if vector.equals(dir, {x=0, y=0, z=0}) then - vel = {x=0, y=0, z=0} + vel = {x = 0, y = 0, z = 0} pos = vector.round(pos) update.pos = true update.vel = true else - -- If the direction changed - if dir.x ~= 0 and self.old_dir.z ~= 0 then - vel.x = dir.x * math.abs(vel.z) - vel.z = 0 - pos.z = math.floor(pos.z + 0.5) - update.pos = true + -- Direction change detected + if not vector.equals(dir, self.old_dir) then + vel = vector.multiply(dir, math.abs(vel.x + vel.z)) + update.vel = true + if dir.y ~= self.old_dir.y then + pos = vector.round(pos) + update.pos = true + end end - if dir.z ~= 0 and self.old_dir.x ~= 0 then - vel.z = dir.z * math.abs(vel.x) - vel.x = 0 + -- Center on the rail + if dir.z ~= 0 and math.floor(pos.x + 0.5) ~= pos.x then pos.x = math.floor(pos.x + 0.5) update.pos = true end - -- Up, down? - if dir.y ~= self.old_dir.y then - vel.y = dir.y * math.abs(vel.x + vel.z) - pos = vector.round(pos) + if dir.x ~= 0 and math.floor(pos.z + 0.5) ~= pos.z then + pos.z = math.floor(pos.z + 0.5) update.pos = true end -- Slow down or speed up.. local acc = dir.y * -4.0 + -- Get rail for corrected position + railparams = get_railparams(pos) + -- no need to check for railparams == nil since we always make it exist. local speed_mod = railparams.acceleration if speed_mod and speed_mod ~= 0 then @@ -279,7 +280,7 @@ local function rail_on_step(self, dtime) -- Limits local max_vel = carts.speed_max - for _,v in ipairs({"x","y","z"}) do + for _, v in pairs({"x","y","z"}) do if math.abs(vel[v]) > max_vel then vel[v] = carts:get_sign(vel[v]) * max_vel new_acc[v] = 0 @@ -296,7 +297,7 @@ local function rail_on_step(self, dtime) if self.punched then -- Collect dropped items - for _,obj_ in ipairs(minetest.get_objects_inside_radius(pos, 1)) do + for _, obj_ in pairs(minetest.get_objects_inside_radius(pos, 1)) do if not obj_:is_player() and obj_:get_luaentity() and not obj_:get_luaentity().physical_state and @@ -310,6 +311,8 @@ local function rail_on_step(self, dtime) update.vel = true end + railparams = railparams or get_railparams(pos) + if not (update.vel or update.pos) then rail_on_step_event(railparams.on_step, self, dtime) return diff --git a/mods/carts/functions.lua b/mods/carts/functions.lua index f255fef5..beda5849 100644 --- a/mods/carts/functions.lua +++ b/mods/carts/functions.lua @@ -158,9 +158,9 @@ function carts:get_rail_direction(pos_, dir, ctrl, old_switch, railtype) return {x=0, y=0, z=0} end -function carts:pathfinder(pos_, expected_pos, old_dir, ctrl, pf_switch, railtype) +function carts:pathfinder(pos_, old_pos, old_dir, ctrl, pf_switch, railtype) local pos = vector.round(pos_) - local pf_pos = vector.round(expected_pos) + local pf_pos = vector.round(old_pos) local pf_dir = vector.new(old_dir) for i = 1, 3 do From 788ae97ba17891aea44c81adc269c88ea6f18c90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20Mart=C3=ADnez?= Date: Sun, 27 Nov 2016 03:02:38 -0300 Subject: [PATCH 174/196] Carts: Take creative mode into account This commit makes the carts mod not add the cart item to the player's inventory if running with creative mode and the player already has it. --- mods/carts/cart_entity.lua | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mods/carts/cart_entity.lua b/mods/carts/cart_entity.lua index 4301b852..a0a2d9f0 100644 --- a/mods/carts/cart_entity.lua +++ b/mods/carts/cart_entity.lua @@ -91,9 +91,13 @@ function cart_entity:on_punch(puncher, time_from_last_punch, tool_capabilities, end end - local leftover = puncher:get_inventory():add_item("main", "carts:cart") - if not leftover:is_empty() then - minetest.add_item(self.object:getpos(), leftover) + local inv = puncher:get_inventory() + if not minetest.setting_getbool("creative_mode") + or not inv:contains_item("main", "carts:cart") then + local leftover = inv:add_item("main", "carts:cart") + if not leftover:is_empty() then + minetest.add_item(self.object:getpos(), leftover) + end end self.object:remove() return From fa17fe31d6e3014728dc6d4e7aa8618ee77601e1 Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 27 Nov 2016 23:52:28 +0000 Subject: [PATCH 175/196] Creative: Re-implement constant hand dig times, add comment --- mods/creative/init.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mods/creative/init.lua b/mods/creative/init.lua index 79f8978f..868b802b 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -1,8 +1,14 @@ dofile(minetest.get_modpath("creative") .. "/inventory.lua") if minetest.setting_getbool("creative_mode") then - local digtime = 0.5 - local caps = {times = {digtime, digtime, digtime}, uses = 0, maxlevel = 3} + -- Dig time is modified according to difference (leveldiff) between tool + -- 'maxlevel' and node 'level'. Digtime is divided by the larger of + -- leveldiff and 1. + -- To speed up digging in creative, hand 'maxlevel' and 'digtime' have been + -- increased such that nodes of differing levels have an insignificant + -- effect on digtime. + local digtime = 42 + local caps = {times = {digtime, digtime, digtime}, uses = 0, maxlevel = 256} minetest.register_item(":", { type = "none", From 0196c4793a7414990bd452ca49c00dd8196935ee Mon Sep 17 00:00:00 2001 From: paramat Date: Mon, 28 Nov 2016 01:17:15 +0000 Subject: [PATCH 176/196] Carts: Make rails 'is ground content = false' --- mods/carts/functions.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/carts/functions.lua b/mods/carts/functions.lua index beda5849..285645cb 100644 --- a/mods/carts/functions.lua +++ b/mods/carts/functions.lua @@ -186,7 +186,7 @@ function carts:register_rail(name, def, railparams) drawtype = "raillike", paramtype = "light", sunlight_propagates = true, - is_ground_content = true, + is_ground_content = false, walkable = false, selection_box = { type = "fixed", From 4f32fd253ca53d6942c4231499cc247f89af4d49 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sun, 27 Nov 2016 14:05:28 -0800 Subject: [PATCH 177/196] Fix ItemStack method call for keys. Fixes (I hope) #1420 (bad method call). --- 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 6e391e63..a81f4ed7 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1630,7 +1630,7 @@ local function has_locked_chest_privilege(meta, player) -- is player wielding the right key? local item = player:get_wielded_item() if item:get_name() == "default:key" then - local key_meta = minetest.parse_json(item.get_metadata()) + local key_meta = minetest.parse_json(item:get_metadata()) local secret = meta:get_string("key_lock_secret") if secret ~= key_meta.secret then return false From 04f045158fe6ee4440a58654177255db435b596f Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 27 Nov 2016 12:15:52 +0100 Subject: [PATCH 178/196] Avoid "leaking" creative inventories to other players --- mods/creative/inventory.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua index 177933f3..8dedffc4 100644 --- a/mods/creative/inventory.lua +++ b/mods/creative/inventory.lua @@ -32,7 +32,7 @@ function creative.init_creative_inventory(player) minetest.log("action", player_name .. " takes " .. stack:get_name().. " from creative inventory") end end, - }) + }, player_name) creative.update_creative_inventory(player_name, minetest.registered_items) end From f06f66ccc287e4773e4259cbeba95fcb0f522363 Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 29 Nov 2016 02:28:55 +0000 Subject: [PATCH 179/196] Boats / carts: Fix and improve on_punch functions Boats: Previously, boats were not added to inventory in creative mode, fix. In creative mode multiple boats will not be added to inventory. Add comment. Carts: Set speed to 2 if punched by a non-player, to match the effect of a player punch. Add comments. --- mods/boats/init.lua | 17 +++++++++-------- mods/carts/cart_entity.lua | 13 +++++++------ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/mods/boats/init.lua b/mods/boats/init.lua index 26486f4e..9f1264b1 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -109,18 +109,19 @@ function boat.on_punch(self, puncher) end if not self.driver then self.removed = true + local inv = puncher:get_inventory() + if not minetest.setting_getbool("creative_mode") + or not inv:contains_item("main", "boats:boat") then + local leftover = inv:add_item("main", "boats:boat") + -- if no room in inventory add a replacement boat to the world + if not leftover:is_empty() then + minetest.add_item(self.object:getpos(), leftover) + end + end -- delay remove to ensure player is detached minetest.after(0.1, function() self.object:remove() end) - 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 diff --git a/mods/carts/cart_entity.lua b/mods/carts/cart_entity.lua index a0a2d9f0..a0b0e3fa 100644 --- a/mods/carts/cart_entity.lua +++ b/mods/carts/cart_entity.lua @@ -62,22 +62,22 @@ function cart_entity:on_punch(puncher, time_from_last_punch, tool_capabilities, local node = minetest.get_node(pos).name self.railtype = minetest.get_item_group(node, "connect_to_raillike") end - + -- Punched by non-player if not puncher or not puncher:is_player() then local cart_dir = carts:get_rail_direction(pos, self.old_dir, nil, nil, self.railtype) if vector.equals(cart_dir, {x=0, y=0, z=0}) then return end - self.velocity = vector.multiply(cart_dir, 3) + self.velocity = vector.multiply(cart_dir, 2) self.punched = true return end - + -- Player digs cart by sneak-punch if puncher:get_player_control().sneak then if self.sound_handle then minetest.sound_stop(self.sound_handle) end - -- Pick up cart: Drop all attachments + -- Detach driver and items if self.driver then if self.old_pos then self.object:setpos(self.old_pos) @@ -90,11 +90,12 @@ function cart_entity:on_punch(puncher, time_from_last_punch, tool_capabilities, obj_:set_detach() end end - + -- Pick up cart local inv = puncher:get_inventory() if not minetest.setting_getbool("creative_mode") or not inv:contains_item("main", "carts:cart") then local leftover = inv:add_item("main", "carts:cart") + -- If no room in inventory add a replacement cart to the world if not leftover:is_empty() then minetest.add_item(self.object:getpos(), leftover) end @@ -102,7 +103,7 @@ function cart_entity:on_punch(puncher, time_from_last_punch, tool_capabilities, self.object:remove() return end - + -- Player punches cart to alter velocity local vel = self.object:getvelocity() if puncher:get_player_name() == self.driver then if math.abs(vel.x + vel.z) > carts.punch_speed_max then From 0413cb67b8fd2aaf139908d8631dac1738124a5c Mon Sep 17 00:00:00 2001 From: Napiophelios Date: Wed, 30 Nov 2016 03:59:49 -0500 Subject: [PATCH 180/196] Add Cobble Walls to Moss Growth ABM --- mods/default/functions.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 37b5d581..ed373ed7 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -437,7 +437,7 @@ minetest.register_abm({ minetest.register_abm({ label = "Moss growth", - nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble"}, + nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble", "walls:cobble"}, neighbors = {"group:water"}, interval = 16, chance = 200, @@ -449,6 +449,8 @@ minetest.register_abm({ 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}) + elseif node.name == "walls:cobble" then + minetest.set_node(pos, {name = "walls:mossycobble", param2 = node.param2}) end end }) From 42afe679a7f7267806b0bf2749728e609e78ccb3 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 1 Dec 2016 03:15:15 +0000 Subject: [PATCH 181/196] Default / flowers: New biomes. Limit dirt blobs. Add corals, bushes Biomes: Add 'sandstone desert', 'cold desert', 'snowy grassland'. Rename 'glacier' biome to 'icesheet' biome. Rename non-swamp 'swamp' biomes to 'shore' biomes. Remove 'sandstone grassland' biome. Rename 'stone grassland' biome to 'grassland' biome. Edit biome points for improved similarity to Whittaker classification. Change 'tundra' to bare stone with snowblocks. Make dirt 'swamp' / 'shore' less deep. Ores: Make dirt blob ore biome-specific, limit to dirt biomes. Decorations: Make mushroom noise spread match that of appletrees as originally intended, to have mushrooms spawn in darker thicker forest areas. Add coral reefs in warm oceans. Add bushes and acacia bushes. Jungletrees in deeper water for larger swamps. Register flower mod decorations in singlenode mapgen for use by minetest.generate_registered_decorations, as in default/mapgen.lua. --- mods/default/mapgen.lua | 470 +++++++++++++++--------- mods/default/schematics/acacia_bush.mts | Bin 0 -> 113 bytes mods/default/schematics/bush.mts | Bin 0 -> 99 bytes mods/default/schematics/corals.mts | Bin 0 -> 171 bytes mods/flowers/mapgen.lua | 14 +- 5 files changed, 311 insertions(+), 173 deletions(-) create mode 100644 mods/default/schematics/acacia_bush.mts create mode 100644 mods/default/schematics/bush.mts create mode 100644 mods/default/schematics/corals.mts diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index 52aa294c..d786a841 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -43,6 +43,7 @@ minetest.register_alias("mapgen_stair_sandstonebrick", "stairs:stair_sandstonebr -- function default.register_ores() + minetest.clear_registered_ores() -- Blob ores -- These first to avoid other ores in blobs @@ -109,6 +110,8 @@ function default.register_ores() octaves = 1, persist = 0.0 }, + biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest", + "deciduous_forest", "savanna", "rainforest"} }) -- Gravel @@ -379,10 +382,10 @@ end function default.register_biomes() minetest.clear_registered_biomes() - -- Permanent ice + -- Icesheet minetest.register_biome({ - name = "glacier", + name = "icesheet", node_dust = "default:snowblock", node_top = "default:snowblock", depth_top = 1, @@ -398,36 +401,36 @@ function default.register_biomes() y_min = -8, y_max = 31000, heat_point = 0, - humidity_point = 50, + humidity_point = 73, }) minetest.register_biome({ - name = "glacier_ocean", + name = "icesheet_ocean", node_dust = "default:snowblock", node_top = "default:sand", depth_top = 1, node_filler = "default:sand", depth_filler = 3, --node_stone = "", - --node_water_top = "", - --depth_water_top = , + node_water_top = "default:ice", + depth_water_top = 10, --node_water = "", --node_river_water = "", y_min = -112, y_max = -9, heat_point = 0, - humidity_point = 50, + humidity_point = 73, }) - -- Cold + -- Tundra minetest.register_biome({ name = "tundra", - --node_dust = "", - node_top = "default:dirt_with_snow", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 1, + node_dust = "default:snowblock", + --node_top = , + --depth_top = , + --node_filler = , + --depth_filler = , --node_stone = "", --node_water_top = "", --depth_water_top = , @@ -437,8 +440,8 @@ function default.register_biomes() depth_riverbed = 2, y_min = 2, y_max = 31000, - heat_point = 15, - humidity_point = 35, + heat_point = 0, + humidity_point = 40, }) minetest.register_biome({ @@ -457,8 +460,8 @@ function default.register_biomes() depth_riverbed = 2, y_min = -3, y_max = 1, - heat_point = 15, - humidity_point = 35, + heat_point = 0, + humidity_point = 40, }) minetest.register_biome({ @@ -477,10 +480,11 @@ function default.register_biomes() depth_riverbed = 2, y_min = -112, y_max = -4, - heat_point = 15, - humidity_point = 35, + heat_point = 0, + humidity_point = 40, }) + -- Taiga minetest.register_biome({ name = "taiga", @@ -498,8 +502,8 @@ function default.register_biomes() depth_riverbed = 2, y_min = 2, y_max = 31000, - heat_point = 15, - humidity_point = 65, + heat_point = 25, + humidity_point = 70, }) minetest.register_biome({ @@ -518,16 +522,16 @@ function default.register_biomes() depth_riverbed = 2, y_min = -112, y_max = 1, - heat_point = 15, - humidity_point = 65, + heat_point = 25, + humidity_point = 70, }) - -- Temperate + -- Snowy grassland minetest.register_biome({ - name = "stone_grassland", - --node_dust = "", - node_top = "default:dirt_with_grass", + name = "snowy_grassland", + node_dust = "default:snow", + node_top = "default:dirt_with_snow", depth_top = 1, node_filler = "default:dirt", depth_filler = 1, @@ -538,34 +542,14 @@ function default.register_biomes() --node_river_water = "", node_riverbed = "default:sand", depth_riverbed = 2, - y_min = 6, - y_max = 31000, - heat_point = 40, - humidity_point = 35, - }) - - minetest.register_biome({ - name = "stone_grassland_dunes", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 2, - --node_stone = "", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, y_min = 5, - y_max = 5, - heat_point = 40, + y_max = 31000, + heat_point = 20, humidity_point = 35, }) minetest.register_biome({ - name = "stone_grassland_ocean", + name = "snowy_grassland_ocean", --node_dust = "", node_top = "default:sand", depth_top = 1, @@ -580,10 +564,73 @@ function default.register_biomes() depth_riverbed = 2, y_min = -112, y_max = 4, - heat_point = 40, + heat_point = 20, humidity_point = 35, }) + -- Grassland + + minetest.register_biome({ + name = "grassland", + --node_dust = "", + node_top = "default:dirt_with_grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 1, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, + y_min = 6, + y_max = 31000, + heat_point = 50, + humidity_point = 35, + }) + + minetest.register_biome({ + name = "grassland_dunes", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 2, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, + y_min = 5, + y_max = 5, + heat_point = 50, + humidity_point = 35, + }) + + minetest.register_biome({ + name = "grassland_ocean", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, + y_min = -112, + y_max = 4, + heat_point = 50, + humidity_point = 35, + }) + + -- Coniferous forest minetest.register_biome({ name = "coniferous_forest", @@ -601,8 +648,8 @@ function default.register_biomes() depth_riverbed = 2, y_min = 6, y_max = 31000, - heat_point = 40, - humidity_point = 65, + heat_point = 45, + humidity_point = 70, }) minetest.register_biome({ @@ -621,8 +668,8 @@ function default.register_biomes() depth_riverbed = 2, y_min = 5, y_max = 5, - heat_point = 40, - humidity_point = 65, + heat_point = 45, + humidity_point = 70, }) minetest.register_biome({ @@ -641,71 +688,11 @@ function default.register_biomes() depth_riverbed = 2, y_min = -112, y_max = 4, - heat_point = 40, - humidity_point = 65, - }) - - - minetest.register_biome({ - name = "sandstone_grassland", - --node_dust = "", - node_top = "default:dirt_with_grass", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 1, - node_stone = "default:sandstone", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = 6, - y_max = 31000, - heat_point = 60, - humidity_point = 35, - }) - - minetest.register_biome({ - name = "sandstone_grassland_dunes", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 2, - node_stone = "default:sandstone", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = 5, - y_max = 5, - heat_point = 60, - humidity_point = 35, - }) - - minetest.register_biome({ - name = "sandstone_grassland_ocean", - --node_dust = "", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - node_stone = "default:sandstone", - --node_water_top = "", - --depth_water_top = , - --node_water = "", - --node_river_water = "", - node_riverbed = "default:sand", - depth_riverbed = 2, - y_min = -112, - y_max = 4, - heat_point = 60, - humidity_point = 35, + heat_point = 45, + humidity_point = 70, }) + -- Deciduous forest minetest.register_biome({ name = "deciduous_forest", @@ -724,11 +711,11 @@ function default.register_biomes() y_min = 1, y_max = 31000, heat_point = 60, - humidity_point = 65, + humidity_point = 68, }) minetest.register_biome({ - name = "deciduous_forest_swamp", + name = "deciduous_forest_shore", --node_dust = "", node_top = "default:dirt", depth_top = 1, @@ -741,10 +728,10 @@ function default.register_biomes() --node_river_water = "", node_riverbed = "default:sand", depth_riverbed = 2, - y_min = -3, + y_min = -1, y_max = 0, heat_point = 60, - humidity_point = 65, + humidity_point = 68, }) minetest.register_biome({ @@ -762,12 +749,12 @@ function default.register_biomes() node_riverbed = "default:sand", depth_riverbed = 2, y_min = -112, - y_max = -4, + y_max = -2, heat_point = 60, - humidity_point = 65, + humidity_point = 68, }) - -- Hot + -- Desert minetest.register_biome({ name = "desert", @@ -785,8 +772,8 @@ function default.register_biomes() depth_riverbed = 2, y_min = 5, y_max = 31000, - heat_point = 85, - humidity_point = 20, + heat_point = 92, + humidity_point = 16, }) minetest.register_biome({ @@ -805,10 +792,95 @@ function default.register_biomes() depth_riverbed = 2, y_min = -112, y_max = 4, - heat_point = 85, - humidity_point = 20, + heat_point = 92, + humidity_point = 16, }) + -- Sandstone desert + + minetest.register_biome({ + name = "sandstone_desert", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 0, + node_stone = "default:sandstone", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, + y_min = 5, + y_max = 31000, + heat_point = 60, + humidity_point = 0, + }) + + minetest.register_biome({ + name = "sandstone_desert_ocean", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 3, + node_stone = "default:sandstone", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, + y_min = -112, + y_max = 4, + heat_point = 60, + humidity_point = 0, + }) + + -- Cold desert + + minetest.register_biome({ + name = "cold_desert", + --node_dust = "", + node_top = "default:silver_sand", + depth_top = 1, + node_filler = "default:silver_sand", + depth_filler = 1, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, + y_min = 5, + y_max = 31000, + heat_point = 40, + humidity_point = 0, + }) + + minetest.register_biome({ + name = "cold_desert_ocean", + --node_dust = "", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 3, + --node_stone = "", + --node_water_top = "", + --depth_water_top = , + --node_water = "", + --node_river_water = "", + node_riverbed = "default:sand", + depth_riverbed = 2, + y_min = -112, + y_max = 4, + heat_point = 40, + humidity_point = 0, + }) + + -- Savanna minetest.register_biome({ name = "savanna", @@ -826,12 +898,12 @@ function default.register_biomes() depth_riverbed = 2, y_min = 1, y_max = 31000, - heat_point = 85, - humidity_point = 50, + heat_point = 89, + humidity_point = 42, }) minetest.register_biome({ - name = "savanna_swamp", + name = "savanna_shore", --node_dust = "", node_top = "default:dirt", depth_top = 1, @@ -844,10 +916,10 @@ function default.register_biomes() --node_river_water = "", node_riverbed = "default:sand", depth_riverbed = 2, - y_min = -3, + y_min = -1, y_max = 0, - heat_point = 85, - humidity_point = 50, + heat_point = 89, + humidity_point = 42, }) minetest.register_biome({ @@ -865,11 +937,12 @@ function default.register_biomes() node_riverbed = "default:sand", depth_riverbed = 2, y_min = -112, - y_max = -4, - heat_point = 85, - humidity_point = 50, + y_max = -2, + heat_point = 89, + humidity_point = 42, }) + -- Rainforest minetest.register_biome({ name = "rainforest", @@ -887,8 +960,8 @@ function default.register_biomes() depth_riverbed = 2, y_min = 1, y_max = 31000, - heat_point = 85, - humidity_point = 80, + heat_point = 86, + humidity_point = 65, }) minetest.register_biome({ @@ -905,10 +978,10 @@ function default.register_biomes() --node_river_water = "", node_riverbed = "default:sand", depth_riverbed = 2, - y_min = -3, + y_min = -1, y_max = 0, - heat_point = 85, - humidity_point = 80, + heat_point = 86, + humidity_point = 65, }) minetest.register_biome({ @@ -926,9 +999,9 @@ function default.register_biomes() node_riverbed = "default:sand", depth_riverbed = 2, y_min = -112, - y_max = -4, - heat_point = 85, - humidity_point = 80, + y_max = -2, + heat_point = 86, + humidity_point = 65, }) -- Underground @@ -1047,7 +1120,8 @@ function default.register_mgv6_decorations() }) end --- All mapgens except mgv6 and singlenode + +-- All mapgens except mgv6 local function register_grass_decoration(offset, scale, length) minetest.register_decoration({ @@ -1062,13 +1136,11 @@ local function register_grass_decoration(offset, scale, length) octaves = 3, persist = 0.6 }, - biomes = {"stone_grassland", "sandstone_grassland", - "deciduous_forest", "coniferous_forest", - "stone_grassland_dunes", "sandstone_grassland_dunes", - "coniferous_forest_dunes"}, + biomes = {"grassland", "grassland_dunes", "deciduous_forest", + "coniferous_forest", "coniferous_forest_dunes"}, y_min = 1, y_max = 31000, - decoration = "default:grass_"..length, + decoration = "default:grass_" .. length, }) end @@ -1088,10 +1160,11 @@ local function register_dry_grass_decoration(offset, scale, length) biomes = {"savanna"}, y_min = 1, y_max = 31000, - decoration = "default:dry_grass_"..length, + decoration = "default:dry_grass_" .. length, }) end + function default.register_decorations() minetest.clear_registered_decorations() @@ -1112,7 +1185,7 @@ function default.register_decorations() biomes = {"deciduous_forest"}, y_min = 1, y_max = 31000, - schematic = minetest.get_modpath("default").."/schematics/apple_tree.mts", + schematic = minetest.get_modpath("default") .. "/schematics/apple_tree.mts", flags = "place_center_x, place_center_z", }) @@ -1157,9 +1230,9 @@ function default.register_decorations() sidelen = 80, fill_ratio = 0.1, biomes = {"rainforest", "rainforest_swamp"}, - y_min = 0, + y_min = -1, y_max = 31000, - schematic = minetest.get_modpath("default").."/schematics/jungle_tree.mts", + schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -1207,7 +1280,7 @@ function default.register_decorations() biomes = {"taiga", "coniferous_forest"}, y_min = 2, y_max = 31000, - schematic = minetest.get_modpath("default").."/schematics/pine_tree.mts", + schematic = minetest.get_modpath("default") .. "/schematics/pine_tree.mts", flags = "place_center_x, place_center_z", }) @@ -1261,7 +1334,7 @@ function default.register_decorations() biomes = {"savanna"}, y_min = 1, y_max = 31000, - schematic = minetest.get_modpath("default").."/schematics/acacia_tree.mts", + schematic = minetest.get_modpath("default") .. "/schematics/acacia_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) @@ -1313,7 +1386,7 @@ function default.register_decorations() biomes = {"deciduous_forest"}, y_min = 1, y_max = 31000, - schematic = minetest.get_modpath("default").."/schematics/aspen_tree.mts", + schematic = minetest.get_modpath("default") .. "/schematics/aspen_tree.mts", flags = "place_center_x, place_center_z", }) @@ -1349,6 +1422,7 @@ function default.register_decorations() flags = "place_center_x", rotation = "random", }) + -- Large cactus minetest.register_decoration({ @@ -1366,7 +1440,7 @@ function default.register_decorations() biomes = {"desert"}, y_min = 5, y_max = 31000, - schematic = minetest.get_modpath("default").."/schematics/large_cactus.mts", + schematic = minetest.get_modpath("default") .. "/schematics/large_cactus.mts", flags = "place_center_x", rotation = "random", }) @@ -1407,10 +1481,52 @@ function default.register_decorations() octaves = 3, persist = 0.7 }, - biomes = {"savanna_swamp"}, + biomes = {"savanna_shore"}, y_min = 0, y_max = 0, - schematic = minetest.get_modpath("default").."/schematics/papyrus.mts", + schematic = minetest.get_modpath("default") .. "/schematics/papyrus.mts", + }) + + -- Bush + + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:dirt_with_grass", "default:dirt_with_snow"}, + sidelen = 16, + noise_params = { + offset = -0.004, + scale = 0.01, + spread = {x = 100, y = 100, z = 100}, + seed = 137, + octaves = 3, + persist = 0.7, + }, + biomes = {"snowy_grassland", "grassland", "deciduous_forest"}, + y_min = 1, + y_max = 31000, + schematic = minetest.get_modpath("default") .. "/schematics/bush.mts", + flags = "place_center_x, place_center_z", + }) + + -- Acacia bush + + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = -0.004, + scale = 0.01, + spread = {x = 100, y = 100, z = 100}, + seed = 90155, + octaves = 3, + persist = 0.7, + }, + biomes = {"savanna"}, + y_min = 1, + y_max = 31000, + schematic = minetest.get_modpath("default") .. "/schematics/acacia_bush.mts", + flags = "place_center_x, place_center_z", }) -- Grasses @@ -1446,7 +1562,8 @@ function default.register_decorations() minetest.register_decoration({ deco_type = "simple", - place_on = {"default:desert_sand", "default:dirt_with_snow"}, + place_on = {"default:desert_sand", + "default:sand", "default:silver_sand"}, sidelen = 16, noise_params = { offset = 0, @@ -1456,11 +1573,36 @@ function default.register_decorations() octaves = 3, persist = 0.6 }, - biomes = {"desert", "tundra"}, + biomes = {"desert", "sandstone_desert", "cold_desert"}, y_min = 2, y_max = 31000, decoration = "default:dry_shrub", }) + + -- Coral reef + + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + noise_params = { + offset = -0.1, + scale = 0.1, + spread = {x = 200, y = 200, z = 200}, + seed = 7013, + octaves = 3, + persist = 1, + }, + biomes = { + "desert_ocean", + "savanna_ocean", + "rainforest_ocean", + }, + y_min = -8, + y_max = -2, + schematic = minetest.get_modpath("default") .. "/schematics/corals.mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) end diff --git a/mods/default/schematics/acacia_bush.mts b/mods/default/schematics/acacia_bush.mts new file mode 100644 index 0000000000000000000000000000000000000000..df95586110928918f10e78311b6a0a974b7e150a GIT binary patch literal 113 zcmeYb3HD`RVPFQq`uchhm6%z?AeEAumROooVwISjn4FmypHy0$5ucNqSe9DMAc0M; uxFj{VVoq`b1GAe7hj8K{0mm@mc=>$!eEyUx|JSo`n&?`<$e_o_-UI-1Y9pTj literal 0 HcmV?d00001 diff --git a/mods/default/schematics/bush.mts b/mods/default/schematics/bush.mts new file mode 100644 index 0000000000000000000000000000000000000000..d08cf5f5f9a204b3389405db80edae858d871dd7 GIT binary patch literal 99 zcmeYb3HD`RVPFQq`uchhm6%z?Ae@q#mROooVwF@{oDrXsnpl=v%piy&SX`2tTQMg& nfq~ggg+n;;kbq;DaJ+oJd_I55mH+G6H%)XcU}Vr^WN!ihdf6T? literal 0 HcmV?d00001 diff --git a/mods/default/schematics/corals.mts b/mods/default/schematics/corals.mts new file mode 100644 index 0000000000000000000000000000000000000000..e1bd7ded6c202e4ca9f308164806f53117606728 GIT binary patch literal 171 zcmeYb3HD`RVPIuoW?-$aw+Awr6Elk#L{d`I5=(PRtdjGK5_95#L|%F-gD|RSQc-?+ z9)lRFU~zV8PHIVhUd5cXJr{Wy6gix^-`F!RE)@~k)9~+pchcpcMz;l}!mV5L=PU0m z+!C7hHEZ`~ Date: Thu, 1 Dec 2016 17:34:56 +0100 Subject: [PATCH 182/196] Default: Make Book with Text a furnace fuel --- mods/default/crafting.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua index 50b4b957..483245c2 100644 --- a/mods/default/crafting.lua +++ b/mods/default/crafting.lua @@ -1075,6 +1075,12 @@ minetest.register_craft({ burntime = 3, }) +minetest.register_craft({ + type = "fuel", + recipe = "default:book_written", + burntime = 3, +}) + minetest.register_craft({ type = "fuel", recipe = "default:dry_shrub", From d7f176dfd836373f162b888c79634817cef15ca7 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Fri, 2 Dec 2016 23:05:01 -0800 Subject: [PATCH 183/196] Torches: Make selection boxes consistent This makes all the 3d torch selection boxes 1px oversized. Before, they were inconsistently sized and too small for the upright torch. --- mods/default/torch.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/default/torch.lua b/mods/default/torch.lua index 0d3454bf..e94c5bd6 100644 --- a/mods/default/torch.lua +++ b/mods/default/torch.lua @@ -55,7 +55,7 @@ minetest.register_node("default:torch", { drop = "default:torch", selection_box = { type = "wallmounted", - wall_bottom = {-1/16, -0.5, -1/16, 1/16, 2/16, 1/16}, + wall_bottom = {-1/8, -1/2, -1/8, 1/8, 2/16, 1/8}, }, sounds = default.node_sound_wood_defaults(), on_place = function(itemstack, placer, pointed_thing) @@ -102,7 +102,7 @@ minetest.register_node("default:torch_wall", { drop = "default:torch", selection_box = { type = "wallmounted", - wall_side = {-0.5, -0.3, -0.1, -0.2, 0.3, 0.1}, + wall_side = {-1/2, -1/2, -1/8, -1/8, 1/8, 1/8}, }, sounds = default.node_sound_wood_defaults(), }) @@ -123,7 +123,7 @@ minetest.register_node("default:torch_ceiling", { drop = "default:torch", selection_box = { type = "wallmounted", - wall_top = {-0.1, -0.1, -0.25, 0.1, 0.5, 0.1}, + wall_top = {-1/8, -1/16, -5/16, 1/8, 1/2, 1/8}, }, sounds = default.node_sound_wood_defaults(), }) From ea9c4012d53fe85e1af839f70c601d86aba3930a Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Fri, 2 Dec 2016 23:39:25 -0800 Subject: [PATCH 184/196] Farming: Change wheat into # shaped plant This changes the farming API such that any nodedef with paramtype2 and place_param2 are passed through to all the plant stages of the farming plant. This allows plants to use an alternative mesh for the plantlike drawtype, and provide a bit of graphical variation in plants. We enable this for wheat, using place_param2 = 3, which is the '#' shaped plant mesh. If you would actually be able to give yourself this plant in creative or through /give, you would also get the same '#' shape. --- mods/farming/api.lua | 15 +++++++++++++-- mods/farming/init.lua | 2 ++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/mods/farming/api.lua b/mods/farming/api.lua index 725cbc47..3ff182e9 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -213,7 +213,11 @@ farming.grow_plant = function(pos, elapsed) -- 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}) + local placenode = {name = def.next_plant} + if def.place_param2 then + placenode.param2 = def.place_param2 + end + minetest.swap_node(pos, placenode) if minetest.registered_nodes[def.next_plant].next_plant then tick(pos) return @@ -239,7 +243,11 @@ farming.grow_plant = function(pos, elapsed) end -- grow - minetest.swap_node(pos, {name = def.next_plant}) + local placenode = {name = def.next_plant} + if def.place_param2 then + placenode.param2 = def.place_param2 + end + minetest.swap_node(pos, placenode) -- new timer needed? if minetest.registered_nodes[def.next_plant].next_plant then @@ -290,6 +298,7 @@ farming.register_plant = function(name, def) groups = g, paramtype = "light", paramtype2 = "wallmounted", + place_param2 = def.place_param2 or nil, -- this isn't actually used for placement walkable = false, sunlight_propagates = true, selection_box = { @@ -343,6 +352,8 @@ farming.register_plant = function(name, def) waving = 1, tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"}, paramtype = "light", + paramtype2 = def.paramtype2 or nil, + place_param2 = def.place_param2 or nil, walkable = false, buildable_to = true, drop = drop, diff --git a/mods/farming/init.lua b/mods/farming/init.lua index 796e9871..97dc9b4a 100644 --- a/mods/farming/init.lua +++ b/mods/farming/init.lua @@ -10,12 +10,14 @@ dofile(farming.path .. "/hoes.lua") -- WHEAT farming.register_plant("farming:wheat", { description = "Wheat seed", + paramtype2 = "meshoptions", inventory_image = "farming_wheat_seed.png", steps = 8, minlight = 13, maxlight = default.LIGHT_MAX, fertility = {"grassland"}, groups = {flammable = 4}, + place_param2 = 3, }) minetest.register_craftitem("farming:flour", { description = "Flour", From e67a60376f3c44efed8f0d1e86a232b87f2c557d Mon Sep 17 00:00:00 2001 From: Napiophelios Date: Sat, 3 Dec 2016 15:56:41 -0500 Subject: [PATCH 185/196] Xpanes: Improve bars texture --- mods/xpanes/textures/xpanes_bar.png | Bin 180 -> 155 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/xpanes/textures/xpanes_bar.png b/mods/xpanes/textures/xpanes_bar.png index 4d17ceb855793cd0cd05229e774968fd017cbfe4..3ea62a9382bc1bf942cdfb1786accaadeeb516c3 100644 GIT binary patch delta 139 zcmdnOIGb^TL_G%s5LnGvuop-%l?3?(Gcc4*K5GHwg?PF+hE&|D?K{YOz<`Ho=4Ry& zUso4zXmDSfbX_-ViJe~Ggo6z{ZX#b57(S-`_3n6l<&0R5>XOar7mR+K%;1i%zv*Co r^5sVH-|rJ8&$G=ITjI0SB&Kn0z|`NfRTF^bGkCiCxv;ErN@xNAY7{t1 delta 164 zcmbQuxP@_oL_G^L0|Ud`yN`l^lxToYh%1nuJb7|)aq)r$3$n7ZDl03aqM`~CIoyE~ zj3q&S!3+-1ZlnP@zMd|QAsp9}0|J8rgNlNR5)(=ooLJph+1$1|unMFxd_16ZhD)Gh z*)iP&YuPI^$Wx)dmCR&CJHKF1;H!C~$BwF>s{up5Cu)s|7Tf N!PC{xWt~$(6959yH1+@h From fc791d80f0eaaaa46582f17ecf6e4fc6d42b8ed5 Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 4 Dec 2016 01:52:06 +0000 Subject: [PATCH 186/196] Default/flowers: Improve papyrus and waterlily schematics Papyrus: Make base node dirt instead of dirt_with_grass. Formerly the exposed dirt would change to grass but the new grass spread ABM now prevents that. Waterlily: Don't specify a water_source node in the schematic, as it may be used in river water. It was not force-placed but should really be "air" prob = 0. --- mods/default/schematics/papyrus.mts | Bin 99 -> 73 bytes mods/flowers/schematics/waterlily.mts | Bin 92 -> 75 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/default/schematics/papyrus.mts b/mods/default/schematics/papyrus.mts index a3b67776e25848302c6f9d29c4cfc797f28b0d89..1333a7c4279d94b4d9a124dba25138cb11ad5738 100644 GIT binary patch delta 58 zcmYfHoFHP##K4o1nwD6aQ(~2pSyaNn591Xi7E~6M7FWzkPGDeillb$0zZ{E%0t17I H9!os{Gba+* delta 84 zcmeZFo*?4S%)pb9nwD6aQ(~2pSyaLxj?9ZM&n(G^PcKR=E@t3|Nfaa&R2G#MSIkLH XNJvOYXgc`+|7*tvMkWT6Wh|`#_V*w3 diff --git a/mods/flowers/schematics/waterlily.mts b/mods/flowers/schematics/waterlily.mts index 876310cce9110775b10b9cef15ae36e7a5b2d800..69e1d8e0c76ea232c9e17f52b6d4dbcb30e378fd 100644 GIT binary patch delta 48 zcma#?o}i%3oS0d}AefeuU!Gc2Y*n6El3J9LnNwLYCpjS@AtmA0`GE5W4lpoqNHR77 E0IZP`Qvd(} delta 65 zcmeZ{nV?`Jl9HO1SejE}Ri0RqS`=TLUs{x$${?7QlV6@%R16W#$;_#&n3J54kdTt_ QD?a}GfddQ-TvM1B0WE162LJ#7 From 7998de671fcf247c2bf630144c58c5b7908b98fd Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 4 Dec 2016 03:50:07 +0000 Subject: [PATCH 187/196] Default: Convert remaining indexed leaves to RGBA Some GPUs cause visual bugs when mip-mapping is used with indexed textures that use alpha. Because leaves are sometimes rendered opaque it is even more important to keep these as RGBA to preserve the correct background colour. --- mods/default/textures/default_jungleleaves.png | Bin 184 -> 425 bytes mods/default/textures/default_leaves.png | Bin 304 -> 773 bytes mods/default/textures/default_pine_needles.png | Bin 203 -> 391 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/default/textures/default_jungleleaves.png b/mods/default/textures/default_jungleleaves.png index 870b4bb27e9debc742a57ecda1fa9857cbc56499..5afcc36d3a7f61e5580c612a6180ded3e4d8c089 100644 GIT binary patch delta 411 zcmV;M0c8HT0jUF!7=H)`0000V^Z#K0000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rb3XCMHUIztHc3Q5R5;6ZQ@zfEFc5PPZ3jvO zEfO0QZ@~M%4b1#hqzu4t-_SbWL8+IBQ|yaS01%c{E&$;A8Ex}4P@qUz<t_Tc^K|{ZAv2f7t++p~UrmB>n2h$`HcwMlx!5!k zT4ElAwi)mO3x68-$JKjX-0H2cHV%^ssCeX=c65juWtEE$5ddr&3A-{Eit@CGh`CzWwQMlJ{FlggU&B@}`T$ zTZH7SNJNVT`cLG1xk!3pSdVWP=s!5rd;JUS#-Md3e-!4H8I7qcG%NrB002ovPDHLk FV1iHevoQbw delta 168 zcmZ3~&|kBXLLS-3G%ArfU;Z5>jFg9Z)zwLD8Twaox@jylpd|^=LCVNJ#px TxPMv{Xbpp>tDnm{r-UW|bw)m- diff --git a/mods/default/textures/default_leaves.png b/mods/default/textures/default_leaves.png index e39535c66435518a9790c4f92cee8ea9b5346ea6..ba09fe1d90904067ded5d7f120232328f92f8367 100644 GIT binary patch delta 760 zcmV3szZ%EmHVrD`nB9?W$=&#+U(vHGhnqh_T)JF^|*5WN0|M zd%yGkzM}x#y@t%g1&=l=bUyTy+uD-IEHSY~V#VBi@|D}#5*`V5*&*zP1pSc$u=bC3 z#IY>AGw6KiDZW_}r|6OpjbaXtcg6d2O0rC`%MkQOYX4|QhPMfNc$?szO<1d0)SESN z_Zs4zTq(WOB!6K-&>yK~9A`_1X^Q((6#!!lgPyMd z1{X7&bqlR^-XLk3a`|b3UVe$82w^wGR5Yi5i~#7L-Q17k{nl6G>nYFLC7hxIfMr=! zpH|V{$(8a?1Eq~-Wvz^V8mKq#Ur4=KlbX9J?Za&WpnsSplT>)~{)Jq32WoOLLFW#> z7pU>|6o4INrTa0x%uUus7^1AfGu- zNy3EEN`Yt@0kD6xBi3RX^ZDcs0JpUz?yCytA4ANVAsR(^oht=!-5n@^TDmE|7pQ~d zU75`nXn#{M_q?W(avLn^cWzYJ4e58XMK*SxN#2QV+W>t2C15;O=*Z97>HT_#UR5ln z8Rxmu+V6HHT1Mo%%GoJb%8Uooj0FIv=ulcM@VzznUHSLx9Qy|wr1SvuPOg-RE!6j) zn~e?0E9Y;$qA9KxNWP{Iw2_+zs5fiUKHQf2%W>)hFzAmmNiY8oZoPdjZfom)C%X3Y zrle__1^hK5zs`EICat&6Wzh3g5@uRxA8yO~6T^Hq$K7iPfG$5S128`o^=aLWTh^xuA$^z%2pL30$Q?tMTSL0QqZjFMlkAUm_F*k_5w9 m!3d8yXfl;{ZW-Xz>G=Q|T?M06!RVm?0000P< zd)TuLo?WEHx;^YyMKzuQ7bz!{$>pO3gEB$W)J*gv7wOJGz_MF;=OS@UBSU@1zuyS} z@bcDRI-ZOaXm%TrMgg*5wzHXqZCR&U99$XdT-=1 zjWcLyarsP0<8h3q*Js?$SJ2R6djH7hX1B>>($Fr=QHobH*hs>eT^?dGpPN5_JuI9!Sf%m WpY#z7_}bzC0000Pc}3^Kr=uN;)YYFn=Tl6k;q1@(X5g zcy=QV$jS0_aSY+OE_(K$V2c3{%fZ;6Oak6aK@S-m1XtAjeBSc&T(Xqor5?6*tIAAE z0 From 0ff09e018d25cfa99ddeed33916c866e1b011661 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 29 Nov 2016 09:26:56 +0000 Subject: [PATCH 188/196] Add sfinv.get_homepage_name(player) Also sets creative:all as default inventory page Fixes #1423 --- game_api.txt | 2 +- mods/creative/inventory.lua | 9 +++++++++ mods/sfinv/api.lua | 9 ++++++--- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/game_api.txt b/game_api.txt index a2c4e312..38718c36 100644 --- a/game_api.txt +++ b/game_api.txt @@ -411,6 +411,7 @@ Sfinv API If context is nil, it is either found or created. * sfinv.get_formspec(player, context) - builds current page's formspec * sfinv.get_nav_fs(player, context, nav, current_idx) - see above +* sfinv.get_homepage_name(player) - get the page name of the first page to show to a player * sfinv.make_formspec(player, context, content, show_inv, size) - adds a theme to a formspec * show_inv, defaults to false. Whether to show the player's main inventory * size, defaults to `size[8,8.6]` if not specified @@ -422,7 +423,6 @@ Sfinv API * pages - table of pages[pagename] = def * pages_unordered - array table of pages in order of addition (used to build navigation tabs). -* homepage_name - name of default page * contexts - contexts[playername] = player_context * enabled - set to false to disable. Good for inventory rehaul mods like unified inventory diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua index 8dedffc4..be24b3a2 100644 --- a/mods/creative/inventory.lua +++ b/mods/creative/inventory.lua @@ -169,3 +169,12 @@ creative.register_tab("all", "All", minetest.registered_items) creative.register_tab("nodes", "Nodes", minetest.registered_nodes) creative.register_tab("tools", "Tools", minetest.registered_tools) creative.register_tab("craftitems", "Items", minetest.registered_craftitems) + +local old_homepage_name = sfinv.get_homepage_name +function sfinv.get_homepage_name(player) + if minetest.setting_getbool("creative_mode") then + return "creative:all" + else + return old_homepage_name(player) + end +end diff --git a/mods/sfinv/api.lua b/mods/sfinv/api.lua index a8c997f6..2fef3c84 100644 --- a/mods/sfinv/api.lua +++ b/mods/sfinv/api.lua @@ -1,7 +1,6 @@ sfinv = { pages = {}, pages_unordered = {}, - homepage_name = "sfinv:crafting", contexts = {}, enabled = true } @@ -57,6 +56,10 @@ function sfinv.make_formspec(player, context, content, show_inv, size) return table.concat(tmp, "") end +function sfinv.get_homepage_name(player) + return "sfinv:crafting" +end + function sfinv.get_formspec(player, context) -- Generate navigation tabs local nav = {} @@ -81,7 +84,7 @@ function sfinv.get_formspec(player, context) return page:get(player, context) else local old_page = context.page - context.page = sfinv.homepage_name + context.page = sfinv.get_homepage_name(player) assert(sfinv.pages[context.page], "[sfinv] Invalid homepage") minetest.log("warning", "[sfinv] Couldn't find " .. dump(old_page) .. " so using switching to homepage") return sfinv.get_formspec(player, context) @@ -94,7 +97,7 @@ function sfinv.set_player_inventory_formspec(player, context) context = sfinv.contexts[name] if not context then context = { - page = sfinv.homepage_name + page = sfinv.get_homepage_name(player) } sfinv.contexts[name] = context end From 58038a7941212faf59f9f390b6bbfb62f45b95dc Mon Sep 17 00:00:00 2001 From: paramat Date: Sun, 4 Dec 2016 06:55:32 +0000 Subject: [PATCH 189/196] Snappy group: Remove beds and cactus from group --- mods/beds/api.lua | 4 ++-- mods/default/nodes.lua | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/beds/api.lua b/mods/beds/api.lua index 7b409e99..3b2bb0d5 100644 --- a/mods/beds/api.lua +++ b/mods/beds/api.lua @@ -33,7 +33,7 @@ function beds.register_bed(name, def) paramtype2 = "facedir", is_ground_content = false, stack_max = 1, - groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, bed = 1}, + groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, bed = 1}, sounds = default.node_sound_wood_defaults(), node_box = { type = "fixed", @@ -137,7 +137,7 @@ function beds.register_bed(name, def) paramtype2 = "facedir", is_ground_content = false, pointable = false, - groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, bed = 2}, + groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, bed = 2}, sounds = default.node_sound_wood_defaults(), drop = name .. "_bottom", node_box = { diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index a81f4ed7..3e781091 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1048,7 +1048,7 @@ minetest.register_node("default:cactus", { tiles = {"default_cactus_top.png", "default_cactus_top.png", "default_cactus_side.png"}, paramtype2 = "facedir", - groups = {snappy = 1, choppy = 3}, + groups = {choppy = 3}, sounds = default.node_sound_wood_defaults(), on_place = minetest.rotate_node, }) From fed2151d708b79b86bed7f112c2356966f2b4500 Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 3 Dec 2016 04:54:44 +0000 Subject: [PATCH 190/196] Fire: Rewrite fire sound code Previous code: Used looped sounds without attaching them to objects or playing direct to players. The looped sounds are not 'stopped' when players leave the area. These may be causing the bug where sounds are heard at extreme distances. Entering a world with already present flames results in silent flames. Sounds are often played at a large number of points in a 6 node lattice. A large fire is reported to cause a high load, disabling the sound code is reported to help this. New code: Optional flame sound to not interfere with ambience mods. Permanent flame now has sound. For multiple flames, sound is positioned at the centre of all flames, and has volume determined by flame number. The original freesound 'large fire' recording was used to create 3 sounds that play at random for a non-repetitive effect. At low volume it is suitable for small fires. Original sound files and sound function (as an empty function) kept temporarily to reduce disruption. Reduce gain of flame extinguish sound. --- minetest.conf.example | 3 + mods/fire/README.txt | 27 ++-- mods/fire/init.lua | 236 +++++++++++++++++-------------- mods/fire/sounds/fire_fire.1.ogg | Bin 0 -> 57957 bytes mods/fire/sounds/fire_fire.2.ogg | Bin 0 -> 60497 bytes mods/fire/sounds/fire_fire.3.ogg | Bin 0 -> 56781 bytes settingtypes.txt | 3 + 7 files changed, 154 insertions(+), 115 deletions(-) create mode 100644 mods/fire/sounds/fire_fire.1.ogg create mode 100644 mods/fire/sounds/fire_fire.2.ogg create mode 100644 mods/fire/sounds/fire_fire.3.ogg diff --git a/minetest.conf.example b/minetest.conf.example index f5e4e85d..3f20eb77 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -24,6 +24,9 @@ # 'permanent flame' nodes will remain with either setting. #enable_fire = true +# Enable flame sound. +#flame_sound = true + # Whether the stuff in initial_stuff should be given to new players #give_initial_stuff = false #initial_stuff = default:pick_steel,default:axe_steel,default:shovel_steel,default:torch 99,default:cobble 99 diff --git a/mods/fire/README.txt b/mods/fire/README.txt index 35affc26..099da1c2 100644 --- a/mods/fire/README.txt +++ b/mods/fire/README.txt @@ -12,17 +12,24 @@ Authors of media (textures and sounds) Everything not listed in here: Copyright (C) 2012 Perttu Ahola (celeron55) (CC BY-SA 3.0) -fire_basic_flame_animated.png: - Muadtralk (CC BY-SA 3.0) +Muadtralk (CC BY-SA 3.0) + fire_basic_flame_animated.png -fire_flint_steel.png - Gambit (CC BY-SA 3.0) +Gambit (CC BY-SA 3.0) + fire_flint_steel.png -fire_small.ogg sampled from: - http://www.freesound.org/people/dobroide/sounds/4211/ (CC BY 3.0) +dobroide (CC BY 3.0) +http://www.freesound.org/people/dobroide/sounds/4211/ + fire_small.ogg -fire_large.ogg sampled from: - http://www.freesound.org/people/Dynamicell/sounds/17548/ (CC BY 3.0) +Dynamicell (CC BY 3.0) +http://www.freesound.org/people/Dynamicell/sounds/17548/ + fire_large.ogg + fire_fire.*.ogg -fire_flint_and_steel.ogg - https://www.freesound.org/people/Benboncan/sounds/66457/ (CC BY 3.0) +fire_small.ogg and fire_large.ogg are unused but kept temporarily to not break +other mods that may use them. + +Benboncan (CC BY 3.0) +https://www.freesound.org/people/Benboncan/sounds/66457/ + fire_flint_and_steel.ogg diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 0dbd7c3e..bee487a5 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -1,11 +1,13 @@ --- minetest/fire/init.lua - -- Global namespace for functions fire = {} --- Register flame nodes +-- +-- Items +-- + +-- Flame nodes minetest.register_node("fire:basic_flame", { drawtype = "firelike", @@ -34,22 +36,17 @@ minetest.register_node("fire:basic_flame", { minetest.remove_node(pos) return end - -- restart timer + -- Restart timer return true end, drop = "", on_construct = function(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.update_sounds_around, pos) + on_blast = function() -- Unaffected by explosions end, - - on_blast = function() - end, -- unaffected by explosions }) minetest.register_node("fire:permanent_flame", { @@ -76,7 +73,7 @@ minetest.register_node("fire:permanent_flame", { groups = {igniter = 2, dig_immediate = 3}, drop = "", - on_blast = function() + on_blast = function() -- Unaffected by explosions end, }) @@ -113,10 +110,10 @@ minetest.register_tool("fire:flint_and_steel", { end end if not minetest.setting_getbool("creative_mode") then - -- wear tool + -- Wear tool local wdef = itemstack:get_definition() itemstack:add_wear(1000) - -- tool break sound + -- Tool break sound if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then minetest.sound_play(wdef.sound.breaks, {pos = pt.above, gain = 0.5}) end @@ -151,72 +148,134 @@ minetest.override_item("default:coalblock", { end, }) --- Get sound area of position -fire.D = 6 -- size of sound areas +-- +-- Sound +-- -function fire.get_area_p0p1(pos) - local p0 = { - x = math.floor(pos.x / fire.D) * fire.D, - y = math.floor(pos.y / fire.D) * fire.D, - z = math.floor(pos.z / fire.D) * fire.D, - } - local p1 = { - x = p0.x + fire.D - 1, - y = p0.y + fire.D - 1, - z = p0.z + fire.D - 1 - } - return p0, p1 +local flame_sound = minetest.setting_getbool("flame_sound") +if flame_sound == nil then + -- Enable if no setting present + flame_sound = true +end + +if flame_sound then + + local handles = {} + local timer = 0 + + -- Parameters + + local radius = 8 -- Flame node search radius around player + local cycle = 3 -- Cycle time for sound updates + + -- Update sound for player + + function fire.update_player_sound(player) + local player_name = player:get_player_name() + -- Search for flame nodes in radius around player + local ppos = player:getpos() + local areamin = vector.subtract(ppos, radius) + local areamax = vector.add(ppos, radius) + local fpos, num = minetest.find_nodes_in_area( + areamin, + areamax, + {"fire:basic_flame", "fire:permanent_flame"} + ) + -- Total number of flames in radius + local flames = (num["fire:basic_flame"] or 0) + + (num["fire:permanent_flame"] or 0) + -- Stop previous sound + if handles[player_name] then + minetest.sound_stop(handles[player_name]) + handles[player_name] = nil + end + -- If flames + if flames > 0 then + -- Find centre of flame positions + local fposmid = fpos[1] + -- If more than 1 flame + if #fpos > 1 then + local fposmin = areamax + local fposmax = areamin + for i = 1, #fpos do + local fposi = fpos[i] + if fposi.x > fposmax.x then + fposmax.x = fposi.x + end + if fposi.y > fposmax.y then + fposmax.y = fposi.y + end + if fposi.z > fposmax.z then + fposmax.z = fposi.z + end + if fposi.x < fposmin.x then + fposmin.x = fposi.x + end + if fposi.y < fposmin.y then + fposmin.y = fposi.y + end + if fposi.z < fposmin.z then + fposmin.z = fposi.z + end + end + fposmid = vector.divide(vector.add(fposmin, fposmax), 2) + end + -- Play sound + local handle = minetest.sound_play( + "fire_fire", + { + pos = fposmid, + to_player = player_name, + gain = math.min(0.06 * (1 + flames * 0.125), 0.18), + max_hear_distance = 32, + loop = true, -- In case of lag + } + ) + -- Store sound handle for this player + if handle then + handles[player_name] = handle + end + end + end + + -- Cycle for updating players sounds + + minetest.register_globalstep(function(dtime) + timer = timer + dtime + if timer < cycle then + return + end + + timer = 0 + local players = minetest.get_connected_players() + for n = 1, #players do + fire.update_player_sound(players[n]) + end + end) + + -- Stop sound and clear handle on player leave + + minetest.register_on_leaveplayer(function(player) + local player_name = player:get_player_name() + if handles[player_name] then + minetest.sound_stop(handles[player_name]) + handles[player_name] = nil + end + end) end --- Fire sounds table --- key: position hash of low corner of area --- value: {handle=sound handle, name=sound name} -fire.sounds = {} - - --- Update fire sounds in sound area of position +-- Deprecated function kept temporarily to avoid crashes if mod fire nodes call it function fire.update_sounds_around(pos) - local p0, p1 = fire.get_area_p0p1(pos) - local cp = {x = (p0.x + p1.x) / 2, y = (p0.y + p1.y) / 2, z = (p0.z + p1.z) / 2} - local flames_p = minetest.find_nodes_in_area(p0, p1, {"fire:basic_flame"}) - --print("number of flames at "..minetest.pos_to_string(p0).."/" - -- ..minetest.pos_to_string(p1)..": "..#flames_p) - local should_have_sound = (#flames_p > 0) - local wanted_sound = nil - if #flames_p >= 9 then - wanted_sound = {name = "fire_large", gain = 0.7} - elseif #flames_p > 0 then - wanted_sound = {name = "fire_small", gain = 0.9} - end - local p0_hash = minetest.hash_node_position(p0) - local sound = fire.sounds[p0_hash] - if not sound then - if should_have_sound then - fire.sounds[p0_hash] = { - handle = minetest.sound_play(wanted_sound, - {pos = cp, max_hear_distance = 16, loop = true}), - name = wanted_sound.name, - } - end - else - if not wanted_sound then - minetest.sound_stop(sound.handle) - fire.sounds[p0_hash] = nil - elseif sound.name ~= wanted_sound.name then - minetest.sound_stop(sound.handle) - fire.sounds[p0_hash] = { - handle = minetest.sound_play(wanted_sound, - {pos = cp, max_hear_distance = 16, loop = true}), - name = wanted_sound.name, - } - end - end end +-- +-- ABMs +-- + -- Extinguish all flames quickly with water, snow, ice minetest.register_abm({ @@ -229,7 +288,7 @@ minetest.register_abm({ action = function(pos, node, active_object_count, active_object_count_wider) minetest.remove_node(pos) minetest.sound_play("fire_extinguish_flame", - {pos = pos, max_hear_distance = 16, gain = 0.25}) + {pos = pos, max_hear_distance = 16, gain = 0.15}) end, }) @@ -245,7 +304,7 @@ end if not fire_enabled then - -- Remove basic flames only + -- Remove basic flames only if fire disabled minetest.register_abm({ label = "Remove disabled fire", @@ -279,7 +338,7 @@ else -- Fire enabled end, }) - -- Remove flammable nodes + -- Remove flammable nodes around basic flame minetest.register_abm({ label = "Remove flammable nodes", @@ -291,7 +350,6 @@ else -- Fire enabled 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) local def = minetest.registered_nodes[flammable_node.name] if def.on_burn then @@ -305,35 +363,3 @@ else -- Fire enabled }) end - - --- Rarely ignite things from far - ---[[ Currently disabled to reduce the chance of uncontrollable spreading - fires that disrupt servers. Also for less lua processing load. - -minetest.register_abm({ - nodenames = {"group:igniter"}, - neighbors = {"air"}, - interval = 5, - chance = 10, - 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(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 - return - end - local p2 = fire.find_pos_for_flame_around(p) - if p2 then - minetest.set_node(p2, {name = "fire:basic_flame"}) - end - end - end, -}) ---]] diff --git a/mods/fire/sounds/fire_fire.1.ogg b/mods/fire/sounds/fire_fire.1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cbfee4c65f4739acc951e8f87f30d824f1ae21ea GIT binary patch literal 57957 zcmagF1z23ovM#&^ch}&~3>GvS1B; z`A`9pt9bZATrWX?znVen4?X|;dg%E;(VyqxClJ5?|6N~@|6#=SK(}|Z<5u^urFXKo z(EZDvUWuOXG4EquM51Tcva~bzwy}2cwzakP0zYsEq5jhuEF-H60x%FYyejm4LF2JH z06+i$&zZq^2{uaLLU=B_PYPV|q15;IeG2@2ABANUZ~uQ~^a56-0DuAnv17*M?Y9BMQlYH}TFP7(I6^fO@X`XT+D zIz0%;VG>E&0_QP4%G(slLks#&j^msS1Ph`sIpIQv@36P9vN1@q{(mPayFmybh0x`IJN1A&vpkG>z=IS0uZ9N!giWPjoP8bw z&pZVNJf9-cGcUO>aFwqYD)|3pga@+&fD|uvpF8yzgf?JYQyzkPp5k+!s&fccJZR*9 zzk>hb1u+qZOq(Q!APoLk^S^2dLa?RC#gN7MM-rkzckGRTF_~fatmQg@K9=BPU?7?=cp1+TH!w>AEI>h%F;XDYXuUq*CFJl9f(vM)V-%pJZ#7_)Y=vHL{?42p z073}mp~SW7lC3yvPcDBgjLw`ww& z{}}kcJjb16AddP=9J6vQv+5-0*B=7v=K>SN@|pswTBIfuq~23x)>=X)Q-ao0I@U8U ztQQ)sjhX@s8vo@m|G3TCocDit&V!3Eio|Rw#-se(b8^^YHicuDl;W8U;#qx?Y~QDq zre^Jz=3)I0&#{XrPKhWEkJt^5VSk@w|30m(CC_Q7>ag|ynf}{zo_R1M62f!jJ(&N) zbGmt{Wf9&~%c*+)&m6@k5DN8@C;v|a06=#vj`H7iL=(m}0~4Hqap`D_|L-1ypw0-W zP6;3sn+O1u0KkMWatJ|$N34vCxIPB&4l`=52wLuEijZOgejE{8Mz2_DHu2_okzSnh zbr?IToXXp1mM1avxSxuQm9~X35X&A4pa}p$yo0=-DLh7%zU0V_@?vJf2SwNl6DF0w zTuBuCV3r~x%dL$3Nu@6Za0=y!%mO0I_mzlF06OA>ojV>&3X&oL01F%#7C00R8wKyg z!iIRasbNr&;tZ`(5e%A;Azrl1w*=rqYOPW50CmWS^mfMEacOn{pzj7DJ~HeAR`LJ= z8?f%iJeDA!Ov0i}EI&qKJx8oMmniU6Ku}X#XP8)LMq6izOjW0mMU_}p^+H>RSYC%z zXDUfmr@?tlzrqOzdEKo1WdyQY!0C78upnA_G1(?k`o22}Ul`6?!Rzf;+ zje?q9I+{Ax2HH9XFRTr&b@XNflo3=d)df-=okpF7OJ|*=fDJDl6FuvNYaIi!K%=?P zjjMnSiU-bfGu{ZQ`K+~hllL0CeVV;PUP)ORds$g&S)+4VRi#nhURhq*P_1oQRmD(k zb$ON3A%a>}QdY}ZR>oOgTX9pydDvJ|)>=7KTa#W@e%N@5-OG8{>Q+`&RbG4aKy9r& z>~}wGee7QZ9xf_BXf17RbvbNxA8B-^&M!OYgbaVG8LB-!Y~`u$N8)2IMYlPhyPbqVviQS|P)o2tmBd{jSt)kEu%=p$6137d{Jf{8%(?aZF!82DRscPZ~Ou z_D>r|5n2-P?G{*#Dq$AZKM)YCc5@2wWT1rwB+5`O-4O(k^CzVhOACm!lu8>AtO^Ur zl%c$hBt|a0v($(l1w=+l;C>P@IWwf7N1S?gjUW@!=e!cOXrT6 zG{4jTnz@AoSO2U<<%4j@$HaJq@SR1&C=vLi1%g#PEDF)X$f>0$$pJw~gGDy%EP6T# zUQHWTJjhT+JRv+kv|Q>UR-GVZKq?5+I_F^td2n0laM-AlJ%PuF2n17RM1-x>Lq!G* z))|q;U}+c?0fYNyMKD+j$&?{neY%cdFk%*nkTK`4+oGwy?*n1s8ejr)2rurZN31(& zl!X*;$0-U(ED0D3DG+ukB(X&3mckQH2102$D$NcK(SSn0p#)GRmO?~`i$#ry=bXmj z`qYR4{j-id$FacS4Wswc=7SK1s6g3DgAp37^hQ9Tuy4fBp|XBn3ZpV~mQR@l0R@}N z&nbo+0C0pD(9z#@gawF22c#(S5pqRr2`olL_NWCAD3#!vX+^8zLgA(X{e>6PJTnGm!wFhcy!_ zf}RUk0Qb|w<6#JKh$)qN;2?C@r~5#F8y?Xkpy4F=f&c-lenVMkWuLxd6+_{yMTOuT z0>lkFX^v0?!SQPg04$@T12xE0@}x$KW{)j>l5V!pZg2*oQLzdwg^Y6gq-zCid%Opw>aTcL2;%VJaL51;8RIWhu z_tw(sUqO1xKezu8v;RAK|KCbRj+F?={bvS9bzz|c_vlo*&xFB`usI**NPve3^mOx}wyN*C~_aA5>0JZy1JGh3-Uua?EBI>|22#~S=EwLaq6P%-b{K_G`tu=>?!FnfX4(3{J~Nn5{f~Dpb!)=kWn#~~sv3(m6;1@w)d526R*L`T<0V(;;Fqna#x z(}&QbFogGkNMeKD61%+G#8q$Z!4#D*#QSFp3<78YARd>Vkugmq2JZuYEI}M$JW&EM z906YdSO*2+13}EF;o;#nG5Nh)$jow9AqAhmp|JcVKV%pf|7=xI{+9pQA_s~7Lw?vI zKZtQZ)uw;U&(8;Dd%`Cu$h*C9vcIx*$_Zv;<7DR(61d%mu(R>PYTI}kp8 zK|y{JGC?dWn-PM~ukq-^>h)*gJboUVkN5|DJTA@r+wA6aF66d$`|OGpktPe?j!8>R zc_UHN3ii-`5nzFoKc$y$&0EPl;3As;mFhed7|}9(a>hO2{<1<~x#ibt=`O4m(e^jNvFmyfIe>d<)r1~TMcI+78moM14NEO`E_lY5J<;qyD<$r3sX%NE^*-cp4_8&=+| zb5e4(nlTh{B@yph-dxz0oLi|5HsoDsFcl2h&=?C5X7U*tLO2?bbDH}cP-^sX4^aa% z$WM;Riysww&U?1mo&<ct__1Yi^0YuxYGYqejDSt(jO8BZz7 z%Z9=y(@3MZ(M%2Xo}u1f;~q*JFzlY!-q;1)yV!l}YKc@Qz6&uNAkdY$dQL+)@LF9! z6!+b4?J7Hwgte>C=}F;{R~O0EwEVuDol{?W!2uw}{vIbE%8IPgMHyd(p~Gj#6-Az1RdwPfsjB zTXBqzc7dvGm(AfVyI279e=N%r>eMpKy|ycN|C46m#3f*mfXe6ZO?nMEOH#EdwyHN? z>`-maGk;?6QP3@jmF}ncVSVhB@OTD&jQsBf;`cEztg=rd4g<{d;z=8RvXDA3Lo}Ro zgVmYp1G=GdJwfFrGfo~pL~{`bA4mMbopge-CU;Kgj)JEjKnmZ!?2{5^m&^aWeWf7& zqYA`41a1A@UW{^CC9lu*CQG<%U--_Ak_@%c_kd(kSLXc0G12)%qm~@&eZ=8~HM9Ie z6Vlj+79*9kwUdq%i+8q3F2G%SbUDcUMFpI;l}bD8YXTssE8IxhPyx?F{@{JRU|`tB zv1HoR;_v)C`7}^y`^Vu+o^R=rswY(*g^RuW?*zH!D)kz(B!9Pm|-s~4PK_~LK~#gQF+<6-D1Xw|mu_SCdmrDiaQ5d;Z%Dmw%jRS1H2T?EIbW#s z{0W$g+cSwN>ZX%@YP-Cf)uC8B$PqFQm{w%sQJ|m%UFlkBp;^4)P2A>%(1gB-!Z+ft zHh%Q;@t)f&-|eoht-9m=7P`i27QA}TbnMhL+uPgiTZz*~CzQHwFClH4xgT4B{9||m z5+f+>?rDiKron-gc1K2B!>(Z)u{xK2zYO?iv^;)6jN*BOd3IinXEruY>6;VjSbkyQ zf<<`LVhX;Z!!a9Ro;n<(VREZ(#>K`;rQ7XD#0jFKB>nw4(&D=XjM}=!ljLGLOdgbf z&sJBtw-UIuBE>#o%zuVob1*~VIR1J-ZQxO)@;)j*`li);K|vs}z49IUCP+1O)j0#! z%d(24p~LGy(=Zjq6R;JT8tp9EB03@G+jh(S`X)V2xYH_u+=J?LPm=j%PeYh)zhXgy z0Bu;kQ2KOC{}}rv?~57ekW1#Yzlnb0N_VAQN7*MCZex)gRexsgs*022@n+miIvN?+ zaG(49kfBewn#>^V*;~KYh0#q7o_oyz?Z8{9lcTTUe0ccV!;X1#KuL76SebCE$^R%s{e9b{`T#y zUKWl7{MRq3l;+SIuA8815)~5GIR(tBNJnVjyE{b&*e!JBW$MSNnY9=S5{)^&@T$5P zW{neTM%`WBhDKF)k!OABzfQQ2v(Dg&5j4vcbw*hhyG=XI3M@t&9fWyDP<)hrdo1?-dYg%ZB;G4N-e$zG)h^YNj+ z6DmKDS5)h)L%n1*<_Bh;6*6k`d-D4!8|DS;xFdhIz|4zJB_qgI=L01>rG0ouy=kzl z$cnxwQ`p+}!}BOv?tbvAcSrt$v|tj&J+q;k!;^&`&^vgZC#^b zUQOsg{t{3iA;P8AOz=Fg5g8+yV06NmicLUe7u%3CyfqjATmE2RA{$+@hUxg0mQy&4BBX z%egx3k7Z(P<3XcHg9xVzODCad(&96e5tl+KaY9*97V=p+kW^B5=TZergAm)(j;gKp zs)2+x6GvHlO4wNPVUB&fPMHq~dwr4+4YcgbqK*CzEUAs`}NA~JZLCY4| zf4u*63cvfAW$MBmx%pAEUf0v_aQg5ypYE3%9tmd&|FOI&RbdxGu6_~s&cZ9>MCkF4iYLDO)sJyv>MCR5J;W`5ICse38%W_}%LL3H=DsB?>UZ!|XSu z=r{7QK|3E~cK#FKFZ6v8drKz${`Bn7wz~SsrNpLXwO%ySZ>|v*CSxM6Fs=cuX zUS22uYB@L`c3E4q!eI>FBYRs-@j0cLRJKCO>5A0Z?=qMxBv|B~FoVLcZrBLoM;b$> zpdm{ny)@MnrZIY%OQ4<3d57$GGvATmjF?=ON;re(E=b%WE4w~_nyqxBZ=gzEdU@m5 zK4-5)3(7QAr+|8BG+Kd45?u6*n5blPcjVESV{O{HT7Z}HL9v!&b_G6O?3L6?8mO`k z9sf5u$jjmi&tDBy+Bt_kQO9M%Q ze0(yUcAsY}C`1MmtALU74a9M!DfkW6$BhCuBRZ{}>)8Ehcgt&`?5lU21ZKM$BV24v z_>B=mzs~*FLG7%X+VYfG%2AZ0po-6iimr?tuiP0Ti_?z%h9?DDiGNb=4w+UsVVa=S z!*Xf$BXKB~fo1cTz*e<}_JStl@=If8IbHkx-qDCtf}81n>_|~AcDpG!kLi_;+r25S za183eh^F3q`OK@@r!ikYevsxu{#aX3SkLMih8x1?4LmOkLiv4*(p<37*0uK)&$A9^ z>6Pl4I%WGvnSHlM+f`7RC=ewoSV*+!M6ih4t#~BzJXep(Qs>1Z?Drj6&F)q7W0 zU*}X9meo}VQo98y77lbh>{!$Ypt1f%yd>=0m$4}v4yWbY28l$YuM)m#qsOTE`tj#* z%=-pk^FmsFLzK~<(NbWSfuyY|{r;~=ia5{o`0NX$RX8ZLaMPSB4 zNy4k$HZ3n>Tv!_yD(J@mi-pup7F~jDKZ7TYNANzm$h>OL^eZb>;lv zaVib}Hvt*-#~z3D76v$X($fpn-;GUAY+yw}U)-<&IFx}ImUJEFbZ-rGY`FQ+vpaB^ zi}9DBuG&;O4`cN6>G~0_VbxfW(LZBD?BB1y5y>Sgtjji>wsqS9Yj$I*e1S9o~(5U4MJA3Jn6W=2(kV=D^xYi`J{gRWdXS03c zkKfwM))Lnp=7isp^U$(*-wLIF4i>t-|9!B4j3`FsYi4mh<`V+*332lCp0Dg29CER- zLD+=^1UWgmg!qoPzJ2@727$2h3-a;_@d*fRU%YYl8nPOPM_sO!1AIf)G`G;xTJe}U zp_Am=(M|pDch{r=r0W#{CUlM)7nsg8%NG1V7)1u|!9856Xt6uBMb7j6egAnoEc+G1 zs!H~c0V=gCR)Y2Q^@Q(!L)Yhi=)iO!KcV6(%69BAph1?N(mkCbiM&SrvhMfT#bPVi zXAUfsmdv3cbt)-iu`yisD0tJnqvaX!*+$xJSS5W=&bpJ6xH*`dnAr1O^LO~g4ab+P zzD-D4p#BjL{+34~X1%Bgg#9TgL7+N)P3c{QWZO6FOJC7)SgpjV#R8{kDTfHjX@92jkSR z_(Tapx%HhT|8f;lnFh4xUv{^A=8QZvBHaGown%yBGt4lKPOm78k z?nzh@UW=jkksW_?Rx9j#*C{%+(Q9Ep^(6Cp&2`)2 z8=VjUhsdLl9K;v@5k!KQyRMKakQ{Ogd!6YY5|)}YwuQPpzO)EI_YWt+{v>Btxfk^d z_#Gk0ge(kfk-Od5Z1j_W z(dz?-wshqD0ry6H2_gLw)n25$9511}l}okVF|v(DOAdFc_xj9v5(VXg7>S}b^s_%a zY$K!x*9^+G*&T|LN8=ij%C4j8;tthXE(e(`7egOA&&$w3gMB#a!%ao{TN$fbop{Vl z^I10(O8!{L75Eq_)Ml<450=I~*El~*?Nq9Hy`0mvUdgagK12cIGoIeU5W*8D<4C1G zsl**koTY2X(=o=PDK+5EZW!UyrV(u^Ot54RsL3A-R9__m0xL3gLGka92_0TFb(oTr z(NioHcnMg0g;U}e6tvvedEI@PL4F4-zWYKm-{^h%iDyg3#&5-Cgl|&K1ny;&f?18E z+VJ9D*egNX$Uv`m)Yqk{f48I8ZkrY_X?K$6@c{P@K7TuZ<@^j6DIw?crD82AqVRl_ zTx*l8)%ny!9jvQWMxio17LU78A|kc%NTiv{Fshh00JSLTM_UQ;WShjL+9M}2~Oido66aBH~ zhiqZf5|JjY2ro_|t#*F1(*u7>=ZE0$-=D;M}#9r_tI->FB|B3mwT@*3?-RgWIh zPzQ|F*Cj_GqN!DpGTY0n)}SV9jk9D&*MqOegfE(Y@?^OG4q3XeE!YN=rM&eDC;NOW zkRp8G_Bo|+Zd#Rxl9Ms{fd3uVK)J47Xnwb9^WJgrO-r&VB(P`*m!%nr8TQ?1^w=U; z=6j}ShN3;5pWi|~pY7N5jKGAp`sb_l<2ZPG6Tx}w1LoJKYka?*ZOjt}YIa^?zBo*L z2iioHZ!Gk?OnzzQn)ZSCH#5bQy^e(nbC__5(U$k```HiS0pnTQ0(9GcM9v>l7nm$o z+L)A$)Dt`=F)fO}zU^;6dlOm!t~>vw_xj8-JAVGaC71m5V=S^mL5WuEFVdJG8m}tP zsaW&O!ll{hO$q0h9Me4&s{wLL%Oo2Zmst*mDoz6lX9G!rJyn$|iT zrhDa;P*oXuq*w|p^-j9KFp(s`AHE5uV(usu{5s4#|2QRO_Q1kPJmGN2-93l0B1mLiLiLtVc2T@Rq^geq;o|7iQem=xl{zy<>;QOdg zAw>s`4CT+-8BI8=#SLMH#sdal1nfcDto9RjGc{J^0yW515gy&qZyigX_?BW`uB80% zx4iin(V8%%3=JG}v0rtw6?|2kJwYSxgbR1k%$zWsH5h#*NSR}dbB&3`4F==81AldbCoBIp%P}**7qYU7Bab zU8~$I0hO=QW<_tDlxJQ|DgSSUZ^Wh4DXoD|&VX+3Dxg-zqMob`C4m{m zOUP)kT65wAi*BSy*Ghl)Z$U{jJyMt-}t9CXiz=T=gv}v z&9_NFg&~83dK}ao`R6rY5eu!{TJTw%S8e>pxwg5XQMu}!Ih_9eoQ$bD(dN;DnYHVd zXc{-3EDGEP8w{XZeP&~j60OP>pMz72ALCx@L@p`UUq9OIX^>pSTSQMZYB+J^q%<|$ zAzwxQEm}y7u81CV{ktL{(=yAl`s)?}E=4)4E6?`namwWUR+jF0Z%xsS&J<3i&3TvK z{T~m9r5hn0ip1}czYFcAXpd4=oBEDA#Bz*F1uw>yXyeQVz8$`9)N;tfb@FDMs>eL6eusp=eoiML8Vy)QqjG(ojnXc$OFCaHmQ)oSJniWy z{lXeLJV&_k6U%cWrGeN5c-H<5u}tZDF&4P;MVT(Y-kB$>n>sv8ofk z-?gkD+9(=59B!8iV5P$=$$>^6$?Jzc#GTvW!@lL+u9-1K)+ya>;7y?Qu;i>!8 zt(YmN%++;d3C3&Dq(tQ=9Q*6YN5#CX*N|?Xdit^_v1tN4U;aMN%c^lP%Uo$BRb=jW zFjL@%Sz;{1q9FOoS=Rr~thV zQPF)rr{Z$+OW%GE5bE?41C6mcglUqlF>zo-|u#4n_Qt-nfR&j z&*|JX_in&_if=oYH%BmPmR8Smp>WTtXazBJ&fH8cTq zfriWE%d$gN)sQ3D1;{;hf_xcSMB7~)#@Lxp$wP{)}Fq}4`9Aa??k?eRN^&W zt5_5vR_&+gp$r%22(#M#ikDbu`7V-RFDRdBzt*LK=`&Mtvj_P4Y_KgIb-uO#d4r={ zkru@?a=ZwinMBGLHyb0r-Pa0pPd{3$DE%mpCrtC5uw$;|-^!7Xlu@rypO~t!^O17! z|J`4gr|qblV>j1_^W54{MLHy3iD@d0fh6ZKs2)nV1H|UsMxrc#f6C*_XfV4*%8ajC zWx~^CyNo8N{Qe1Uf{q809F}-}J0DR}R}IJCyv)w>TQ^m?HQEI5MnBh2O#y+&}SwP&tLf4VRdSe z+~47M)wg{UIx<00u{R8w``b5lS^!v?B!Yf%M@V=dB=xT z6Ec4)vN?p_Yo)92ZDSBQYJ7ti&3whb(|Lyi*R`*}f%OJQ)X~tJlq0!JXU~lB*YjT+ z^=TOmvEa*X;iF#Dc)Q>4y)2Z?|1m+(%kvTbtRqmUBNB(DW^OCzJCh_)h zxM5Em@utbz_*O-hy*$$OyT(-0By3iB^bd(Yd*EuOKep*fUj)%7_#rDUiPN zu8{Z8HT)3BXEc;jE6V(Nqx2R0E}|XIOuHrc?A^g#T5-!4%8T8LSnRbAOs?4s^%|q` z1-@dCc=8sZDjfXPKA4p>*yQzKt))zXr!Pswd~_s>DAPW+SoV#`QI46>^kdg`%WF!# zIo~$!)kbh+dMH<(FL`!ld2Vm>qt}EWQtE?NP*tBH{+T;t+^g9TWu3IUmBlg7SpB7c zokukM`#j>|1&HS&aZgze!C#LL&epfNn< z1G~Gac3UDnsi=fspD|!a5n1;Vn#X7br>1D)SsmJ88uLdgs_#N;g8l38SWY4wB`%;V zIMApGQKN!&mAi4rSFGWZ{Naw9Rpal<1(s&hU^)rkX<1l)B^t5mK512_ccOA*DS#yp znquR-dJ0lLebdvP>ZjMelt@Wtv!ofKv5_DGDlo(}e~g88B48#;Z*0l$O4o<1M^mVK z&)mwAA~V1i%?VSn(tDjt0N|@VaqTtHt#~`qgb3!%92D9SvXd@L*ZT ziR5m3D}w4R80MZacMG`y{oQUz_m8;TeV6zk=&#QtD>W;x)i*be;>QDH3&((Zg~XUQ z?lbgYg+R7o&fG_-e`@t#mPa3^KqQ3nPyPtgI4VK1hEjeLUs}Dd6hpqLf8XVY{@DRE zer!!q@6M^uQrq!R(B4-Otp)l^37u=Uey7Hm*BDlGqD%C{7@H2)D$As#e^-Zu=>Rzbn+jw_BWU;hDC67bpsY_2i;BqD#B7sh|b0A$z@zEchA&O8N3x80CqvFXNcMr7 z15c*qj0KsJG_qzQX!=Q~Z|op!<+Bu$KMVu{c(S!P#(IU*HxNRjzSUpN-_oKNE zO9`YKzc80pUwzA9;4&u5=rrC=alWL+aEL|o(glM6>OY8`|0kEA8#4h|+P65C`r-S? zOD{&Aow1Y&`hgx_w0boWuG56HdQ|&A_t|LcVat0jEXBU>d37Ic5jWQ#szF7Q?B1Y6 z3tLH{Pn&9PTSM8&oKNVaful+;kQ(iP8A#E6HR-UM9@|JpW!QFGG{dZi&x5TiHsyDCXWMaU^)yAI^{d>A z$jztowo{l_{YYO&pv9&?t{AgZB`yrcx0rbS9;s917BptBz_MpE$?kNP&| z6B%ObJBO}j-B{(fFJhF4zt~#(_=`m*EkdByu&-ys&sPEQ!V{jbxWVC-n_Z(C@pSGd2O;P`nvkXwDS%?ao;17Fd4dS_|X{9*Mf zv_kQEsWa$+x#4saQW9=0DoR9bPXN%iXWHP!($UM_m^$Dl6;eH??oF8Z#mcJ5VfYH- z(bg+mBi=U0(KCG?Jcb_c^F(}Y#96KP*X=U3#^uX|se*0dG)!26!fe+@iKxXK4y5#? zo^+1uDbbGjr$BU!+W9pMx$3t?Z zPZ#d+*(kr#5x`Qp(|M#{Yv~i9H`be8Sp_SHGOOn|_P#tIxo&15Y$nzFq+8RNL0tE} znM9GVv8i=;Qv0cN-!klU_uz3P;k5lX+rscm-VsS2rqZbt&?ICcDt4F5r7e)pxiMY* zos{NUEVylT&!)w)+(ZKqT2f6w`3aD=l1r*m%w2h(@9D$P^QmbQ3al2`Wf`<-K1sIu zQtQ6#3M=l+?JgcUIt%RaeJquZ^L0_7^!)Nw$D&)e30GC2ml_58S+aL7s?R-E=x!dd zjr^AS{!Xm^t=|5y-+4tdQK}-^PHKSP@!_K#OlC`_j_S-VJuQO^Mn5r6!Y3|%<|{p8 zUD_NOQ!qWcc}bXq^R$04YUevUUZffKEKEfb#g`{#R`yn-<{ok(u3a%hc9+@VKd2Xv zQa{wH=s#5y)~r0(2#T<7t{@<3Tjhx$Jg_q(bCAuww4X~}5lmG1=D~4=H27QyNUmWE zuDab6`o+NHfW_?0uO6RN0ufiftN7@6S|tV)STLXgm^SEcq>>=|88bmHi1~*7@8*ii z{iBK;gUVM>&n7Y!Cn%yFC29za_;i>iC*lUZW*1|@pf5rdc2OiK$WTzWt1i&+p6p9B z+-=IR-21jz`xQ-EJ#mx-;So-mT|93cvK6Eg$xEfob#@6dL%wm~@~ODya$w|eePSr@ zLgy%H_%{1PsNwgZK0LtCPn93_Gw7pNzg^&EASA|V<>S(ZJ+Y0WRr%L~;5URH8sSlLH7B}1tA1ps4$0=%snO0tb;Rr=S=nCF)DDn7~QL4>iasvSaH3@^aGnotunGV+Da(i*(A)g&yV zcA+Xi@i%tNTqT4)^?M)7O&%MlEauDoBH#U1(L6_8lXy1vjpkSfLjR-cB)H%Ma_6!* z9_9&8&bw8vEAtSv$5&;ODRyfZs_v4PSCEzL^z@_q`_$Lp?fS9XYu(4|>58?oxu{I< z1A`Cn=&I@tI)(HfY9jR#~9S3tG+2eBwx)1HaB?-fww--lQ3uLM;<&2@Q(-cj>b}}jX zONgb~P)!&Aa`nQX6b3+hykg4IjXyZPdYn{S;T2R?291hS#*VN}W<6Uie^TUHq0Xb{ zV|Gfk^O{P}+UBk$JA1(Q$6X2q^jW|e`VIVtGu~Dk(;L5E7^#&9?W-$O{z-&kdC#(N zcS6G-!Ck-n>9^=Aa)U%C2~_g^ddyWSD1QmAYOO|6pb4ub-oXa>tHdeMxYMaWv#jo) zMBQWk^#hmol>@rCyJWU+andV{F{Xj<``U+gUtyv_Ff*Zv<=)uXu{@N2<<$QF%(V9NXXrD;uUQEArVhj&0+oT4!_L zzN|Ukz7}&J3eXf=+mIxL2uFOMF_I?ju|I;pHBL8Zc-)1)_mO?AhFa zwg6kcye>MH;04V=M+P3e@a3gsH7DmIVc?xwgx-e)rk>xJ^MqsTxlyR{Y0qCZ?$lh; z2)&V&u!7H=`Vusyt&S2zt^Hh5j6l<1y!F_W*)&CFY*^c-Y?kr-bx(o@m5Dir_T(K7kzAOXwl*F zo>EoN88AemT4-c$WSn!wn5KD)XSKQJ`s!9?SR3{HPr%dHZ%>OfoBM?Zg=WXVQ$tUt zd{+~{sNe)7uH5x4P!h9oX;G>|@-f@amzz8#gmb?{c(+4`L!Z-n36v)v^GPKe+m0AV zHOIB;zLgE7giQ4{FqNiN{NkOMwO`xpaw93(n~k1-vp1;$Hcvt>^H*zAqAJy!a~^no z`+BFsUi|!z=M!>q>AXr=(vYbv!WOrCI^E~Z1uZg2K&MJ(BXtgq70&r6>$o%@B?oST z$EJU-K!;x_lU|mq+QNd`$}iv9;SOVp!Fif7>pFDw>?&%1w_iisjnSzzniQmS4P0Z# zT*RgER@77KWlbfa3&M%Yc`{$P2>vXAILNWZlbZ_VRmb|h@+ATWnULl4w2hV={4j3L zk!O6C7~1UI+wG_()}5mh-Hg)ftQShYpZhX@8=gFZVoA2$@&to#=1Rz{EgX#w-|Pq* zhMbL&KkCGlu(c3*1x3wpPMp?F(vW8|{u({HSfq5n@@!TXU&hlw-&>l|A0&|Q}2i54@#99yE36!^y^`JYviX}+c%pjGZ4*b8EGAJpO&v)pBmsC zq5LV$R!n03e2O2RQP{?mHDf>7|8#j3nWXvB&^dVpTm?mvs93?r{Ej4b`a;>e@e4{n zMS|RJ0<40!*Hgam#%zk-W&^w415hQ5qurZ?@~DhS$a|0beR#Fyb69+Hed9WQ5E>tpDND& zeb#{ZpFZ%Z3`Qfkx4X;B%P+vr$->G1m=7YvD+mTd*!e^Rx4(be-rt5mARG{|5Tcro z0}SRD5`b_*AdgL>R@8C61B@3g9dBMJ3u5)_PsQh7c`33ljyB$nnk*yU5HqPW zys4~`=h9!#w^fRrQkB@Bp!SZE1{0OrG+wzC}z`S+!Vb99VL=DmT zgq^)$xt@O50XatNM^Z@}=H^Tn`S2h!5G5y?4q4Z64+<3!=%0xX`rHeQ`+J&ej9^mq z@)|3s5vkktS45@n?#L!P>Aejc$^P>x!>n4RsKnoWN9pSE6x(p6o(5OkRn2p|Qi&_u zYyRq}U*nMS4^nPVy7o~LuvzyE75nV;rnZqc<9LcR7Y^Y(mnF}5AfLpU9akS;wP-27 zaZRHuLn60dVTi@2v;{p2-Mq^~r5W;;)HT7?8d|BFG^Ue`vv}JOmBLj|krkRj+pR(v zJ$6gzpU7uQ)BWvs$_7JIlJi{nwd%56ossGn{~>c6Gs9snhxl*&dRfA&(ARX`;Q|4Z zl+(l0FL{+{t|BhQ`l7B-3$02vOxv$JJ6BqsdSq?m{X)DiC45$Yl{g#q=fmYp`kVTo zUXsh1qNO^K*(}BjVY6*&m;cOH*Fd~uv3rohr+x$ z>6@FL=ba^_M*M@+k5dh@f9;y`qX-jIbjID;hE*v^s6IMfJw|48bC%Nb0eLKQh7V5yG8|G9F+*`81Ei)sUI!)NZT0q- zrQG4&PAnS^&iz`zrC0Q&5K3A|TTX#B*6sTgU}^g{G$;>Kxa z#kqFl3yJq?TlHJ+)a~y2@r80%C2z0Kd7gtZBnU|`CJi;ejK8LQuJyffY4kZ6?pE%Q z!70r_yAZc1WKD8i3`y%``g6=;ef5kYs}_ES8YKknJwa>|4L#RO^zV0aeg)PqFU!_n zja<;PNZiRe2jcZtOkH-enTmXcAP+vL*11BFV-+-flp(dLb2k7mEkxrxYW2m-3S5NW zRT{0ENw~)rT(qX2sqk3B_Q6P6zZR?;M9F#K}Pia45Sj9 z7t^)$=F0(4p+@@u5p~YNbp%`+zc+Ro+qP{sw(Z7NW4E!b#`cZb*ftwGY25g`?|kpf z`}fYy&d%=6p7WgN`5hcQlfG#I;0YDyM?e~tOg&6TXXH&r<=M%N;oxGx;$l6j1+kQZ z43?f;WeX%OVLqp~*Iy?=CV%H%&aO>%f5J-G&36)`x}Y+nhC)qXju~IWrK zp7775SfOiPQ)(=;dh`XoO&0Qy>jx?Te$?t@O*=u5$4^jy;)EJw@h!(MiWm&-btk;+ zDo^y;&!@hf4Sp=K2R`z%Q1L2gB55!K)r%A4^nQ(Aqo~w+LtpSN1njdDD!pQkW!qNI z)-<>APLIky$q{}$He1}R_Cj9Aa09xGzRxCd;Vh(=Zupbd z)^+Oma|vG(qOd3fNu0)dEhQe#o=4=%9slk8pmZn%lf}LSv^G1!Dq`6a<3g z{}DQek1P+PL1S#{3fPl9w%NqE>x*n@`9vL%dVuC zkn>~g*N4py=|Ef1v5n6y`mh-Vg2)Q7FcYhH^T661AWVxcw~K+2h`kZAZRime)M2!x zKGsP1l)sYc#bo=cpIbCNG2Hb&9#yqmQ!3b+T|4h)1<*qXj|AudW_#ijNu-L)-6Ca( z6gu(c>5Nh6jLqrob7GI}Jw|Y(L+W1CFG^f`?2R1d*kD@UCE1m>>9zZdI6@6nI>xlv z3WV&cj;u+AbY-9(#q5cL4Wb1j&<6RS>vUq=x1IIhx3Vx7 zFM~hSi-6|S>|aiSQC|>kA+20k-YTO+V^*5TgZSPAHyP3X>8N|DqIs*yeHqGa2L7Z5EF?tnGlF?s65!{Ty?e z_yn+62ru+`MIt^Duz4&2mcInnWoUYGIXFJ*&_|sAEg3|Rh&Sh+HxqX3^PlK7YLIfP z*E)VG-7B}s`zi2*y}oA@QO^hN2x8&5BM5z#Ulm_hpZrW}t6p;1`)O0*o$`7w%i;a) z?_C=D?AlXtT{d?VPgzdpUZl&zNrEfzSJu06tz2DQ^>S>S3@)`u1Fmm@&cBY&5B31Y z6zQVQV#5>cmM+#7;%k9l?6~+6i!4d2jqwxcX$cTNwAcPYeoQE;iVy8F%3ZizBeo30Vz=Ru^(Zz_fzRZ<~I$J-1cX0GpRZ9EOU+=X;T6;X6+ z>_%x2FyPdf7s5{*xL;nc9*u_)uqH^_vFlWgDsp6sR(nI*JS-pnwZ^N2{{&b~vY*l> zN*SLWzco+MXk7~7A4&S9Bj#;-Kbaf_Pyl_u_hR?!nRzX^O^NxKpEX*=e)M%9zco!f zB1;uOVN8X$BV4{BraJ{*OFwyvSlDmy39ie8#_{=_ATL&X!+ve!pdpgVjIxr#Db%Gw zZi-Vj4?Qn)Ep+uHPY2Gf;Vtf|tCU}0EI~r+KFAFU{17@amC7F0*wfdVv6_W~3NXy5 zT4;;>wTVK|Da|~I*uq~myDwnSNSiE^fe22FF+~R_pjy-I*A#5g#{mI4!1*)1o$?cL zanprghf9jCzRPpxO~j+VpU!*xHh0ky%X1xvoaSzyD~{2hM2^-cF<9wPyvfuPocWWL zj`G^CVciH2sqd3DAAn{Jg>I0SZpSBq$q&@6=;Eg9)lhlm2THdGf&3<{T+rYhaE>Fl zNm(q+6{eE3&@wQhrP)U>?E}t&)$|!50Xi1s)yPk|xcXaQ9f^oy+^1^mok1=TRBV(! z)8+&b*@>W4W4oy=412x}f zpeOv5y8;EWwPk9v4Fip&Crffs&P^ZGGiMLEv4$_tqL7Yd?%X?39-OhJIi_3dztWV( z9vJ~g<7UJX(uyTL`x|70GJEpNBmz;LX|!K1#2s-IA?=w*i3yoO|%Li>< z6D+J!qB?~12Euzhte>|)f)tBl3mQd>g-0x@$pydXYq78IA%Y^y9n64Yb~OC9262@D5>YHGzgwH3B70Xt)NeD&?aID(mj;jgq6<2! zh->8pE6nwwkfYFiIaX5mQ2G!~UqFze{4F>MP9WomimEY8#c-`UT#wx>iDTL4HiH(H zBeEjO)`b-6?$~QKM36K*vVrP9t1WfN1Z=MSxH68fW{qzMZ)>J;Js9uN<6j?smQYNf zs#jYjmRPD@HHbnCY6178zesCvV}F#$|4C9N(OVRv_==qDeR=KeC?YAkv7ZZZ8F8t61O`o(=$`LEcL)JEg>X0n8+#+EURkd5`3S7tv9hB z#Tt++o|uW|`k=FT=Ia-(d1dva+F0&|@tDS5{lm}!0+cDF@9rnuEI0xGNoHj& zf%+1V_pT;=HsD}5^UO-s(!7p6g&T9?kbCo!Vo3}G9N^$`Y(YS3BM_Awv4!}wS~)>+ z=`na6h@xYVv`;fV^kqthmU!(?CIZZ-Oba<$l9e#f7gVV{rhj!B%Rd=xUJvvRer8$e59+n~jO zsI{Io0h*LYnXY=H|7Mh~zba?C)o1y&D%2R=KS|i_Iu~}1*`MtI31l~AWT`+EI{8FEsTn-?5qt!WFb z8V77XoFZc@tx)=B7e!Qj>!A!&m*;j>A0c415tbr~EW*eQcaZB1c9Z_o<8BfO1BuHj< z>%ETbSSS|yV^%A9vSJngVHgrKsgz`br60o-;hV%dN{^S~p;ukBfG{h(0jo%>UGz)H zUyOEu$IDVj?D&d&Pu+@I`#7~laNVTC8sa1qEjiQMq-QOBrxl_Ok)yG$)OdIE{ioE_#oIqcMbFpt=Kmai1%<)qv9J zqEH8dPun>64c~;f zQi3mET6Qba=_wt3*5f0LDa>k*Bwzsc=-@8Z9$)PB6i%hK&Baew%4htk+9LHk8o6JM zTZ|?}`8(cz+1!-I2me`SnGyQ!7kfQu80s&)Um@8zS^M?$hF%HL|1kEJHf5`;F@~$eMtOQ$SSr2EGq=+(^G8oYEw}RU95)@Ogx=cG zgAONtN99tO4q8C59v@UhC7Go?nu#7qp@L}a>qi|-NZW3DNEj7^4wFN}l%d1CKv4-_Li)38 zdrZGwC`6dwZumpXfWr%oH4w9M5d)PD9%r&6$5$ge?F-lth)C#sY#OBZDIglr#`34G z#Vnvw|Lmg&tLg;$db{}UTy1)=yO1Nmhk}x#x?OHdtp>1eYZ(oE3n~!5^KEzYGM?~| z9FfUVz#WmRbRWH2HK#B7SRWH#@4a0B;l%Nr^MT zhjs%~kv~4n_}3`K%;z5yDgeF9)k=^l4kOMn!tl}7i_U+Iq-hsKOWniqo{4f*bR&7@ zG7yE9qVr_u{vM{LiaV|j+ahK>T;+At&>EteFpX$LM$`5{A7X;KV>b-5*PXm8EvCDY zyL$$uX0sYs^3BXj8TWL#ShS%9$WG+ZTQt0a@jC3P16N`?a?f>90@U0zkj(=aZCPbh=Sb+=bS?+Y2Ty?#W@g zh8Y5-S9lvm>6qnqzUr|e16A=(xIKu|#>WPix=K1P+`CexJwSH0caX>3H|aN2TP zU3)X`yQvavr?W{6yq4&Hd9s~xPhGwSPW~C`zoCXJ=?}dcv87eFC+*j0 z35AH|roCT1YEPesP&Zz7?;v}f#(zeemP~|2HVDUssz@9|-uy)T&Hb)n;aclzxu-AC zzz$<(%^27Oda^p%=Ho6$cUl)g2-aWB?!IS$#lvtP#$GcaL(9GXE-dAaE!2}YaMF9V z5S$<4lqom9@@${g8Eos2(X=2hl5n(J!CqjeUm~d=^|h!8dPs_6gXdAyKAc@Y0)7!K z7y54L30+Q9V_SjL5@~*;#f)WrT$HgcI z3$aN=N@Yj+_ih2NbL@m7`xej6FDv@Oew((IRg`oab%mc~Os;z@m{YI_hg%bje{Su~$qaIsawoHlt0%ZSJshDj(;w4iv`#%U4ox?DYv*LP0B z0xfjOvCx!Xzf|h$cPW=tgx(+68N@fvynTlpbRxU{+ zI*WAt*_HSjjSQ1{S7zG00FxsvCCMsO0Y$HH7Y#_a|C8TQNN&F+>zg9Dr(iI}_?)5i z+~LK&m0kr1Q&Nv?5V9c_btgzbx268V?zTbeFJMtBewIW)(P1~DijBG_)iaO@1@fdi zhC9+&2SIAMxI*|^taWh7#V)V8nZBkc?)<}w7^g?yy%4g<29-3iV-+ThHV_4?X!sq1%rIHDF%cOjY-9yM%@2Uu*gsCXgU=_#ZHx z)XD$Sf0h8TmWEZ~SuA}AN*C|C=L5xt1j2=y?=HJlFpYCgWN|FfEeRcE_%nWTfv*HK zi>vh*$@L6!y+Ah6ZM;&`)RekujXe*cYtv&?t|HM~Q`+dHV?T|lece5o?QF3FmxOpy z(W{IuxZ$^YzD|9}KT$v#`~m)6seb1UKMq_}&l1f++zv$#JPUx;SLCv9bsyM%4B zMir$XK9WQw&6v3Im8A%D27oL9ys&jWY^%mvF>M(!dOwu@#yhsNjAc%CaW$Nw6zRt1N}5(Uwko2#HT{NQeC7fcFItxZ4hn&KYqEEd7Qa)K2Pojn+3a&JKdi8KAe z?KJ3{tRoOjdxOic5tpNHpZ%E6=jO^SE;=rd8R zBC+hOT%S4G;g(Ysnu;2k31-k?AoL<*sTr3uyYfJhvjoI&qanbt>%tX%5{jnEyzu%A z5!v|H#BXq<=L-;9O?2kWh~s|$3lr<$f?uc4_S@et2v!4KDoj>frbN}~Pcn~ac#7kc z_&RPJeo<}NcD<3&*Fn4XO;K{nk6@$I9ZK!bQ49Fqb1MjYYC1SdEaXJc7LdK6AjmIw zxRIf0Vf^3cYh;HLy>wnuUH>q)*N5_$o_ezp)){K{Y$YDlYRg1tbkUAK&db+b% z;0oiPrjM)eT;0Z0*86JW-CDue!SaY-seY8#=VT6uQKBM0P`U;2#d`+HDKSE%A0w~J z8LGbwVU2vh9$fD2BN&l&C+&%v7_?U0sa4Kd@OrNWr0BH|XKO5qA9x0#R4h@~pItn( zYO+5@xyEQ#{B$q8=dPhu2)c_U>^ibw`@WQ z>P99uYR;m|Lg%euXRSXUTdw|GoN82*V|7b|O>d_t?21o_0|?xc z4R>=slzv2p`qnyndEUh+%zZB#$Jj|86dbF3d=ZDRH+zSJk)`EbN16TI3?Fp*QIk4f zigUYKuxOaWJVaJe%Z6e1(PmP$aUUNkRllLw>wekc139Qxa3qDt({`)Dg5I`R>5ym1 z%ekZ&cUVR$B{+lX>)@qZTtOhUC*_U`$k9?oRoRtG-~mv~`9nGvF%qjM_J4*U`Z0I< zqIuBEn$MDOYv-zfGi{Vc*9WkT>MC#M1^X!79rUzqbeyC zm2v!nKo!NN;@bnH!|gG$Egg}cR~mOY%J`ntFDzZFvJ$vO^~V^jX1NAAh5qs|x{e+z zUyvf?EXHr)JcHCOmCfOB-DZwz=&M)sAN`UoyinQonOnN%-KizLI|8Er+ABmY{-<@o zg0+s{(jk=$cVHwX0~{lg7oA0js zSowL$ZQWM4hg4j;wK%@mfK-C#>LA};2(FHW-uh1k}6%HTjR1sA9D>7(@+2a?3o|X;j$P@-8&%Lf@Om^W)9@( z%-O*!74m55Clw>gMjF_lpzp>)U+oO&{Rs&>ZAeo-4l&@84W8*Ok@^o^2bZEhkMGFTiOIWPo2_)UH>hfva8%k6g!$tTFUV)Uy6 z?Zs8YHYqj4`y2t0p(4QejeF24g3V_e*ZLWpF}}CLuEfyXA9O3ptsNMUG@8brsLQmg zD%b>UB8S*hY1M$h4TbL2x3&G{TX*-Zk(KPax5vpIm%U}fq$)MQrX$uO-DDQ)`v(N) z7tIL=G;}vLyK8F^Zl<+U6A|mUYFSM>iA#0_OP37n#KA{>O0cS+iVsI2zKMCN469N* zJ;uoMGplLF`KJk)4sokB`el3J^_la7CS;4Eqlqn_WVGJi& z#Np9;@ipXrPREX`O<_p5EH$cknJh+0(0_2W|Bm4PV?EhlgD*>pcXJKdS5v3RvT zxKMgHf7rdfJrCEKF+6R5;Gp`U1N^w@U~-zJ4Ai|~PfW0y;ZqWOcaRz@FnShSD|xHD zf6VvukYF5PH{;XMA7&fYB$SQ%Lp?+J@k>!xA_7tPa&~b3MD!0UwuH=tV5!vRb=)^c zTb|h!B@BlO-P|=&;uEO9B!2My>CfHX?lhE_a;=7zo`GoCW0e6go zUcchmTkh0rZb#4>%Ee##gH*ms@fmBX6HYABdex0d$cb2|uQTwUsv0%ORfs%gkN z8H4M;qmm*Ym%_@HOXdd%m*Pr@+z4Gp7RAe{UusA}#&EMCAdyje_oDuaQtmg? z@Ply3Wf&-Zv1;BLIWJB&yPyJYugpM^xNgCIWi0%T4;3aS6janFT6+n}U)&<{=k<^6 zYOI0T@&&N`+giuC|1_zAaR!RS`pys4)S(oUtCXHsy_|GX{*B-_V+Qrzpt(`aXdx)SH?6RYfYnL!j+21_m5k9*KGl{KeuqmP&Vj+f}ptvm% z<(Hb_P_29Fs^W1rvGBRagB@Zm^952ueq(ZZNL^6@?q>Ze%#SJ{NQ=$3V3Sfas1;Jf zR00y$Jvg^$=4o+1aO=cuOIJvP?q3?hxVA#{#ey!HRNI>J0ro)?0a!?7Lm;Fr3;;XU z@7#eq$Eh1UPGu)PK5i#&Sli{oD^Ys;Z3nP){9jF|JopCg*KzI%UMiO;U=EPwg6ysp zzp{Ldm?E1^HTT%^j~ldyKN4g<8W@X#@2$t$xt=BGT)CgjF$#& z{RTMXoraT|Ka*+i8`WFiWNY;EwlGoPIrxjcW zR5DMLMvcV!)7Fk6oomFnY~CtC4M|b1Nhz9*CDIEtUh8=qxlQiJ#}=BcEp#j~L>}MU*XO;`c0mH!#`paC z^OSG{I~mcYxe_PZE{sH*p!&II)m{b69nX5Rh-2L`3H@11!827aa%FA!B%hBidH29Q z3Ut3!n21dw6)Z6W^h*&exln#o4j(>-x80Mxc0{&nTr>t3;Z@1E%`?Y;HCG{|lTV4? zGDjq-EELO}N&YS?D2ZH26Gc;5G}pg1ZTJZHx0iJ98EEy(o0L3b!l*=VmSi*wh(95{ z*+SO)+(bU@emP!1;RiF2paGR?n19b;ReU@!FkCM7Zz9#aj^+3}Jg4=P_v*(k$yJ{O z=BwgfJdRaej|~lXl7dKVv@J3#zCiv;AY(V84+FmJ8UKJqYlM9?Fcnqo1JR{P z-N{5{;rt+KNTa=R1dzkc1_1?$yZH&QFm*Q!n%_7@PM`!O(#FSe74&yVquws9$x4j4_%^XGyqof_lO;cccFQ$-iI98E z3@@~q_^$HhyFisgQzc|fM#P%LR}2P4YMe(%EAnPyy97dihx3AY-bzk?FwUw=*QepD zoRiyXXJ<7zy=k2EK!F@rSaZL(nW*@o-bfcc4i;swXonR_SJNzKUbT=C@Gp>_bB9@l z8e!CNLAKCxAB2r?{M`HT&WzM{xy+EpCUAHBPhtD)=6QSqWVLZ}tPb2#-)FRPvB)gW zrO^K7&Sq$vp1IK;gSeuRHxyA-?)GWwIh?8!`{(L**ZZV^4(3jEAB)QQo`hZ|C1BI~ znX^i4Srv0ZQ4nrTO2EH*9O5{&F(XgB*EZaxld-(zEYnTbhrgYwA4m>4c}_;ehO(|&%UX|d z+p-@khrjGv7hT7rpvYKlq&_a(M_I(AtZW3f=_oBi-PJN3tr9cWev88wI!BhDa>u;S z!|^)rMOmXTrWQk%fNdo%m^uxmR%4Ix80VBHSq62-Z8Woia1HyBsw{I0AvS3VZW{Hw z+Z%ErUrm}{czr8eM1aPeg*NSj1A!P2@*V-W+hy9Ejj3Nu=<^z5f;dKq&G==AY_opE zNMblg3wy&B1m9Ujv;eD_gPWb@AULk6e{tkIM3JzY4XJ7?U`jQ)FMq;w1v)|f*SnZ19VIjyF@XnV2lt{K2O!-gXFFoXykxo4#0yjfAQ1zF~ zFU(+Nj;{dRP70~>uk(n>v83 zorltloeYN&`*_?BQBBQzbQ~2qbxyA(Mh?t{SvQN3(TuSCo_}6(TTPI#dak3%?J{okCb zrg0=Zp*-xBRue1HKLdSUrXovXc+0x{wzU~}L7hlHp3vq3uVUSYG0rW;wnOwv?*wfs zxaqBR(L4C>JJ%5bMj718YbUnE<&towS5v}WWY=5f#`bxe;p5wzp zVQOjhyRCs;2W{Ioml`1?8(ygJv;8DO!VH4iw0)h{E^{%mP;dHv#kXoEfW!ayw3xZh zhOj|q>-Ftf60dcQo^*97A~kE`AG8CDB3{EBo>NuaApJPf>q~dHue(uSJJoaNnRXZyV@FUkqFj0TiUV0P zjM$T`|V$UOYcc`&_|GmvqH!>UIQ@&`mOz>v(o=)tX1-e!cw@I%~zBAosNHeYI z3`dPKsHN!MJkJK<27a5oSb)8xxjVTolAkew-nRRd|D#CXtOe>noHiEpFFfFUmjf|` zs|hf+VZL&BMK&hnM(=iK<$Z@Ujn6m!yspQO``fb5osZI`yR-kAP<3(&_aO%E_3@^I zo;ngfUazZyZm$mAT&&#iA2g3K>H8TF73qgY`;|m7Y5Lp%qlKZ8cEI|O`2t~w&=#837Nqg3EbVy4IOX@(Z3BNraY$FfinKaIcpE=N6gK7r(RD2Wd z*1$_KI2P(jc1@HTXD6ZSva z7e=CV3d0UQNBG9w-}Mn_97*m{eM(cW&C9d)tbAc}Jk+B;67yy3eA!2AtQwu6>>J5^ z7LnadvL6m0HM*=KdS3@YJ3YS8<-j5e=oBtdQ_s^Hyf2|X-=rI^k95&QA^saA$^M_x z@t@rtJg2_Y{AUN(7aaT?bo5-@Y-esVJZ!9d>}=e0EMS5K2L}T!Eh{f42ix%t zH7y4>JsmvR=;7ZbT0up{K~RQRWH!92?Ixt(N zER%J`@YTt7oWUHSu)FeSNl?D$tM3~{dF z3q4Z6`H(K1t$Ufi{7>Ofh#39`QAyQ?Kkov;?o3uEt1G6JnV}7xJs^_w{GFk~@WBjt zXngM5rPg}Ct%5FHOe8yi0lEi&KQhCUXrE7SE0Di5dwULDO?ZvR?#O}raT5MJ6E2=- z!dyu;TCt5JFJ-z0b{x{ao@K-ZiS*n#d~{&0j&~lS!XXDbAGxN&$JvRG_CiE zQeR1#sAC^Bm5;CV+r8qV*-Fd&OP4TsbV60VHiq7R2V+8Mo~Ou3I8U_8r82CX7WAU{ zMoo-OeJ*u@16CxWp@rMBaxkOaM1U|qgg9#z30;yB($9$+W``or4_=I5LWOueCAt}_ zrB!RQlp-Xh?>Jy*$+$dAgqRIc_P;5#bTQoBq$!hWxfGQTJVJ%HW4o|?^wp!KsdWb; z*=NApqZOGel9b0um^>fbdI+1r`w5vOc{%zQ$LrK#&IRl1%> z{|?rlbeX}W=TyF5B~A!x0UK&=0fb@Yn}@GR&%QDD<2kx8rk(s8*t6axL^|Eii2cJd z=wP~j_{3-}e5jqQw)yI#@aa`vET({pbhE^Pkb8rZV{-$=;7zGdWo%UE{saRRwz&#M zcG3(5k)FuBgD^+k+MFhn5Cvg_Lp}f3j~o|{X)8*eg#h~FzhrH(E|DZXs^;uqu!>bM zqtN-mC=q5jgZ1Cv?&mA`@ZgaNi>Y)L*ie9m64C(k^F5s^ffway^t)DZN?0+?U@AN@2F5DUk{|0{8j@v}Sgr%2^ZzI`4E6 z2ov9n)u;g0YbMSc)M!ESSx~WH5dCHU_4?PmAvf+GDNocT>~}iD)L=A_ClQS-DfB+R zF8~X28HRQ9^|vj*Z8ldSZ)#!c?akp%?~M7xf>*b$Z+FdQ$j$%p%@r7&25{dL2 z1Xo)CI$+$jOmy|}$ob8)QEBMef*c}W!dR#!R!!t-JyuNtzh=yfxylPr&EL-X6%jo~ z|XPf2lF;-QL)*Ag?U6(7Bq^Uh>O+>uimysjZ@*Gkbp=FUnvz%K38gLLG+r;ZR zVfxVoosf1XL8R>4c|PtCzjD4haD3M^A#&a(B7B##bgqA}aPa&>`w9RlQK=>Zc+ZU? z%UQ9r?l?Wv*=<$nQptr+{f{&4q@w5*MNag;9W>@0TzfkWGJu0TLghWECGav^{-Pyo zB+j6;Lbv(x`G5Dxn-pJrNBq`~+~?4W3s*w&j>M`l?z@RDA7NbYSb%^OB{E5Nt7zC) zS>hlj#zwC5Nqah#S&7l@p7*)Lo%>+gex($YL~-a-1Jn+byo5Ctu({WU2*CRWKRCOdiZ_e-?k6k=9L=f|E+x8CH8BMw~vBuOHCchp`(O|* zdBeR%Ig)UBkAp@{^t;lb^}ikP3Qp;j42g9dqU@x`yz|DL%A5n(E+w=-Xs=smHYL~oS?TO8&>7+WNWuYVuY|}KDc3K4{{*zu#i)M{NzBGftMu|$^)Vpf z=+}g`;EkS5|CWV%h;Zt8a^Ji4YjGKvW5h;NDVF>PytZpq7~Y_LB%@8EQq8^ludl2x zp`JH)1N(?#hES9|i|p0;eUgP^#)>)~AVv)hDvXmJ<6a=B*-yme4tHjo)O};Dm)zSk z@y3a7^S5@!t)qSqql)yMLx6niM+(M1BYKXjZUX!|J7E(MVBB;EAYRD5H+22*mCtQ- z?}GY=zH|4*TyZy@he}S)G1l~FegIY(WU)9hLX=-abT(xwM9{u8N0Vd|)!L)9Q|7`5ZZ~dTwVNUF4Ka&fLZNQovp~7AX-Gi<2(D zeE>Dge!TS;_Ym3)%dK$mGv(Es0^fUn%F7+mah*U_kTOuog`$-voA75|bPXhck*2C33y5S@xrXR&r zXx+uIWDjQq2f99%gIY*C%hhym4gdWH*>7#nYBhdQj!i~otVllNsy8Lvh{G+B67~)v zSSaO_q(BaqOOvEYF)d?Dntr&0%dcHyX)7jiS%p45z%(vAof<_?3_CxyMSIt>a_?fA zt&h}>i$93VgBo=u3SXGPGTnETd9UcYVQ_={Hq@JtZOGS#=PALzp>#Q3ZsB^JsvyzX z$N{Y~o+FTi0!SOjDuMx%@(?>n06|G{Ow#Qgm0ETVmctv(P1P~Y!Cig=`T8W^@|lnK z4lbvAN<<5GF=~m=4LSF62ly3*T)p}qQ`3l;8q-`E=0|_T!RZGRy~;*^8Wo|k2Or2? zwe(uis01RqR9G2@0Sbo7);;k*Cof(L7EQH!?5Ah_b$5Q^7LyvE-_*zZMJ1R-Py(L+-JLU zu((d#LSUQOYWpG{rt+ysjD@+0SnV7sF`3q13!RhNAAO@tnet`?7pjA5csPC8A(_U| zf6ynxcapsGH`^@Zn@t;JBsUJOqih5Hji)o<4y4T;+n11N~LbY=bCb{p$=3ae5=tR}4tfEl} z;JIv*JxNT`JpomvzXP_kc?{Q4ZmERvn+gClZWDob=?cO<7JtzRh~~$#bGfRA{a5!| zYA(ea>(BW_h6DPx&9Ap1HTV&~{OSv8MRgv#g#oW%IkP!N7G^eOZmsaW#gr5}Zo*bo zJd~vCJ;qOAR;@Od!iOLCvq8rlbDGLw#P*+Wb#)(tyh?C#v!YLbNuS&PuvGvQ8=;lL zi1xJs+gz`ZP4Ic1AMn(;V;r=9zy-Nt@;pw_ZLN#yI+`wM`Iem}pxWcxbt&)xWG3^Q`kQjHJXyt(t%_tzg{yN`qBVgC{(CI{h_#PP-tWDrDm@3Nv;M zw1_;6h*GV{Uzg&I=g8)HKf%|^kH42#>e`f-<|$e=-|V`fcO!(TR${7&lWow_!Y_P4 z3=(bEQ~d3!aSETSk3m$Og)X<=di^9+j97kor1sZZ_ef3&En5bVg3ktFLi-O480?d5 zH_`6zFP?ntP(-Fln-b!E7$#RjM}AKwov;;nCZplV9{lSPIS&LU$2l9=;op?mA&bcz z9GhL{CJKj3!`7QH)m#a*SD-@sL&l-=5 z{UW8^*Ynn9s3d2hF;`tR;Qz}EfVuz44B!R1fYwc65;1x(8mLp`k457{n;tPGFFkTU0IQ>9zJpA^bG(Qxswz|@K;24CotEavt z75rM)NE%HgHLH6AJ2r5N#ue=s1vJF(XosN0oRq#d+M2X0Y|Q?11FbJu zm*opJ6%xtUV~dKM;5Z3hBBJPo%ts)6p9kmWeZ4~L%h3WxY*KPSqA$HX$I%9ANWLHm z9T1$cN^Y=Pe@5Cw?z1Mu4~kxPscb2mCs7PvH>~j%Qt2lsFasBQ)sLV?$SzxWSbFZ+ z#3__n(L!IyKdqYmiy88(^>PJzmH6#UhE+OO>x!`NLLTD69KtQG4GilH4{(4%BV-3h zM?m2_3uQvZrL{n$PC50;Tj{+27$Fg&kXXa(jz7@_KgjyB1G5g|pXU03HpKcmmZHQS zfc`)IhDRTG&s{1}jS{H(uXFlzkQkz0qM54`i@8%$=4XSxvRU(Y9Q00vtn=?R9R?3w z7x@L6wt+eLoHH-vdLV41mel>e?LnmCFw|lVx-(}ML-J|u(T9<3Cc#CPLL|N8A2%|w zuj!bfB8QdS)EKJ3y5_rq?HIaxL6Wlu8>vBO6KQL8|H7!Ka@$W@c0g}5hB9wObghgJ z)OWRyXs|3B-@~Mk)jf0z--#T#Zfib$k1?Dw#^K+R6tI={Lq5p-)xf*1Bp9$sY5MmS znpHtjQAkHEMBZw?sP0PyT~~{$AiyYx2o?B~C_#~P2lfAmI?JFq+GtzP;O_434ub}F zcXxN!;7)K4uE909LvRo79^45o0nU84&aE?ly5`?Zb#=eB*Iw&crT&*{$eD40HJPyk zZF=PH%UksiM}2$S$BD`Tp2Pm1`{z@KFBVN8J>kSk`QfGNlDW2=T1&{+$xd{k)&h~F zs9A}TDULKb%k~u3YxMH6NB=oYzUK+KZfv5F47j+cr7bz)@2*8+vg>R(RanV3M=BF# zQTZ!@?o}NC`iUkaOtvW+QcW=?wB~P2S!}JU?{VBXBxv@sh&?@YtEe5q{Vi*GA$Q5; z+ls+o2oNX3Oi}9E4SQoRX}m3e>Aen@L45Qg{t-`5CV)u=p<% zk-%zdp2*4SXV(E;iL4_-TN27QySj9PA-U3!vp-r4#Vg;3hpA7v33%0AypZXh?iy`+ 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 literal 0 HcmV?d00001 diff --git a/mods/fire/sounds/fire_fire.2.ogg b/mods/fire/sounds/fire_fire.2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e8d0eb1356c3ef33949dae57847c88988a1c38a9 GIT binary patch literal 60497 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

Km#WIsL%1&itVHO@E6jtcQoT`WK2nZZ7@w% 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 vX9l2L6t2t!U4zJ8c(cvwg^#OP-C5%0+YX}0hN literal 0 HcmV?d00001 diff --git a/settingtypes.txt b/settingtypes.txt index 2f91a7b6..eeea0bfc 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -13,6 +13,9 @@ creative_mode (Creative mode) bool false # 'permanent_flame' nodes are unaffected. enable_fire (Fire) bool true +# Enable flame sound. +flame_sound (Flame sound) bool true + # If enabled, steel tools, torches and cobblestone will be given to new # players. give_initial_stuff (Give initial items) bool false From 4a5206e3a7aa14c79a3eefde7c42ab7d7183dcd0 Mon Sep 17 00:00:00 2001 From: HybridDog Date: Sat, 10 Sep 2016 09:11:52 +0200 Subject: [PATCH 191/196] Furnace: Make furnaces work when unloaded This is slightly modified after #1279 - the setting for furnace timer was removed and hardcoded to 1.0s, which is the old furnace timer interval. --- mods/default/furnace.lua | 111 ++++++++++++++++++++------------------- 1 file changed, 58 insertions(+), 53 deletions(-) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index 022024c4..fed7cf2e 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -113,62 +113,70 @@ local function furnace_node_timer(pos, elapsed) 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 srclist, fuellist - -- - -- Cooking - -- + local cookable, cooked - -- Check if we have cookable content - local cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) - local cookable = true + local update = true + while update do + update = false - if cooked.time == 0 then - cookable = false - end + srclist = inv:get_list("src") + fuellist = inv:get_list("fuel") - -- 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 + -- + -- Cooking + -- - -- 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 + -- Check if we have cookable content + local aftercooked + cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist}) + cookable = cooked.time ~= 0 + + -- 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 + elapsed + -- If there is a cookable item then check if it is ready yet + if cookable then + src_time = src_time + elapsed + 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 = src_time - cooked.time + update = true + end 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 + -- 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 + src_time = 0 + else + -- Take fuel from fuel list + inv:set_stack("fuel", 1, afterfuel.items[1]) + update = true + + fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime) + src_time = src_time + elapsed + end + else + -- We don't need to get new fuel since there is no cookable item + fuel_totaltime = 0 + src_time = 0 + end fuel_time = 0 - src_time = 0 end + + elapsed = 0 end -- @@ -196,7 +204,7 @@ local function furnace_node_timer(pos, elapsed) local active = "inactive " local result = false - if fuel_time <= fuel_totaltime and fuel_totaltime ~= 0 then + if fuel_totaltime ~= 0 then active = "active " local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) fuel_state = fuel_percent .. "%" @@ -210,8 +218,7 @@ local function furnace_node_timer(pos, elapsed) end swap_node(pos, "default:furnace") -- stop timer on the inactive furnace - local timer = minetest.get_node_timer(pos) - timer:stop() + minetest.get_node_timer(pos):stop() end local infotext = "Furnace " .. active .. "(Item: " .. item_state .. "; Fuel: " .. fuel_state .. ")" @@ -259,13 +266,11 @@ minetest.register_node("default:furnace", { end, on_metadata_inventory_move = function(pos) - local timer = minetest.get_node_timer(pos) - timer:start(1.0) + minetest.get_node_timer(pos):start(1.0) 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) + minetest.get_node_timer(pos):start(1.0) end, on_blast = function(pos) local drops = {} From 3e5852993d571b5aefa405eb4c54b28942cba91f Mon Sep 17 00:00:00 2001 From: paramat Date: Wed, 7 Dec 2016 03:23:03 +0000 Subject: [PATCH 192/196] Carts: Stronger handbrake Handbrake was barely noticeable and fairly useless. Equalisng with brake rail deceleration makes it more intuitive to use and easier to judge stopping distance. --- mods/carts/cart_entity.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/carts/cart_entity.lua b/mods/carts/cart_entity.lua index a0b0e3fa..e8707fb4 100644 --- a/mods/carts/cart_entity.lua +++ b/mods/carts/cart_entity.lua @@ -272,9 +272,9 @@ local function rail_on_step(self, dtime) -- Try to make it similar to the original carts mod acc = acc + speed_mod else - -- Handbrake + -- Handbrake or coast if ctrl and ctrl.down then - acc = acc - 1.6 + acc = acc - 3 else acc = acc - 0.4 end From 55a16cd2c6c56e2b15b495fc5311e8cdc4ef8e47 Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 10 Dec 2016 01:05:16 +0000 Subject: [PATCH 193/196] Default: Add missing 'default_dig_snappy' sound Some nodes with the snappy group (wool, glass pane, seeds) were missing sound when dug with a sword. Adding the sound causes it to be used for glass pane, so define a 'dig' sound in the 'node sound glass defaults' table, use the footstep sound. Adding the sound also causes it to be used for seeds which deliberately have no dig sound, so add an empty sound override for seed dig. Reduce the gain of the glass footstep sound which was excessively loud. Add some freesound members to license.txt. --- mods/default/README.txt | 9 ++++++--- mods/default/functions.lua | 4 +++- mods/default/license.txt | 3 +++ mods/default/sounds/default_dig_snappy.ogg | Bin 0 -> 7258 bytes mods/farming/api.lua | 1 + 5 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 mods/default/sounds/default_dig_snappy.ogg diff --git a/mods/default/README.txt b/mods/default/README.txt index 9dde0eba..d261b6b5 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -252,10 +252,13 @@ Metal sounds: Tool breaking sounds added by sofar: CC-BY-3.0 default_tool_breaks.* - http://www.freesound.org/people/HerbertBoland/sounds/33206/ -AGFX -https://www.freesound.org/people/AGFX/ -(CC BY 3.0): +AGFX (CC BY 3.0) +https://www.freesound.org/people/AGFX/packs/1253/ default_water_footstep.1.ogg default_water_footstep.2.ogg default_water_footstep.3.ogg (default_water_footstep.4.ogg is silent) + +blukotek (CC0 1.0) +https://www.freesound.org/people/blukotek/sounds/251660/ + default_dig_snappy.ogg diff --git a/mods/default/functions.lua b/mods/default/functions.lua index ed373ed7..a8e3355f 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -88,7 +88,9 @@ end function default.node_sound_glass_defaults(table) table = table or {} table.footstep = table.footstep or - {name = "default_glass_footstep", gain = 0.5} + {name = "default_glass_footstep", gain = 0.25} + table.dig = table.dig or + {name = "default_glass_footstep", gain = 0.45} table.dug = table.dug or {name = "default_break_glass", gain = 1.0} default.node_sound_defaults(table) diff --git a/mods/default/license.txt b/mods/default/license.txt index 137923c8..e9267366 100644 --- a/mods/default/license.txt +++ b/mods/default/license.txt @@ -144,6 +144,9 @@ Copyright (C) 2009 cmusounddesign Copyright (C) 2010 Tomlija Copyright (C) 2010 lsprice Copyright (C) 2014 sonictechtonic +Copyright (C) 2015 yadronoff +Copyright (C) 2007 HerbertBoland +Copyright (C) 2006 AGFX You are free to: Share — copy and redistribute the material in any medium or format. diff --git a/mods/default/sounds/default_dig_snappy.ogg b/mods/default/sounds/default_dig_snappy.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3686fcddb5f3caf1ff812943126794cb1c33ceb5 GIT binary patch literal 7258 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 N@WW2e3-wod{vRheoE`uG literal 0 HcmV?d00001 diff --git a/mods/farming/api.lua b/mods/farming/api.lua index 3ff182e9..182e1b20 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -307,6 +307,7 @@ farming.register_plant = function(name, def) }, fertility = def.fertility, sounds = default.node_sound_dirt_defaults({ + dig = {name = "", gain = 0}, dug = {name = "default_grass_footstep", gain = 0.2}, place = {name = "default_place_node", gain = 0.25}, }), From e5c5c2637e6fba63c724096d4591d45c4c2cacc9 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Wed, 14 Dec 2016 23:45:48 -0800 Subject: [PATCH 194/196] Furnace: Attempt to fix exploits The fuel would remain active even if source went empty, giving free cook time to newly inserted items. This patch is supposed to stop this. --- mods/default/furnace.lua | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index fed7cf2e..4b822058 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -116,6 +116,7 @@ local function furnace_node_timer(pos, elapsed) local srclist, fuellist local cookable, cooked + local fuel local update = true while update do @@ -154,7 +155,8 @@ local function furnace_node_timer(pos, elapsed) -- 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}) + local afterfuel + fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) if fuel.time == 0 then -- No valid fuel in fuel list @@ -164,7 +166,6 @@ local function furnace_node_timer(pos, elapsed) -- Take fuel from fuel list inv:set_stack("fuel", 1, afterfuel.items[1]) update = true - fuel_totaltime = fuel.time + (fuel_time - fuel_totaltime) src_time = src_time + elapsed end @@ -179,6 +180,13 @@ local function furnace_node_timer(pos, elapsed) elapsed = 0 end + if fuel and fuel_totaltime > fuel.time then + fuel_totaltime = fuel.time + end + if srclist[1]:is_empty() then + src_time = 0 + end + -- -- Update formspec, infotext and node -- From 12b154197170c626e75986d7c0f6c2b1c9960957 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 15 Dec 2016 08:13:36 +0000 Subject: [PATCH 195/196] Sounds: Edit some sound gains, mostly footsteps I recently made glass footstep and dig gains too low, raise slightly. Change dirt dug gain from above-maximum 1.5 to maximum 1.0. Reduce gain of footsteps: stone, dirt, gravel, wood, metal Raise gain of leaves footstep. --- mods/default/functions.lua | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index a8e3355f..3bda4bf0 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -18,7 +18,7 @@ end function default.node_sound_stone_defaults(table) table = table or {} table.footstep = table.footstep or - {name = "default_hard_footstep", gain = 0.5} + {name = "default_hard_footstep", gain = 0.3} table.dug = table.dug or {name = "default_hard_footstep", gain = 1.0} default.node_sound_defaults(table) @@ -28,9 +28,9 @@ end function default.node_sound_dirt_defaults(table) table = table or {} table.footstep = table.footstep or - {name = "default_dirt_footstep", gain = 1.0} + {name = "default_dirt_footstep", gain = 0.4} table.dug = table.dug or - {name = "default_dirt_footstep", gain = 1.5} + {name = "default_dirt_footstep", gain = 1.0} table.place = table.place or {name = "default_place_node", gain = 1.0} default.node_sound_defaults(table) @@ -52,7 +52,7 @@ end function default.node_sound_gravel_defaults(table) table = table or {} table.footstep = table.footstep or - {name = "default_gravel_footstep", gain = 0.5} + {name = "default_gravel_footstep", gain = 0.4} table.dug = table.dug or {name = "default_gravel_footstep", gain = 1.0} table.place = table.place or @@ -64,7 +64,7 @@ end function default.node_sound_wood_defaults(table) table = table or {} table.footstep = table.footstep or - {name = "default_wood_footstep", gain = 0.5} + {name = "default_wood_footstep", gain = 0.3} table.dug = table.dug or {name = "default_wood_footstep", gain = 1.0} default.node_sound_defaults(table) @@ -74,7 +74,7 @@ end function default.node_sound_leaves_defaults(table) table = table or {} table.footstep = table.footstep or - {name = "default_grass_footstep", gain = 0.35} + {name = "default_grass_footstep", gain = 0.45} table.dug = table.dug or {name = "default_grass_footstep", gain = 0.7} table.dig = table.dig or @@ -88,9 +88,9 @@ end function default.node_sound_glass_defaults(table) table = table or {} table.footstep = table.footstep or - {name = "default_glass_footstep", gain = 0.25} + {name = "default_glass_footstep", gain = 0.3} table.dig = table.dig or - {name = "default_glass_footstep", gain = 0.45} + {name = "default_glass_footstep", gain = 0.5} table.dug = table.dug or {name = "default_break_glass", gain = 1.0} default.node_sound_defaults(table) @@ -100,7 +100,7 @@ end function default.node_sound_metal_defaults(table) table = table or {} table.footstep = table.footstep or - {name = "default_metal_footstep", gain = 0.5} + {name = "default_metal_footstep", gain = 0.4} table.dig = table.dig or {name = "default_dig_metal", gain = 0.5} table.dug = table.dug or From 3c9d0893ee82cf1d68fa7366e14435ea5009fa51 Mon Sep 17 00:00:00 2001 From: paramat Date: Wed, 21 Dec 2016 07:38:27 +0000 Subject: [PATCH 196/196] Boats: Avoid crash if boat pos over limit If the boat pos is over limit, 'add entity' will not add an entity, causing 'boat' to be nil. --- mods/boats/init.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mods/boats/init.lua b/mods/boats/init.lua index 9f1264b1..0591ef24 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -233,9 +233,11 @@ minetest.register_craftitem("boats:boat", { end pointed_thing.under.y = pointed_thing.under.y + 0.5 boat = minetest.add_entity(pointed_thing.under, "boats:boat") - boat:setyaw(placer:get_look_horizontal()) - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() + if boat then + boat:setyaw(placer:get_look_horizontal()) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end end return itemstack end,

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 From 02a82c9d7ad7e956761832473b0b6535c1f22be5 Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 29 Oct 2016 13:29:53 +0100 Subject: [PATCH 134/196] Default: Remove unnecessary leaf 'visual scale' --- mods/default/nodes.lua | 7 ------- 1 file changed, 7 deletions(-) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 23b91454..07e15952 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -551,7 +551,6 @@ minetest.register_node("default:leaves", { description = "Leaves", drawtype = "allfaces_optional", waving = 1, - visual_scale = 1.3, tiles = {"default_leaves.png"}, special_tiles = {"default_leaves_simple.png"}, paramtype = "light", @@ -630,7 +629,6 @@ minetest.register_node("default:jungleleaves", { description = "Jungle Leaves", drawtype = "allfaces_optional", waving = 1, - visual_scale = 1.3, tiles = {"default_jungleleaves.png"}, special_tiles = {"default_jungleleaves_simple.png"}, paramtype = "light", @@ -711,7 +709,6 @@ minetest.register_node("default:pine_wood", { minetest.register_node("default:pine_needles",{ description = "Pine Needles", drawtype = "allfaces_optional", - visual_scale = 1.3, tiles = {"default_pine_needles.png"}, waving = 1, paramtype = "light", @@ -792,7 +789,6 @@ minetest.register_node("default:acacia_wood", { minetest.register_node("default:acacia_leaves", { description = "Acacia Leaves", drawtype = "allfaces_optional", - visual_scale = 1.3, tiles = {"default_acacia_leaves.png"}, waving = 1, paramtype = "light", @@ -872,7 +868,6 @@ minetest.register_node("default:aspen_wood", { minetest.register_node("default:aspen_leaves", { description = "Aspen Leaves", drawtype = "allfaces_optional", - visual_scale = 1.3, tiles = {"default_aspen_leaves.png"}, waving = 1, paramtype = "light", @@ -1238,7 +1233,6 @@ minetest.register_node("default:bush_leaves", { description = "Bush Leaves", drawtype = "allfaces_optional", waving = 1, - visual_scale = 1.3, tiles = {"default_leaves_simple.png"}, paramtype = "light", groups = {snappy = 3, flammable = 2, leaves = 1}, @@ -1262,7 +1256,6 @@ minetest.register_node("default:acacia_bush_leaves", { description = "Acacia Bush Leaves", drawtype = "allfaces_optional", waving = 1, - visual_scale = 1.3, tiles = {"default_acacia_leaves.png"}, paramtype = "light", groups = {snappy = 3, flammable = 2, leaves = 1}, From 0acd9a2ccb2f766de5237964a5da046148075d79 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 27 Oct 2016 19:42:47 +0200 Subject: [PATCH 135/196] Add icon overlay to shelf inventory slots --- mods/default/README.txt | 3 +++ mods/default/nodes.lua | 12 ++++++++++++ mods/default/textures/default_book_slot.png | Bin 0 -> 204 bytes mods/vessels/README.txt | 3 +++ mods/vessels/init.lua | 12 ++++++++++++ .../textures/vessels_glass_bottle_slot.png | Bin 0 -> 196 bytes 6 files changed, 30 insertions(+) create mode 100644 mods/default/textures/default_book_slot.png create mode 100644 mods/vessels/textures/vessels_glass_bottle_slot.png diff --git a/mods/default/README.txt b/mods/default/README.txt index 4536de9a..3e4f7734 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -139,6 +139,9 @@ BlockMen (CC BY-SA 3.0): bubble.png gui_*.png +Wuzzy (CC BY-SA 3.0): + default_book_slot.png (based on default_book.png) + sofar (CC BY-SA 3.0): default_book_written.png, based on default_book.png default_aspen_sapling diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 07e15952..65b9fb9e 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1800,6 +1800,18 @@ local bookshelf_formspec = "listring[current_player;main]" .. default.get_hotbar_bg(0,2.85) +-- Inventory slots overlay +local bx, by = 0, 0.3 +for i = 1, 16 do + if i == 9 then + bx = 0 + by = by + 1 + end + bookshelf_formspec = bookshelf_formspec .. + "image["..bx..","..by..";1,1;default_book_slot.png]" + bx = bx + 1 +end + minetest.register_node("default:bookshelf", { description = "Bookshelf", tiles = {"default_wood.png", "default_wood.png", "default_wood.png", diff --git a/mods/default/textures/default_book_slot.png b/mods/default/textures/default_book_slot.png new file mode 100644 index 0000000000000000000000000000000000000000..20b4ef844b354736afec5779f60c57eb9724a889 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRt$P6UkCGKknQjEnx?oJHr&dIz4a@YcVLR^7# zLqo%)%$+JA>5?G7UYh7ML)4Eal|aXmSqp@E&}3=@xy91oi&PoEnP`z;AE4?`c1qz^gC m0h1F1JQ5z{BqTIzu`(Q*$nN{BWt}xpH-o3EpUXO@geCyKmoeD@ literal 0 HcmV?d00001 diff --git a/mods/vessels/README.txt b/mods/vessels/README.txt index b81d0e94..e9f01b84 100644 --- a/mods/vessels/README.txt +++ b/mods/vessels/README.txt @@ -17,3 +17,6 @@ The following textures were modified by Thomas-S (CC BY-SA 3.0): vessels_drinking_glass_inv.png vessels_glass_bottle.png vessels_steel_bottle.png + +The following texture was created by Wuzzy (CC BY-SA 3.0): + vessels_glass_bottle_slot.png (based on vessels_glass_bottle.png) diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua index e56cc284..f0362568 100644 --- a/mods/vessels/init.lua +++ b/mods/vessels/init.lua @@ -13,6 +13,18 @@ local vessels_shelf_formspec = "listring[current_player;main]" .. default.get_hotbar_bg(0, 2.85) +-- Inventory slots overlay +local vx, vy = 0, 0.3 +for i = 1,16 do + if i == 9 then + vx = 0 + vy = vy + 1 + end + vessels_shelf_formspec = vessels_shelf_formspec .. + "image["..vx..","..vy..";1,1;vessels_glass_bottle_slot.png]" + vx = vx + 1 +end + minetest.register_node("vessels:shelf", { description = "Vessels Shelf", tiles = {"default_wood.png", "default_wood.png", "default_wood.png", diff --git a/mods/vessels/textures/vessels_glass_bottle_slot.png b/mods/vessels/textures/vessels_glass_bottle_slot.png new file mode 100644 index 0000000000000000000000000000000000000000..63cf7952f9b5d662ef92709481951b567d87c6a9 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;V{wqX6T`Z5GB1G~wg8_HS0LTc z&@d@;rwT~AB*-tA!Qt7BG!Q4r+uensgH_f8$l)yTh%9Dc;1&j9Muu5)B!GhKC7!;n z><_r41w|})3hqw?3Tb(|IEHXsPfl=P>fz;i!!I#|-@w4KL7;|0{k;OXk;vd$@?2>|sqD)0aR literal 0 HcmV?d00001 From d92034e3f7b769b7864389ad5e19da59d588c1fc Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 27 Oct 2016 18:40:13 +0200 Subject: [PATCH 136/196] Add fuel slot to furnace listring --- mods/default/furnace.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index 17c9280d..cd36f522 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -22,6 +22,8 @@ local function active_formspec(fuel_percent, item_percent) "listring[current_player;main]".. "listring[current_name;src]".. "listring[current_player;main]".. + "listring[current_name;fuel]".. + "listring[current_player;main]".. default.get_hotbar_bg(0, 4.25) return formspec end @@ -42,6 +44,8 @@ local inactive_formspec = "listring[current_player;main]".. "listring[current_name;src]".. "listring[current_player;main]".. + "listring[current_name;fuel]".. + "listring[current_player;main]".. default.get_hotbar_bg(0, 4.25) -- From 56d6eaed85fb959c2c5e6145038d408d795b262f Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 31 Oct 2016 22:20:26 +0100 Subject: [PATCH 137/196] Xpanes: Use opaque texture for top+bottom of iron bar (#1357) - Use opaque texture for top+bottom of iron bar - Add color variation for iron bar top/bottom - Add paramat's texture to credits - Update license info for paramat's textures --- mods/xpanes/README.txt | 3 +++ mods/xpanes/init.lua | 2 +- mods/xpanes/license.txt | 1 + mods/xpanes/textures/xpanes_bar_top.png | Bin 0 -> 224 bytes mods/xpanes/textures/xpanes_grey.png | Bin 82 -> 0 bytes 5 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 mods/xpanes/textures/xpanes_bar_top.png delete mode 100644 mods/xpanes/textures/xpanes_grey.png diff --git a/mods/xpanes/README.txt b/mods/xpanes/README.txt index b72e19a8..bcbc1294 100644 --- a/mods/xpanes/README.txt +++ b/mods/xpanes/README.txt @@ -16,3 +16,6 @@ xyz (CC BY-SA 3.0): Gambit (CC BY-SA 3.0): xpanes_bar.png + +paramat (CC BY-SA 3.0): + xpanes_bar_top.png diff --git a/mods/xpanes/init.lua b/mods/xpanes/init.lua index 7137aeee..77278a5c 100644 --- a/mods/xpanes/init.lua +++ b/mods/xpanes/init.lua @@ -160,7 +160,7 @@ xpanes.register_pane("pane", { xpanes.register_pane("bar", { description = "Iron bar", - textures = {"xpanes_bar.png","xpanes_bar.png","xpanes_space.png"}, + textures = {"xpanes_bar.png","xpanes_bar.png","xpanes_bar_top.png"}, inventory_image = "xpanes_bar.png", wield_image = "xpanes_bar.png", groups = {cracky=2}, diff --git a/mods/xpanes/license.txt b/mods/xpanes/license.txt index 66c6fbfa..dff72274 100644 --- a/mods/xpanes/license.txt +++ b/mods/xpanes/license.txt @@ -33,6 +33,7 @@ Licenses of media (textures) Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Copyright (C) 2014-2016 xyz Copyright (C) 2013-2016 Gambit +Copyright (C) 2016 paramat You are free to: Share — copy and redistribute the material in any medium or format. diff --git a/mods/xpanes/textures/xpanes_bar_top.png b/mods/xpanes/textures/xpanes_bar_top.png new file mode 100644 index 0000000000000000000000000000000000000000..5cd3d5721f3fa9b4d81dd32c44ecdebbc5e7fee4 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^PDS za7FzTQ=kZEfk$L90|U1(2s1Lwnj--eWH0gbb!C6RCC|ewZNSmX2o&PU42dXl&d<$F z%_{+N85s7g+cXnMd3d@whFF|V*3r}Zciw?9A!&iY1Jeh;zrW|XzrX%?HUqbvr=Q=s zh3}XqF$vz?x#Px*ny%ObO{e$InKP$g_J)(Zha6;Y;x3o_f&)z4*} HQ$iB}f8j$l literal 0 HcmV?d00001 diff --git a/mods/xpanes/textures/xpanes_grey.png b/mods/xpanes/textures/xpanes_grey.png deleted file mode 100644 index e1c6f76ff3ba0e88d7794341608b56ceb24e391c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx3?wy9o9qTs%mF?juKD?SYvy%*0CKrJT^vIy b7?Tr#Y$gWA;!;KlAdA7%)z4*}Q$iB}WG)bM From 5b2a896180361db8adfcfad4c29bf0721e67ecb1 Mon Sep 17 00:00:00 2001 From: Fernando Carmona Varo Date: Sun, 11 Sep 2016 09:55:33 +0200 Subject: [PATCH 138/196] Bucket: Allow buckets to trigger the on_punch of entities and nodes The purpose of this is to allow mods to be able to interact (e.g. fill up) an empty bucket when it is used to punch a node that's not a liquid source or when punching a custom entity (e.g. milking a cow). --- game_api.txt | 4 +++- mods/bucket/init.lua | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/game_api.txt b/game_api.txt index 6bf51af4..2958bfdc 100644 --- a/game_api.txt +++ b/game_api.txt @@ -19,7 +19,6 @@ Bucket API The bucket API allows registering new types of buckets for non-default liquids. - bucket.register_liquid( "default:lava_source", -- name of the source node "default:lava_flowing", -- name of the flowing node @@ -32,6 +31,9 @@ The bucket API allows registering new types of buckets for non-default liquids. -- Needed to avoid creating holes in sloping rivers. ) +The filled bucket item is returned to the player that uses an empty bucket pointing to the given liquid source. +When punching with an empty bucket pointing to an entity or a non-liquid node, the on_punch of the entity or node will be triggered. + Beds API -------- diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index 638ce1f4..5076dece 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -115,8 +115,11 @@ minetest.register_craftitem("bucket:bucket_empty", { stack_max = 99, liquids_pointable = true, on_use = function(itemstack, user, pointed_thing) - -- Must be pointing to node - if pointed_thing.type ~= "node" then + if pointed_thing.type == "object" then + pointed_thing.ref:punch(user, 1.0, { full_punch_interval=1.0 }, nil) + return user:get_wielded_item() + elseif pointed_thing.type ~= "node" then + -- do nothing if it's neither object nor node return end -- Check if pointing to a liquid source @@ -165,6 +168,13 @@ minetest.register_craftitem("bucket:bucket_empty", { end return ItemStack(giving_back) + else + -- non-liquid nodes will have their on_punch triggered + local node_def = minetest.registered_nodes[node.name] + if node_def then + node_def.on_punch(pointed_thing.under, node, user, pointed_thing) + end + return user:get_wielded_item() end end, }) From 7fee589e0362f49bb602fcc03e2127ef9f718f99 Mon Sep 17 00:00:00 2001 From: Fernando Carmona Varo Date: Thu, 27 Oct 2016 20:16:15 +0200 Subject: [PATCH 139/196] Tnt: Flammable TNT and gunpowder that activates when burnt Some code simplifications. --- mods/tnt/init.lua | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 1138e1c2..4142be78 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -404,17 +404,21 @@ minetest.register_node("tnt:gunpowder", { type = "fixed", fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2}, }, - groups = {dig_immediate = 2, attached_node = 1, connect_to_raillike = minetest.raillike_group("gunpowder")}, + groups = {dig_immediate = 2, attached_node = 1, flammable = 5, + connect_to_raillike = minetest.raillike_group("gunpowder")}, sounds = default.node_sound_leaves_defaults(), on_punch = function(pos, node, puncher) if puncher:get_wielded_item():get_name() == "default:torch" then - tnt.burn(pos, node.name) + minetest.set_node(pos, {name = "tnt:gunpowder_burning"}) end end, on_blast = function(pos, intensity) - tnt.burn(pos, "tnt:gunpowder") + minetest.set_node(pos, {name = "tnt:gunpowder_burning"}) end, + on_burn = function(pos) + minetest.set_node(pos, {name = "tnt:gunpowder_burning"}) + end }) minetest.register_node("tnt:gunpowder_burning", { @@ -538,7 +542,7 @@ function tnt.register_tnt(def) description = def.description, tiles = {tnt_top, tnt_bottom, tnt_side}, is_ground_content = false, - groups = {dig_immediate = 2, mesecon = 2, tnt = 1}, + groups = {dig_immediate = 2, mesecon = 2, tnt = 1, flammable = 5}, sounds = default.node_sound_wood_defaults(), on_punch = function(pos, node, puncher) if puncher:get_wielded_item():get_name() == "default:torch" then @@ -557,6 +561,9 @@ function tnt.register_tnt(def) end } }, + on_burn = function(pos) + minetest.set_node(pos, {name = name .. "_burning"}) + end }) end From 23ba2d3a0c918281e01402a9160902b865aa2580 Mon Sep 17 00:00:00 2001 From: cx384 Date: Sun, 30 Oct 2016 11:29:58 +0100 Subject: [PATCH 140/196] Add and edit fuel registrations Edited fuels: fences, wooden ladder. New fuels: boat, paper, book, dry shrub, stick, vessels shelf, wooden tools, wooden door, trapdoor, fence gates, farming crops, stairs, slabs, beds. --- mods/beds/beds.lua | 14 +++++++++ mods/boats/init.lua | 6 ++++ mods/default/crafting.lua | 61 +++++++++++++++++++++++++++++++++++---- mods/doors/init.lua | 45 +++++++++++++++++++++++++++++ mods/farming/init.lua | 25 ++++++++++++++++ mods/stairs/init.lua | 28 ++++++++++++++++++ mods/vessels/init.lua | 6 ++++ 7 files changed, 179 insertions(+), 6 deletions(-) diff --git a/mods/beds/beds.lua b/mods/beds/beds.lua index 5f31f136..b41992c3 100644 --- a/mods/beds/beds.lua +++ b/mods/beds/beds.lua @@ -88,3 +88,17 @@ beds.register_bed("beds:bed", { minetest.register_alias("beds:bed_bottom_red", "beds:bed_bottom") minetest.register_alias("beds:bed_top_red", "beds:bed_top") + +-- Fuel + +minetest.register_craft({ + type = "fuel", + recipe = "beds:fancy_bed_bottom", + burntime = 13, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "beds:bed_bottom", + burntime = 12, +}) diff --git a/mods/boats/init.lua b/mods/boats/init.lua index cc55b93c..4c6937e8 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -248,3 +248,9 @@ minetest.register_craft({ {"group:wood", "group:wood", "group:wood"}, }, }) + +minetest.register_craft({ + type = "fuel", + recipe = "boats:boat", + burntime = 20, +}) diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua index a7a0daa2..fe9862a0 100644 --- a/mods/default/crafting.lua +++ b/mods/default/crafting.lua @@ -915,31 +915,31 @@ minetest.register_craft({ minetest.register_craft({ type = "fuel", recipe = "default:fence_aspen_wood", - burntime = 11, + burntime = 5, }) minetest.register_craft({ type = "fuel", recipe = "default:fence_pine_wood", - burntime = 13, + burntime = 6, }) minetest.register_craft({ type = "fuel", recipe = "default:fence_wood", - burntime = 15, + burntime = 7, }) minetest.register_craft({ type = "fuel", recipe = "default:fence_acacia_wood", - burntime = 17, + burntime = 8, }) minetest.register_craft({ type = "fuel", recipe = "default:fence_junglewood", - burntime = 19, + burntime = 9, }) @@ -988,7 +988,7 @@ minetest.register_craft({ minetest.register_craft({ type = "fuel", recipe = "default:ladder_wood", - burntime = 5, + burntime = 2, }) minetest.register_craft({ @@ -1050,3 +1050,52 @@ minetest.register_craft({ recipe = "default:dry_grass_1", burntime = 2, }) + +minetest.register_craft({ + type = "fuel", + recipe = "default:paper", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:book", + burntime = 3, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:dry_shrub", + burntime = 2, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "group:stick", + burntime = 1, +}) + + +minetest.register_craft({ + type = "fuel", + recipe = "default:pick_wood", + burntime = 6, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:shovel_wood", + burntime = 4, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:axe_wood", + burntime = 6, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:sword_wood", + burntime = 5, +}) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 52564b0b..01a549b7 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -745,3 +745,48 @@ doors.register_fencegate("doors:gate_aspen_wood", { material = "default:aspen_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3} }) + + +----fuels---- + +minetest.register_craft({ + type = "fuel", + recipe = "doors:trapdoor", + burntime = 7, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "doors:door_wood", + burntime = 14, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "doors:gate_wood_closed", + burntime = 7, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "doors:gate_acacia_wood_closed", + burntime = 8, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "doors:gate_junglewood_closed", + burntime = 9, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "doors:gate_pine_wood_closed", + burntime = 6, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "doors:gate_aspen_wood_closed", + burntime = 5, +}) diff --git a/mods/farming/init.lua b/mods/farming/init.lua index 9fff36e0..796e9871 100644 --- a/mods/farming/init.lua +++ b/mods/farming/init.lua @@ -80,3 +80,28 @@ minetest.register_craft({ {"farming:straw"}, } }) + +-- Fuels +minetest.register_craft({ + type = "fuel", + recipe = "farming:straw", + burntime = 3, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:wheat", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:cotton", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:hoe_wood", + burntime = 5, +}) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 6a433525..191c78df 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -106,6 +106,20 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, {recipeitem, recipeitem, recipeitem}, }, }) + + -- Fuel + local baseburntime = minetest.get_craft_result({ + method = "fuel", + width = 1, + items = {recipeitem} + }).time + if baseburntime > 0 then + minetest.register_craft({ + type = "fuel", + recipe = 'stairs:stair_' .. subname, + burntime = math.floor(baseburntime * 0.75), + }) + end end end @@ -207,6 +221,20 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, {recipeitem, recipeitem, recipeitem}, }, }) + + -- Fuel + local baseburntime = minetest.get_craft_result({ + method = "fuel", + width = 1, + items = {recipeitem} + }).time + if baseburntime > 0 then + minetest.register_craft({ + type = "fuel", + recipe = 'stairs:slab_' .. subname, + burntime = math.floor(baseburntime * 0.5), + }) + end end end diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua index f0362568..64ad66eb 100644 --- a/mods/vessels/init.lua +++ b/mods/vessels/init.lua @@ -195,3 +195,9 @@ minetest.register_craft( { output = "default:steel_ingot", recipe = "vessels:steel_bottle", }) + +minetest.register_craft({ + type = "fuel", + recipe = "vessels:shelf", + burntime = 30, +}) From 178db045267c018abc99a4fc502f4da7d2374f8d Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 5 Nov 2016 05:58:12 +0000 Subject: [PATCH 141/196] Default, flowers: Improve plant selection boxes Selection box width is limited to 14 / 16 node to visually distinguish box from any neighbouring cubic nodes. --- mods/default/nodes.lua | 34 +++++++++++++++++----------- mods/flowers/init.lua | 50 +++++++++++++++++++++++++++++++++--------- 2 files changed, 61 insertions(+), 23 deletions(-) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 65b9fb9e..b37f1132 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -523,7 +523,7 @@ minetest.register_node("default:sapling", { on_timer = default.grow_sapling, selection_box = { type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} }, groups = {snappy = 2, dig_immediate = 3, flammable = 2, attached_node = 1, sapling = 1}, @@ -588,7 +588,7 @@ minetest.register_node("default:apple", { is_ground_content = false, selection_box = { type = "fixed", - fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2} + fixed = {-3 / 16, -7 / 16, -3 / 16, 3 / 16, 4 / 16, 3 / 16} }, groups = {fleshy = 3, dig_immediate = 3, flammable = 2, leafdecay = 3, leafdecay_drop = 1}, @@ -659,7 +659,7 @@ minetest.register_node("default:junglesapling", { on_timer = default.grow_sapling, selection_box = { type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} }, groups = {snappy = 2, dig_immediate = 3, flammable = 2, attached_node = 1, sapling = 1}, @@ -739,7 +739,7 @@ minetest.register_node("default:pine_sapling", { on_timer = default.grow_sapling, selection_box = { type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} }, groups = {snappy = 2, dig_immediate = 3, flammable = 3, attached_node = 1, sapling = 1}, @@ -819,7 +819,7 @@ minetest.register_node("default:acacia_sapling", { on_timer = default.grow_sapling, selection_box = { type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} }, groups = {snappy = 2, dig_immediate = 3, flammable = 2, attached_node = 1, sapling = 1}, @@ -898,7 +898,7 @@ minetest.register_node("default:aspen_sapling", { on_timer = default.grow_sapling, selection_box = { type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, 0.5, 3 / 16} }, groups = {snappy = 2, dig_immediate = 3, flammable = 3, attached_node = 1, sapling = 1}, @@ -1061,7 +1061,7 @@ minetest.register_node("default:papyrus", { walkable = false, selection_box = { type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16}, }, groups = {snappy = 3, flammable = 2}, sounds = default.node_sound_leaves_defaults(), @@ -1087,7 +1087,7 @@ minetest.register_node("default:dry_shrub", { sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 4 / 16, 5 / 16}, }, }) @@ -1107,7 +1107,7 @@ minetest.register_node("default:junglegrass", { sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, 1.19, 7 / 16}, }, }) @@ -1128,7 +1128,7 @@ minetest.register_node("default:grass_1", { sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -5 / 16, 6 / 16}, }, on_place = function(itemstack, placer, pointed_thing) @@ -1158,7 +1158,7 @@ for i = 2, 5 do sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, }, }) end @@ -1180,7 +1180,7 @@ minetest.register_node("default:dry_grass_1", { sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, }, on_place = function(itemstack, placer, pointed_thing) @@ -1210,7 +1210,7 @@ for i = 2, 5 do sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -1 / 16, 6 / 16}, }, }) end @@ -1227,6 +1227,10 @@ minetest.register_node("default:bush_stem", { sunlight_propagates = true, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = default.node_sound_wood_defaults(), + selection_box = { + type = "fixed", + fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, 0.54, 7 / 16}, + }, }) minetest.register_node("default:bush_leaves", { @@ -1250,6 +1254,10 @@ minetest.register_node("default:acacia_bush_stem", { sunlight_propagates = true, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = default.node_sound_wood_defaults(), + selection_box = { + type = "fixed", + fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, 0.54, 7 / 16}, + }, }) minetest.register_node("default:acacia_bush_leaves", { diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index 436021a8..c7cc670e 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -57,12 +57,42 @@ local function add_simple_flower(name, desc, box, f_groups) end flowers.datas = { - {"rose", "Rose", {-0.15, -0.5, -0.15, 0.15, 0.3, 0.15}, {color_red = 1, flammable = 1}}, - {"tulip", "Orange Tulip", {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_orange = 1, flammable = 1}}, - {"dandelion_yellow", "Yellow Dandelion", {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_yellow = 1, flammable = 1}}, - {"geranium", "Blue Geranium", {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_blue = 1, flammable = 1}}, - {"viola", "Viola", {-0.5, -0.5, -0.5, 0.5, -0.2, 0.5}, {color_violet = 1, flammable = 1}}, - {"dandelion_white", "White dandelion", {-0.5, -0.5, -0.5, 0.5, -0.2, 0.5}, {color_white = 1, flammable = 1}} + { + "rose", + "Rose", + {-2 / 16, -0.5, -2 / 16, 2 / 16, 5 / 16, 2 / 16}, + {color_red = 1, flammable = 1} + }, + { + "tulip", + "Orange Tulip", + {-2 / 16, -0.5, -2 / 16, 2 / 16, 3 / 16, 2 / 16}, + {color_orange = 1, flammable = 1} + }, + { + "dandelion_yellow", + "Yellow Dandelion", + {-2 / 16, -0.5, -2 / 16, 2 / 16, 4 / 16, 2 / 16}, + {color_yellow = 1, flammable = 1} + }, + { + "geranium", + "Blue Geranium", + {-2 / 16, -0.5, -2 / 16, 2 / 16, 2 / 16, 2 / 16}, + {color_blue = 1, flammable = 1} + }, + { + "viola", + "Viola", + {-5 / 16, -0.5, -5 / 16, 5 / 16, -1 / 16, 5 / 16}, + {color_violet = 1, flammable = 1} + }, + { + "dandelion_white", + "White dandelion", + {-5 / 16, -0.5, -5 / 16, 5 / 16, -2 / 16, 5 / 16}, + {color_white = 1, flammable = 1} + }, } for _,item in pairs(flowers.datas) do @@ -141,7 +171,7 @@ minetest.register_node("flowers:mushroom_red", { on_use = minetest.item_eat(-5), selection_box = { type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3} + fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, -1 / 16, 4 / 16}, } }) @@ -160,7 +190,7 @@ minetest.register_node("flowers:mushroom_brown", { on_use = minetest.item_eat(1), selection_box = { type = "fixed", - fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3} + fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, -2 / 16, 3 / 16}, } }) @@ -234,11 +264,11 @@ minetest.register_node("flowers:waterlily", { node_placement_prediction = "", node_box = { type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -0.46875, 0.5} + fixed = {-0.5, -0.5, -0.5, 0.5, -15 / 32, 0.5} }, selection_box = { type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5} + fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, -15 / 32, 7 / 16} }, on_place = function(itemstack, placer, pointed_thing) From 631f7f46c758721945dbb201bb7f4c84f21ee863 Mon Sep 17 00:00:00 2001 From: Rui Date: Sat, 5 Nov 2016 11:17:05 +0900 Subject: [PATCH 142/196] sethome.get: Copy a return value --- mods/sethome/init.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mods/sethome/init.lua b/mods/sethome/init.lua index 4246f7a5..28bfcef6 100644 --- a/mods/sethome/init.lua +++ b/mods/sethome/init.lua @@ -41,7 +41,12 @@ sethome.set = function(name, pos) end sethome.get = function(name) - return homepos[name] + local pos = homepos[name] + if pos then + return vector.new(pos) + else + return nil + end end sethome.go = function(name) From c7e2d594610cacfb4bb7ed0e3b950eeed58b7d01 Mon Sep 17 00:00:00 2001 From: paramat Date: Wed, 2 Nov 2016 17:58:06 +0000 Subject: [PATCH 143/196] Default: Add 'acacia leaves simple' texture A deeper, darker level of leaves is created by tiling the texture 2 by 2, reducing brightness and offsetting this. For a denser leaf appearence with the 'simple leaves' setting. Also used for acacia bush leaves. --- mods/default/README.txt | 1 + mods/default/nodes.lua | 3 ++- .../textures/default_acacia_leaves_simple.png | Bin 0 -> 688 bytes 3 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 mods/default/textures/default_acacia_leaves_simple.png diff --git a/mods/default/README.txt b/mods/default/README.txt index 3e4f7734..6b26234c 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -88,6 +88,7 @@ paramat (CC BY-SA 3.0): default_pinetree_top.png default_pinewood.png default_acacia_leaves.png + default_acacia_leaves_simple.png default_acacia_sapling.png default_acacia_tree.png default_acacia_tree_top.png diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index b37f1132..222df92c 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -790,6 +790,7 @@ minetest.register_node("default:acacia_leaves", { description = "Acacia Leaves", drawtype = "allfaces_optional", tiles = {"default_acacia_leaves.png"}, + special_tiles = {"default_acacia_leaves_simple.png"}, waving = 1, paramtype = "light", is_ground_content = false, @@ -1264,7 +1265,7 @@ minetest.register_node("default:acacia_bush_leaves", { description = "Acacia Bush Leaves", drawtype = "allfaces_optional", waving = 1, - tiles = {"default_acacia_leaves.png"}, + tiles = {"default_acacia_leaves_simple.png"}, paramtype = "light", groups = {snappy = 3, flammable = 2, leaves = 1}, sounds = default.node_sound_leaves_defaults(), diff --git a/mods/default/textures/default_acacia_leaves_simple.png b/mods/default/textures/default_acacia_leaves_simple.png new file mode 100644 index 0000000000000000000000000000000000000000..3c7015bbb75a75866f407d158dfeab3235e51f23 GIT binary patch literal 688 zcmV;h0#E&kP)6f+Gg1gQW30zFAY zK~y-)ZIdx*6JZ#JpWNNw3W9@ewTDS;QY5B?4%ZyHD7K4;Py#M>$slB~LxpzNvDst5 z!9_6T5R^=z(4|8gkRFksOQaOj(zFOF9ZE&;FNwo>*Gu&q@A%$(-{<`<)c)l303N=W zqkG%~AbD>TRac0vXIZvOqP^xw0Bb(O)=P)rgwWCA<4Ay$Qy7|bUknc@0Mx5p(Oz?8 z%`WqLf0IYiX@B{9cZ5*#F+IaFX>K+6TtnoGrUX!RSD;dGg!h4L!9>*+Dg{S8%P&cw zUm&q#uzjQXj{|^Y&J_th&lgRp4G$=&y29{)LTYN76t2Z(yCmY{$aF3$k6QZ}mPydr z_6J9*xDSlqM;k3~4x>kuA` z(A?;VAaKBSaGo?kbE6}!Tt|8WUVZWV84={6#b!El0$|KUBtT-vz_3hWvnGchyZmqLrwtKZ z&!Qx(s~olVvF0-z>~#Q0O-&PP-KJ7-#K|fCKjP6(=8*ZKDXYgNx5B{*XxH#=KzgKu zAOXLj;Aq|zrgLElP_xT!oO74wRSS?vE7IH3fWJB27{QF5gL<_qTDduC%tWLo;>{l^ W`u2$0lZa~o0000 Date: Mon, 24 Oct 2016 22:24:49 +0200 Subject: [PATCH 144/196] Fire / tnt: Make flint-and-steel use node on_ignite functions Add on_ignite functions to tnt, gunpowder, coalblock. --- game_api.txt | 8 +++++++ mods/fire/init.lua | 53 +++++++++++++++++----------------------------- mods/tnt/init.lua | 10 +++++++-- 3 files changed, 36 insertions(+), 35 deletions(-) diff --git a/game_api.txt b/game_api.txt index 2958bfdc..80272a60 100644 --- a/game_api.txt +++ b/game_api.txt @@ -227,6 +227,14 @@ New node def property: * Called when fire attempts to remove a burning node. * `pos` Position of the burning node. + `on_ignite(pos, igniter)` + + * Called when Flint and steel (or a mod defined ignitor) is used on a node. + Defining it may prevent the default action (spawning flames) from triggering. + * `pos` Position of the ignited node. + * `igniter` Player that used the tool, when available. + + Give Initial Stuff API ---------------------- diff --git a/mods/fire/init.lua b/mods/fire/init.lua index a3457f64..c600edc7 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -95,38 +95,20 @@ minetest.register_tool("fire:flint_and_steel", { itemstack:add_wear(1000) if pt.type == "node" then local node_under = minetest.get_node(pt.under).name - 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 + local nodedef = minetest.registered_nodes[node_under] + if not nodedef then + return + end + local player_name = user:get_player_name() + if minetest.is_protected(pt.under, player_name) then + minetest.chat_send_player(player_name, "This area is protected") + return + end + if nodedef.on_ignite then + nodedef.on_ignite(pt.under, user) + elseif minetest.get_item_group(node_under, "flammable") >= 1 + and minetest.get_node(pt.above).name == "air" then + minetest.set_node(pt.above, {name = "fire:basic_flame"}) end end if not minetest.setting_getbool("creative_mode") then @@ -153,9 +135,14 @@ minetest.override_item("default:coalblock", { minetest.remove_node(pos) end end, + on_ignite = function(pos, igniter) + local flame_pos = {x = pos.x, y = pos.y + 1, z = pos.z} + if minetest.get_node(flame_pos).name == "air" then + minetest.set_node(flame_pos, {name = "fire:permanent_flame"}) + end + end, }) - -- Get sound area of position fire.D = 6 -- size of sound areas diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 4142be78..0c447f95 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -418,7 +418,10 @@ minetest.register_node("tnt:gunpowder", { end, on_burn = function(pos) minetest.set_node(pos, {name = "tnt:gunpowder_burning"}) - end + end, + on_ignite = function(pos, igniter) + minetest.set_node(pos, {name = "tnt:gunpowder_burning"}) + end, }) minetest.register_node("tnt:gunpowder_burning", { @@ -563,7 +566,10 @@ function tnt.register_tnt(def) }, on_burn = function(pos) minetest.set_node(pos, {name = name .. "_burning"}) - end + end, + on_ignite = function(pos, igniter) + minetest.set_node(pos, {name = name .. "_burning"}) + end, }) end From 5868274b002998341b965bb98dd9499d3d6d7b75 Mon Sep 17 00:00:00 2001 From: Rui Date: Sat, 5 Nov 2016 11:58:13 +0900 Subject: [PATCH 145/196] Creative: Fix crash when turning on creative in-game --- mods/creative/init.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mods/creative/init.lua b/mods/creative/init.lua index 24cd673b..d90426da 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -173,6 +173,13 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local player_name = player:get_player_name() local inv = player_inventory[player_name] + -- If creative is turned on mid game + if not inv then + creative.init_creative_inventory(player) + creative.set_creative_formspec(player, 0) + return + end + if fields.quit then if inv.tab_id == 1 then creative.set_crafting_formspec(player) From 3109f38b3c3cccc560d193665a68a13152206901 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 6 Nov 2016 00:49:25 +0100 Subject: [PATCH 146/196] Sethome: Don't auto-grant home priv to singleplayer --- mods/sethome/init.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mods/sethome/init.lua b/mods/sethome/init.lua index 28bfcef6..dc431bc7 100644 --- a/mods/sethome/init.lua +++ b/mods/sethome/init.lua @@ -58,7 +58,10 @@ sethome.go = function(name) return false end -minetest.register_privilege("home", "Can use /sethome and /home") +minetest.register_privilege("home", { + description = "Can use /sethome and /home", + give_to_singleplayer = false +}) minetest.register_chatcommand("home", { description = "Teleport you to your home point", From 6e00ddee2ae21490efbe7723a946b68715ac7a07 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 6 Nov 2016 15:54:55 +0100 Subject: [PATCH 147/196] Default, vessels: Darken shelf empty slot icons Rename slot icons. --- mods/default/README.txt | 2 +- mods/default/nodes.lua | 2 +- mods/default/textures/default_book_slot.png | Bin 204 -> 0 bytes mods/default/textures/default_bookshelf_slot.png | Bin 0 -> 216 bytes mods/vessels/README.txt | 2 +- mods/vessels/init.lua | 4 ++-- .../textures/vessels_glass_bottle_slot.png | Bin 196 -> 0 bytes mods/vessels/textures/vessels_shelf_slot.png | Bin 0 -> 201 bytes 8 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 mods/default/textures/default_book_slot.png create mode 100644 mods/default/textures/default_bookshelf_slot.png delete mode 100644 mods/vessels/textures/vessels_glass_bottle_slot.png create mode 100644 mods/vessels/textures/vessels_shelf_slot.png diff --git a/mods/default/README.txt b/mods/default/README.txt index 6b26234c..d7fede08 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -141,7 +141,7 @@ BlockMen (CC BY-SA 3.0): gui_*.png Wuzzy (CC BY-SA 3.0): - default_book_slot.png (based on default_book.png) + default_bookshelf_slot.png (based on default_book.png) sofar (CC BY-SA 3.0): default_book_written.png, based on default_book.png diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 222df92c..9fbf30f3 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1817,7 +1817,7 @@ for i = 1, 16 do by = by + 1 end bookshelf_formspec = bookshelf_formspec .. - "image["..bx..","..by..";1,1;default_book_slot.png]" + "image[" .. bx .. "," .. by .. ";1,1;default_bookshelf_slot.png]" bx = bx + 1 end diff --git a/mods/default/textures/default_book_slot.png b/mods/default/textures/default_book_slot.png deleted file mode 100644 index 20b4ef844b354736afec5779f60c57eb9724a889..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRt$P6UkCGKknQjEnx?oJHr&dIz4a@YcVLR^7# zLqo%)%$+JA>5?G7UYh7ML)4Eal|aXmSqp@E&}3=@xy91oi&PoEnP`z;AE4?`c1qz^gC m0h1F1JQ5z{BqTIzu`(Q*$nN{BWt}xpH-o3EpUXO@geCyKmoeD@ diff --git a/mods/default/textures/default_bookshelf_slot.png b/mods/default/textures/default_bookshelf_slot.png new file mode 100644 index 0000000000000000000000000000000000000000..31c4eb5e6e25b208782e7ec11c8b527a125ebb02 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRt!3-oH7vA{>q!^2X+?^QKos)S9~bp9zYIffk$L90|U1(2s1Lwnj--eWH0gb zb!C6R&BkZK>iPBST%eGhr;B5V#O34!1t|j~qeVrIENs&SJGmDg(9sarV>0d*T-YUe zQo~JU^8+!(*C{D3M*N8~o5Wf;Rvo^$^9Lh?f)a!IS@r3CK$93eUHx3vIVCg!0H38d ATmS$7 literal 0 HcmV?d00001 diff --git a/mods/vessels/README.txt b/mods/vessels/README.txt index e9f01b84..5bb798c8 100644 --- a/mods/vessels/README.txt +++ b/mods/vessels/README.txt @@ -19,4 +19,4 @@ The following textures were modified by Thomas-S (CC BY-SA 3.0): vessels_steel_bottle.png The following texture was created by Wuzzy (CC BY-SA 3.0): - vessels_glass_bottle_slot.png (based on vessels_glass_bottle.png) + vessels_shelf_slot.png (based on vessels_glass_bottle.png) diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua index 64ad66eb..c243bc09 100644 --- a/mods/vessels/init.lua +++ b/mods/vessels/init.lua @@ -15,13 +15,13 @@ local vessels_shelf_formspec = -- Inventory slots overlay local vx, vy = 0, 0.3 -for i = 1,16 do +for i = 1, 16 do if i == 9 then vx = 0 vy = vy + 1 end vessels_shelf_formspec = vessels_shelf_formspec .. - "image["..vx..","..vy..";1,1;vessels_glass_bottle_slot.png]" + "image[" .. vx .. "," .. vy .. ";1,1;vessels_shelf_slot.png]" vx = vx + 1 end diff --git a/mods/vessels/textures/vessels_glass_bottle_slot.png b/mods/vessels/textures/vessels_glass_bottle_slot.png deleted file mode 100644 index 63cf7952f9b5d662ef92709481951b567d87c6a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;V{wqX6T`Z5GB1G~wg8_HS0LTc z&@d@;rwT~AB*-tA!Qt7BG!Q4r+uensgH_f8$l)yTh%9Dc;1&j9Muu5)B!GhKC7!;n z><_r41w|})3hqw?3Tb(|IEHXsPfl=P>fz;i!!I#|-@w4KL7;|0{k;OXk;vd$@?2>|sqD)0aR diff --git a/mods/vessels/textures/vessels_shelf_slot.png b/mods/vessels/textures/vessels_shelf_slot.png new file mode 100644 index 0000000000000000000000000000000000000000..ff29082a0371748e6eb0bd656141466790085dba GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~wg8_HS0Eh_ z5Fo)l`#wmzB*-tA!Qt7BG!Q4r+uensgH_f8$l)yTh%9Dc;1&j9Muu5)B!GhKC7!;n z><_rv_>5J&?iRBEh4ejL977~7CnqeBOGt5f+{CbpW0jD>A>{)c>JOM!cu8EGYM|74 ji1or(g9XvdgTe~DWM4f4mvQ) literal 0 HcmV?d00001 From 614e9cfe8d870d83c7289d697f65979249c769f3 Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 8 Nov 2016 16:38:26 +0000 Subject: [PATCH 148/196] Default: Make snow walkable again --- mods/default/nodes.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 9fbf30f3..bb3dfc8c 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -442,7 +442,6 @@ minetest.register_node("default:snow", { paramtype = "light", buildable_to = true, floodable = true, - walkable = false, drawtype = "nodebox", node_box = { type = "fixed", From ddea6c431e2cc3d65318a1543cf153cee4058f9e Mon Sep 17 00:00:00 2001 From: paramat Date: Tue, 8 Nov 2016 17:30:58 +0000 Subject: [PATCH 149/196] Default: Make snowblock change 'dirt with grass' below To be consistent with the snow slab. --- mods/default/nodes.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index bb3dfc8c..77dc6c48 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -473,6 +473,13 @@ minetest.register_node("default:snowblock", { dug = {name = "default_snow_footstep", gain = 0.2}, dig = {name = "default_snow_footstep", gain = 0.2} }), + + on_construct = function(pos) + pos.y = pos.y - 1 + if minetest.get_node(pos).name == "default:dirt_with_grass" then + minetest.set_node(pos, {name = "default:dirt_with_snow"}) + end + end, }) minetest.register_node("default:ice", { From f8bc1e17149a087c7f375c6ae5d0bf398c0abb78 Mon Sep 17 00:00:00 2001 From: paramat Date: Thu, 10 Nov 2016 03:52:03 +0000 Subject: [PATCH 150/196] Nyancat: Make nyancat and rainbow light sources --- mods/nyancat/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mods/nyancat/init.lua b/mods/nyancat/init.lua index 677ed50a..7192beb8 100644 --- a/mods/nyancat/init.lua +++ b/mods/nyancat/init.lua @@ -2,6 +2,8 @@ minetest.register_node("nyancat:nyancat", { description = "Nyan Cat", tiles = {"nyancat_side.png", "nyancat_side.png", "nyancat_side.png", "nyancat_side.png", "nyancat_back.png", "nyancat_front.png"}, + paramtype = "light", + light_source = default.LIGHT_MAX, paramtype2 = "facedir", groups = {cracky = 2}, is_ground_content = false, @@ -16,6 +18,8 @@ minetest.register_node("nyancat:nyancat_rainbow", { "nyancat_rainbow.png^[transformR90", "nyancat_rainbow.png" }, + paramtype = "light", + light_source = default.LIGHT_MAX, paramtype2 = "facedir", groups = {cracky = 2}, is_ground_content = false, From 7fbf25d6ca96c32ba8642e23fa2560031766206e Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 6 Nov 2016 21:36:36 +0100 Subject: [PATCH 151/196] Do not show item overlay if slot is occupied by item (bookshelf, vessels shelf) --- mods/default/nodes.lua | 33 +++++++++++++++++++++++---------- mods/vessels/init.lua | 33 +++++++++++++++++++++++---------- 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 77dc6c48..ebd1e5d7 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1815,16 +1815,23 @@ local bookshelf_formspec = "listring[current_player;main]" .. default.get_hotbar_bg(0,2.85) --- Inventory slots overlay -local bx, by = 0, 0.3 -for i = 1, 16 do - if i == 9 then - bx = 0 - by = by + 1 +local function get_bookshelf_formspec(inv) + local formspec = bookshelf_formspec + local invlist = inv and inv:get_list("books") + -- Inventory slots overlay + local bx, by = 0, 0.3 + for i = 1, 16 do + if i == 9 then + bx = 0 + by = by + 1 + end + if not invlist or invlist[i]:is_empty() then + formspec = formspec .. + "image[" .. bx .. "," .. by .. ";1,1;default_bookshelf_slot.png]" + end + bx = bx + 1 end - bookshelf_formspec = bookshelf_formspec .. - "image[" .. bx .. "," .. by .. ";1,1;default_bookshelf_slot.png]" - bx = bx + 1 + return formspec end minetest.register_node("default:bookshelf", { @@ -1838,7 +1845,7 @@ minetest.register_node("default:bookshelf", { on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("formspec", bookshelf_formspec) + meta:set_string("formspec", get_bookshelf_formspec(nil)) local inv = meta:get_inventory() inv:set_size("books", 8 * 2) end, @@ -1855,14 +1862,20 @@ minetest.register_node("default:bookshelf", { on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) minetest.log("action", player:get_player_name() .. " moves stuff in bookshelf at " .. minetest.pos_to_string(pos)) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", get_bookshelf_formspec(meta:get_inventory())) end, on_metadata_inventory_put = function(pos, listname, index, stack, player) minetest.log("action", player:get_player_name() .. " moves stuff to bookshelf at " .. minetest.pos_to_string(pos)) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", get_bookshelf_formspec(meta:get_inventory())) end, on_metadata_inventory_take = function(pos, listname, index, stack, player) minetest.log("action", player:get_player_name() .. " takes stuff from bookshelf at " .. minetest.pos_to_string(pos)) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", get_bookshelf_formspec(meta:get_inventory())) end, on_blast = function(pos) local drops = {} diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua index c243bc09..688413f2 100644 --- a/mods/vessels/init.lua +++ b/mods/vessels/init.lua @@ -13,16 +13,23 @@ local vessels_shelf_formspec = "listring[current_player;main]" .. default.get_hotbar_bg(0, 2.85) --- Inventory slots overlay -local vx, vy = 0, 0.3 -for i = 1, 16 do - if i == 9 then - vx = 0 - vy = vy + 1 +local function get_vessels_shelf_formspec(inv) + local formspec = vessels_shelf_formspec + local invlist = inv and inv:get_list("vessels") + -- Inventory slots overlay + local vx, vy = 0, 0.3 + for i = 1, 16 do + if i == 9 then + vx = 0 + vy = vy + 1 + end + if not invlist or invlist[i]:is_empty() then + formspec = formspec .. + "image[" .. vx .. "," .. vy .. ";1,1;vessels_shelf_slot.png]" + end + vx = vx + 1 end - vessels_shelf_formspec = vessels_shelf_formspec .. - "image[" .. vx .. "," .. vy .. ";1,1;vessels_shelf_slot.png]" - vx = vx + 1 + return formspec end minetest.register_node("vessels:shelf", { @@ -36,7 +43,7 @@ minetest.register_node("vessels:shelf", { on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("formspec", vessels_shelf_formspec) + meta:set_string("formspec", get_vessels_shelf_formspec(nil)) local inv = meta:get_inventory() inv:set_size("vessels", 8 * 2) end, @@ -53,14 +60,20 @@ minetest.register_node("vessels:shelf", { on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) minetest.log("action", player:get_player_name() .. " moves stuff in vessels shelf at ".. minetest.pos_to_string(pos)) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory())) end, on_metadata_inventory_put = function(pos, listname, index, stack, player) minetest.log("action", player:get_player_name() .. " moves stuff to vessels shelf at ".. minetest.pos_to_string(pos)) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory())) end, on_metadata_inventory_take = function(pos, listname, index, stack, player) minetest.log("action", player:get_player_name() .. " takes stuff from vessels shelf at ".. minetest.pos_to_string(pos)) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory())) end, on_blast = function(pos) local drops = {} From af3c91862cd1ca0ee5865845ea5ddeab3b9f680a Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Mon, 7 Nov 2016 11:26:28 -0800 Subject: [PATCH 152/196] Convert many textures to indexed color This fixes all cases where the color profile was broken, and libpng warns about. It also makes almost all textures indexed instead of RGB where possible (textures that don't have semi-transparent pixels). --- .../textures/default_acacia_bush_stem.png | Bin 476 -> 3959 bytes .../textures/default_acacia_leaves.png | Bin 444 -> 4100 bytes .../textures/default_acacia_leaves_simple.png | Bin 688 -> 4530 bytes .../textures/default_acacia_sapling.png | Bin 359 -> 3773 bytes .../textures/default_acacia_tree_top.png | Bin 639 -> 5010 bytes .../default/textures/default_aspen_leaves.png | Bin 761 -> 4658 bytes .../textures/default_aspen_sapling.png | Bin 320 -> 4119 bytes mods/default/textures/default_aspen_tree.png | Bin 695 -> 4429 bytes mods/default/textures/default_aspen_wood.png | Bin 373 -> 4023 bytes mods/default/textures/default_bush_stem.png | Bin 428 -> 3954 bytes .../textures/default_desert_stone_block.png | Bin 527 -> 4368 bytes .../textures/default_desert_stone_brick.png | Bin 552 -> 4420 bytes .../textures/default_fence_aspen_wood.png | Bin 450 -> 4170 bytes mods/default/textures/default_flint.png | Bin 3038 -> 3729 bytes mods/default/textures/default_grass_1.png | Bin 2944 -> 3643 bytes mods/default/textures/default_grass_2.png | Bin 2980 -> 3695 bytes mods/default/textures/default_grass_3.png | Bin 3065 -> 3832 bytes mods/default/textures/default_grass_4.png | Bin 3134 -> 4093 bytes mods/default/textures/default_grass_5.png | Bin 3269 -> 4376 bytes mods/default/textures/default_gravel.png | Bin 3570 -> 4715 bytes mods/default/textures/default_ice.png | Bin 3046 -> 4114 bytes .../textures/default_jungleleaves_simple.png | Bin 417 -> 3899 bytes mods/default/textures/default_jungletree.png | Bin 736 -> 5592 bytes .../textures/default_jungletree_top.png | Bin 823 -> 5175 bytes .../default/textures/default_ladder_steel.png | Bin 3223 -> 4021 bytes mods/default/textures/default_lava.png | Bin 685 -> 5706 bytes mods/default/textures/default_meselamp.png | Bin 3399 -> 5103 bytes .../textures/default_obsidian_block.png | Bin 336 -> 3913 bytes .../default_obsidian_glass_detail.png | Bin 1167 -> 3504 bytes .../textures/default_obsidian_shard.png | Bin 110 -> 3581 bytes .../textures/default_sandstone_block.png | Bin 637 -> 4548 bytes mods/default/textures/default_sign_steel.png | Bin 3173 -> 3921 bytes .../textures/default_sign_wall_steel.png | Bin 3187 -> 4035 bytes .../textures/default_sign_wall_wood.png | Bin 3391 -> 4518 bytes mods/default/textures/default_sign_wood.png | Bin 3406 -> 4374 bytes mods/default/textures/default_silver_sand.png | Bin 527 -> 4069 bytes mods/default/textures/default_snow.png | Bin 3310 -> 4577 bytes mods/default/textures/default_snowball.png | Bin 3102 -> 3826 bytes mods/default/textures/default_stone_brick.png | Bin 545 -> 4196 bytes .../default/textures/gui_furnace_arrow_fg.png | Bin 251 -> 3463 bytes mods/default/textures/heart.png | Bin 14830 -> 5113 bytes mods/default/textures/player.png | Bin 142 -> 4160 bytes mods/doors/textures/doors_door_glass.png | Bin 3064 -> 8220 bytes .../textures/doors_door_obsidian_glass.png | Bin 2988 -> 5290 bytes mods/farming/textures/farming_cotton.png | Bin 166 -> 3844 bytes mods/fire/textures/fire_flint_steel.png | Bin 3108 -> 3837 bytes mods/flowers/textures/flowers_waterlily.png | Bin 3363 -> 4323 bytes mods/xpanes/textures/xpanes_bar_top.png | Bin 224 -> 3516 bytes mods/xpanes/textures/xpanes_pane_half.png | Bin 83 -> 3424 bytes mods/xpanes/textures/xpanes_space.png | Bin 149 -> 4274 bytes mods/xpanes/textures/xpanes_white.png | Bin 148 -> 3496 bytes 51 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/default/textures/default_acacia_bush_stem.png b/mods/default/textures/default_acacia_bush_stem.png index 290391526e7bb902bb49076399868d936f0f073e..ca22d759cf3b07825b7faba1ca6ef246612672d2 100644 GIT binary patch literal 3959 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4SQM*5B1(c1%M}WW^3yVNQWZ)n z3sMzQD>Bm<7%FbP4bPo)TY=~AdCe*o6-B$g=7VRxu-VqhOUyYk`^_@zzn5nolU6?M zB>(&!kg%X?``Em!>YWbe`As?#l;JHGvp(T+4f_xX_CL&yAc(mYcWrar#( z{<59(`t7_2egA%2VZPAEzR)Ua-g4)c6D1FsO`g-&!f$&vd-Ah=Z{D4n8P9q6XlBjc zGRB0E)}R|7^f=>f7jYN~=u4&_l8nCTH`Apc&GY<5;!=f|JHj=Tic}+v4oW5-Z$E4kT=(2UcI&n1IVX+@Yd<-vKOdW&lXv-Seqwj@ts=+YBH>$p2zlwOd~zyOOYZ-x zYy;D4A)o!MqcY2PzpLY~zH@n=bk$nVV&B>M3y)5VvWuL(#%`0F_%ploUbXDGhURY$ z^_s45j?i1tFZ^~+qhT4#G3Rs!-m`O!rB7PEJ5zctC&@GyYY5T{k_zT~)03^@Sa+UiHbdmp**{a)Xxs z-@BV`rkU+prEC_T`gzGT)}7lPvc0!hnr3_?V%pAqO>=JDd3RaMVC|6~EY(v}uituB z=JP>vp^oU)?D@Rc+ZS&+baK@N|LNN$!teK0J`1xlIIjH2|9$%E(4EW=R{y#fl=k(? zsRMDVV|u-~1?N9sJL9&JeYo-2%c7^OS8umEvM0+lZnodQ&rXq-KfPJ*{C@6Cxi`8W zp9Y8D*t6G=|4j3vIn0}{zdOyz?Yf;QN87c(`q_?|PlcTQou2GXOxQPrPnl=_-aTy7 z`ooLPdPUry$9O*cb4rBH{hH3INhPzM6>nShbMnqVH?!h=A4jLxzG13-bhbuJ&1BE9 z2l4)&rHd}k=x5^bX#2POx92bJZ|IU54whr{vuisyk!uN*p*Yv|fMJDQ-hKk?Xt< z(jplcII}W=B~yg2k5zJhu3lnFep0GlMQ#Dm6$}hE_7w$*$=RtT3Q4KynR&KK?|1K4 zQpilPRSGxtHSjHPPR+>ls47YguJQ{>uF6ifOi{A8^~=l4^~#O)@{7{-4J|D#^$m>ljf`}GDs+o0^GXscbn}XpK}JB#a7isr zE&>K!W`3Rm$jro~{L&IzB_*J|0@U!7WVqP{rA0YllT(uQQ*%;tQ}arS^$qn5^}*^> zlC9kGi*gfz`ZIGA(^K^e^3s*`L9W$@Iv41BeYp2QZlFCFwS=TF9u2P1;36pmNK!nS zx<-SGq!1uU@o4HATEWGIXh5ar0b5Pwz~&Ld{{{zO(<(W@C&X1)fY-;_#@E%}*UjGF z&EC)5!Qb6J07!Z`26#9GcsK=lI0bq-2YNXNdAWpmyM_3Ag!p-c_l> zcT|W^bckKmgcBiOExxmbc8nkosr5;Zf! uUH&@i>(j2y+~;`y%&LFpzgoXWWwPfBvw0u07Tg1L2!p4qpUXO@geCxiyDGZ? delta 435 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 delta 404 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 t4R}@)IN*hxF0O8n$slB~ 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 Rq)-3=002ovPDHLkV1jxNj?Vx9 diff --git a/mods/default/textures/default_acacia_tree_top.png b/mods/default/textures/default_acacia_tree_top.png index d6f0637ca8f3cc5ea3c2a9fe15d83707e15325b1..a8a0ce05b4f43a0c43f6a9cfe0c494fc0686a8a9 100644 GIT binary patch literal 5010 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 Fe*qbcH4Fd% delta 599 zcmV-d0;v6xC;tSH83+OZ005AYXf~5^5+8pG8U_R>YHt#y0006WNkl$@J8#rL z6ov1M$7_3%S?4i^%`RCf0ucccJ)-7+01Xv%P^O@wgdQnBBn1*R5|NOI00H75lE}lx z#$G?>Nij>3f?J(?r8}c@?uQ;dxC{SE5&(F5?~ZSDQxVE^QvrX# zd2zbDv%5#UdiU`8ub8Hc*cpyg>EVngtM;&-@ZWBhF~#FHCbIjQ4(Ne z9n^2%2P2wNCUQY|#tCK6Nkfp;x;TIMzH;S~Ixbby6HBy_bUH=|d4~Y7_`xYx&RsNX zT8S76lbhQJq3-ugeJl06Mg#%2gfgCS>^-Qm%GOajPAPzH<gS;rg_`#mf$3T; zt!^rj3+w}~Tlm<;U0IU^_eaOp+8>_|+qSiR2LM({tE_(-i(C-OD6w0pkD`C*q)-^+ zWG$I&q#*==2S)ZrIcJPNBJpkzLY)S!b*q$ZZ9j8GhfiF1EyGT!rq)Xuh)>Di(rT@( zHBCRA#Ma>DWt+SYA9qQJJ+ z$vQntiBR@JI9W+4?S#Q7h9pC96l}U0ZC*|XqoH%|&Hl{Oxj^ID%g5)*TYyQ~>2N~X lndzO~z5lX(3if%t{{l{WK-J4`28;jz002ovPDHLkV1hJY6DI%w diff --git a/mods/default/textures/default_aspen_leaves.png b/mods/default/textures/default_aspen_leaves.png index 17a708d1783819a4acdd09e730a2c1a9698dd686..ee1eefe2826c9d0aee0bf2695fa65e365321be7b 100644 GIT binary patch literal 4658 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 delta 304 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 E0o5RCCF^6!cAVG&0yI#i zdVwKBksZ*n6xP8uXjnliIwl3Qe9}-*!GJx)QS3;TEz5pIHgNAb2QHUO&bd;mZQDH0 z2ZKRXRa)yfj)NdrtyTyjYb_z9-|rVi;c(73n+=4pEX(ij?|pGXzr$H}rR2m%P>VsswxN}A*5~F)oSHLQ6z-G7<-=Qx-I}9&vT_z7=~Gv z6-9v%>h*e@a{$0-G(r~_7ythKa~!9xYtQo_gzNSC;NW0BpTEAoN-4{-q?86h&@|1* z#|IKZynnsDrD-~uOq5c2o-@XT5VP5AJRXn7W7l=}_V((!PSf=1=?R{loiWA+g8?Dr z^78Wh{CqeZjz%L&X_jRW!m6r-5HBw;i^byi_ZQyZ-(!pq4-ca#B7_JbAcU0C-4ExS z5K`AQV+=w#pU>fPxs+0Bt#|gE^B@S6QpOlcDI=xSah&aT8$}TS;P3D6Kb>rCYCtc% QcK`qY07*qoM6N<$g2L5HVgLXD diff --git a/mods/default/textures/default_aspen_wood.png b/mods/default/textures/default_aspen_wood.png index d16fdc975d5b4cba98598ead835175743d2ae092..2b584b31972d6e2af17a2d4905b72bb4d2fa3f1e 100644 GIT binary patch literal 4023 zcmeHJYc!N=8-AT~%C4QUoih!M6f*|d+h`odIGdrIioLhSm>A5#%)}TmsN|F=QH%~$ zGKETEBGQngoDUI_93#v`Vyxu5I3-s`#6z3z1^;N?D1%8qKnW#7*^vw~l+2+V002&Z zvDZ|_?6&obt`K$cO%90+LsL)WVFg~UXnFQ*q)KSsbrrrRH;G8w`Mo=>&NFY1>bSmR2ww(v5n4A`eroOtne};Ie23Ih zg0sESRqUAOu8LVNX@^?BvmtLz<|}1DwSt(el=!Aby!ENK{n<0|bO@yodpxb(OCW=K zS69?);Qf=$0SDeV+A3-3%0s=;8&&)73&bk`l;6#^x!hy5PU~9Di8_j@Kb!nX`%L(f zyI|DigA9Ywy-PMKf6lQ}(G)H}+y-E&V;*)fjc;aOKYSsk9(y6xL><0&(G(wwt>~AN zn1~GQOxdACl|;Yb8i;n|T3Kx5@X z0wEujb+k~WOB^cctSgqIA$LD{x0|J&TJTke^hq3UYm#GDzI8#e0RBe9bB_bcu_N>3 zWqz_$3j9je6Mf$%zQi_{TjQg*#`w;0o#LHR{ZiUaeH?k;fq+f}YWY~PN2cp>PeG4I z@wiX;kSJ}ecKX}^Eo!LQTH0wU@t6kpk|^y^W`a-1#RfRuH@JtnLpfN!+rDd3R#>{b z;HZziep=X6f?B;^9{g%&68lN4ioN(qk#=nSc-q-tlQYbjn#SiS|gzmajBWhL68tXc2H1()~pnyp4OFLmOG9osWc!qf9M+hqvbp-+pfBg)qEjZ`D@{)REasd@dlr- z`TI83BrO$OE1JEr)NQtv@!+;Z$Di&CC3s@~wd*Ze<=k_gK`(M%sycU{e(>yD<*_Z< z?S-L@y?d>6w6g^0fLUq9FT11YLBh}5iP*YdWBr`IsY-tK)LX_+&q|dlMM_0=n^f%F zR!dN*H~&RvY?rZ$BUx)+sX0adgF1rYmySC}al2UEV-bD*u}GmfbXnsyPv|vJs3kcR zBPh~)wvg}_q>3PD2tVU(w`h)D-aUOzioEW^?sv%)>F(%8VM=h^tm#xj>CsW$X&@l) z#_3bMCHWYBSex3k$BUk(?FGmKdlrzT+NLaiG&u2p!}+}5^G-b>o z>hbTi=Mx^oMgvC&rp2%=?;BxZzYUK;dHP%5wisyWo}XEkXlvyUwhkLvfK`n6Kg$<| z!6vPgFHBOMLadvN&0Ck3GFI2LdVfX??W*MISO(|9ON;rvdAD5JrK~4f_LTGX?Gunp z)@jIzdTw4pou8TDDEr$c_Ii7ciJ>eYeIeJS?*o8rFa@lYd+{!45}k@52GIS<2o9A2 zssMmpmK+9=6hdZ0{mFq88V2^Zsul*N1Yls^JMo5ih7CE0;=pB+-MIu05;ufo767xf zklV#Ug9KDEn+WAlLuo8D2Lt=giw56U!blkOJA@sAf$hb+L2c+vGSmcNf-p3&0)FUCe+3=sh^Q9~9sY0}Eoa8E7OjA|e72VT_w7jZpJ}o=y&D-5|SKBrjluF z77~R(A;04TNN77clS%}?r%;K3WF&(Y2t%%@MgEWr-X8hS^;b0f|Hs--R^{=UU2Ar& z%7ImZ*RpHPu2ng(D)3r%{k!av`)>n9rh#2k1lS${-(s!6)=J0C#lu!~JEOilv%Vtp z(cPSmhnG4VFLyq=*4b3r^|<7Dd&NNK-J$Lp>W30p5HIHMY>xvHr8FJDjV!}q9}58F z6<4Mhki%C2gVJnAysh-GytJaE`9gZqVK5Zoh_m*P>9tL{sqnxMf@@XB^#RH=>C4*A zm+&_I5dGmvBMAdz9Bv+vp_$cm&Ixn}%^8S}6kOu`kv1S4e)iOs_okJbytTDXE+7BN z%O>9}Y4T%ruU4$7*Z$v~iVt;+=gh;iqx+*YtQD(;nXVN%)_&j8IyT%U8_nzL5n!MM Nz|od~E5YuM{~LD^au5Ij delta 358 zcmV-s0h#`{AN2x|7=H)?0001xk!Usm00BHnL_t(2&xMlFPQox0hX2#`V$exNL?XmQ zAHZk#IlMN}YaziP8MJfVFxgr!&K$TP{8y)^J*WS7T6%eY0?QY@WGsZlfxNHE!X0L$ zS$*u~CC<#g|S12gTPs_|nRVb+} zNL5I!$V_8ksJQhuJaUqXI?vzdB6dtdLZ=HOCUM+9aQu7n=~wGky?iP8`?%n`H$EPW zlPdg!EQsXz19dunkTUhh46Z~fNYI&vPBo6SqN8CB2V=sR*YRWAI% z+86DWsxgAmYZ&(4hUpHAqQoNK; zZ)aKzOStGB%Z{JlT9@55c^lfb;SPuK%mqCg9z8XB-?G2>ZdaAOqF>76UeP~~1RDyH z4b11wV0BuN?^F87TK}_R-W&ELS&1v0#YfmS>w3EeRvno(+s67#u=cTa1Y@>( z-Z1Nl(FvizBmNUQBu>2w=~-39D`lGb?Ob>G``QnS-JU*ZV&S!G5pd?R+@%q?xL@(u zj3mD~GF~&(<~Mm7E}dfBleXeq#9Tw==ZB7pYDU#?s!j_ja{UpqGOCu>^jb*q<7ZNr z_Wu;~>DJv^bFnpG*ON=9;~#c~?<#U%Q+j=A_IKMaH-gWbXV1QRe$7SU;`q&Ov$r0c zai;R&L8&8(GNLA@I{D5Wkl=3oXdvO>@cF?RH=&0I?>so8<`$&UYjweQY^SF`1*Co5{+AL)c@|hVED)D##_(GSt{3}rd_o-mlbTi`DS89 za`aPPb<6d$9gc5mSSanXQ?{n)jL-RP2K$xYtG#Sijhtq)|H-Yh7iUWZ?w@*p_uAvL z_VWn=J4s)|yBtNcQe ztFn_VQer{{GxPyLrY6b zeFGzXBO_g)3fn4M}uoLxJU{Ck`#}ouF>EkDFjGTJesCK@tkT5=Y;3fB5c zc19|W#;T5HYFmVkH3Ic8mIV0)GdMiE0qlh`FeZ7syD)UH%6b4foCO|{#S9GG!XV7Z zFl&wkP>{XE)7O>#0XMramwKVl4=12dqNj^v2*>s01O>hf)n*S?Hny(`Y;0<6CwX{g zIS7`vWwP+M^EU71L{DNtsw1DIbHDkt|KEcgj)n7A<8mvfzopr0Q;RXbpQYW delta 387 zcmV-}0et@Q9;^e97#j!%0000V^Z#K0000JJOGiWi{{a60|De66latX7AAbrN7Z)Mz zvXH9)00B8kL_t(I%k7fOZo)7WL{I$S6$n8f+9I~7|Nl7^+bVsiRY@S2#Ie&wN<~G& z7u35e&&-{x8Tfxe*T-fR*Rwd{WJ(Had3yeA#fr@;uDe9a(&D`1))Fy|#yqa)ts+WE zq>!EDa5O{!^tEmkQCi`us(+O{jmB78Ax5JCg|z@zB0a6B>iUZOaKFIhC!~;wm)8&O zmNQfkv^wc)eMNqI|DvjE3TvAb&X$ZR0H~bDd&hdcWSM4*-}(A^ZISQ(QLW`8>vymNYy3 z>4dtxcbn`2pq|AMS}UCMc;{KnW4!aES$@XcZsKMY*FD)JFpWY0(kyRnqi7S@CcB_? h6)I@(d2TwZ{0&U`r(qOFyu<(i002ovPDHLkV1m&Ewmbj; diff --git a/mods/default/textures/default_desert_stone_block.png b/mods/default/textures/default_desert_stone_block.png index ef7ba5bc64680852d603ccd62bf813759bdcac58..9eb8e92434f5cf377adc6c24624060471499373f 100644 GIT binary patch literal 4368 zcmeHJYc!PY8XlFLB_t^t-TL;Q{ih%M$6m{`*7LmYb3fO6z1MTCd)@2K^}~6n zDeEZ%001>FPjrCnsj)H@*UDCNs||PnKt3}mkSGWsCjhxT4ucg<2MQ9obRb>GVgLZb zp&CMzbktmR>50XHqGwKjtgtDPQ}>V8@3y4jZ14@@Sd(y4`gn<+hd6EdZtrhjtqaZT zcikKpwR=>dapUWpoEuE6MiX9+zxV7N>tnV}ZBiySX(IhqvmMho zrQc{vkp8mqTS<9Z6Wlsf=&+UsS@7-~q}fF=Oa<@wNx$^g*rB@{qwb&5w^oR@o3Ob*yOq|*Yd&c1F$?JQi781TqD(<`$&1{ImsE`2L({q4HG4@#|kZO_P~iNys9uxG|cOelrUd)DyGNmL9es{9LlAfm_?CyMJ%?1$}0 z9Bm8v*u2={QMpe^Gn(6SK!f60Se=nII9^47KGemxRw?1l4&pv}TJYhdYmdQyY~x8T z0{7-=hlGAMDJBMtMegXjcWW|84c6Ct!SL7#yBDEzR@Vol*`c>3CZ%_V$F6eQEcN?z zE<2N|75MiUhjgOKp<7ay+w>%_K3ZIOl>0%H0o7SEde=5R>s@!5x^ZiHQ+HXx!Kymd zzK(d_j=1*wr|c-n&)&|o4MP&~!OJ=J%k84c-aofXF5+HNX3B4Dxbi%8=2*+XmDYlb z@Xc9|37X!GUd?FHjZyU%_KNv#YeuB(Pw_oKq6T6m&cMVf z^EyvsTU#T;fo9Q6rnQsV+3s*%j}(zQ+?}UoBr}YLJ*A`t{jCzhMp{RO`_WKZuF!6 z*7xRdbB3mFjluD~>C;x?)H>M6^_qUYuKkCL(o8>ksX5{^fn9>pXE=j$-klM~xsuuB zBRGu;dtyU%jC@gi2l>O?rid$38)+%$b?tU;zmIkxIkC4Rg!^W=d}?db*rK3_u&ndt;DM#q&JIHTZLh=^0kwjVE&gs(X()#9 z>zv^%y<)>$Q^0fW_s1v9_ivNS2?4w^OLPnVf*|>onC#n$-(42Gu8gBKi|_i~vnh!= ze}}T?*sQBr@a0!kccGhiW6i8BdW=Fc6Anb-Z}mIBAL^Pve9eFRwOHw?@Acz{QCIR_ z7hD!n@~40a!nKi!=P+}oZ|RKnXATdUis`2N?N9GiiZl8a_4vY#szl}jSU-lPrad3W z=zKc8>v3(G`aQ?Eg4$`q(ISs0nFTk7q=W6=*VZf>guyPQ$?5nEbQyZ|*2$`J_($a-RM-CD)1v4V{rL&PSncKJX-E~Yj^4S@DV{k}gW2qZ*l_OJ(jzHK zzj`vujXYo(%(lw~F`XB9pO?;ELRz!6AC+C5dISI{MY3e2pNREAP&sTcnZ}{e!9q4y zCISFJIt#gEY7|`nq|lkH7$?xj+xI{~7R?DnfMKn%TsL|I%QJ~b$0y+esYy{(2O7wE zmoid_kP)!y0y0p@j*j6YgifFzya?I*N*DqH{(uOgoIpgZAJC1%qXX^0c3^8OjF1&? z1KOnwMDl11L;%|TCxvY11d0#{xCjU&At3>rU<>B(m=LIgg9F6c24Z7lB|}*86JrEq zp;ZjuXoce69B4Y9%9AvB z{w9}jUA^VLOoJT7+XD^Ak=OT>ZIrm4Bt8J3qO~&R04GGcvY>*%3yV>BqoSatx+dBu zKT{T}@j|->>h@R_sA#qVRngUf4|lYfrsnyd?w$OT6A^yP*2OgOqbA!oG?qSioSmMz!=0hJex^erKqgWG*>7q90mdVyDowl2%*<}A8gONy$I9nk zg?!D^1lc^n2sq*+i`^g8FSK{;W%p*oyxDq=h20xZV!t*WAXqXsUI{aqMNmoK>$!@q smUozAhz=?5g|1~RydA!U+Su2+ecDsYaisL2kxV$i3xh+~qQdw63m|L&SO5S3 delta 512 zcmV+b0{{JxB98=+8Gix*005AYXf^-<010qNS#tmY3ljhU3ljkVnw%H_000McNliru z;06~0B0BmcU|0YE0j^0zK~yNuO_E!3(=Zf<|KpKlDM~`>P@Wiu$pY98+hBR@rBg^= zfVA;7ku1y9;^DZadeZ3fUp|SxfBSmwTt)yeB_v8|0*_mWYk#fqIw-@rcEZPa4MXKZ zVRab)Dj`bO11PKp(1n3OweR=V0QlA2#OcyLJk@KhZbO_BY%W=^a)A#uJ`m_wb{XNR zb7CS|Veuw~!k^s6s5=d-J{;AkjF0cc`0dTnA z0Z1ve{lHp{548)T^+V-CLhAYm;7@x4(2p-Rms*OgRtbso0N5BMmh@YrI5&VU#HA~P zx`uJankcb+A4dSITrFglc!kxK3;VUHTo68tdutdA*LgkM?;0Nf9LsJt*9yR?Y~2ur z&DE)F7rnyj#s_BbdH){W8` diff --git a/mods/default/textures/default_desert_stone_brick.png b/mods/default/textures/default_desert_stone_brick.png index 941523ecc070604a7a2604851414280aa37ed474..a603d18fb552dcd68166c4b3fa3ff31ac1da4580 100644 GIT binary patch literal 4420 zcmeHJSyU5S7EK=WAR-`Q06PXjQ8Ph6lMp~i!ep4=V-`YEfe=Vy2qZFzpdyNhpePV# zP((pQnGqC$hk_$E2v3y3;Dib&Q*h{DyI%kFk01TfYgwyqRo!!U?b>IryH1@{S7*Cb z$`EA`2(-$Nke64ucsEK>7Q)02B~186c2w zxXR0~cH3sv&mn7le$&u6Ax7Qs1QdJ{atG50mTfy6x;)Hvk~5n9e#@I5EIhv?gETry z#t;iz8-xy-o$K>MU$W}yKwLF4TJWsSg2aZBe{^R}6AyZWV(R4LHq`4lcD|T$usLm# z|CsDoaf3A0otT%S(t_3o?;kg@Kl$~+?VE;P$B&IxChka~w#5}+;Xszx9(~fJ!GNt- zo)_Q$^D|~Ku%P$BzUWlVAt6<+y-`J-&7YKPW*kt*tviRC)<3cD;qmy50|$2LqwHkQ zzC%;=92@GNjt)@^e9_T&@@)d-L2Ks!*eOF&@o{m!owcg(fZ|T_bk-OaKPID^vDM3D zbK~B7$)cWk&Lt(xWbLdTnF(HV^s!QrQIl#dQA?tvQCxh_#kuE_^g(PBbL^$+Q0syDdR=l^q3m<)3n{r z@ssKP&_WpL7_zuC)3Mq=fF$t>OulgCT&}K}{RM~qNx#r5<=HNw@A&6MF%nbJ%)sz~FD{}KNR))4+w%axYlr(uS=lG_M{HA+3l(aHe zc~)7z$T1&{+H&06rMa;sXW5WL76;CBKR;`l-~25Z+ke5YFMf7jhE-P>3!u!e*3iO6 zQadJ36CLs%DPK ze%s?Q_YwochVJWAU2jqhu;e|O>pNSQ4-T~Am1-p>PbM%1+TX@54={Zz#psdYNs8_W zL^r+5+(_>Nribw!u`pYk9fHR_Y`&%~JX11cE{N?rlxeB2gzt`EHuy6_6(Qq#ht+!Y z!ywDv6_sT}c7)jKglpYAKXpk(>-=^xZ`xapv8*)R86^qgMZZ_heHkN)3CJi740lS` z&U8;ujDHlCaCGRk>a|lbE!o-N8TM?B@wq(UBb-kkKd7*@$2UKF*E=xu{A0IGuad@5 z-?Wmw6c@cAS*%Qi{?aimwQZ$$igi~Z1*o36hbKJOyqJ2awRbMI(hxqP|2(Pf%f@zS zhyE>#Pm5LX8I8w=7=Oj`L!@iF*q7+Uwcbj(8dmh{b4O;A-r%-^XkTSd;HI30IOXE1 z+8!*<^$AZ65FVC)Wm7RRc!M4mTcml}a2tYnHNY|yM|GQjTie|>U;R3&Vmv5U{R|$< z3)mPp8r3MKE8#PExuormDQ^a+_JFz;E7qhbV@XLKvT9;x)v3|_0R|0X{jqmtxlT{6 zPLV`utz9Q?IUX)NN)y8y$7cZGBne)Ba$kPwDwMc$v>~u>qc#4i*n!&?CjJR>A(T4j; zFA7bn-|7*;OV-9ns^+P971x5OyxFLj(Gt_uvNtbuBovz0-rtsd5lXQ-W|+kD|K&!cqfd)`mI(h76A_6sNSaBQ|7wu_|i&lX!)YRJJ)2ENGyAm5*8; zI+br)xk_52ga2!BW^(zomEufDy|OCNT2*Fw_f17-y~Pmy%t^fR{5rQyHNfle-sZxL zDzTA>oelZoErd8JK?K03LWL3G>`0uD0Q=61lRmG6kud0Y2%klOc~e}W zwj3S+#UL;U6r3bvMw`Gam7x|qIs@lUB>$k0&IqtjKA($2A_W2gLSTyE@IsJiEEbDI znIKI};8FxUavz&d6~ft(1}hZ*<{$!*G@jHuCWj4O;iLw0qWA91(` z-ygp|@>3rFvg?;!Kjpwrfq(6;Uv~YJ13v}+wY&bm>{9+u0|l_9U6VlC9)Z3kT1#82 z4AU|!hwTQA+YMY%hHfTCo~E0<%#4HZa4H@ij7QK3$WUu^m^GTU%Ot|qlx>UQ z5HVbmStQw~fQvfXx>;;gH( zw_UiDejVGbXic9M@O)o!%b<_8){QR@c0AYBp43RvyEsv)gOOp0Z9iOO{dF`*)qczT q@|W>pNkB$gVzY)(O%=xZ{E@&a+`17+AMT+v36KNHnOJQTl=Lr1WfF|OLEjO z5Pj{)`uHm=BadxaQaoaz!6azWrS5)uuRo&e zuU|~>0CYZNgmhG%v~nDHp|yl2)bc zd|)Nduhw(j+7wFZgxlx_z`bb!D4x$0FF0eJ4_j?c@&BeLx0dIL5r{x6Je_t&TS_gKwQ@ zrN{xC;#qo8NC1knLh!i~r-;t^MBh7~0qk-$O9Z;J%R)s&0QFzib*XBR%be}IAtBk# z_8}rh0Kg9z0PWyg7v3%Etv0vX5GczCz-DIv`~mAK`ywamaBctq002ovPDHLkV1jhw B>hk~q diff --git a/mods/default/textures/default_fence_aspen_wood.png b/mods/default/textures/default_fence_aspen_wood.png index 7fb624dc61a53ba56dad4774846c2cc07bc2f08d..0a6558e0dd540c32035ccb2358516339b9916ab3 100644 GIT binary patch literal 4170 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 diff --git a/mods/default/textures/default_grass_1.png b/mods/default/textures/default_grass_1.png index 5ed8388bb5d5730f220f1987898a2e6f48b0fe98..c4f5d9588b46ef72b8301948a7c52b23e943e4ae 100644 GIT binary patch literal 3643 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPL>uB!@(C<#g|S12gTPs_|nRVb+} zNL5I!$V_8ksJQiZdUV+n4W739kwxaRd&8<)5k9~f5 zC!lB92lY2QypJuj?owdx4BDXnX0OC=<@>+ZXFt#TxUypVmk{gtzBoDWhcz~AA6L4$ z`~O-p-I~WfxVrmK!NWz?N0#5}y?9BYwtrnqhnH(P+gGzGss{ynn%3kAp536C60N&f zm1kp9#Ai_({dn2bBq4i^fW=PDzpTPmc^DR?PnkVa`}8H%DfY#&0f%x-Zm4({Pdc!w zX|}`Ja=k5&o{6pxa(d#nA*IRKso(!>?b1J!%dDl6{R)-lzl&1TpI0oE=~Gn9ug$Qq zFl*K7eXDo!e?C^vpslcC^%+iPoqxCV^p<|#soK5yfM0Dv-F>N)w-yea0?`wB(h3i# zCAl$zaGb@Cb>?Q4eGUyFJ10sfC<`&Ff9&bCb2~k4>UODqv4(&5H6-^ai!$>d9<&!MA-Z?EQ zZ)x!HkXH+{`|no0+Bv;(r&&tNLS;Vb%qM|)S?#ZsO{dPaYO$^=ppiyUUCAKY3>I zN6h?R-<;Vm{_z*(EwX-MSNyvvYWDlRyE@+PF1U8(^nvEJ+RK~%FSvDedg-J3-!J}c zd3^dJ0&een6184q-v_IyDbf3!etz3kZS-UPae3LlGd%C)U!IjT#m&*v`%u>ciyXP` zk9VCduIxK{Ak%wg$>Bq)^2<}#-Q9k>r?g);ePNv67X9osVNQ2%idg*CbmmM=58Jpb zW5OMtzM9?ZOg3tqoPJKC>*}m0QRTmMv+_3OW^sLSoIg!W+brw4*^6n-4}(+ZMIJ1F zzU{#CkJnsl{GM(*+T!|aXVtFV{(p_9>HWA+`k%?@$`;j)KWx4NGh_nRoS0cqk_^g; zk5B1ncs>haU=~)^OXe0<7WSSj!Yr)N!hBfda0;_>amz)9tdjF{^%7I^lT!66atnZt zU|_JZuP8`N&Q2{+NJ>r5%(GQ`zk9!uLS~AsQn;zFfp39xYDT62(s|s5su(?)1Hb_`sNdc^+B->Ug!Z$#{Ilm}X!9>qQ z&p_9;BD2g$$&O3GrYI%ND#*nRY6OsHtCUevQedU8UtV6WS8lAAUzDzIXlZGwZ(yWv zWTXpJp<7&;SCUwvn^&w1G6G_TOKNd)5isO3^YauyW+o=(mzLNnDFNjbpoXU;!_6)z zEy@9#oRX}cnvVRe4_2R&Y~_|;l$!|DpP8GOo~mDvm#(A_a;-kpxj^6R z!@Uo31MR`6B_xIMXmE`N7fB&NlH$?SH5yzbg#by4M^o3(3N9{011dES*lH>VHjfzo zH#h*BRw@BLA+A8$Elo9|Kr^7yIH=mduih}e!PuwGEOoM3+Elyxh1OL|o!=WpMgi3^ zmIV0)GdMiE0ql!0FeZ7syD)UH%6b4foCO|{#S9GG!XV7ZFl&wkP>{XE)7O>#0XMs_ z0QcwTc~w9m6;Bt(5RU7~2@)I!&Te4z$a|2M;F0h!C5`>Y3qVgiRl?ga&SV*ES+AS^FG6K8EbB0}hI#62kLRS}Yd zuQ&2S8a2yl2-obhF0#z0pz7oc#Y_T*2o_=e7)iF|$C6~pq0OdhzMxhK|Jw3Uy= z@Q|a7+6MQ9R9j_Lw+-2a$dv5UqGKD?{gT(7yvT1yKe3Hm;JFWW=z&R21RJhV%^g4q;6VC?%256(p286^;10;p*HtYl>@&9hX?j-#4PTX*?ip_Mve{* zZ#suP>xPGo7TP_Xg_oPL$2SurJ|jQG=rVYUccaKh8O{%2K(Zam|9&Kyy3SgNh5}oR z=23M%CWzd!!(odJqbPAv$^_C`303Xt>(f{WvTdJ@IW9V(Z)oleF_NkDV_Ck*d}51G z8Q0Qm1DR$u5Fh!#lZ{9%I(HPFa1!{-`DLq09I<64IIK9~-jDRa@WkT#+oO&k&3xm< ztz)axC$6I}YqUlrQD7aAPlf7pa3Ry&hz`D(A0!y8SHpbtL-S#z7JoB^VX8>9=jIrWqkK9?RpS4mfeLVId;*7jRM-{ zXK}rthIk|dxsBvj!}nZZo8t)AJGS5uVx{UQ^79EA9DJ94!y-?3TcrJl^N+YTs}r7N z5c?hGEtC@zO_*xsFpDX#RIA|4ZQ&VZ-HUDgm2pp!0`80Do>{vm?8qk(J2At(5xTE& zok^GAC4lD_02e<#bAhLgmlIK($`bdi0-ls=`br$5-|+nIoU~eu*~N8>GeWF}#%GIG zQB!Z`Wkr0h_?&+$bUQ^m#>aTK5L;}7g1#~LRjCou4$^iDy7*+*>`%vdmx@X&?i(k;Yv1Jc0WjFqOi-8$_R2t z^n^0b5 zzIrkz-*vsqw2PR=oHk$?Cg(4wDOWbAT@Eg{vTU`irU_x7bUnH{-I88HvniGFs8kzQ z6Ib(lVekU3ChE~H%V8KhYvhX3K!IhmWPe-p+$Jo;ZvOUN`;D9JCJENaZM$_!5Z-RV#CO+A;EOLUf8SL{z!&J4(CRyw)+i1e%I zd2yvx5qu_9(iG*aYOCt7iJz6C(xnEa_HNkTNXp8y4RYqZL$l#R*_VVM%gr%&>U^j0W+MqZYUts#7nDO0fFny3R6z3D_ zbL6wVti9Yl#69RRB!S^qKLh3j3xg-Y(44n9pqzu8-W*2lhCR>wOYdR!jrPIg+T#M_ z4mHrf988symiDdn=RQ3A^uih&#SJ>^v^azRaXA z(XsmQnxgj?`YWgIjV8Fyxutsy`lty)}B|8Q}iX?crc_Po8-eF)neVJsfvSX)3%pwCR=mj~?I9fk!sn4*|)tU6pYPW$saXccKK*?Q@H zOoAOU8W|ufrLM8#y_BmmQdw2W-W{67orNRZc-#@E8Q*VMZ=7zNjL1QdQYhl3XQ(O5 z$?Zl2V@;!e(uOTLf*O{5+YHr{pP{V~eCMuHX}x^t&U@N*wao2l zQs8^cfG9shawxl$0@SA0#FwD*kXU z>L&wtYd?QUr%P*WD|VRga9q}(x@Hl9Jv1}6>_B>1FaDC7wwiR>bMn^(pM>q#jMH@5Q&U~Z4 zyKiIegmzr1$3`_a_P_nGCiCv)_@DQO6YPF$+5w|eOJGOsu=|~urLQ*`xmf`RKO3SW z#@4=E>t6qP{^?oqPu)$|!j*TYx)1FbixPfe3DLHHk;|xgbZN(~?#j_mZ8unu=U`OL zy2%oe9bG|QY<551a;0p@9bo3;mJtK54(8}`{pIKS?_59kuwXMXx?#zN?#yWX9<|vT z(AT`%i|9*ko@;j8Z`{fF`mXhZk~6NKtyd?SxaS#7+JFCb;^O+5^#{|&l$Y84$M_?Q zUDP^yM5fuCPn0Gia?Hw{z5Q21jF0y3OtN_C-_!>H^3%ve6!Bk%pplk00pNiY0N`T* z;Naw+(*Yn<1pt;^06;q%07L`QoT*0tx>OT{zI9lh+uxHDU1li&g3p$v@v;CQ1R3=I zL0g&zHBa9yoDecxWxPq>1C9c diff --git a/mods/default/textures/default_grass_2.png b/mods/default/textures/default_grass_2.png index 0ffa8fc2c6377b9501954f70305ec6ee0f3f6fde..2ea21c749d5b1ed3d2addc93931f7f1ea24ad1be 100644 GIT binary patch literal 3695 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 VKOYiL?f{y};OXk;vd$@?2>_`I^!@+< literal 3065 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 literal 3134 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 Y0JQ?YKfQTx5&!@I07*qoM6N<$f=-O_WB>pF diff --git a/mods/default/textures/default_grass_5.png b/mods/default/textures/default_grass_5.png index 7fd6838805d5e6ef99eec788e061793e3eaa7665..033d36f9e54a4d83699ff66e2cb2af43042bb8bb 100644 GIT binary patch literal 4376 zcmeHLYcy1C8{UL8#_&3nl8lk0FivU4xeQ}symA~Q#>~cG4rT@uc~Ln<6vpc?QiMc8 zA<-*2R+K}9ltYs0HB^#QBsluTdTd+v-f`P=X$PvJ=c2Hz3=rTIoM+* zA=@AT07&9&Fph$!^m-HDAh_?=l5zq7(e4Om0^5-o4regwew1Jk&OXKf;UI_N2LPOB zwQinSGrOQ){N>$+g++YPCXepHYQD%>e;#_FpJBWow|YadJZ^`JjF0}e6;`hK`w;tz zO}w426|~G$5@sM`zKi~A>5`pZ$}?zASIZe6?j9Sl!cSsg|nBupq3M)sob&WvAu&>Tki)w`K)PkWs)92cu6R%1O70{pNgM@P(nx&1JibQ(?l*YPjxiY} zf_|Ar@5Zs;7=?MJ6pLbXJk(=zXC%5Hv4_ny!~-u^P5We{nZ6UR!*IbQZPf@vUhbmbb3|=Fl}!mfzvh?%VU9Hw8uUBl$kT;S+ZsuO!7$ zR}S;!+(s}%K|4X}@8+xfnvFlK=^M1>DEv`U`n7lXs}64dTPKv}DLVpqj!D%n(D6B? zNd?x6x~<3eO%(5EgX>)qx3r%-Qz8M2_rqs+VA zgVI=9Q#VpPAfi}T2$IP9PfA7V-s!aw$0<%tdIRw#;n5BGG)J?&1diJNc6_8J(Xq`!4ETlb_NYS<;N8COn10 z)C%o`|A^6Q>gDjP1Ls!^uMm&0!P`nvx$MtCKBEx&`ySeJvL~TYj&5I6KYN z?VT@MmzFYkZ+`EGiGil8(E6tmk;5%zwa?OeTKG_-yUDo+I)bt)Jr??Eyuvlp7BR|P zo$b;C=L0rot|kqjJnjZ(D%+6pLW$S2k|YsHo;t)C?5R=f@MAi+9wW8j#igstFNN{b;WSv@5--y6xKz^4J%b9T>^kj zffT_{gn+j*BGIYZL^9nM)aFnb0u=yYV$NX@NkJeR?hE=;Xr_p{#%2VZLN-OX?ZfNf z8J1uG#U_FYIz`w!lOlphXfndw3}V7D5)e>9HWALD2GdwZ98<)1UL(Q#dKig-e}}Mx zOc4aU1Kg6%1mOnS2HHAWRvb#09>NR)H(`?fj2to6KPUt}Q$zrp%`ieD!^6Y1!}Yc4 zOn;;<8jVKk=pps=v;+t()-f8J$kC#)RM#o~&4B?~B&NVR3Y`XD=Op^lL)oSXgkT*0 zgPctIhno?~4F1kcCLzIKkP6b+ETpcsF7i8`Ofs^jGpR(udfe*|(}E%Jw4 z!RnF!EPq|Y|Ni>*k)QJTmtDW?`Y8u~3jAw#{j%$)9QY~luif?kWf$Z>1r$gVR88T6 z@(5Uqu@ID2_6~N=R%^0`8V<^OE^xGqiXj29&r8jatYqz{X3d5Z7#cPaNXJMW`)FN4 zw5oTEzFoYbV1^0mccfJ9Lx8$o9i!^WKj01~q6O$f;4DF}ia**Lt_#&L;_vcIY5Vzc;yP$CX< zz*%7+H07|2unN?&D28}oOZ)xG#pcTzsYT}fVd8Hk?yOypo>~h1Jp2NTUj2RCEaz)0 z)Ej4Zqn972Xjl=`@FWDN`2>0R9N23gp-DTUV(5VB&)DJkfN`Q{<8Cq!bK@0d=wM+W zVId6x)$A!uxqb*^f~|Ow1;%m%l8~1mLXfF_i~>PW%g0 CoeHi1 literal 3269 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 Dt1U4% diff --git a/mods/default/textures/default_gravel.png b/mods/default/textures/default_gravel.png index 25a78b648cb8ec757679124772b0382c6804d022..8852d38486a58a7cd0cc085cd1ac9de075fb6107 100644 GIT binary patch literal 4715 zcmeH}YdBPE8^^~fOpX!7t7Z>!Xfuw53_{4+MC3e2#xQ3L+j$tLF&IPS&@QJ=4oT9M zRFWwbWut@+LLy|7O~t#Wy|4X#dB61G{qSB_ziU0~S?gK%`mg)>U(fZdJKNLUQ5viQ z27y4*N1f~uKrbg~5+cA^TTk{F2qe}Y@9jrNAY&n9DhY>=#6swCWGn>Bz~ew5#%O~t z{^|TasW1IHR8bANK8iuyQup3jt7)f;jGY41t2!}bN$%&sj#)jOz>~JTf zSyzp#Dd&qKw3h}wHeUDyjl2mk+mMbcH!JE&?v*lN{c7AidB{6q>bd4EW`S*YCAk;z zslIbT7~OUEapkl!qkc7`k~F&4>I~UxHhm?d@Kezjm5#gtWkTB@y*61^pV#_TV`vyBNDTVFW01 zP2b_>Zn80Lruj4YRnyqP6-tnad8P_$yI5fKlG4DVUggox!<`}ZX_ey0eF|*(<6qjx znk=^ZqNN^PM^x}nGIxG?Q=CFZ8(v!|6|)W3t!w!>e)5+-)h&le5VHlTFVVa{XGoFk zr0$Qb5}D4Bu7*pYu3m;>Q4NpkuQEjC z8@jlg&u|GuO`cy(4cA5IYU=}2n>#gir-JmZ4i7iunX{}RX=DG6Kf%5?-a7lu#6R&Ef$3)WYQNNksmu$FCyTK~b z_F1D!hFs`Rsp^3$CS*9-h7zJa0CQg3bBAxNiU`c)^rRbJ+vYNO0&RU=zjQ4jOQq}y zIyjH zyW3&=FUygK#C)G67AQJ;`0>4rjjBQ;rZi;jYsK8#dW7aK&)Kz$!ev5?ctQ!yw_0uo z(o-{yNBJI15h{k{F%{D>1m@D46g6%-Tk$_Pyy$Vl3~Q;S;ddCt6;g??ipxms=VE-S_Fd|RW&YqJ)$$*(6` zLwD*nea?!mOn*bhD&0=E@W9uX|EdNvyBmF;;N5X*r@~-r4-z8ly4ajbdtUc9XW9H$~V#ZOY?q^Jn##g$AXMbwu6<&Bm1W z0TD3%K6~8?@w9cLXlNI83-cs8QgK~ovG&8U-ISYG)@hXw;hQ14vq_dd`6(CWCmX`{ zx-U$c%{h{}Ld6Rw&lXcl5Y{F-YK~fI#~go5eqBj(l1&k zm&@Pi_E|gV+cB;=9fAEEsU;H(d+hS}+WQ zLcWF232>;NndHI-P6*gT=c<-Elc-@ZLvwR;n1K<@$Vd-}(4)l>=}3kik)|$?_)EhcOG8ru>+mEZM4*X8k)r8v zC=_@O`CA-={zsb}O^y7fj6uV&k=Q6Kkxqjd>Knqo#beMG4kT(65_lgUg$%>O$iy%x zOpqSfD%tZKc?NKtiUTuHHxd{QUg=1HTaz6c_{$9262992^=P0uUM+8iEW(p->nU z8UTaAV6j*{7K;-Qj>AQSg@uKON8s`J@CZR4As~uCAVfw+MhT#j$z&RZN*54Krvr6U z96&;Re1d?KL;=Z(iOi&=q+|iiq?EK20nFsoB3Sj5v7P8sw>^u%TuOKfkkIi9oIGp_ad`C@HK zwP$P29?X{10BTbql#8Q1C`(Mu3Am9YJDs3`K-(1rO$cD+q3%v^!&7Ri9?i8i;bG?TImgN zUqLl-e{VzMi);K4H|3<&BOapi)KBw!TU|~=j)P$)Ei2>VwWiKXGQ>YMf9o@@F`HKn c%vhFvC}Z)uQ^nICZ~}Dnh`W8GZD`uR0m$*S;Q#;t delta 3553 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 b<%WL&Se>Ggd>a^j00000NkvXXu0mjf-Z;&i diff --git a/mods/default/textures/default_ice.png b/mods/default/textures/default_ice.png index be8eadd9d22e20099c1821bf2848b6ff447988f5..2874e1e337e39527ae63bb0e2c4246897f8be854 100644 GIT binary patch literal 4114 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 diff --git a/mods/default/textures/default_jungleleaves_simple.png b/mods/default/textures/default_jungleleaves_simple.png index 7165100c7ee1b526628a81fa387f100fb30a601d..c60bf12c5bc43d858fded91ebabf3f7f91998dc7 100644 GIT binary patch literal 3899 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 O0B;X}_tUO%MgIjAf}qI& delta 705 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 O0000d>T5Fmreg@j4af`VEZN>L=B zJdmOfR1g_s9S|xC0wNGWP*j{y6p)H-k$3UA`o6p`es~|=THLkHJ@@Rh&+qQ@UuW&L zPhKF6tfOhB2>^hOua9Ri)a$M`btUL+EsLz=pFW zoEQL*jMaxFB+uAre>}InSFga;rR0YcsYr~zwQ;YTue6%$G>Y>sS#&?4i)_kV0hh=~ zY|jsmbu;ECZ%h~Y7w6UiGJZg+Q9S&;;>V(@F7lr8j?zl4`0<5KEz0I& zf6gGqmqz7j&S6K(k5W>?4~_Yk7OQJ|-=^VFmN)WqU?MBipptN_7sCcu7tktbi%Pt? zd1$Y^p|5RMp{_Z;2-FXLo;7~=@&sF@#6O1M)0%1M#TvxfE z^c#2M#JWXATJ_XUP>~i9?R4+Xj_#3ydVS^NtP5Gw>;0FNjZf{z?o7VYTcJdzNiQwl zzVM#3G*~4(e^muW%GUMJB#b>rkT-f9#&k(-A~;dfbj^ZjKik;d$GbqI*Y{hSXO8BFRjME;ts=l@Mx@Wt)TnTvSWAMwNY&->cqM_WG_?MOU5jl4L*6_TTKe{%hVl7{O#&A)VQQYvv`?*ks-{cTo>oORlqrtL zY~*GS`ofp|QE#vH{kB^Nv*e2l7@SDSU3>>Ta%a*GaRTY_4>r9w(`$W@Q~a}^wTeKmyPTm^S+x`2^DVe|Bi!&1Xto>BOs0kl`e{%MpqvKX@b{vp} zJs$skZg^5Enw(jzJ-u&T#0(uq@-dSQErF^V@db6KqMMG`E~BjknYLC-XG0j(Jqfak zi}&4TmYdI0%3@!Z-3-m=S!&;zH;!ncp4&k3dupZX*zB*?^dV5?!3) z%im=mX|8l1hi!R1Hcd7>VXdZmFJyGKf;X+3rv0qUw1Oe8D^3@zTL&T@`avGjPhP8QMlH&3*-)KzuTJ+GeYAaO zpsKy$Wlj3t%r2c4;`M+eai&dtLdH;5Jx13T>^vfMf_v@cS7Kh!M+b&K6Fo3~uqdM?20BFQ>pyU@$r8qJ9 zTx1lBAI(NexB@5&0C3qR5kxT)*dRQb9n0Yn5pOy!Bj6ks5fO%`qNxH8b{xkiRmi5N z(n6T22}}YDv5lnZB5{HMTs9a5mv9q#A}0wE@rmmMeXp8P2>2%#FoB2&rv}13_(C=u zhr}V#4qg&YG8RG7gu4h?F;2mr-k%ZBh=_;-L4gwrB^Ha3Vn-xj7>mLX2m}-wi^5_Z zAP)yo3J;8uIPgT4tB8LyJlP_q5R#6==fPK*QPKP)kcdD)^YG7b7V~emAW4|`iOgc6 z*okZ|n+J+e7$gSu$)Ck^^5zSx&flBImW!_5UT8=6?z(HV>+r#87zztYo=DrPa1TN{Cl$ zCO{&Q$YgRrKmdcmV6j*n4u{9%@%enAP$&|KBoawlT3U5=bzNQE*|TRG8yj0&Tie^) zWinZJcXz#W6%9fufWb66;QCY!-BtmGXn(RNkgHZX9Gv_w{rOF&X;q$T%z;t?rqo&|L4|61TFl(`(@QO%KP?cT$Ra zsfAR{Xr>y0^*$O}mt`1z;gH#-*1|e|oB8n9`};RPw$891Z?$$YIQIOH-4>-UE^ig1 zapjo13K!xkYqH~D-@Edk5PG8-oEPyX^GRxyg9ns$g6%Hm_*cg7RIX!3JXSC0fUg(L K^Q`->eg6W#;!IWm delta 3203 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 diff --git a/mods/default/textures/default_meselamp.png b/mods/default/textures/default_meselamp.png index b227a2549a5a318153e2bf8c094c3dec905892b5..0c3a1a12c4590a898ceb93b7a34d6adc80bc701d 100644 GIT binary patch literal 5103 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 literal 3399 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 diff --git a/mods/default/textures/default_obsidian_block.png b/mods/default/textures/default_obsidian_block.png index 262cd37e0d58269035ccc4351f3f6f39b21c7d94..7e1d4d3fa3616f17a72dea2597e0c703520a98e6 100644 GIT binary patch literal 3913 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPL>iL45VC<#g|S12gTPs_|nRVb+} zNL5I!$V_8ksJOK@JaXGx4UWI*BBm^k8zuWL?zlGFk$3+#-=d;h<+H7Ja<(ZbR3{f@ z{{Qa3xc-CiV;M`{i|X%r>-2W2NH%9Y%l9(Ni@Dxw$yQ!vCC?EecIjO7e*ND(d+({S zZ2xk5?>wi-x<^GN6>)sI{W=mk+9#i$ICbUouH{>vrItsYv&xmw^Lu=}T0EdDr97kFwU*$68yp^B=W#=ih2v`SNY8=7}Gv59G79d|9(T z+g$5Q!!5y|?+(5@FW|p5d+o7n-*)bLW25ynQ}O4}KiC&?U}Sm2_w zalwnLA`f=Xbea=!W7e@g?ex4o{E<5pT-A3kxT6$wgfG_R=j17jU9Z{AIn8c*nK7+q zx}$TY=-DCVJgJXd?k?+iyb~>w&s12wnEFZm_{$Yr{R-2B&qpchzhrTdlHFO?D$4M1 zTh^+@`yMag&OgH%!Oc=S#WJb!X3piK%W57^leLJxv9d5l?XKmOrwpo2Ij%+tTaq6; zW`4_Q@TceGOgk1 zoF@B&t_2#aL)}-sGR?TM_o@TGzw@bfQ-*`Ol+nobj(`IMis^Qk%cI8v&EvK(?rgaYQjI;IxyzbbUD4w^% zQTEWorr%|YWQ`Tn`Wh=83ebmTgwg z^@rZcr#$9NyZ!S<`g?bUxA_M(8}sB7u1|Qm)*@%RmC@}zTeaPtHl|sz9t?XhFS6>x zcXQAFuG3AA0^3ek-TxVQiP5$Kf?lfg)$}c$?m6axAo@gov;^r-uqH{Mw7 zd4K+nQ+KVcdoI2(s=ApLpYW3Rm}Rfcw=c)jGaYq)nYEeO!91 zDM47jCh=oVX3ddM`zbdk{x@1_@BNE+_WG1%@{^u--u<#jZ+-b8YdLw%Lffbre|E2Z zb?J6b_;rcv9sQ~C)9=OmzT8&(e_gD&HodAB=r3)hE7Kh3MxZi(#L^!v>Hn&KGM zSkZ%Lx2xH;KWabr`0AC%y1Ulb&OY;R&)wRH=TrI1)4mwn%`5#>xwP|t-ywai;>lmW za=z=3_%L$)G~UwsRwIg98uqZ=Zu4o-+UDmwHH9 zaeWgHQ`wOEGUs%uy=Js_%!WgcJ1#A#kBnTEEF><&bvU8N(OWkyPNTnaWtDQQ+g zE^bgGfIM5JjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7sK z5Hnm-i-9F>K}lwQo&w0s#H9Sv5?duDpu7Uq@RVe@*#)IVIbf4hlJ!$_Qgc)DN{aOj z^$hjF>Qj=f-13WZ6M_0Oa}(23^$YUSmGnWb)rUG4=zD#*_d#x;Js7owq%a;0uF>Ek zDFjGTJes;jgNvjPAW89P>Ka`sf18#O?v3r3+@t!V@Asp9}Z`=#yV^ZbO)>ZDk zY^1AhC?YK_9qngk#$w#SaApQia>O~yOq+=dCDpcGx>59O=49iZ|CAMT zEPp;p*}yR&n=?s=ZRG|_&MC8aOm7AX@USo>EY`e~I_+CJ&?*K`S3j3^P6SCQuIs+< zrIY|LO%trjdoOQO7L;+${feC*A3+&JM8xs&&W9^OnV`&Y^}N^@e*l2ta*h>$ zBGM}c=1-&KEAT7nMKJedAD;kl{rTom`Tjs{BdV%$&cQYjk=9w6i(RxE{V<*<%vV}V zDOqf|obP`^ZZyOA`*_pq)FcUN8~uDy9#8B$`G<6eq%HbRQ+mt40CDkOxl$faF)L~t tVXY0y%p0D;^9iCTimvN6W)(vC2R>^On1n&wKa~Ig002ovPDHLkV1iZ~gU0{> diff --git a/mods/default/textures/default_obsidian_glass_detail.png b/mods/default/textures/default_obsidian_glass_detail.png index a8bbec98d877d4df1130847e873d9c167bb033db..d29a7a7160d72dd40913ea4ca076e7af72f6d8f2 100644 GIT binary patch literal 3504 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCnnvn7OJ#B1(c1%M}WW^3yVNQWZ)n z3sMzQD>Bm<7%FbPotE2oM}ep9e{q)_<86uAj|J?O+*@$`z4xId*0=Aj3jMwOQUlWw z#@iomoN4*^_BBs@fJG3G=h@PnLs>!Rrv!)frR|J3bhhR*z?#nu4vj@RgZ)JtlreFs67%tExxKY@2%{;YM1#Z?q9rGb&{Foe8{J}^&0Ab zXCzrf?%g=2KB8{Y>^o}nGS;S_dzW~w@a?)~Jtxjp2lua?qwM3dMa6P@YRKWm61O9{ zSFtZ~bbj;YhCmeivDO(XeqL8rURqN4tye0>$427MjGY_j7_px}WX@9@+7@e`#b5CkJ-f50QR7!_*oW?Lox{DZd0S_& zDwxO@E_u#q|LXUq9b6o*D$n%sUaN@F;#(>kt=;#8MR&%E7wc10UPm+bacmPkr{F4d z)MwEYO{vX-4`pO)v_vc~wec$`gueSQX|e~K%oB#3e)90JekAjJCQ4l z(_H1z@kz>UtGd)e&t|=f+L9J|b87LnJ$V&J16AJkpV zdNX3rlpyV%u#9yPv4#t;HS=3uTIg=~=EGu{t%@~KS+|NdKU+98%)0#L4u7kloz?n# z`J_0OPHgM5$@!tN*stZ*l$p!U+2sDx*?jMcModKgs{Q`Ga#wz+Y*oAE%j<@y~T zn`0tg{A1m@;X1G0Ejs&c^BD0_*8I&t*y-xBr81Vc~=W_E%TCMwfLfwy# z3H6Dg4Z7a@-t2j|DYr3G!sp!_zmM)`H2h0$Hnu2VSTf;twx;g!+a|Udmiu4i@f-XV zxwcg&`XU1ZXI3UK2S)h%SS9D@>LsS+C#C9D=?Nk^)#sNw%$0gl~X?bAC~(f{C7qo`J4wMP`|ik{y?VO;JjkRgjAt z)CeHYRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdwuOzWTH?LS3WCX+v zm(=3qB4Eg6=I1GZ%uGzmFD$r z{DK)Ap4|X;dl(p#yxm;OkH}&M1_Lh;W;|qZ<1tW>y~NYkmHh!XyD*zX z_Q6>|c?Pi(*N775{9I6zg~2y5B~_t3vm`^oJu|o9#i4k4pb8#O7sn8e>&XcUyg;4- V1LN^kt$jcigQu&X%Q~loCIEW@Pu&0j literal 1167 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9DvULeeP$l}IhprBM{ zNJNQqer|4RUI~!Pz~GyhlB!UiS(2gPo|#(^r~B_60|Se+r;B5Vg&?B<%lqG8Ringc g2#kinXb1p9fJK0TQR@;b*o5mk6ic(#bQV0pO3AwJ|)^+@2<~`dGqd1W1`TNqCLlI zzv^#z{hERM^uE})=U#o9JWbh3_PqD8GmH1GRhX{)@UY+OyH8Emwak9H##*I5^8D=b zW(nVi{x?4ANp6?h%%LQrE+< zExFTrCT%#vm2@`z!=0MaDV?4*%N=^TN^hmdu2ed5z}h)4ZJo~LX$tkvtQNKeuGs83 z?U_nrD64tn%<~Z$=Vm{znJSc)*D}wiz)j-gvK`-h`lnnDe6M`8v&L$xQ;bcKR3cB& z=y@9F8D%CF{;p6RxNx@ZTb!X0D{djZ~ByY>>`su*V<%< z$x9i+IJ*99oG`)J)wMbJ>WXEao2O|Qy7U@G$)txEZcNC!cxFmObOp!`!%om&qeT?o7=hfr<&zXKK=NxKaa@WecQulN2P%lHQhVs#g83 zX}M9rSE`=uZ5 zUo@BH6w2IUCiACmR+s&2TRGhty*FtKy#2XO*2;M0y3hU)7=7`|CLf`9wL8;a7|Z_E z?AXtdcI_SK!7~welDqb-y=&gIV)+9^ug4R@$NeJn5A zdF%{M+Xsho{Vs|D_&MR$Sl2!&Ek;zRWpYYOfis9b<4f z*){XR{xv#R4LgMSS|29#nEdjzOV@9k8~NyKXlNy)p|!{@zjs-O85lUTGJ#n+!q>+t zIX_n~F(p4KRj(qq0O$+`1{?c|g2d$P)DnfH)bz|eTc!8A_bVx6rr0WloBA5~7C5J7 zWO`H;r3P2|g(O#HCtIc{+1qj1R9FEG$W1LtRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8 zZIvQ?0~DO|i&7O#^i1>&bX_Yl%Z!xlxD;%PQqrt~T-=~W0C~1b86_nJR{Hwo<>h+i z#(Mch>H3D2mX`VkM*2oZxO-9i^u0dZ`ye;a9*kN-QW%d0*JyB&6apkE9!*`N!9`LCkfeAtbq%fH z;zBf_QuBbVrgC8Oh~a;O1F&hu6W|l#nyQ;FARr*GW~gJ~J8kdP{XlWXk|4ie28U-i zfE_6Y#w2fd7lsa2Sq~tGv%n*=n1O*?7=#%aX3dcR3bL1Y`ns||;AR)*7umcuR}d(q z>FMGa!f`!0!GXQr;fS|FS{$d+GzQLnoC=2+JtCS^LLH8<3S4YhD9!L+p7oMy<-}^B OCI(MeKbLh*2~7Y-WqlF= delta 92 zcmew>oi{-ujDwAVfkFQB|3n~V>gnPbQo)!k!RT=O(06;D$+-=CW+_T=b8!4ocQ diff --git a/mods/default/textures/default_sandstone_block.png b/mods/default/textures/default_sandstone_block.png index b97c8780f2bcb6d241350dc65ff785fa321d74b4..2e06491e07b09d57348a9d65f8f7f3f29e2e2919 100644 GIT binary patch literal 4548 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 QK_CEoYiHC0OTXBE0UvOKv;Y7A delta 597 zcmV-b0;>JQBmD%B83+OZ005AYXf~6_5FdXA7XmCh6QF%S0006UNklJ%C0{=6P1xvcBuG8>iG<#XIVhp+$u0Qj)jZs3N|pT_MoK=HBt`1yZ| z0KhppH`P||yTnNwd&deVV|Ol0DF;F-C1CJpXgmxD+dt0JJ2bvyC`lV@q)pKqY3KRK zmB;Z53e+G7{s)!j-m-nn4Hx0B)S3M2B}bx$hsmzkwiaEQvvgSt6=o^TdrwkaOqSN{aBWu{&-Y^Ss}_aAWUpB|EIG z`mm6o#0da~&C@U(oI8^sNhZegA(T5Z!vI zt$24Dx6d(MIeA2s&^U!F3Mol}0RVe9b64CFOEb7I?YA$^otX=2y;Wu;ZP(?qa4MYU z`Pg?`0H`_DRtU*R8;h4_D0!6?Sdu0|LT?bsg~_PV$5jZ@-4H#euyBpajGU9{c35jB zK?1RGPC3-Vq%G&9Ns}PbwlzUkW*j#Uwi{x&$=Boc{cXx6)>=z;t+DBLDK6IT5h=u# jNHU+a`V4;l^?UjY^zU=7P3joD00000NkvXXu0mjf*AW_v diff --git a/mods/default/textures/default_sign_steel.png b/mods/default/textures/default_sign_steel.png index 5705c787c7cf2a5a990ae329c0b064051a1cd063..2c857c02425c234091e6b7872fca23283e441132 100644 GIT binary patch literal 3921 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 diff --git a/mods/default/textures/default_sign_wall_steel.png b/mods/default/textures/default_sign_wall_steel.png index d8d4a5b00b5e736d6d96674f93b633a73155d76d..764bbc8ed71a1279d43c9df213710bc00e312d34 100644 GIT binary patch literal 4035 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 Ef}yV&%>V!Z diff --git a/mods/default/textures/default_sign_wall_wood.png b/mods/default/textures/default_sign_wall_wood.png index f25a67a82ae7f619a4a3a5cc296954538e915129..f541c547f38b0ed147bc797463154181b14e39c6 100644 GIT binary patch literal 4518 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 delta 3387 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 delta 487 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 Rpaf_tgQu&X%Q~loCIGf{2{Hfx literal 3102 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 s06+jSQkt0n0*KV!Z diff --git a/mods/default/textures/default_stone_brick.png b/mods/default/textures/default_stone_brick.png index 4312b5cbea65ac848dc2803c86a97e95a35ef2b0..4dbb49db7966b511527d3c5998c95dfdf1d2b036 100644 GIT binary patch literal 4196 zcmeHJc{r47A0DAlma?R5V=9RlV>@PSVKA1l3^SIL8MB+!7&Bu^_Jhij^C2QBvaes3 zh)_9BqmhpEp-72VQYTJYoYB{HzJI=d`s4fKyDsl_J@4~Azvq7M=YH<%cm1wkhM$kS zqQY(k005xqfqv(fZMGjpEKH!oW*hyzj7Y{tRl{FS{k{wv|}m=9Y{)YW4! z$Jry$%+gG2PCxMZk`}-J8m~lIs5mtnc^#X+ZGmLhc}(n^Bcdg?2b|~@(I)lFTC?mZYuj z{S5vU6G-!l0_j*|-kv%<)|)vH))k>4R|bRRWw9Jbv#*UfrdwhCU_(+;262k&1$T|x zz30cV=P9*+Ao%ZyMgVw|348M{hKH@WbJi8|GQ1a(P%1M#9^BIl$YATE`!XR)vog%K z=7E4xQNPRSu}vVEilcC_GqoIIC2y@cm7%&w*E>Sm_OjAZtdM#O`%up zRbu~o@!51)=H#5^LZWhC?Dau~uc5Ui()kYeRz)ScNrrLM=}2dk%^CUUkuFtTe5dH5 z_fmJvh-0>_Dc0mOXIleI4vh7i8BMOlrt7u)mt8(^64Yj;&#KPIJE+YJJ zZM(*M(e5`Xb84F&eIfdZwV-c5^41dijCtr2`l8EM2O126vVs>Q`HAuwP<3J#wyX(V zCrf^9>ia5|8~{(#UK|?e`;wc~{_L553m(lDS3!ngzx8*1-i)@1b|N|V6z_~5AZzq6 zad|gL2f=A};gM#`i+AaX??$tt`t=7CsB{q9`)e_C%UB7 zSXxnxOKZcrlV((1`1#rnpvv;w3A&}mzqj2B(}-Gp^<-?8H>1Tnwc1>@58u)0{^sd2 zT}SI9Ewxw-Qd()!z)aPU2U1x_RL+ek-RV@{EqqVe<5-mT3AH@@Zr)wL>IyV`tl?d^ zad&R>0-@Z-OxUVyf=M8= zQY}IPUwOUo@{Mb&TvqO#R||;BYaImxv?jXmXWk<#wQDWe&V}Z?4|CS0_=-L8S%2tx zRP^j0R`7n`x_UzlO3tq3r@r)|y_Fy`!?Z`1N{c z@A;czg4woDWCb_G>-78>gyZK`Y&;H~VB*#Dx`;pCmSeUI*M-{M(t}*orni(_u;}p8 ze=vp$6}Ok^nwvFkbrNF~^Vf~=5cNVW@+LPZEU!~mgBAYMqrLkS>92L(F;OhUjQ za&bTbgU*bG3G6}Ncwv(7^)MI&{08CD>_NduKcEYXLj+oyTAG@fxC*E|bC81q(2heO z!BB9w?-Y`iJ&3~PvSDB_pU*etTbQyqWH1B@g@Vn@!RF>B5`;-~ER%~9m@uRFtW*4( z15S*_b0p4DSxn$MCoX~&!?g#2B>TYco4ThLPz~Ar$ zJj{*7Vc;bHQyDli5zJ$blaMZ)Deo zT|eZ&4}mwb>;KCxh5s~AM5d%`;!D~iz*@o~Noz&-^A2>iwzRadwz9Rcv4cSmIoLZn zIv`wKJ>1Q$Qj>GDGJna=EH20|EiP=Rt}GKa&PdLcituuW1JY%6 z5R!#F8xax>0BluVA5ws#VogbK3)chby5;fKEvnKQOG+*fNvO^P?i8r`yGho_?tY+L zDivDD02wn{e~$j}bx|{PO;)deiT&85#Rz(8bYXM9cl18U@Bu~O0h6u%I%BZJ&ks70 zR8mUbgl7zc0IVFVQiaYZqh+@nx29YO*R=_~`SoE;2}Hv;hd3>Yy5>-kK8s4|UJ?6) z_5HfHYD?2{tE;4FfX8|rw=M%a{A}^(dyEF1jtx-S=Vr7iRVsMxc9lk}J;2agy^kiG Z`oP^rDys)=#32&h01sCmc!M)G=`ScLs@(tp delta 504 zcmVNRc9SwcSID9*XuKTJ$>$6zFgH5fr&JmTUuxP4OWF5qnri$Q~A$ea!C8vOm9n zb!`VAk0ai!QVKvRWsXqxd^(G+?Y6r;fDmJC4BnZw_IkYnV2oL70sMV@6abua06u@L z*8p}84^&+nzuRJ z+PWqdYIDw|ltiV}YPs~@TWg6708KcwEr9d+3_wb0v{q7ylrtrU5RBII#UVz5M(Z+7 z02t?tGcmmu@4ePK41pHNIlsKTl<9w_>D~Pu03{XUtnYhaO!f1}cdZQo#!#sWKzBTS z`}*bI(-VLY0x7Gt1|T-u-7pM9HjX0zRaK|cX|Z6N%@#n+dET=&MgUl?R@cjgalT%! zZCwMHUMKVRM7o4AM)39r#yN>Y`h*w;?_JYeFP9MG`}d2!@9(9YG4Z98@;GE34hN(4 zJYfhSrzGZTO3*8mR7y&U%oB1-0K{s!Bz$>(c1?3@u5Smprcp{srM&l4DR%ok08+i} ujsWtQV@#hvermg8+a39WQ*+yOrIi1r`0=pcmt^z+0000aYi6{w5ELSKf%1_J8NmVGR zEJ#&It;kGcV5qqDc6wmZ6AhlW`<6%L7(F>UA14@uRySMz`))06_4TB`M}AMXxnpnOVr07h zdQIM6uAO#j5w|`)j+9%IYrT)xmZ#puA-m>{!gj@n-hRJrr`WDv=70KT`KM~h*S|jH zdANn&aPIptr72opzllS|+tvTYVu|C`bJqX+eW$hh$D}>gUncF2*d8-4STN}x*H2aV zXun@d({J;B@_9TnG14$XLy#;?n; zaAWZ*?ft7;{Y!=I8$|`KOieq^lx?FY+5jFL9GbYWsUuYBs2*|(Pc^68B`@pqO~Zr0?8sH$%Z*f!p5=bUxC z(=ScoSf|4sHAWE=|Fnyms`H+xZH|zb?Id}{Lw%0lWC@OClOx#gzL9%UcTzXwmu}u4 zlO)W`O zsL0L9E4HezRRWu91!RMS^_3LBN=mYAl_Got6rA&mQWZ?}O!N$NT`MxnjFjxS6l{u8 z(yW49+@MAPdA3R!B_#z``ugSN<$C4Ddih1^`i7R4mih)p`bI{&Koz>hm3bwJ6}oxF z${-^kX1JslCl>*OE;Bz*0c2)kQhsTPt&$Q@UIA)&N;2H+g3_WKu*oUO`l&goxv6<2 z#rlSNhWcRjDalrD`9-;jK>eAyiRr2O1$pU8`XJZpL!Arsy*}LgAUDt+j9Nlc7>@?m zXmF7f0wgIOO;1l8sYGX}% z7+UDI7sy~N3GxeOaCmkD*rj1$O!9VjVd!9$^#F1>3p^r=85p>QL70(Y)*K0-AbW|Y zuPgflZgycdwu$GK3jl>QJzX3_BrYc>9AIG&$b81W!o*%Gx8Lo*`_h>gGwMuk$@L!F fkiX+%1S5m=CjE=5Ya(s|H8FU)`njxgN@xNA=kYA9 delta 235 zcmZpd{>?Z+qMn0|fq|iTj-w2aI^^l%7*cWT?X87EjE)TLAFE9~1w~v1SzLi+0E??4 zN7EvXE+vkxM~or*Nwr6N42vJ9J*m!F6zhZf=)ShC@oNV5*|Trsc6ZO;uM!1-l}mrt2yxDl+@}Ba=P-ZZ zVq#~Uj~Y@47MDvdaYje&zIIF2t>+ootMkEb?iUP`pp`ug{eR5Qu=~e?=#IU7w3}Fu zA3csP&&Q$6of(~Sf;^6dx1G+|q_Zx&r{kQT#O30i{5p0KU^EY-u;DHVKfiYoL?A&j zo`ffsvORsmD2rb+zrfDi-52og-V1g%AG>^n!q{*ogcppCo&49>ErecJyLSHYLV}I< z`Fg@`jHYAseSf;_0+0&k9O^pC>R}={a z$WfzAgZgSKRfOocGvH?C%Cc+<_!HMfikmkLj*_GqQE*kko50L>EVTAbYrjg0of}~$ z6PyuNe7en7#^1SbM`KKh6Is2nLR>rrh%hE|^NCp?gn!1t)GvJ3ZJu;vpNJJO=oie2 z17=&ci{j~_Em=GZ=6UOk-Eybcjsrl1y*+|~q8-^l;wg}g%#jEK9DgOc=wpa6YD_V!s8g>&qpBv&iIbp&`4mz#NmEKWW77=R8LKm9c4)z?sC)tYK<+@vA>TWHZVZK>r>9a8G9`yP7i+EdR1S{pLl@FR>kbfl4Q z)()#5S)&)`erAmhYm+gz=EVnVFvobgpjl4*6vHteK0tk&9h@l)+zY&F?P!4>^Kf{QGI8V-lh~#K>t@U|> zOMg&(XFx(!C;vG`NR@d*i6}tw^JB zV>?J#Y*X2@qEFR^yd%u1xI)9?3 z-t0Ops`E=rYCd56j-Y+L@}jXIgmqvirVS}u#n~x}_$E1onQf#TWS&)zd0K+hD!dc17wHi!@8edS_H(%AbDmwHXlgYSe`y8cXnX`g-KAT;xY}~$ z5m`7|cG|~x6-W30k`bTga>WPn<9~&jh}3~E*NX_gYnz?|uOo}ZQ^YL5u19JXAGbZn zi+d}oday3Vj$}?XO!{_AR~t7-yrnr=Lx~zruhhamC4ZZ!m(q~U!1W9?)@E$mB2xWl z<=@~>>`n)lP+rTG!F?cq&H(Z99g=I8`0Kc`3K=f%#ob{wI#`KQ5WS0p5-2)eL^t00000VtQ0qbW&k= zAaHVTW@&6?Aar?fWguyAbYlPjc-lRQyA8lV2t#|O$OwSBPu2-E*QLn*I)aqgvh-}z zx*w;bWJ;K(c3QBde@Te5Vj?6?C>VmCk)%(8YU;`DC z+5}OPaRVQdVFVqM!~_i7vH$?N006oG0KfnM(EtFP7!>jV0Q&#{ z`vCy^4FLNO0OS`4`xOA}AQt5$8v7&~`z1Xa`!p{5H7@%+H~T#}`%g>zP)z$#PWxV4 z`(9l8eS96A|6l+B00DGTPE!Ct=GbNc0004EOGiWihy@);ks%j<00(qQO+^Rb3kMSl zH*BToCIA2cen~_@R2b8Zj>{H;Fc3qh7PUn?pg>ToLO}%o{|BM=;A2O2H#wOJ(IV}Q zCR)d4W>wlt9v=&+zy_6TZ`TqicA;SFu75ZSAe5AChgaX=V{9|`9J>3&+2(C%hHE^7 zb+{_{eDa*E=D#v1^?Z=uWf4!g{M{-N7XRxbNlP^X8Vv|xc-_|$00000NkvXXu0mjf DknwRE delta 819 zcmeyV{;qg}q#_#w1B3kM|A|0~v%n*=n1O*?7=#%aX3ddcV6f1byn(fi)l|W;#yWRxtd*0q&TFqAXPsowK%`DC^^-& zEH$r0d9p3L_2h?a8k0C}Ctu^xo1Dw3JK2U)S0p9bDlNY#H?hQ4DKj@QJypLTFMYBl zhr;AroSu{Caym~|=5m}I%Aq)UB8TJT^&G5|%Q(a)zhn=Lvg1-vP_U`UE%5cV^2jVM z$uFt|3n|zXrKDK}rxrqZ5N=K;NHq|E9ch)AT#}ieXRDN4l$uzQnxcdvnK}6(rwuP$ zZFxp&-sA@y3Sw}P;{3Fd^2DN4$8?~_Ci8QuS?WV=)45_%aXYyVz=0Jhg{ep@&8*V1_a4{Y|bZq;^ ztpYyEfgeF4eec~x4Lm}r&DuVR|%*U0?y~{o)3w}6Ie;{?o^E*3> z(|m+BC-g}g%KOL6IN4xUpdxu-DB5^}}l4g0;Vx)-}|Id;VZ$e8OPQ{nOOrw~l_= z!no#swJpEC+lVXs=J4~yab1#(xL?m;&&;W>;$QlZU1NL0d;f~}PFtDo@|k1_I!R{q z6e}`@G^{liOYB#yd|z~c;xi`~2O-xBvWuTo2N=4^ zX)AO#JE}VC_bajx@pm}GNq8OhG_JaCfb(|o4?n|k*%Ggwc4su0ef Sp>-4(^bDS^elF{r5}E+j2qEPF diff --git a/mods/default/textures/player.png b/mods/default/textures/player.png index 6d61c4342f39fd8da8330e97117c68a3709483fd..4f9ec06c66cf362d2ff6df56119a5ff41fbb61b4 100644 GIT binary patch literal 4160 zcmeHKYdBQx8eWsb7Q`gp?i9IHh8f z9Cip%kwa1vi5RCXpJS3p2bJ1OyX)J3_8&j?k9}R%b-imn@AKa4Ue9}9@AX{wN_2EM zBqOOT2>^hMjkSdn_=JH2u}K8H`%c5W06;7}jOfa9B8MP2T(&PgfQI0Oa%cz|pY96) z{J}C3BXxO~^tUb@t|$SQ(sJ0P&g?>-f_KV%=E#>|_}w;d@d8pUjPz$-*fZMmMrxSid#dOhVC(?j^@mU9~Bhvy8F@r~ZYjS3dEkLFH$Jgk{7 zV7BMPPg{;3{}L2C9N%7ks_LIEqjO1jPS+DU_iw07mIPv@S}iW|7<+AkAE8cBcLrrZ;dGh3** zk5bcVK;Q+tb~DSE8B?yCR)sY>Nohm3&Ziga+IHVGGitttuMo@{9f|DR$$u-pw=7ye zR-Rq^#o%-HSA*8yby&#`=ZXx(YEoZBX*_uhuRMYLt_RQUL$;vBEQ+r0MQv#yk zc{%ZQr*5tPYdgVowR0F#2L5#)kTfvK2iVw%vWFd6u1+kID4K1J5-l92X~YmqwxLr?qC>4t*@l3f2B}|DbOW)4lYCZU$7Jg{U&p6dk%#%(QE@fbGacGYbe|;p zV%-BI+1Iibkq$=J73Fv>u3b~TZ~s1ATd%Y5M?vMijT zO|$mP6uun7;4pnD4FxXj$OJM3NsXf)_c!;hULl7PMTqzr%&V!mRBb(CbO&-E%C+hN z)K6gj?uQ7m)LVR1C56S8-rjn{Z9q+Wr^jAntB3GBXiseU{^(p@an0Y@k)QMNs}jRZ z@$NhI?bR%(afa0v0<15FlZk5WcVd%Y9!f7F7!TPeZ91}~?ceS1-;qptK8I#Cz*TdN6UOZywA8t4i@!K(Pa%JBoUo|XgmezO+Yqf!l^*t1R zw5<|uRpPh)_9hi6cPDG55_W%|Opf z92m+qviNk5zSy447~Je;_~KnnNujU0QQr#u|U5~?y8IcOtAdd%1?@9Qym7aM_t z-N-YC)#h0{HpagrT>YMNX2IrHm>{MfcRN=_zVMr^yNa*uxvGR>%BP6Z%Kq04P3I%f zp3KXrpx$zZoFIbbl`h<3@XQt?(>yGCW6(XbEd1cG?FBie)}gtG@IFIi-0z+rbW)*@ zmhSdmBlKf=j-?8T17A7wr2B1JvRyt}kG|D;ax>wPovnptkJi^^qy|m0N#5*)~DBT%tY}eF$ z+`C^@7~^IXA%B0{Op3bM>qYt2&$drrd&wS)ISYSOi2%E?&wp*hbPkWQ)`szkO)^n> z(jq@HV`NhYZqw9Kk3`}Iye#CsJ9>l}p(7eYTRrt=aDpdG=)+P$%gvCp&E306z5VbH zISW0vV#ilpTtWeTJvkwx1e*>35+~_k(|5JE!&2Bx6q(BQp`rLp4p;^N;12LPWD0}E zL-^4A=qx;P;cg=mL8s!8#|-WD>^TQ%{&edwF3ma2fk+8sP)w-E1N$X$d@M-7r18iI zJ~Mz7h~?vvKY6iWyp~2I5kDb31|I2Z?}#|a=F$)bCNF=z9_(e{o{Kd@);s*R=rc%(f02-6V;sv7hQTphgcq#>J z#pW`};QMqY*^h?iu>6qdwQAA7$_00i{%iYdHT>_djgPEL;|;ksk>jH0_t_``? zrNFwt8>j34OD@U(7$_PGbWI_kJpz725kPAt;b=#+1OUG^n-v9oTof4t0|?K_!5JV- z4S@gK0L16;AqyZuOwAgcNN}u=2LgZ;d~HC0tQ1NpW+RO6pF(t0BcSeu+^<3D%quk1Sk<=%nT*93njF!R!Si%Tem8gkm!WX@h&B| l38Esb7{(=q?$6@o^1yd*lxitj1q~7cHkJ++<>uZo{{o5VoC*K{ delta 125 zcmV-@0D}L(AdUf$7&2*y+{QCObaA>fUN^Y f;3~+!G~umW9#GF$kG3--00000NkvXXu0mjf_UJK4 diff --git a/mods/doors/textures/doors_door_glass.png b/mods/doors/textures/doors_door_glass.png index f597299bdfaa2389d40c5179069ccd5685b937f9..d0c14225a2cb54bcaac5f992c10acb847d42f05c 100644 GIT binary patch literal 8220 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 KT$PMj@P7fLXo_C| literal 3064 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 O002ovPDHLkU;%>CyqnDc diff --git a/mods/farming/textures/farming_cotton.png b/mods/farming/textures/farming_cotton.png index e2bbfd7af486b64c658bcc7c6101b22ca95ab7e7..ff75570941197bd6bb3c1eea635213d24751c00e 100644 GIT binary patch literal 3844 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m_Jp8M3e+2mMat#<)>xlq$-qD z7NjbqR%E6zFjU;S8y-FFu?ElI>so1?9!?z7nk(lRThDmfzo9W?lGm=wcjI%l+{6?* zt5x4LeY?M3_TR>C8Oslg43`MZiM9Lbady4SBR{`_nwe@E!umksPELUL^5`xl=5 zdGkwA^n$uq{nfS^Gs_;CwA}ts`SF9zlVmnaUc=a`Ip-%l+x2FDPWr!^lJeh`RbkAF zyKW{kWzBh`K3#kpheg3Q>sxm>PMU30v}JetA35tAkC-c>s}7udy7GCo#(`E#MVkbZ zuNwSS_wrs$-1_uq-hwM{A93!!m;GjM?C#Tc5 ze0FL}!u%PhI^W-X;C*k0{*g_F8tP{*n$5UdIMae9f9Fy4^Esc7R2GD1F1VI?K*8vK z(!mI~>Jr9Cg9X7#t|l^zKTg&yO7d?vY)}dj+*Np3re}`F;q7Y!ZJtlMuyotvqa6a; zvZh%=>B^_8H~tBf*KOalp+aDyf>z+9CkGC)b1G&?q=$rstzYCAx>)V(#KrwW&Q~Oo zyDS5ftPiQQE}4+zrI}tl>ukxkt2fi0)Lb~&ZvTX%UGAfYyWTXrqvDziGdfkL#;h#b z`f2?_tt%11XL)BY4f^aGm2oS{Tetl5)^m5uUoOn&a`u{go7?!$>`muY&u%uX zKX+L=ds$elT7itZk%jTG6N?SkH8Xl=NX^;Vaqn_MUcob=$UqLsY>nnQUCoBc7tB>& z?%288@cT4#f&YT}U%D(MuKeYEmJnb*v-;Uv>1(el-cOypaWxnFvcBE2Ii_h+^<^^u z-T3!sKX`9&WT&p@A_Ls}IdM^4)%mw{QG=z;4U7poNM5ZZ3H8tn4kvz4kk*cc!(Je|z|K zo&D>FywkQ6T%77AZEPK&-}&o_(1s(i9C@D6&!5!xul*9LbiT7ld)o%x2?i zolX9)c=*5S&Q%$6*phUCg+L#Ez=pB{W`9OhdyOBv=+G? zJ;Sz{fq^qC6Ij$l`1)8S=jZArrsOB3>Q&?x0A0brU}IlVkeHmETB4AYnx2_wtMq>N zekFy>6kDZmQ(pt$0_W6>OpmIf)Zi+=kmRcDWXlvKdpj8?tx|+8VxRzLVzU2 zqp52&xJU{Ck`#}ouAvoNT!;o#Y96rFR1Rz&G5l|E05z=wd_r7-^o$uZmM&eod-v`= zd-m+zyZ7kPqsNXNyLj>9rAwDCU%q_%_U*@yAHRP6`rW&C@87@w^y$-=FJHcX{rdm^ zfAzfG(}DUKOM?7@862M70Co%+7?Zr+T^Kr8Wj%l#&H|6fVg?3oVGw3ym^DWND9B#o z>Fdh=fSX-dNK<5^uMAKq!PCVtMB;L9|81cL1r8VU&vl&L|NmcK5>!1!vi&iWHq+~e zL3i!>jT=w;OXk;vd$@?2>=OqA1(j@ delta 149 zcmZpXTgEs+vYr75tY$3O3#6Dzg8YIR7|JG}wE*(sJzX3_BqUi6F63=6U|>0LyPiob zfvanYoYq7Sp;-c}=39fbGOT#Mo5Ae{v%>{d2ELewuNnm8-#DntaU>{xFV4?h=dj^m u6_eY=fISTn={(#C2Sga2c(8-CePF(CZ;(BI8sE9cAg-sYpUXO@geCw_n=mf` diff --git a/mods/fire/textures/fire_flint_steel.png b/mods/fire/textures/fire_flint_steel.png index 624f5565dd3029b7f3fc0ce0de374bb8977e301d..7eb4dd39b410a8cc61433001def20a2ad31e92fd 100644 GIT binary patch literal 3837 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPL>;jRjaC<#g|S12gTPs_|nRVb+} zNL5I!$V_8ksJL}^T6EbH4W739kw%*212a|?Exoj|B(Cbsl!>W2 zNB(mrUHq4aW<&B;4JzPP$r(zizX9MuhjRONFm* zznXvL{C4ppy7hHmq&2nuA{rCe=dt%rY@ZuGNn7CI!}ikrM^*YecfVXSpZi;)o&Wbm zNg>xNTG*sr|9&*&%4B<@`BL;tmgfaMX^$_jG-}q&z4^>_Pj2j%&6z)62683;ef2;bE|{yt?`^2JabxEh+E&Y>^T36@~d?} z_f)aXO$to9D)w|{uAu;9V-7pJs8C79X59c2*LL2}JQp30%i5OO#n7y>};fhS(TkbybHI~SqeG>UXR_TQ`YV#}&)B?WTjk|xo%=JR zcSZhdY5vO-*%Q0$?z*`1Z;r9wJf*#S*Sz+svzEVZUvaAC`M#=E`P7zAh6z1&1xBZP zubZp9?YboUY>sGdpu*g+*>;~_l>Ey*`6P*rFD%fe@bkc z6XyLVKu>@5(VCSt`!3A#*4hz#^HTM#TW_ll#j>eueZJlGGpU;UO3|(o&!1D&4^B&8 zUM_g*Plv;N_Fc*4+u!fGRd$Bo^GiL?5_zkOf0(LXFLCSpR-pwf9TKq?3z-Ea$)IAv zw(}rwLjZ^Kd!L6K4$=oppTzH}Ecox?vBh`t^{{onHE+6=I9{qO(7e4rCvv5-lrUdw z;`@l;Gr@o7Y?feh=~};j)hTYnUXcf0Jvql27&x;sfn`vHua8x7ey(0(N`6wRUPW#J z&=m{}Hue<-iOJciB??KY>6v-9O7C~?S5nAKu~iB;^)>Jbs{}UJ3djZt>nkaMm6T-LDnjVC87bLuDcBUHq*(>IxIv8o@@$ndN=gc>^!3Zj%k|2Q_413-^$jg8E%gnI z^o@*kfhu&1EAvVcD|GXUl|e>8%y3C9PA&olU1ols0?5q7r2NtnTO}o+yaLqllw`Qs z1*JtfV3Sjl^;2_Fb5rw5iuDck4E4e4Q<>&pIsn_XDYAo}|@d7zNLr;B3<$Mxid156Q#Jsk`y4)8E)B=2UJJ)3!g;Le*D z-sdq*5L}z{O^y8shxxhP$4Yrl2uJ@VVD_U zC<6{NG_fI~0ue<-1QkJoA_k0xBC#Thg@9ne9*`iQ#9$OrQF$}6R&?d%y_c8YA7_1Q zpS|}zXYYO1x&V;8{kgn!SPFnNo`4_X z6{c}T{8k*B#$jdxfFg<9uYy1K45IaYvHg`_dOZM)Sy63ve6hvv1)yUy0P^?0*fb9UASvow z`@mQCp^4`uNg&9uGcn1|&Nk+9SjOUl{-OWr@Hh0;_l(8q{wNRKos+;6rV8ldy0Owz z(}jF`W(JeRp&R{qi2rfmU!TJ;gp(Kmm5I1s5m_f-n#TRsj}B0%?E` zvOzxB2#P=n*a3EfYETOrKoe*ICqM@{4K9Go;5xVgZi5G41dM~{UdP z6d+Yd3o?MrAqM0Kc|iV92owdyL5UC#5<>aVCa44|hpM4Es0sQWIt5*Tu0n&*J!lk~ zf_{hI!w5`*sjxDv4V%CW*ah~3!{C*0BD@;TgA3v9a1~q+AA{TB3-ERLHar49hi4Ih z5D^-ph8Q6X#0?2VqLBoIkE}zAkxHZUgRb+f=natP#6>iMMoK->`~sRLq)(kHo*Vn{;LcG6+e zdD1=7D>9j^O?D{Qg|tCDK{ym)H7&wDr6*;uGTJg8GHjVb znL{!cWyUB7MT6o-VNo_w8Yq`2<5Ub)hw4L3rj}5@qxMs0WMyP6Wy582WNT#4$d1qu znl{acmP#w5ouJ*Jy_Zv#bCKi7ZIf$}8dZdVy&)LYdbX%I9R8VMQ|8r>Q*nyQ)sn)#Z|n)kKvS`4iutvy=3T65Yu+7a4Yv^%sX zb>ww?bn(=Yu(!=O6^iuTp>)p_Y^{w=i^lS773}6Fm1Fpe-gF!>I zp{*g$u-szvGhed; zvo5pW&GpS$<~8QGEXWp~7V9lKEnZq0SaK{6Sl+dwSOr*ZvFf(^Xl-N7w{EeXveC4O zv)N}e%%C!Y7^RFWwrE>d+x51mZQt2h+X?JW*!^a2WS?Sx)P8cQ&Qi|OhNWW;>JChY zI)@QQx?`Nj^#uJBl~d&PK+RZLOLos~K(b5>qmrMN0})tOkySZ3_WICNY@+|jrX%s^&6b2i>5 zeqa0y%Z;^%^_=a@u3%4b9605ii3Ep)@`TAmhs0fpQ%O!ql}XcFH*PieWwLj2ZSq`7 zV9Mc?h17`D)-+sNT-qs~3@?S(ldh7UlRlVXkWrK|vf6I-?$tAVKYn8-l({mqQ$Q8{ zO!WzMg`0(=S&msXS#Pt$vrpzo=kRj+a`kh!z=6$;cwT88(J6|n-WB%w`m$h~4 zpmp)YIh_3ETV2tjiAU!0h1dxU-n=E9e!)6|Z;4?!H=SSy{V>ut&IOq{_dlbFb#!9eY1iCsp6Bajj|H zr?hX|zPbJE{X++w546-O*Ot`2Kgd0Jx6Z4syTu9enWavU5N9)I?I-1m1* z_?_rJ$vD~agVqoG+9++s?NEDe`%Fht$4F;X=in*dQ{7$mU2Q)a|9JSc+Uc4zvS-T9 z63!N$T{xF_ZuWe}`RNOZ7sk3{yB}PPym+f8xTpV;-=!;;JuhGEb?H5K#o@~7t9DmU zU1MD9xNd#Dz0azz?I)|B+WM{g+Xrk0I&awC=o(x)cy`EX=)z6+o0o6-+`4{y+3mqQ z%kSJBju{@g%f35#FZJHb`&swrA8dGtepviS>QUumrN{L@>;2q1Vm)$Z)P1z?N$8UY zW2~{~zhwUMVZ87u`Dx{Z>O|9|`Q+&->FRy-Sjp7DHsy69KwU-!MxeeuI@&cF4| zM9z%ARI+y?e7jKeZ#YO-C0clA@K~#90V*LOAKLaHIAb^-C(hURv z0mK4hSeob|1UdQt|M~ur5yU=z<`P~500IcZ1t87xQX*iQ7#9Ep5Q+gHO}ZM2VD^n0 zH;B>C01!Yd=mLCv{0t8tJOs13_(d6zg7u;r$UqOC`ss}3ug#*w~uoyr9!NUOPXU0<(uKkBO9cD9`QxnRU2DJZ-oO3qXFvN{d;Qk$)`fgim(h{P#hSpXm0Fb1FI=iy5cn*}#r1_G_Ae4QU4nn~Yk}m*+ z3{~LVk|#7atxhYjHmDtD?C$vJIqIEYDkeRRZNER4R;tqu26#nBe)rkRWUFDBtO&+wPKy@3G_urJbLA1)Fp2kU&^%LVr&4c! z88(KOX(B=OEqb492ZT@6*e)#QH9Q0RH&uD#8q%XuY3}~B>HX)gZ!j@xv^$`oTChS- ze-Rzd9F1>DRk0^dw#WuATqdRJrlpUjN?Q19$yD%g} zo08p;CLMCGlxv-$uuhT@(qU4NsJPEW)oL?7*~i}U$;l@U7bf2$y}TnV#;koKl&4{T zm(L6%V6qKUBxt(F<>I7mGd2V~(1f=C8L@))+;(h#)fh%vC00Rg!ZG{O(O3u}zRddi z#5D(%=A>)6g7_l~+trS5=l`~!6|8|*X%*Nd3s?sS%FTirW+D}DpW#-wdyU8AY9`un zccrst0`p7r4jJ~ptg4P(qLuFN$(?jD4vNMuqm~AoQZmC7<0{5u_u-rPv6qo;&u={V z+NM;eyNn9VEx@#_-bmS7U@mxh(!5L%{Y();aPUTAHg4-eBFZdA7Kv1*ufFO*@hC&t zM1ggpuFhK%287L8_MUSevHMWptQ_7fNbCK!t0N7ap|{MhbZ`wUo9}BL=xpTO4U&i{ zv`LPv$G&eNu}x4ISQ6i-A?BA=RamMa04L|L;3@QL&mSilU&vP1KR5A z6dZQ+c|9w!DHL7}+1^J7n@k(S@@_xv@>bb$ol%>fdc1R{=H~M`jALWs9RF-SYoLmD ztF;@e8-RT`xuxH&;lQB&;&1ORPMajnKY8PuQ_{yk4nc^w{$c+TsjHun^>pU<@WYyB zWy|4L$pMDtUpix?zNw%21AJ~bbdS2Ly6j%qYrl{L(Oh)M@E*C?9pvo}Q$LDmF1?(Auz#5!)zC4H1abhmy|i2kQ*RdTi> z{hIydiGoZOYX{ycnxzkqJU@HVVXFpxHQYV9;)T4u;%QGt+*|d}70xX_^{UhDcLsBt zZ!JL!-{H1=G4k;YO&!E^jDDI-$Q>nrpNer>^(ybF3;1@dsQ)3l(bOo$zO3%V)U4nO zLUz4Howb>lM$L2QeNn?4zZV#@9qmP&PI0tD!BFkWX)`=R-Wz`SQ(TnLF<$%tz zLO-@->sJ7f2_T8myer1em_VawnxRx57DBsRM#l}&0z_$2uzW8BpMaE#)!M065t>iq<~a53$ClJ3;%&95{#{BObTAKofp9w2 z4+dXT3;!usbb9z-$6wR%zkk*@`6Z9n?OM0%mmK&d@cQjqx9gW2_$BcA?fU<+OZGnn z6i5|SO&n2q1PCL{M5PtU(azZl0PrR(C@M(hC`Sbot7RXj?ZDHv<7>Dk>bNB7d88sd z(~P}t7<=9_^1W%|opZ$RmWh8hl9Y|4o9qp zK8?fYTSsI55XK3G1wvt?P$(RB&pja8RE&+acLL0&21I}GfSAt-8%rQga*wTOAVarx zV*!BNj!SK`AyGVCXEr0o?bT?@bAEHG|@_``w(nOV1BJlRi&LPr`^40%$9H%OVT!$bSJL1q0v! literal 3363 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 diff --git a/mods/xpanes/textures/xpanes_pane_half.png b/mods/xpanes/textures/xpanes_pane_half.png index 4e846dfa088e9842872673dc7c405db46e944bd4..7fc02522e792296e3505712d17f4bc870e7ec885 100644 GIT binary patch literal 3424 zcmeAS@N?(olHy`uVBq!ia0vp^oIotV$P6U^wH*hNOxLSIB1(c1%M}WW^3yVNQWZ)n z3sMzQD>Bm<7%FbPotoSCM1!a8e{q*B)4xLnGE9!Qq~Cn}-Wu?7)vI~a(oF27MHKjM z9P3wn_~-q7!GDg5XJxL~ET0tQa&b|sHk)PK(^s0WvepNc`LF-<;fI{0lB53hY^(2o zxOUd+6x{vvI8<&=u5G3EqUeuWM!M%eZk&6kt3}`P?e`BKw!FGr_HFUcd&jiq-;+J~ zg01#YqrYawn@vg|943WqX))_6zVrBJ?y0Y@Z`_sJ%l=+&?@_&Ly3?-*w9NR{@ zc4szkoRJ@&aZ~qn++v>7a}6eQp5oB9yZT}32me=VGkRt|axsiA)Z#WcKc`K4@|_$* zZjOvMGj4UgU-eKk|B-M6qj7ZNxeJkx3s+k7*cEw;r608EmNHBEv`PEBXwR)&^`FDx#ItZZ1C zbwd7nkIX8yWe3kp+L@{yHd)1YTF@tx_bXmKdiCt&-Ob|bBR8d;)~r6a^GVbWj&%mw zD=Rd1P6^WP30tu)BGz#6wPt?HFB_C)>z*u@*{WDO%Pf0k<>|FsZte6w{_*|F>K8kw z$N5`L^jbczY}w`WHPbfpJ-Ibu;bAu^yH6U6?_J4|zb&5i#qC{n)|QpNNxPo?WH;@& zE3cIir*1a0Q9`?Mhd+}?#=J90YN7L_^UCC(?0YKa zQ{OH9zbj_Oi+^l84KC&u&EHw;xc2=2xacG6f-RDzQXeEq>rE|ws_dCpJmK{p>%VF8 z|4JVAFOqk)@2V5ot0lE#lh+S<{X1J8>oSQH0@HW`)+C-;P?8Kv;l zO)W`OsL0L9E4HezRRWu91!RMS^_3LBN=mYAl_Got6rA&mQWZ?}O!N$NT`MxnjFjxS z6l{u8(yW49+@MAPdA3R!B_#z``ugSN<$C4Ddih1^`i7R4mih)p`bI{&Koz>hm3bwJ z6}oxF${-^kX1JslCl>)jE;Bz*0c2)kQhsTPt&$Q@UIA)&N;2H+g3_WKu*oUO`l&go zxv6<2#rlSNhWcRjDalrD`9-;jK>eAyiRr2O1$pU8`XJZpL!Arsy*}LgAUDt+j9Nlc z7>@?mXmF7f0wgIOO;1l8s zq#ykHfBs7URUnJ8B*-tA!Qt5rU^j+=G0EHAg`tC0)&t1lEbxddW?n8_?|zE{|FS~^K@|x;kcfhkdvUm%E+*H2Zx|oj;9b%hQZU-&t;uc GLK6Vdmo2wfi6{w5ELSKf%1_J8NmVGR zEJ#&It;kGcV5qqDc6#)tCu%%x_aj}WHK?>4DKeP8>W#wb^ZmWGdd9^?K{MNJwyb2+ zN%4H){O+B>zhA{|_63DYWG2meKB@S~R4=U$GkNE=^V%R z5jU;opUPNnH#qFB-?>lnf3(_9XOW!IpVbZcG0fvCk1y-GW+o#lz2Gt|CK}KQ=Y|4^%D7e zQuNWI(oKR#mE2oiwM%texZ`=%_+a_(8r^kFO;yWoZagT}pUU`yf9dwas_Geyi<0)d z>R6M{>>;QWz|tJ#DPr6iv@GMy!Hx+Y>2bW&wE+~CN`6z0|SIr(H^+o~?L(6d>uqPC=+Tz#l$+n#$Xt{$1RGS#?PJFK}| zJ^Xy$ySP1KdQIl*#I7WN4DwoA5S6&|(Mzt@D1N&q9_?~JHyrLSx^irxr?+o(-nBhb z!>r3+u6R6ecj^13*BzPNGnXt>=9jiRwL;iE_mod?`aHARX$G&IbCdrr{L7uSW#vcD zEX`Zayg{39v#h<|sh6g3tdrr67~`Y^duF&UpHeX~`b<({NUKrP71rgKmDrjx1zs;{ zzbkFYTQT#WSRSLokMarJ+;`1S{5|nD{mQRjeOc-oSM!7iEne^|ZRTO^>e%~J;`<)X z7ujdMk7q9u{JWpm_fOdY`QsnVZ^Uhtj=z0zIWUVPV$B~aDsl^eu3%uWv9Bmd zOwLX%QAkQn&&;z`dcS+Wl0s&Rtx~wDuYqrYb81GWM^#a3aFt(3a#eP+Wr~u$9hXgo z70`g()RIJnirk#MVyg;UC9t_xKsHENUr7P1q$Jx`DZ)2E!8yMuRl!8hM9)CiwIZ|3 zNXd>%!KNrB%__*n4Qd3CXRDM^Qc_^0uU}qXu2*iXmtT~wZ)j<0sc&GUZ)BtkRH0j3 znOBlnp_^B%3^D>@hD&O3auG1-GV}8kKxQT;<(HP&Dk%Zw6`+QvB*V=vC@snXo1BuY zpPG}Jo0?ZrtZ%4is1H`3l5FLcUzD2&)SsD~n4YR%ke9Bc4|1(O)VV<4>%+Ydas%zb zs3jzY@n~?31{X;oK$7Co)HNDhB!vJ;ibqq|&)eCk|A^<>}%W!f`!00mx=zV0@&w#~8?B@O1TaS?83{1ONy^WZVD% delta 131 zcmdm_IF)gNWDN@g1H)Ds9ws2gS>O>_%)r1c48n{Iv*t(u1=&kHeO=k_u!#sunBTpc z{1_-Cn;8;O;+&tGo0?YwmdKI;Vst0GZ<+N&o-= diff --git a/mods/xpanes/textures/xpanes_white.png b/mods/xpanes/textures/xpanes_white.png index 777bd606fa02f1809009f3e687c6d9c336a96229..a2f4b636ba2f083d9cc01d5d12ff70deb0df8783 100644 GIT binary patch literal 3496 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn-?zVCJm~i6{w5ELSKf%1_J8NmVGR zEJ#&It;kGcV5qqDc6x5#6AhlW|HWOlOxq02jw=c**?CZ|KAyv~{!Gs5aO3*0RTo%~ z6y`i;55D^F&+p?L^$#C;SgM$wSAE{0JvC%U(xZ>NUcJ&>cJ+8|dB6OVhm{PQ0}W1< zzOFp&e?s!to~OCDS5A0s?fmo(e_ucUE3+f}Wbg28S6+D9(PrDiUA&z6=U?u!Uzd6` z=FUC+g}Hw>&R=ixBSvbM%CSh}NT>N0vz|8XEcR*J^Hp-ijZgnAe$~k5g}V9FcpY?K z&%yf8ds^4L3y(wls{Mj4Y<}~kS*$%{#&qlT@$vDla_=sff9hZHUh;4EAK8~1gsSW( z__usA{uku;OO5~iM7_NCHqZZ5{8KQmjInugs5igoUGkjkud+@>6y59IHGNas1?#kJ z*Pv8g#t`1 zUVKRj%|a||rilDLJ}H?$RMdCXtgBbHW}Kar-ug7Ba^8xoM<%UIH7?c;YwlJLKcDw5 zZjYE=lW;iqtBn-(kGp6c5!&GfVVoVk4d(>2V|xhFiF-Q~<`rWm|(&Q1Qi@-KVVmX#lsOhw-= zWLtSNx9M5oqREmSg-Q(DJsVUE{L?OKs?K|&wmCu~bYYJ|>7kb7Rs;*q&%d|Mn6 z{CB-A<-vC5e}z2%8Pe*uJbduicquS{Bx21NnFS@upp0SbwUf8Of#bpU)fv^7*YmoT<5Tyl zPYi~NBDbd3{kg@!z?qc^%!LuYK32*3xq68y`AMmI6}bgKS1>Tx*jE%JCTFLXC?ut( zXXe=|z2CiGNg*@ERw>-n*TA>HIW;5GqpB!1xXLdixhgx^GDXSWj?1RP3TQxXYDuC( zMQ%=Bu~mhw64+cTAR8pCucQE0Qj%?}6yY17;GAESs$imLqGzD%T9H|1q-4jXU{jQm zW)m6U+;3Q)sSlHq0-losWHO-@PHPt8fqP0cGQ z);H8M)Ca3iNw#v!FUm~>>d(wgOi$G>$V*q!2f0=s>Rh1j_2J$Jxq_1 zgNvjPAW89P>KY9$l0twa#iOZfXayG+q5+kf2W&N!1Di(-{~H{DO)KUApAgso|Nk#P zB7FkLWlZvRcVXyYmGuB}I14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sf18#OeCk|A^<>}%W!f`!00mx=zV0@&w R#~8?B@O1TaS?83{1OUBqR%rkL delta 106 zcmZ1>J%w?C1Sbar5LngC4xMbtD;Ii)O+?t5+ebKq6(}m384^+AoS&PUnpXl+#o%0& znpl#WqEMb$lA+-4=^K!um&y(l=kj!M4B?PX{=v_{$jHcG7N6b#Qts*M=d#Wzp$Pz3 CpBbe9 From 022d22cecaa902827cbf05ca70e63ad342b51acf Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Fri, 11 Nov 2016 12:09:11 +0000 Subject: [PATCH 153/196] Creative: Fix missing item bug caused by 'start_i' value This fixes the missing item issue in creative inventory caused by using 1 instead of 0 for 'start_i'. --- mods/creative/init.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/creative/init.lua b/mods/creative/init.lua index d90426da..a6c74a29 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -10,7 +10,7 @@ creative.init_creative_inventory = function(owner) player_inventory[owner_name] = { size = 0, filter = "", - start_i = 1, + start_i = 0, tab_id = 2, } @@ -187,7 +187,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 + player_inventory[player_name].start_i = 0 if tab == 1 then creative.set_crafting_formspec(player) @@ -196,13 +196,13 @@ 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 + player_inventory[player_name].start_i = 0 inv.filter = "" creative.update_creative_inventory(player_name) creative.set_creative_formspec(player, 0) elseif fields.creative_search or fields.key_enter_field == "creative_filter" then - player_inventory[player_name].start_i = 1 + player_inventory[player_name].start_i = 0 inv.filter = fields.creative_filter:lower() creative.update_creative_inventory(player_name) creative.set_creative_formspec(player, 0) From 68192a17e9ce85950528778d2ff769dd4a8ec7f5 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Fri, 22 Jan 2016 22:04:38 -0800 Subject: [PATCH 154/196] Default: Add tool breaking sounds These will automatically play when a tool breaks. --- mods/default/README.txt | 2 + mods/default/sounds/default_tool_breaks.1.ogg | Bin 0 -> 6019 bytes mods/default/sounds/default_tool_breaks.2.ogg | Bin 0 -> 8440 bytes mods/default/sounds/default_tool_breaks.3.ogg | Bin 0 -> 6875 bytes mods/default/tools.lua | 54 ++++++++++++++++-- 5 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 mods/default/sounds/default_tool_breaks.1.ogg create mode 100644 mods/default/sounds/default_tool_breaks.2.ogg create mode 100644 mods/default/sounds/default_tool_breaks.3.ogg diff --git a/mods/default/README.txt b/mods/default/README.txt index d7fede08..84213368 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -247,3 +247,5 @@ Metal sounds: default_place_node_metal.*.ogg - Ogrebane - CC0 - http://opengameart.org/content/wood-and-metal-sound-effects-volume-2 +Tool breaking sounds added by sofar: CC-BY-3.0 + default_tool_breaks.* - http://www.freesound.org/people/HerbertBoland/sounds/33206/ diff --git a/mods/default/sounds/default_tool_breaks.1.ogg b/mods/default/sounds/default_tool_breaks.1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2a571ae28d42304ec086ff85779220a8de7fb907 GIT binary patch literal 6019 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 Y+?@l@U}n!y`)^;fZj|SuFY*Kb14D+35C8xG literal 0 HcmV?d00001 diff --git a/mods/default/sounds/default_tool_breaks.3.ogg b/mods/default/sounds/default_tool_breaks.3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a99c4b7e34ad54a62448577846e3b309b725c87f GIT binary patch literal 6875 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 Date: Thu, 10 Nov 2016 04:04:20 +0000 Subject: [PATCH 155/196] Default: Add 'group:cools_lava' for lavacooling by snowblock and ice Make lava cooling ABM use a new group 'group:cools_lava'. Nodes other than water can cool lava. We assume snowblock and ice melt, turn to water and cool lava. Leave 'group:water' present temporarily to not break mod liquids. --- mods/default/functions.lua | 2 +- mods/default/nodes.lua | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 429ce9fe..4008547e 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -126,7 +126,7 @@ end minetest.register_abm({ label = "Lava cooling", nodenames = {"default:lava_source", "default:lava_flowing"}, - neighbors = {"group:water"}, + neighbors = {"group:cools_lava", "group:water"}, interval = 1, chance = 1, catch_up = false, diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index ebd1e5d7..dba84da1 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -467,7 +467,7 @@ minetest.register_node("default:snow", { minetest.register_node("default:snowblock", { description = "Snow Block", tiles = {"default_snow.png"}, - groups = {crumbly = 3, puts_out_fire = 1}, + groups = {crumbly = 3, puts_out_fire = 1, cools_lava = 1}, sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_snow_footstep", gain = 0.15}, dug = {name = "default_snow_footstep", gain = 0.2}, @@ -487,7 +487,7 @@ minetest.register_node("default:ice", { tiles = {"default_ice.png"}, is_ground_content = false, paramtype = "light", - groups = {cracky = 3, puts_out_fire = 1}, + groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1}, sounds = default.node_sound_glass_defaults(), }) @@ -1351,7 +1351,7 @@ minetest.register_node("default:water_source", { liquid_alternative_source = "default:water_source", liquid_viscosity = 1, post_effect_color = {a = 103, r = 30, g = 60, b = 90}, - groups = {water = 3, liquid = 3, puts_out_fire = 1}, + groups = {water = 3, liquid = 3, puts_out_fire = 1, cools_lava = 1}, }) minetest.register_node("default:water_flowing", { @@ -1396,7 +1396,7 @@ minetest.register_node("default:water_flowing", { liquid_viscosity = 1, post_effect_color = {a = 103, r = 30, g = 60, b = 90}, groups = {water = 3, liquid = 3, puts_out_fire = 1, - not_in_creative_inventory = 1}, + not_in_creative_inventory = 1, cools_lava = 1}, }) @@ -1442,7 +1442,7 @@ minetest.register_node("default:river_water_source", { liquid_renewable = false, liquid_range = 2, post_effect_color = {a = 103, r = 30, g = 76, b = 90}, - groups = {water = 3, liquid = 3, puts_out_fire = 1}, + groups = {water = 3, liquid = 3, puts_out_fire = 1, cools_lava = 1}, }) minetest.register_node("default:river_water_flowing", { @@ -1489,7 +1489,7 @@ minetest.register_node("default:river_water_flowing", { liquid_range = 2, post_effect_color = {a = 103, r = 30, g = 76, b = 90}, groups = {water = 3, liquid = 3, puts_out_fire = 1, - not_in_creative_inventory = 1}, + not_in_creative_inventory = 1, cools_lava = 1}, }) From 2c122052d4332aa54b631091e718ba42500ec70a Mon Sep 17 00:00:00 2001 From: pilino1234 Date: Tue, 15 Nov 2016 22:08:12 +0100 Subject: [PATCH 156/196] Boats: Use player yaw on place, align player yaw with boat on enter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When placing boats, align the boat with the player's yaw. Align drivers yaw with boat yaw when entering a boat, would previously turn boat yaw by player's yaw + 90° to the right. --- mods/boats/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mods/boats/init.lua b/mods/boats/init.lua index 4c6937e8..26486f4e 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -79,7 +79,7 @@ function boat.on_rightclick(self, clicker) minetest.after(0.2, function() default.player_set_animation(clicker, "sit" , 30) end) - self.object:setyaw(clicker:get_look_horizontal() - math.pi / 2) + clicker:set_look_horizontal(self.object:getyaw()) end end @@ -231,7 +231,8 @@ minetest.register_craftitem("boats:boat", { return itemstack end pointed_thing.under.y = pointed_thing.under.y + 0.5 - minetest.add_entity(pointed_thing.under, "boats:boat") + boat = minetest.add_entity(pointed_thing.under, "boats:boat") + boat:setyaw(placer:get_look_horizontal()) if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end From 47efa2f5584cff81880ad686eed848c59d29fd48 Mon Sep 17 00:00:00 2001 From: paramat Date: Sat, 19 Nov 2016 23:21:40 +0000 Subject: [PATCH 157/196] Textures: Revert many back to RGBA to fix visual bug With mip-mapping enabled, some GPUs cause a visual bug with indexed textures that use alpha. This bug has been present for a while but not noticed before. All indexed alpha textures must now be converted to RGBA, to start this process we revert some textures converted to indexed in the recent commit af3c918. --- .../textures/default_acacia_bush_stem.png | Bin 3959 -> 476 bytes .../textures/default_acacia_leaves.png | Bin 4100 -> 444 bytes .../textures/default_acacia_leaves_simple.png | Bin 4530 -> 688 bytes .../textures/default_acacia_sapling.png | Bin 3773 -> 359 bytes .../default/textures/default_aspen_leaves.png | Bin 4658 -> 761 bytes .../textures/default_aspen_sapling.png | Bin 4119 -> 320 bytes mods/default/textures/default_bush_stem.png | Bin 3954 -> 428 bytes mods/default/textures/default_flint.png | Bin 3729 -> 3038 bytes mods/default/textures/default_grass_1.png | Bin 3643 -> 2944 bytes mods/default/textures/default_grass_2.png | Bin 3695 -> 2980 bytes mods/default/textures/default_grass_3.png | Bin 3832 -> 3065 bytes mods/default/textures/default_grass_4.png | Bin 4093 -> 3134 bytes mods/default/textures/default_grass_5.png | Bin 4376 -> 3269 bytes .../textures/default_jungleleaves_simple.png | Bin 3899 -> 417 bytes .../default/textures/default_ladder_steel.png | Bin 4021 -> 3223 bytes .../default_obsidian_glass_detail.png | Bin 3504 -> 1167 bytes .../textures/default_obsidian_shard.png | Bin 3581 -> 110 bytes mods/default/textures/default_sign_steel.png | Bin 3921 -> 3173 bytes .../textures/default_sign_wall_steel.png | Bin 4035 -> 3187 bytes .../textures/default_sign_wall_wood.png | Bin 4518 -> 3391 bytes mods/default/textures/default_sign_wood.png | Bin 4374 -> 3406 bytes mods/default/textures/default_snowball.png | Bin 3826 -> 3102 bytes .../default/textures/gui_furnace_arrow_fg.png | Bin 3463 -> 251 bytes mods/default/textures/heart.png | Bin 5113 -> 14830 bytes mods/default/textures/player.png | Bin 4160 -> 142 bytes mods/doors/textures/doors_door_glass.png | Bin 8220 -> 3064 bytes .../textures/doors_door_obsidian_glass.png | Bin 5290 -> 2988 bytes mods/farming/textures/farming_cotton.png | Bin 3844 -> 166 bytes mods/fire/textures/fire_flint_steel.png | Bin 3837 -> 3108 bytes mods/flowers/textures/flowers_waterlily.png | Bin 4323 -> 3363 bytes mods/xpanes/textures/xpanes_pane_half.png | Bin 3424 -> 83 bytes mods/xpanes/textures/xpanes_space.png | Bin 4274 -> 149 bytes 32 files changed, 0 insertions(+), 0 deletions(-) diff --git a/mods/default/textures/default_acacia_bush_stem.png b/mods/default/textures/default_acacia_bush_stem.png index ca22d759cf3b07825b7faba1ca6ef246612672d2..290391526e7bb902bb49076399868d936f0f073e 100644 GIT binary patch delta 435 zcmV;k0Zjh)9^3+b|S`KgqI*Z6-}p`aHN@)Y%j=eb7!AHlYg&@6!Q>#(%P; z+l3*6sasy4+DS*}N4f|8FZDNIvo0jfb9(D>y=A+*p1iBi*B@mH5D|Lk3EuH96P@K5 zoAswZMU*Di5n5^V1o^x?e-(2y8!(e3e0?RNM9@a#gD1RpE(^)BV?yuH$t=OymOvOK z2|ygji1<;0v$BxI`xR~54(aZH-m_S(P%6Si<{+XFL&S|O&+gT)d=JPqWv(!~R>cnV5+ueBm<7%FbP4bPo)TY=~AdCe*o6-B$g=7VRxu-VqhOUyYk`^_@zzn5nolU6?M zB>(&!kg%X?``Em!>YWbe`As?#l;JHGvp(T+4f_xX_CL&yAc(mYcWrar#( z{<59(`t7_2egA%2VZPAEzR)Ua-g4)c6D1FsO`g-&!f$&vd-Ah=Z{D4n8P9q6XlBjc zGRB0E)}R|7^f=>f7jYN~=u4&_l8nCTH`Apc&GY<5;!=f|JHj=Tic}+v4oW5-Z$E4kT=(2UcI&n1IVX+@Yd<-vKOdW&lXv-Seqwj@ts=+YBH>$p2zlwOd~zyOOYZ-x zYy;D4A)o!MqcY2PzpLY~zH@n=bk$nVV&B>M3y)5VvWuL(#%`0F_%ploUbXDGhURY$ z^_s45j?i1tFZ^~+qhT4#G3Rs!-m`O!rB7PEJ5zctC&@GyYY5T{k_zT~)03^@Sa+UiHbdmp**{a)Xxs z-@BV`rkU+prEC_T`gzGT)}7lPvc0!hnr3_?V%pAqO>=JDd3RaMVC|6~EY(v}uituB z=JP>vp^oU)?D@Rc+ZS&+baK@N|LNN$!teK0J`1xlIIjH2|9$%E(4EW=R{y#fl=k(? zsRMDVV|u-~1?N9sJL9&JeYo-2%c7^OS8umEvM0+lZnodQ&rXq-KfPJ*{C@6Cxi`8W zp9Y8D*t6G=|4j3vIn0}{zdOyz?Yf;QN87c(`q_?|PlcTQou2GXOxQPrPnl=_-aTy7 z`ooLPdPUry$9O*cb4rBH{hH3INhPzM6>nShbMnqVH?!h=A4jLxzG13-bhbuJ&1BE9 z2l4)&rHd}k=x5^bX#2POx92bJZ|IU54whr{vuisyk!uN*p*Yv|fMJDQ-hKk?Xt< z(jplcII}W=B~yg2k5zJhu3lnFep0GlMQ#Dm6$}hE_7w$*$=RtT3Q4KynR&KK?|1K4 zQpilPRSGxtHSjHPPR+>ls47YguJQ{>uF6ifOi{A8^~=l4^~#O)@{7{-4J|D#^$m>ljf`}GDs+o0^GXscbn}XpK}JB#a7isr zE&>K!W`3Rm$jro~{L&IzB_*J|0@U!7WVqP{rA0YllT(uQQ*%;tQ}arS^$qn5^}*^> zlC9kGi*gfz`ZIGA(^K^e^3s*`L9W$@Iv41BeYp2QZlFCFwS=TF9u2P1;36pmNK!nS zx<-SGq!1uU@o4HATEWGIXh5ar0b5Pwz~&Ld{{{zO(<(W@C&X1)fY-;_#@E%}*UjGF z&EC)5!Qb6J07!Z`26#9GcsK=lI0bq-2YNXNdAWpmyM_3Ag!p-c_l> zcT|W^bckKmgcBiOExxmbc8nkosr5;Zf! uUH&@i>(j2y+~;`y%&LFpzgoXWWwPfBvw0u07Tg1L2!p4qpUXO@geCxiyDGZ? diff --git a/mods/default/textures/default_acacia_leaves.png b/mods/default/textures/default_acacia_leaves.png index 8db90a5aa8ff8df9851157f95d0f8378418c68f4..626e1b306d356abde3145bc8739f03c92207ac82 100644 GIT binary patch delta 404 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 diff --git a/mods/default/textures/default_acacia_leaves_simple.png b/mods/default/textures/default_acacia_leaves_simple.png index 1d3c45ed04211ee439d95fa2574e673116c00a45..3c7015bbb75a75866f407d158dfeab3235e51f23 100644 GIT binary patch delta 648 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 t4R}@)IN*hxF0O8n5ufu_ z-WxGYnz4Y9>N+Mws~W#7m4MxxmlW?te^J0A8n~BqVejKEHh-AS5KfU~j0(L2^oDU|?X- zHM9Eg;O;#JSyk=txYRIX6Ex9QWpQ$}`^(A6!SD|nOl*I@bw7La@fbI{S^%cZX5j-} Rq)-3=002ovPDHLkV1jxNj?Vx9 literal 3773 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 diff --git a/mods/default/textures/default_bush_stem.png b/mods/default/textures/default_bush_stem.png index c443badccc418e3ee3da5390ecefbfd6095d1be5..18b615f72d9199891bac311a8e3302b9d64d8bd9 100644 GIT binary patch delta 387 zcmV-}0et@Q9;^e97#j!%0000V^Z#K0000JJOGiWi{{a60|De66latX7AAbrN7Z)Mz zvXH9)00B8kL_t(I%k7fOZo)7WL{I$S6$n8f+9I~7|Nl7^+bVsiRY@S2#Ie&wN<~G& z7u35e&&-{x8Tfxe*T-fR*Rwd{WJ(Had3yeA#fr@;uDe9a(&D`1))Fy|#yqa)ts+WE zq>!EDa5O{!^tEmkQCi`us(+O{jmB78Ax5JCg|z@zB0a6B>iUZOaKFIhC!~;wm)8&O zmNQfkv^wc)eMNqI|DvjE3TvAb&X$ZR0H~bDd&hdcWSM4*-}(A^ZISQ(QLW`8>vymNYy3 z>4dtxcbn`2pq|AMS}UCMc;{KnW4!aES$@XcZsKMY*FD)JFpWY0(kyRnqi7S@CcB_? h6)I@(d2TwZ{0&U`r(qOFyu<(i002ovPDHLkV1m&Ewmbj; literal 3954 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPL>$*u~CC<#g|S12gTPs_|nRVb+} zNL5I!$V_8ksJQhuJaUqXI?vzdB6dtdLZ=HOCUM+9aQu7n=~wGky?iP8`?%n`H$EPW zlPdg!EQsXz19dunkTUhh46Z~fNYI&vPBo6SqN8CB2V=sR*YRWAI% z+86DWsxgAmYZ&(4hUpHAqQoNK; zZ)aKzOStGB%Z{JlT9@55c^lfb;SPuK%mqCg9z8XB-?G2>ZdaAOqF>76UeP~~1RDyH z4b11wV0BuN?^F87TK}_R-W&ELS&1v0#YfmS>w3EeRvno(+s67#u=cTa1Y@>( z-Z1Nl(FvizBmNUQBu>2w=~-39D`lGb?Ob>G``QnS-JU*ZV&S!G5pd?R+@%q?xL@(u zj3mD~GF~&(<~Mm7E}dfBleXeq#9Tw==ZB7pYDU#?s!j_ja{UpqGOCu>^jb*q<7ZNr z_Wu;~>DJv^bFnpG*ON=9;~#c~?<#U%Q+j=A_IKMaH-gWbXV1QRe$7SU;`q&Ov$r0c zai;R&L8&8(GNLA@I{D5Wkl=3oXdvO>@cF?RH=&0I?>so8<`$&UYjweQY^SF`1*Co5{+AL)c@|hVED)D##_(GSt{3}rd_o-mlbTi`DS89 za`aPPb<6d$9gc5mSSanXQ?{n)jL-RP2K$xYtG#Sijhtq)|H-Yh7iUWZ?w@*p_uAvL z_VWn=J4s)|yBtNcQe ztFn_VQer{{GxPyLrY6b zeFGzXBO_g)3fn4M}uoLxJU{Ck`#}ouF>EkDFjGTJesCK@tkT5=Y;3fB5c zc19|W#;T5HYFmVkH3Ic8mIV0)GdMiE0qlh`FeZ7syD)UH%6b4foCO|{#S9GG!XV7Z zFl&wkP>{XE)7O>#0XMramwKVl4=12dqNj^v2*>s01O>hf)n*S?Hny(`Y;0<6CwX{g zIS7`vWwP+M^EU71L{DNtsw1DIbHDkt|KEcgj)n7A<8mvfzopr0Q;RXbpQYW diff --git a/mods/default/textures/default_flint.png b/mods/default/textures/default_flint.png index 4e60a6c0f18c248b30a0ae865d54e7f27768fd84..3211db1570ceff9d2dbe0d8a8fdc060ee7e33263 100644 GIT binary patch literal 3038 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 literal 3729 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 literal 3643 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 VKOYiL?f{y};OXk;vd$@?2>_`I^!@+< diff --git a/mods/default/textures/default_grass_4.png b/mods/default/textures/default_grass_4.png index aa548674a4241f51cbaafdbf76517b7e0a0496dd..72c721afb35c7119cd8a758c2c1747d6edb375c8 100644 GIT binary patch literal 3134 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 Y0JQ?YKfQTx5&!@I07*qoM6N<$f=-O_WB>pF literal 4093 zcmeH~dpMM7AIBdOItb!(vacEm;s04Pj|{iu9$hycdraYDf;CX6rQGGR<1 z7zzNwf$0MQIb&$mPrc?mg}kS(1|Alng+Q^3DSErW&u9q!aivOOJ+{ z7Skl=)X~FFb6syZe9OzURgCDpS;`oU9zuQ4cYNIO{)mgFBeNm>uFQ6F$xwZ;tT3!D zGxqi4s~O1V7Q^m8^b4oQ_8Z@syfs7`;Pnqm`wJ-_wI3b*GlOBbF+rMMZ~SdyfQAs} zV)Hh&{$%TiE%Cn*o=nu*_P#R_^-h`y(40EQa%tZUJ?Y*YbjhO1A*AhM)&MAbC3%D% z_!!+js7q>@w5WR{Z=>^Y!<6bv-6I;h7|eb7&Wv`t{`a=SeyP+W)G8g}ra(0ln&z%n z-wR%nzh_@?KcJnCsE2FH>x;(SZ?eOb@H>7|2sIE|u?Z)z8fJSnH%$TIGOrPQEkY z9tv#D1Gp#3S*>`iuzwCt2j$eip_s`R8S4dOCVY24HjmgIKiessk$nHJgg-Du?!BYx zv{R9OIhu#&t?%pFm!0x|TG4yX*Z=tVea{=IGHtS*CuI+&DLj2j^_6N)vC3xiYYUot zEDw^~bY4;py|;f#tu8Ctx)VILgt!%6RP&Tqon*qwBHPvXw&%++N(UU}@ zpvx@3v%VKLkKJ|8Mn`B_3*I#=MZj8wKc1^CUdYr_r+YX%dMo&JIa*ik>72#0X`xzl zvQRN%%*-L%l;+$OOWQpueS74$!k_hK?xt;RbnEn*Tv8c(n94T#Q{(nNpU9Y@N+nw4 zrq1GndelCwQpXkbD(d|By1?$+XUEG^lC(eh&Nq^cJ3i2*!PXUSQ!Yrtv&3M2eCT@P zi$(dpm6f=}z~|FoV*BjvqHWtAat0PJ9Uq_Q)D9TEXh?Q#@}BH3nc{ww)WKul<-d(O zTK@ir{cUmFAdXrBn6U2j<_ddhMBye=9gmGF>hr{z>MfV2W7ofLt!~$x5>v#9Eus8` z>urv4K5fV4e3E;Yr8rZhsRITLVm?sv;MDl2P{fB4)RM{yv7sZL-EP47A}nQ z_fy0<(~3=qPt1L06Wyi9J1U0lgR-PeK~;`g;(Rdl+pX_wlzs1l}U*!u+6g@!U8 z?Z2ixkjtkpr#xKdJ+)*j)is|_r)X&I>WVYS--OUAo@ML;7QJe<$xVo@l8K!6n3B00P;lr;u}L0Q?LY-|va2O>tq z=7$Io>=>hE#J?GMW(=JNX$NxHuw`ZljT6hq!Qs$6>?@o>|A)#6*;fou2s2Kq`-=tS8vz{Ga|(GF3wG_~n<-&sHGxs7-efE?|L$O#`rxq7=#TJlu?b?! d!KU_iTa`4{xGIk*%tPA&o&<0FHP_&jzX2TBfW`m- diff --git a/mods/default/textures/default_grass_5.png b/mods/default/textures/default_grass_5.png index 033d36f9e54a4d83699ff66e2cb2af43042bb8bb..7fd6838805d5e6ef99eec788e061793e3eaa7665 100644 GIT binary patch literal 3269 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 Dt1U4% literal 4376 zcmeHLYcy1C8{UL8#_&3nl8lk0FivU4xeQ}symA~Q#>~cG4rT@uc~Ln<6vpc?QiMc8 zA<-*2R+K}9ltYs0HB^#QBsluTdTd+v-f`P=X$PvJ=c2Hz3=rTIoM+* zA=@AT07&9&Fph$!^m-HDAh_?=l5zq7(e4Om0^5-o4regwew1Jk&OXKf;UI_N2LPOB zwQinSGrOQ){N>$+g++YPCXepHYQD%>e;#_FpJBWow|YadJZ^`JjF0}e6;`hK`w;tz zO}w426|~G$5@sM`zKi~A>5`pZ$}?zASIZe6?j9Sl!cSsg|nBupq3M)sob&WvAu&>Tki)w`K)PkWs)92cu6R%1O70{pNgM@P(nx&1JibQ(?l*YPjxiY} zf_|Ar@5Zs;7=?MJ6pLbXJk(=zXC%5Hv4_ny!~-u^P5We{nZ6UR!*IbQZPf@vUhbmbb3|=Fl}!mfzvh?%VU9Hw8uUBl$kT;S+ZsuO!7$ zR}S;!+(s}%K|4X}@8+xfnvFlK=^M1>DEv`U`n7lXs}64dTPKv}DLVpqj!D%n(D6B? zNd?x6x~<3eO%(5EgX>)qx3r%-Qz8M2_rqs+VA zgVI=9Q#VpPAfi}T2$IP9PfA7V-s!aw$0<%tdIRw#;n5BGG)J?&1diJNc6_8J(Xq`!4ETlb_NYS<;N8COn10 z)C%o`|A^6Q>gDjP1Ls!^uMm&0!P`nvx$MtCKBEx&`ySeJvL~TYj&5I6KYN z?VT@MmzFYkZ+`EGiGil8(E6tmk;5%zwa?OeTKG_-yUDo+I)bt)Jr??Eyuvlp7BR|P zo$b;C=L0rot|kqjJnjZ(D%+6pLW$S2k|YsHo;t)C?5R=f@MAi+9wW8j#igstFNN{b;WSv@5--y6xKz^4J%b9T>^kj zffT_{gn+j*BGIYZL^9nM)aFnb0u=yYV$NX@NkJeR?hE=;Xr_p{#%2VZLN-OX?ZfNf z8J1uG#U_FYIz`w!lOlphXfndw3}V7D5)e>9HWALD2GdwZ98<)1UL(Q#dKig-e}}Mx zOc4aU1Kg6%1mOnS2HHAWRvb#09>NR)H(`?fj2to6KPUt}Q$zrp%`ieD!^6Y1!}Yc4 zOn;;<8jVKk=pps=v;+t()-f8J$kC#)RM#o~&4B?~B&NVR3Y`XD=Op^lL)oSXgkT*0 zgPctIhno?~4F1kcCLzIKkP6b+ETpcsF7i8`Ofs^jGpR(udfe*|(}E%Jw4 z!RnF!EPq|Y|Ni>*k)QJTmtDW?`Y8u~3jAw#{j%$)9QY~luif?kWf$Z>1r$gVR88T6 z@(5Uqu@ID2_6~N=R%^0`8V<^OE^xGqiXj29&r8jatYqz{X3d5Z7#cPaNXJMW`)FN4 zw5oTEzFoYbV1^0mccfJ9Lx8$o9i!^WKj01~q6O$f;4DF}ia**Lt_#&L;_vcIY5Vzc;yP$CX< zz*%7+H07|2unN?&D28}oOZ)xG#pcTzsYT}fVd8Hk?yOypo>~h1Jp2NTUj2RCEaz)0 z)Ej4Zqn972Xjl=`@FWDN`2>0R9N23gp-DTUV(5VB&)DJkfN`Q{<8Cq!bK@0d=wM+W zVId6x)$A!uxqb*^f~|Ow1;%m%l8~1mLXfF_i~>PW%g0 CoeHi1 diff --git a/mods/default/textures/default_jungleleaves_simple.png b/mods/default/textures/default_jungleleaves_simple.png index c60bf12c5bc43d858fded91ebabf3f7f91998dc7..7165100c7ee1b526628a81fa387f100fb30a601d 100644 GIT binary patch delta 376 zcmV-;0f+v(9-#w}7#j!%0000V^Z#K0000JJOGiWi{{a60|De66larthAAbrD0yz&= z{QZys00AyZL_t(I%XL#bZiFxpeYU^_!3rXxT=@vT|1oj|v}LpwD+7foCdKAOgA=AP zvS<8$#sI*_?OpIwkNea3p%dp@lzhPX_O#cJ4r$(ym)!tB6XGNQu%?2?{b`_zmxMS; znm4d7FT3HKWph6|_@R>!Cx6MyZc08-^6`rV0NeurUTD`;kme0*DyWM{Y#zhg>3mHE zmO8ltfFC*m0Mg_zFVbc6vYT4F9#~U>^X-YDmT5wqWd8gzL?#Pr)@Jfddt=kQ{V|VC zdO)w5iSa`xS|7iON~9|@n_3^;_vnPfG_^L<`4&yB^}iIZ%mna?QBgmZs}u;*j}H3r zSq{^{E2P>)0yLydV`>9EUeOZB`BpT5)qf)YG9uN{hB%3iG%vfc`dw>!bt*MG8vYG9 W+aavYEu4b@00003TN{2aB{0f0MiXjqb?$YW3s& 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 K^Q`->eg6W#;!IWm diff --git a/mods/default/textures/default_obsidian_glass_detail.png b/mods/default/textures/default_obsidian_glass_detail.png index d29a7a7160d72dd40913ea4ca076e7af72f6d8f2..a8bbec98d877d4df1130847e873d9c167bb033db 100644 GIT binary patch literal 1167 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9DvULeeP$l}IhprBM{ zNJNQqer|4RUI~!Pz~GyhlB!UiS(2gPo|#(^r~B_60|Se+r;B5Vg&?B<%lqG8Ringc g2#kinXb1p9fJK0TQR@Bm<7%FbPotE2oM}ep9e{q)_<86uAj|J?O+*@$`z4xId*0=Aj3jMwOQUlWw z#@iomoN4*^_BBs@fJG3G=h@PnLs>!Rrv!)frR|J3bhhR*z?#nu4vj@RgZ)JtlreFs67%tExxKY@2%{;YM1#Z?q9rGb&{Foe8{J}^&0Ab zXCzrf?%g=2KB8{Y>^o}nGS;S_dzW~w@a?)~Jtxjp2lua?qwM3dMa6P@YRKWm61O9{ zSFtZ~bbj;YhCmeivDO(XeqL8rURqN4tye0>$427MjGY_j7_px}WX@9@+7@e`#b5CkJ-f50QR7!_*oW?Lox{DZd0S_& zDwxO@E_u#q|LXUq9b6o*D$n%sUaN@F;#(>kt=;#8MR&%E7wc10UPm+bacmPkr{F4d z)MwEYO{vX-4`pO)v_vc~wec$`gueSQX|e~K%oB#3e)90JekAjJCQ4l z(_H1z@kz>UtGd)e&t|=f+L9J|b87LnJ$V&J16AJkpV zdNX3rlpyV%u#9yPv4#t;HS=3uTIg=~=EGu{t%@~KS+|NdKU+98%)0#L4u7kloz?n# z`J_0OPHgM5$@!tN*stZ*l$p!U+2sDx*?jMcModKgs{Q`Ga#wz+Y*oAE%j<@y~T zn`0tg{A1m@;X1G0Ejs&c^BD0_*8I&t*y-xBr81Vc~=W_E%TCMwfLfwy# z3H6Dg4Z7a@-t2j|DYr3G!sp!_zmM)`H2h0$Hnu2VSTf;twx;g!+a|Udmiu4i@f-XV zxwcg&`XU1ZXI3UK2S)h%SS9D@>LsS+C#C9D=?Nk^)#sNw%$0gl~X?bAC~(f{C7qo`J4wMP`|ik{y?VO;JjkRgjAt z)CeHYRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdwuOzWTH?LS3WCX+v zm(=3qB4Eg6=I1GZ%uGzmFD$r z{DK)Ap4|X;dl(p#yxm;OkH}&M1_Lh;W;|qZ<1tW>y~NYkmHh!XyD*zX z_Q6>|c?Pi(*N775{9I6zg~2y5B~_t3vm`^oJu|o9#i4k4pb8#O7sn8e>&XcUyg;4- V1LN^kt$jcigQu&X%Q~loCIEW@Pu&0j diff --git a/mods/default/textures/default_obsidian_shard.png b/mods/default/textures/default_obsidian_shard.png index 295cc35247903082407eabe2063b7cd5f17349cd..a988d8ce3689cb6bbba1e3d01290def0c8c752fd 100644 GIT binary patch delta 92 zcmew>oi{-ujDwAVfkFQB|3n~V>gnPbQo)!k!RT=O(06;D$+-=CW+_T=b8!4ocQ literal 3581 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihp8YU=FMbi6{w5ELSKf%1_J8NmVGR zEJ#&It;kGcV5qqDc3N!N9R;4&`;o5G8&p~nEG5oZ-gTUQpIhx*#iz?@M$f-2RWplV zcDm#LV8`F<=ik*mSd?>;b*o5mk6ic(#bQV0pO3AwJ|)^+@2<~`dGqd1W1`TNqCLlI zzv^#z{hERM^uE})=U#o9JWbh3_PqD8GmH1GRhX{)@UY+OyH8Emwak9H##*I5^8D=b zW(nVi{x?4ANp6?h%%LQrE+< zExFTrCT%#vm2@`z!=0MaDV?4*%N=^TN^hmdu2ed5z}h)4ZJo~LX$tkvtQNKeuGs83 z?U_nrD64tn%<~Z$=Vm{znJSc)*D}wiz)j-gvK`-h`lnnDe6M`8v&L$xQ;bcKR3cB& z=y@9F8D%CF{;p6RxNx@ZTb!X0D{djZ~ByY>>`su*V<%< z$x9i+IJ*99oG`)J)wMbJ>WXEao2O|Qy7U@G$)txEZcNC!cxFmObOp!`!%om&qeT?o7=hfr<&zXKK=NxKaa@WecQulN2P%lHQhVs#g83 zX}M9rSE`=uZ5 zUo@BH6w2IUCiACmR+s&2TRGhty*FtKy#2XO*2;M0y3hU)7=7`|CLf`9wL8;a7|Z_E z?AXtdcI_SK!7~welDqb-y=&gIV)+9^ug4R@$NeJn5A zdF%{M+Xsho{Vs|D_&MR$Sl2!&Ek;zRWpYYOfis9b<4f z*){XR{xv#R4LgMSS|29#nEdjzOV@9k8~NyKXlNy)p|!{@zjs-O85lUTGJ#n+!q>+t zIX_n~F(p4KRj(qq0O$+`1{?c|g2d$P)DnfH)bz|eTc!8A_bVx6rr0WloBA5~7C5J7 zWO`H;r3P2|g(O#HCtIc{+1qj1R9FEG$W1LtRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8 zZIvQ?0~DO|i&7O#^i1>&bX_Yl%Z!xlxD;%PQqrt~T-=~W0C~1b86_nJR{Hwo<>h+i z#(Mch>H3D2mX`VkM*2oZxO-9i^u0dZ`ye;a9*kN-QW%d0*JyB&6apkE9!*`N!9`LCkfeAtbq%fH z;zBf_QuBbVrgC8Oh~a;O1F&hu6W|l#nyQ;FARr*GW~gJ~J8kdP{XlWXk|4ie28U-i zfE_6Y#w2fd7lsa2Sq~tGv%n*=n1O*?7=#%aX3dcR3bL1Y`ns||;AR)*7umcuR}d(q z>FMGa!f`!0!GXQr;fS|FS{$d+GzQLnoC=2+JtCS^LLH8<3S4YhD9!L+p7oMy<-}^B OCI(MeKbLh*2~7Y-WqlF= diff --git a/mods/default/textures/default_sign_steel.png b/mods/default/textures/default_sign_steel.png index 2c857c02425c234091e6b7872fca23283e441132..5705c787c7cf2a5a990ae329c0b064051a1cd063 100644 GIT binary patch delta 3153 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 literal 3921 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 Ef}yV&%>V!Z literal 4035 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 diff --git a/mods/default/textures/default_snowball.png b/mods/default/textures/default_snowball.png index 7511b0ebcb361075ba6b2dc0d35ae74a8525b1c4..e952b79c03c0401d28e814cb95ea7074e7cad0fa 100644 GIT binary patch literal 3102 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 s06+jSQkt0n0*KV!Z literal 3826 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPL>VXg{^C<#g|S12gTPs_|nRVb+} zNL5I!$V_8ksJQiZdgP`j8a%H5BVF|wJv$ODXDBWz4>$T&5#B{u@o37iUYG7YcpZq*r_U zvGJFxYK0wZ?d86zP03Zyb1spb*Uod^*{*ED?Fk<)UEXJwX+Qn$-I8zTU4I+QpZ>Zb zC8X6h@vyH@-L5?xN&@4$E5B~+gjOc$%0Z(ZE!e{%Pd<#%rG`TA)FSMp!E2lI=z zd|l#Swe!vgdMNq`vM$0`lOZbo{5QArl<6`^K{E2x5eiiCxtMJ z>9F2m$=a8+@TIwLeXEj9_#qE9iNy!s?VMSD>iw3}0q++d>CD+v)ViZ0g!hodlVg&L z8CrgwTY2u!xwLn$j@@e%6}U3JfoH~Asp#H0B{p8iC2cw-sMvRQ{=%cvqTa38s&}{a?Y?%o>Q_G(ZChyDIEjRlh373A0$MNIh9%qA7voZw9}GZbqzS}~E&Vk(=VKuK?eb?lqGC;OhH zU8z0N`@eUNzkHQ6Z&YdHntBkjSjK z=eF}_eh!O@-D}zU|JBNEmv`o0KC!s?vqY=)dyCqx^Xqq*+`gfDe#^3o=V$+jFBof_ zx%HsMV$Gz3<7McN20CDZb&8pZDsh{4_DHZJXvUxU^&XnwZ(% zSBh%R{%%kR51Gnt$SZPV!#l;B3=EuEnZTka!q>+tIX_n~F(p4KRj(qq0O$w?1{?c| zg2d$P)DnfH)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1qj1 zR9FEG$W1LtRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvQ?0~DO|i&7O#^i1>&bX_Yl z%Z!xlxD;%PQqrt~T-=~W0C~1b86_nJR{Hwo<>h+i#(Mch>H3D2mX`VkM*2oZxO-9i^u0dZ`ye;a z9*kN-QW%d0*JyB&6apkE9!*`N!9`LCkfeAtbq%fH;zBf_QuBbVrgC8Oh~a;O1F&gj z5a1Ky3Z$n@T`_O|=2fc?oj7^z%-P!)Egv@Z{;|S8u+)dHem{`=1{^ z{`~mqSA-DbWuP9$k|4ie28U-ifSp4I#w2fd7lsa2Sq~tGv%n*=n1O*?7=#%aX3dcR z3bL1Y`ns||;AR)*5EJ?}>laYS%hSa%gyVX0!U67>y9y?!cV6a8X!|~QbGw7d?YYMF zejE)c=ic2czQk}M!KVC~AG=3O<+-`i+73KyoqgZjHs~FbOpsIv5Id5u$e?W?%H=w@ Rpaf_tgQu&X%Q~loCIGf{2{Hfx diff --git a/mods/default/textures/gui_furnace_arrow_fg.png b/mods/default/textures/gui_furnace_arrow_fg.png index 1021103200f1d8bdd9c20f79389386c51d38e492..8d3c396e77b0dfa0e22d78d1a552e72f1f7e1376 100644 GIT binary patch delta 235 zcmZpd{>?Z+qMn0|fq|iTj-w2aI^^l%7*cWT?X87EjE)TLAFE9~1w~v1SzLi+0E??4 zN7EvXE+vkxM~or*Nwr6N42vJ9J*m!F6zhZf=)ShC@oNV5*|Trsc6ZO;uM!1-laYi6{w5ELSKf%1_J8NmVGR zEJ#&It;kGcV5qqDc6wmZ6AhlW`<6%L7(F>UA14@uRySMz`))06_4TB`M}AMXxnpnOVr07h zdQIM6uAO#j5w|`)j+9%IYrT)xmZ#puA-m>{!gj@n-hRJrr`WDv=70KT`KM~h*S|jH zdANn&aPIptr72opzllS|+tvTYVu|C`bJqX+eW$hh$D}>gUncF2*d8-4STN}x*H2aV zXun@d({J;B@_9TnG14$XLy#;?n; zaAWZ*?ft7;{Y!=I8$|`KOieq^lx?FY+5jFL9GbYWsUuYBs2*|(Pc^68B`@pqO~Zr0?8sH$%Z*f!p5=bUxC z(=ScoSf|4sHAWE=|Fnyms`H+xZH|zb?Id}{Lw%0lWC@OClOx#gzL9%UcTzXwmu}u4 zlO)W`O zsL0L9E4HezRRWu91!RMS^_3LBN=mYAl_Got6rA&mQWZ?}O!N$NT`MxnjFjxS6l{u8 z(yW49+@MAPdA3R!B_#z``ugSN<$C4Ddih1^`i7R4mih)p`bI{&Koz>hm3bwJ6}oxF z${-^kX1JslCl>*OE;Bz*0c2)kQhsTPt&$Q@UIA)&N;2H+g3_WKu*oUO`l&goxv6<2 z#rlSNhWcRjDalrD`9-;jK>eAyiRr2O1$pU8`XJZpL!Arsy*}LgAUDt+j9Nlc7>@?m zXmF7f0wgIOO;1l8sYGX}% z7+UDI7sy~N3GxeOaCmkD*rj1$O!9VjVd!9$^#F1>3p^r=85p>QL70(Y)*K0-AbW|Y zuPgflZgycdwu$GK3jl>QJzX3_BrYc>9AIG&$b81W!o*%Gx8Lo*`_h>gGwMuk$@L!F fkiX+%1S5m=CjE=5Ya(s|H8FU)`njxgN@xNA=kYA9 diff --git a/mods/default/textures/heart.png b/mods/default/textures/heart.png index 8a40a111b95a4071ea0b90f77f7b6403e680238f..6d4e228930dd00bcff09f16a30e2873ce1c7feb3 100644 GIT binary patch delta 819 zcmeyV{;qg}q#_#w1B3kM|A|0~v%n*=n1O*?7=#%aX3ddcV6f1byn(fi)l|W;#yWRxtd*0q&TFqAXPsowK%`DC^^-& zEH$r0d9p3L_2h?a8k0C}Ctu^xo1Dw3JK2U)S0p9bDlNY#H?hQ4DKj@QJypLTFMYBl zhr;AroSu{Caym~|=5m}I%Aq)UB8TJT^&G5|%Q(a)zhn=Lvg1-vP_U`UE%5cV^2jVM z$uFt|3n|zXrKDK}rxrqZ5N=K;NHq|E9ch)AT#}ieXRDN4l$uzQnxcdvnK}6(rwuP$ zZFxp&-sA@y3Sw}P;{3Fd^2DN4$8?~_Ci8QuS?WV=)45_%aXYyVz=0Jhg{ep@&8*V1_a4{Y|bZq;^ ztpYyEfgeF4eec~x4Lm}r&DuVR|%*U0?y~{o)3w}6Ie;{?o^E*3> z(|m+BC-g}g%KOL6IN4xUpdxu-DB5^}}l4g0;Vx)-}|Id;VZ$e8OPQ{nOOrw~l_= z!no#swJpEC+lVXs=J4~yab1#(xL?m;&&;W>;$QlZU1NL0d;f~}PFtDo@|k1_I!R{q z6e}`@G^{liOYB#yd|z~c;xi`~2O-xBvWuTo2N=4^ zX)AO#JE}VC_bajx@pm}GNq8OhG_JaCfb(|o4?n|k*%Ggwc4su0ef Sp>-4(^bDS^elF{r5}E+j2qEPF delta 1917 zcmV-@2ZH$SbNMHb8Gi!+001a04^sdD1rd5wSaechcOY}mrt2yxDl+@}Ba=P-ZZ zVq#~Uj~Y@47MDvdaYje&zIIF2t>+ootMkEb?iUP`pp`ug{eR5Qu=~e?=#IU7w3}Fu zA3csP&&Q$6of(~Sf;^6dx1G+|q_Zx&r{kQT#O30i{5p0KU^EY-u;DHVKfiYoL?A&j zo`ffsvORsmD2rb+zrfDi-52og-V1g%AG>^n!q{*ogcppCo&49>ErecJyLSHYLV}I< z`Fg@`jHYAseSf;_0+0&k9O^pC>R}={a z$WfzAgZgSKRfOocGvH?C%Cc+<_!HMfikmkLj*_GqQE*kko50L>EVTAbYrjg0of}~$ z6PyuNe7en7#^1SbM`KKh6Is2nLR>rrh%hE|^NCp?gn!1t)GvJ3ZJu;vpNJJO=oie2 z17=&ci{j~_Em=GZ=6UOk-Eybcjsrl1y*+|~q8-^l;wg}g%#jEK9DgOc=wpa6YD_V!s8g>&qpBv&iIbp&`4mz#NmEKWW77=R8LKm9c4)z?sC)tYK<+@vA>TWHZVZK>r>9a8G9`yP7i+EdR1S{pLl@FR>kbfl4Q z)()#5S)&)`erAmhYm+gz=EVnVFvobgpjl4*6vHteK0tk&9h@l)+zY&F?P!4>^Kf{QGI8V-lh~#K>t@U|> zOMg&(XFx(!C;vG`NR@d*i6}tw^JB zV>?J#Y*X2@qEFR^yd%u1xI)9?3 z-t0Ops`E=rYCd56j-Y+L@}jXIgmqvirVS}u#n~x}_$E1onQf#TWS&)zd0K+hD!dc17wHi!@8edS_H(%AbDmwHXlgYSe`y8cXnX`g-KAT;xY}~$ z5m`7|cG|~x6-W30k`bTga>WPn<9~&jh}3~E*NX_gYnz?|uOo}ZQ^YL5u19JXAGbZn zi+d}oday3Vj$}?XO!{_AR~t7-yrnr=Lx~zruhhamC4ZZ!m(q~U!1W9?)@E$mB2xWl z<=@~>>`n)lP+rTG!F?cq&H(Z99g=I8`0Kc`3K=f%#ob{wI#`KQ5WS0p5-2)eL^t00000VtQ0qbW&k= zAaHVTW@&6?Aar?fWguyAbYlPjc-lRQyA8lV2t#|O$OwSBPu2-E*QLn*I)aqgvh-}z zx*w;bWJ;K(c3QBde@Te5Vj?6?C>VmCk)%(8YU;`DC z+5}OPaRVQdVFVqM!~_i7vH$?N006oG0KfnM(EtFP7!>jV0Q&#{ z`vCy^4FLNO0OS`4`xOA}AQt5$8v7&~`z1Xa`!p{5H7@%+H~T#}`%g>zP)z$#PWxV4 z`(9l8eS96A|6l+B00DGTPE!Ct=GbNc0004EOGiWihy@);ks%j<00(qQO+^Rb3kMSl zH*BToCIA2cen~_@R2b8Zj>{H;Fc3qh7PUn?pg>ToLO}%o{|BM=;A2O2H#wOJ(IV}Q zCR)d4W>wlt9v=&+zy_6TZ`TqicA;SFu75ZSAe5AChgaX=V{9|`9J>3&+2(C%hHE^7 zb+{_{eDa*E=D#v1^?Z=uWf4!g{M{-N7XRxbNlP^X8Vv|xc-_|$00000NkvXXu0mjf DknwRE diff --git a/mods/default/textures/player.png b/mods/default/textures/player.png index 4f9ec06c66cf362d2ff6df56119a5ff41fbb61b4..6d61c4342f39fd8da8330e97117c68a3709483fd 100644 GIT binary patch delta 125 zcmV-@0D}L(AdUf$7&2*y+{QCObaA>fUN^Y f;3~+!G~umW9#GF$kG3--00000NkvXXu0mjf_UJK4 literal 4160 zcmeHKYdBQx8eWsb7Q`gp?i9IHh8f z9Cip%kwa1vi5RCXpJS3p2bJ1OyX)J3_8&j?k9}R%b-imn@AKa4Ue9}9@AX{wN_2EM zBqOOT2>^hMjkSdn_=JH2u}K8H`%c5W06;7}jOfa9B8MP2T(&PgfQI0Oa%cz|pY96) z{J}C3BXxO~^tUb@t|$SQ(sJ0P&g?>-f_KV%=E#>|_}w;d@d8pUjPz$-*fZMmMrxSid#dOhVC(?j^@mU9~Bhvy8F@r~ZYjS3dEkLFH$Jgk{7 zV7BMPPg{;3{}L2C9N%7ks_LIEqjO1jPS+DU_iw07mIPv@S}iW|7<+AkAE8cBcLrrZ;dGh3** zk5bcVK;Q+tb~DSE8B?yCR)sY>Nohm3&Ziga+IHVGGitttuMo@{9f|DR$$u-pw=7ye zR-Rq^#o%-HSA*8yby&#`=ZXx(YEoZBX*_uhuRMYLt_RQUL$;vBEQ+r0MQv#yk zc{%ZQr*5tPYdgVowR0F#2L5#)kTfvK2iVw%vWFd6u1+kID4K1J5-l92X~YmqwxLr?qC>4t*@l3f2B}|DbOW)4lYCZU$7Jg{U&p6dk%#%(QE@fbGacGYbe|;p zV%-BI+1Iibkq$=J73Fv>u3b~TZ~s1ATd%Y5M?vMijT zO|$mP6uun7;4pnD4FxXj$OJM3NsXf)_c!;hULl7PMTqzr%&V!mRBb(CbO&-E%C+hN z)K6gj?uQ7m)LVR1C56S8-rjn{Z9q+Wr^jAntB3GBXiseU{^(p@an0Y@k)QMNs}jRZ z@$NhI?bR%(afa0v0<15FlZk5WcVd%Y9!f7F7!TPeZ91}~?ceS1-;qptK8I#Cz*TdN6UOZywA8t4i@!K(Pa%JBoUo|XgmezO+Yqf!l^*t1R zw5<|uRpPh)_9hi6cPDG55_W%|Opf z92m+qviNk5zSy447~Je;_~KnnNujU0QQr#u|U5~?y8IcOtAdd%1?@9Qym7aM_t z-N-YC)#h0{HpagrT>YMNX2IrHm>{MfcRN=_zVMr^yNa*uxvGR>%BP6Z%Kq04P3I%f zp3KXrpx$zZoFIbbl`h<3@XQt?(>yGCW6(XbEd1cG?FBie)}gtG@IFIi-0z+rbW)*@ zmhSdmBlKf=j-?8T17A7wr2B1JvRyt}kG|D;ax>wPovnptkJi^^qy|m0N#5*)~DBT%tY}eF$ z+`C^@7~^IXA%B0{Op3bM>qYt2&$drrd&wS)ISYSOi2%E?&wp*hbPkWQ)`szkO)^n> z(jq@HV`NhYZqw9Kk3`}Iye#CsJ9>l}p(7eYTRrt=aDpdG=)+P$%gvCp&E306z5VbH zISW0vV#ilpTtWeTJvkwx1e*>35+~_k(|5JE!&2Bx6q(BQp`rLp4p;^N;12LPWD0}E zL-^4A=qx;P;cg=mL8s!8#|-WD>^TQ%{&edwF3ma2fk+8sP)w-E1N$X$d@M-7r18iI zJ~Mz7h~?vvKY6iWyp~2I5kDb31|I2Z?}#|a=F$)bCNF=z9_(e{o{Kd@);s*R=rc%(f02-6V;sv7hQTphgcq#>J z#pW`};QMqY*^h?iu>6qdwQAA7$_00i{%iYdHT>_djgPEL;|;ksk>jH0_t_``? zrNFwt8>j34OD@U(7$_PGbWI_kJpz725kPAt;b=#+1OUG^n-v9oTof4t0|?K_!5JV- z4S@gK0L16;AqyZuOwAgcNN}u=2LgZ;d~HC0tQ1NpW+RO6pF(t0BcSeu+^<3D%quk1Sk<=%nT*93njF!R!Si%Tem8gkm!WX@h&B| l38Esb7{(=q?$6@o^1yd*lxitj1q~7cHkJ++<>uZo{{o5VoC*K{ diff --git a/mods/doors/textures/doors_door_glass.png b/mods/doors/textures/doors_door_glass.png index d0c14225a2cb54bcaac5f992c10acb847d42f05c..f597299bdfaa2389d40c5179069ccd5685b937f9 100644 GIT binary patch literal 3064 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 KT$PMj@P7fLXo_C| diff --git a/mods/doors/textures/doors_door_obsidian_glass.png b/mods/doors/textures/doors_door_obsidian_glass.png index 74a7f9a092a39db3acccc47b2c972b584223fb2e..107a5a1ac259280be3387dddb81ec0d1759a1c42 100644 GIT binary patch delta 2968 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 O002ovPDHLkU;%>CyqnDc literal 5290 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 literal 3844 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl4m_Jp8M3e+2mMat#<)>xlq$-qD z7NjbqR%E6zFjU;S8y-FFu?ElI>so1?9!?z7nk(lRThDmfzo9W?lGm=wcjI%l+{6?* zt5x4LeY?M3_TR>C8Oslg43`MZiM9Lbady4SBR{`_nwe@E!umksPELUL^5`xl=5 zdGkwA^n$uq{nfS^Gs_;CwA}ts`SF9zlVmnaUc=a`Ip-%l+x2FDPWr!^lJeh`RbkAF zyKW{kWzBh`K3#kpheg3Q>sxm>PMU30v}JetA35tAkC-c>s}7udy7GCo#(`E#MVkbZ zuNwSS_wrs$-1_uq-hwM{A93!!m;GjM?C#Tc5 ze0FL}!u%PhI^W-X;C*k0{*g_F8tP{*n$5UdIMae9f9Fy4^Esc7R2GD1F1VI?K*8vK z(!mI~>Jr9Cg9X7#t|l^zKTg&yO7d?vY)}dj+*Np3re}`F;q7Y!ZJtlMuyotvqa6a; zvZh%=>B^_8H~tBf*KOalp+aDyf>z+9CkGC)b1G&?q=$rstzYCAx>)V(#KrwW&Q~Oo zyDS5ftPiQQE}4+zrI}tl>ukxkt2fi0)Lb~&ZvTX%UGAfYyWTXrqvDziGdfkL#;h#b z`f2?_tt%11XL)BY4f^aGm2oS{Tetl5)^m5uUoOn&a`u{go7?!$>`muY&u%uX zKX+L=ds$elT7itZk%jTG6N?SkH8Xl=NX^;Vaqn_MUcob=$UqLsY>nnQUCoBc7tB>& z?%288@cT4#f&YT}U%D(MuKeYEmJnb*v-;Uv>1(el-cOypaWxnFvcBE2Ii_h+^<^^u z-T3!sKX`9&WT&p@A_Ls}IdM^4)%mw{QG=z;4U7poNM5ZZ3H8tn4kvz4kk*cc!(Je|z|K zo&D>FywkQ6T%77AZEPK&-}&o_(1s(i9C@D6&!5!xul*9LbiT7ld)o%x2?i zolX9)c=*5S&Q%$6*phUCg+L#Ez=pB{W`9OhdyOBv=+G? zJ;Sz{fq^qC6Ij$l`1)8S=jZArrsOB3>Q&?x0A0brU}IlVkeHmETB4AYnx2_wtMq>N zekFy>6kDZmQ(pt$0_W6>OpmIf)Zi+=kmRcDWXlvKdpj8?tx|+8VxRzLVzU2 zqp52&xJU{Ck`#}ouAvoNT!;o#Y96rFR1Rz&G5l|E05z=wd_r7-^o$uZmM&eod-v`= zd-m+zyZ7kPqsNXNyLj>9rAwDCU%q_%_U*@yAHRP6`rW&C@87@w^y$-=FJHcX{rdm^ zfAzfG(}DUKOM?7@862M70Co%+7?Zr+T^Kr8Wj%l#&H|6fVg?3oVGw3ym^DWND9B#o z>Fdh=fSX-dNK<5^uMAKq!PCVtMB;L9|81cL1r8VU&vl&L|NmcK5>!1!vi&iWHq+~e zL3i!>jT=w;OXk;vd$@?2>=OqA1(j@ diff --git a/mods/fire/textures/fire_flint_steel.png b/mods/fire/textures/fire_flint_steel.png index 7eb4dd39b410a8cc61433001def20a2ad31e92fd..624f5565dd3029b7f3fc0ce0de374bb8977e301d 100644 GIT binary patch literal 3108 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 diff --git a/mods/xpanes/textures/xpanes_pane_half.png b/mods/xpanes/textures/xpanes_pane_half.png index 7fc02522e792296e3505712d17f4bc870e7ec885..4e846dfa088e9842872673dc7c405db46e944bd4 100644 GIT binary patch delta 65 zcmaDL6+A)0nuCpjf#HZps56j~@^oBm<7%FbPotoSCM1!a8e{q*B)4xLnGE9!Qq~Cn}-Wu?7)vI~a(oF27MHKjM z9P3wn_~-q7!GDg5XJxL~ET0tQa&b|sHk)PK(^s0WvepNc`LF-<;fI{0lB53hY^(2o zxOUd+6x{vvI8<&=u5G3EqUeuWM!M%eZk&6kt3}`P?e`BKw!FGr_HFUcd&jiq-;+J~ zg01#YqrYawn@vg|943WqX))_6zVrBJ?y0Y@Z`_sJ%l=+&?@_&Ly3?-*w9NR{@ zc4szkoRJ@&aZ~qn++v>7a}6eQp5oB9yZT}32me=VGkRt|axsiA)Z#WcKc`K4@|_$* zZjOvMGj4UgU-eKk|B-M6qj7ZNxeJkx3s+k7*cEw;r608EmNHBEv`PEBXwR)&^`FDx#ItZZ1C zbwd7nkIX8yWe3kp+L@{yHd)1YTF@tx_bXmKdiCt&-Ob|bBR8d;)~r6a^GVbWj&%mw zD=Rd1P6^WP30tu)BGz#6wPt?HFB_C)>z*u@*{WDO%Pf0k<>|FsZte6w{_*|F>K8kw z$N5`L^jbczY}w`WHPbfpJ-Ibu;bAu^yH6U6?_J4|zb&5i#qC{n)|QpNNxPo?WH;@& zE3cIir*1a0Q9`?Mhd+}?#=J90YN7L_^UCC(?0YKa zQ{OH9zbj_Oi+^l84KC&u&EHw;xc2=2xacG6f-RDzQXeEq>rE|ws_dCpJmK{p>%VF8 z|4JVAFOqk)@2V5ot0lE#lh+S<{X1J8>oSQH0@HW`)+C-;P?8Kv;l zO)W`OsL0L9E4HezRRWu91!RMS^_3LBN=mYAl_Got6rA&mQWZ?}O!N$NT`MxnjFjxS z6l{u8(yW49+@MAPdA3R!B_#z``ugSN<$C4Ddih1^`i7R4mih)p`bI{&Koz>hm3bwJ z6}oxF${-^kX1JslCl>)jE;Bz*0c2)kQhsTPt&$Q@UIA)&N;2H+g3_WKu*oUO`l&go zxv6<2#rlSNhWcRjDalrD`9-;jK>eAyiRr2O1$pU8`XJZpL!Arsy*}LgAUDt+j9Nlc z7>@?mXmF7f0wgIOO;1l8s zq#ykHfBs7URUnJ8B*-tA!Qt5rU^j+=G0EHAg`tC0)&t1lEbxddW?n8_?|zE{|FS~^K@|x;kcfhkdvUm%E+*H2Zx|oj;9b%hQZU-&t;uc GLK6VdmoO>_%)r1c48n{Iv*t(u1=&kHeO=k_u!#sunBTpc z{1_-Cn;8;O;+&tGo0?YwmdKI;Vst0GZ<+N&o-= literal 4274 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx3?wy9o9t#_U>2wfi6{w5ELSKf%1_J8NmVGR zEJ#&It;kGcV5qqDc6#)tCu%%x_aj}WHK?>4DKeP8>W#wb^ZmWGdd9^?K{MNJwyb2+ zN%4H){O+B>zhA{|_63DYWG2meKB@S~R4=U$GkNE=^V%R z5jU;opUPNnH#qFB-?>lnf3(_9XOW!IpVbZcG0fvCk1y-GW+o#lz2Gt|CK}KQ=Y|4^%D7e zQuNWI(oKR#mE2oiwM%texZ`=%_+a_(8r^kFO;yWoZagT}pUU`yf9dwas_Geyi<0)d z>R6M{>>;QWz|tJ#DPr6iv@GMy!Hx+Y>2bW&wE+~CN`6z0|SIr(H^+o~?L(6d>uqPC=+Tz#l$+n#$Xt{$1RGS#?PJFK}| zJ^Xy$ySP1KdQIl*#I7WN4DwoA5S6&|(Mzt@D1N&q9_?~JHyrLSx^irxr?+o(-nBhb z!>r3+u6R6ecj^13*BzPNGnXt>=9jiRwL;iE_mod?`aHARX$G&IbCdrr{L7uSW#vcD zEX`Zayg{39v#h<|sh6g3tdrr67~`Y^duF&UpHeX~`b<({NUKrP71rgKmDrjx1zs;{ zzbkFYTQT#WSRSLokMarJ+;`1S{5|nD{mQRjeOc-oSM!7iEne^|ZRTO^>e%~J;`<)X z7ujdMk7q9u{JWpm_fOdY`QsnVZ^Uhtj=z0zIWUVPV$B~aDsl^eu3%uWv9Bmd zOwLX%QAkQn&&;z`dcS+Wl0s&Rtx~wDuYqrYb81GWM^#a3aFt(3a#eP+Wr~u$9hXgo z70`g()RIJnirk#MVyg;UC9t_xKsHENUr7P1q$Jx`DZ)2E!8yMuRl!8hM9)CiwIZ|3 zNXd>%!KNrB%__*n4Qd3CXRDM^Qc_^0uU}qXu2*iXmtT~wZ)j<0sc&GUZ)BtkRH0j3 znOBlnp_^B%3^D>@hD&O3auG1-GV}8kKxQT;<(HP&Dk%Zw6`+QvB*V=vC@snXo1BuY zpPG}Jo0?ZrtZ%4is1H`3l5FLcUzD2&)SsD~n4YR%ke9Bc4|1(O)VV<4>%+Ydas%zb zs3jzY@n~?31{X;oK$7Co)HNDhB!vJ;ibqq|&)eCk|A^<>}%W!f`!00mx=zV0@&w#~8?B@O1TaS?83{1ONy^WZVD% From 75caa9167c00681e1adccc5ed58926b882823a68 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sat, 19 Nov 2016 19:24:37 -0800 Subject: [PATCH 158/196] Fix whitespace errors to silence luacheck. Currently all minetest_game PR's are failing travis since the upstream luacheck now also warns about whitespace issues, and there are a few of those in the code. This fixes all of them so we can yet again rely on luacheck. --- mods/beds/beds.lua | 2 +- mods/beds/functions.lua | 2 +- mods/default/furnace.lua | 2 +- mods/default/player.lua | 2 +- mods/doors/init.lua | 2 +- mods/farming/nodes.lua | 8 ++++---- mods/sethome/init.lua | 4 ++-- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/mods/beds/beds.lua b/mods/beds/beds.lua index b41992c3..bb2fd5d3 100644 --- a/mods/beds/beds.lua +++ b/mods/beds/beds.lua @@ -66,7 +66,7 @@ beds.register_bed("beds:bed", { }, top = { "beds_bed_top_top.png^[transformR90", - "default_wood.png", + "default_wood.png", "beds_bed_side_top_r.png", "beds_bed_side_top_r.png^[transformfx", "beds_bed_side_top.png", diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua index b1c2c977..896844e5 100644 --- a/mods/beds/functions.lua +++ b/mods/beds/functions.lua @@ -174,7 +174,7 @@ end -- Callbacks -- Only register respawn callback if respawn enabled -if enable_respawn then +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() diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index cd36f522..022024c4 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -4,7 +4,7 @@ -- local function active_formspec(fuel_percent, item_percent) - local formspec = + local formspec = "size[8,8.5]".. default.gui_bg.. default.gui_bg_img.. diff --git a/mods/default/player.lua b/mods/default/player.lua index 8fb0aca8..fd7341f4 100644 --- a/mods/default/player.lua +++ b/mods/default/player.lua @@ -94,7 +94,7 @@ minetest.register_on_joinplayer(function(player) default.player_attached[player:get_player_name()] = false default.player_set_model(player, "character.b3d") player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30) - + -- set GUI if not minetest.setting_getbool("creative_mode") then player:set_inventory_formspec(default.gui_survival_form) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 01a549b7..a3012054 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -519,7 +519,7 @@ function doors.register_trapdoor(name, def) if not name:find(":") then name = "doors:" .. name end - + local name_closed = name local name_opened = name.."_open" diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua index c75e1e50..09ad36f5 100644 --- a/mods/farming/nodes.lua +++ b/mods/farming/nodes.lua @@ -111,7 +111,7 @@ minetest.register_abm({ 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 @@ -133,7 +133,7 @@ minetest.register_abm({ 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}) @@ -144,7 +144,7 @@ minetest.register_abm({ }) -for i = 1, 5 do +for i = 1, 5 do minetest.override_item("default:grass_"..i, {drop = { max_items = 1, items = { @@ -153,7 +153,7 @@ for i = 1, 5 do } }}) end - + minetest.override_item("default:junglegrass", {drop = { max_items = 1, items = { diff --git a/mods/sethome/init.lua b/mods/sethome/init.lua index dc431bc7..e0fc453d 100644 --- a/mods/sethome/init.lua +++ b/mods/sethome/init.lua @@ -43,9 +43,9 @@ end sethome.get = function(name) local pos = homepos[name] if pos then - return vector.new(pos) + return vector.new(pos) else - return nil + return nil end end From 1e691c442907d6bb5602bc34fdbb3c9a7436c223 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sat, 8 Oct 2016 14:14:10 -0700 Subject: [PATCH 159/196] Carts: Merge boost_cart as "carts" mod This is all the working code from SmallJoker's boost_cart, poored into a more suitable form for minetest_game. - Mesecons and moreores stuff was removed entirely. - Textures were all renamed and moved out of default/ - Updated license, readme.txt, attribution - Changed code license to MIT, left artwork at CC0 - removed default:rail and made aliases for it - :carts:rail is now carts:rail. - localized entity def - removed copper rail entirely - startstop rail was removed, as well as detector rail - remodeled to b3d using stujones11 excellent blend model, but sizes of cart adjusted to make pixel sizes consistent (0.625) everywhere. - slightly more complex texture map for the cart (front/side visibly different) - rail parameters are passed as a separate def table, and stored in a private list. This avoids having to call `get_meta` on every node. In return, we need the node name, though. - adds metal sounds (based on default metal sound function) and cart moving sound. - reduced cart speeds to max 7, 5 by pushing. - Added on_step() rail event handler, gets called when a cart is on a rail. - Added various rebased updates from upstream (thanks Krock) - Included a fix that removes the 'reverse jiggle' when stopping. - Included reworked textures by sofar. The mod namespace is still public, but I'm NOT declaring it an API. I'd rather see it localized instead, for now. Any public interface in this code is *experimental* at best, and should be considered non-stable and unsupported for now. --- game_api.txt | 22 + mods/carts/README.txt | 20 + mods/carts/depends.txt | 1 + mods/carts/functions.lua | 221 ++++++++++ mods/carts/init.lua | 403 ++++++++++++++++++ mods/carts/license.txt | 54 +++ mods/carts/models/carts_cart.b3d | Bin 0 -> 3008 bytes mods/carts/models/carts_cart.blend | Bin 0 -> 544408 bytes mods/carts/rails.lua | 58 +++ mods/carts/sounds/carts_cart_moving.1.ogg | Bin 0 -> 14761 bytes mods/carts/sounds/carts_cart_moving.2.ogg | Bin 0 -> 14749 bytes mods/carts/sounds/carts_cart_moving.3.ogg | Bin 0 -> 14989 bytes mods/carts/textures/carts_cart.png | Bin 0 -> 1103 bytes mods/carts/textures/carts_cart_front.png | Bin 0 -> 3108 bytes mods/carts/textures/carts_cart_side.png | Bin 0 -> 3135 bytes mods/carts/textures/carts_cart_top.png | Bin 0 -> 3171 bytes mods/carts/textures/carts_rail_crossing.png | Bin 0 -> 612 bytes .../textures/carts_rail_crossing_brk.png | Bin 0 -> 684 bytes .../textures/carts_rail_crossing_pwr.png | Bin 0 -> 676 bytes mods/carts/textures/carts_rail_curved.png | Bin 0 -> 580 bytes mods/carts/textures/carts_rail_curved_brk.png | Bin 0 -> 618 bytes mods/carts/textures/carts_rail_curved_pwr.png | Bin 0 -> 614 bytes mods/carts/textures/carts_rail_straight.png | Bin 0 -> 602 bytes .../textures/carts_rail_straight_brk.png | Bin 0 -> 660 bytes .../textures/carts_rail_straight_pwr.png | Bin 0 -> 661 bytes mods/carts/textures/carts_rail_t_junction.png | Bin 0 -> 707 bytes .../textures/carts_rail_t_junction_brk.png | Bin 0 -> 698 bytes .../textures/carts_rail_t_junction_pwr.png | Bin 0 -> 697 bytes mods/default/aliases.lua | 2 +- mods/default/crafting.lua | 9 - mods/default/nodes.lua | 23 - mods/default/textures/default_rail.png | Bin 242 -> 0 bytes .../textures/default_rail_crossing.png | Bin 262 -> 0 bytes mods/default/textures/default_rail_curved.png | Bin 241 -> 0 bytes .../textures/default_rail_t_junction.png | Bin 247 -> 0 bytes 35 files changed, 780 insertions(+), 33 deletions(-) create mode 100644 mods/carts/README.txt create mode 100644 mods/carts/depends.txt create mode 100644 mods/carts/functions.lua create mode 100644 mods/carts/init.lua create mode 100644 mods/carts/license.txt create mode 100644 mods/carts/models/carts_cart.b3d create mode 100644 mods/carts/models/carts_cart.blend create mode 100644 mods/carts/rails.lua create mode 100644 mods/carts/sounds/carts_cart_moving.1.ogg create mode 100644 mods/carts/sounds/carts_cart_moving.2.ogg create mode 100644 mods/carts/sounds/carts_cart_moving.3.ogg create mode 100644 mods/carts/textures/carts_cart.png create mode 100644 mods/carts/textures/carts_cart_front.png create mode 100644 mods/carts/textures/carts_cart_side.png create mode 100644 mods/carts/textures/carts_cart_top.png create mode 100644 mods/carts/textures/carts_rail_crossing.png create mode 100644 mods/carts/textures/carts_rail_crossing_brk.png create mode 100644 mods/carts/textures/carts_rail_crossing_pwr.png create mode 100644 mods/carts/textures/carts_rail_curved.png create mode 100644 mods/carts/textures/carts_rail_curved_brk.png create mode 100644 mods/carts/textures/carts_rail_curved_pwr.png create mode 100644 mods/carts/textures/carts_rail_straight.png create mode 100644 mods/carts/textures/carts_rail_straight_brk.png create mode 100644 mods/carts/textures/carts_rail_straight_pwr.png create mode 100644 mods/carts/textures/carts_rail_t_junction.png create mode 100644 mods/carts/textures/carts_rail_t_junction_brk.png create mode 100644 mods/carts/textures/carts_rail_t_junction_pwr.png delete mode 100644 mods/default/textures/default_rail.png delete mode 100644 mods/default/textures/default_rail_crossing.png delete mode 100644 mods/default/textures/default_rail_curved.png delete mode 100644 mods/default/textures/default_rail_t_junction.png diff --git a/game_api.txt b/game_api.txt index 80272a60..e85898fd 100644 --- a/game_api.txt +++ b/game_api.txt @@ -650,3 +650,25 @@ Trees * `default.grow_new_snowy_pine_tree(pos)` * Grows a new design snowy pine tree at pos + +Carts +----- + + carts.register_rail( + "mycarts:myrail", -- Rail name + nodedef, -- standard nodedef + railparams -- rail parameter struct (optional) + ) + + railparams = { + on_step(obj, dtime), -- Event handler called when + -- cart is on rail + acceleration, -- integer acceleration factor (negative + -- values to brake) + } + + The event handler is called after all default calculations + are made, so the custom on_step handler can override things + like speed, acceleration, player attachment. The handler will + likely be called many times per second, so the function needs + to make sure that the event is handled properly. diff --git a/mods/carts/README.txt b/mods/carts/README.txt new file mode 100644 index 00000000..0cfaea26 --- /dev/null +++ b/mods/carts/README.txt @@ -0,0 +1,20 @@ +Carts (formerly boost_cart) +========================== + +Cleaned up for merge based almost entirely on SmallJoker's boost_cart +mod (github.com/smalljoker/boost_cart). + +That in turn was based on (and fully compatible with) the mod "carts" +by PilzAdam + +The model was redone, but based on github.com/stujones11/railcart, CC-0 + +Cart Textures are based on original work from PixelBOX (WTFPL). + + +Features +---------- +- A fast cart for your railway or roller coaster (up to 7 m/s!) +- Boost and brake rails +- Rail junction switching with the 'right-left' walking keys +- Handbrake with the 'back' key diff --git a/mods/carts/depends.txt b/mods/carts/depends.txt new file mode 100644 index 00000000..4ad96d51 --- /dev/null +++ b/mods/carts/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/carts/functions.lua b/mods/carts/functions.lua new file mode 100644 index 00000000..f255fef5 --- /dev/null +++ b/mods/carts/functions.lua @@ -0,0 +1,221 @@ +function carts:get_sign(z) + if z == 0 then + return 0 + else + return z / math.abs(z) + end +end + +function carts:manage_attachment(player, obj) + if not player then + return + end + local status = obj ~= nil + local player_name = player:get_player_name() + if default.player_attached[player_name] == status then + return + end + default.player_attached[player_name] = status + + if status then + player:set_attach(obj, "", {x=0, y=6, z=0}, {x=0, y=0, z=0}) + player:set_eye_offset({x=0, y=-4, z=0},{x=0, y=-4, z=0}) + else + player:set_detach() + player:set_eye_offset({x=0, y=0, z=0},{x=0, y=0, z=0}) + end +end + +function carts:velocity_to_dir(v) + if math.abs(v.x) > math.abs(v.z) then + return {x=carts:get_sign(v.x), y=carts:get_sign(v.y), z=0} + else + return {x=0, y=carts:get_sign(v.y), z=carts:get_sign(v.z)} + end +end + +function carts:is_rail(pos, railtype) + local node = minetest.get_node(pos).name + if node == "ignore" then + local vm = minetest.get_voxel_manip() + local emin, emax = vm:read_from_map(pos, pos) + local area = VoxelArea:new{ + MinEdge = emin, + MaxEdge = emax, + } + local data = vm:get_data() + local vi = area:indexp(pos) + node = minetest.get_name_from_content_id(data[vi]) + end + if minetest.get_item_group(node, "rail") == 0 then + return false + end + if not railtype then + return true + end + return minetest.get_item_group(node, "connect_to_raillike") == railtype +end + +function carts:check_front_up_down(pos, dir_, check_up, railtype) + local dir = vector.new(dir_) + local cur + + -- Front + dir.y = 0 + cur = vector.add(pos, dir) + if carts:is_rail(cur, railtype) then + return dir + end + -- Up + if check_up then + dir.y = 1 + cur = vector.add(pos, dir) + if carts:is_rail(cur, railtype) then + return dir + end + end + -- Down + dir.y = -1 + cur = vector.add(pos, dir) + if carts:is_rail(cur, railtype) then + return dir + end + return nil +end + +function carts:get_rail_direction(pos_, dir, ctrl, old_switch, railtype) + local pos = vector.round(pos_) + local cur + local left_check, right_check = true, true + + -- Check left and right + local left = {x=0, y=0, z=0} + local right = {x=0, y=0, z=0} + if dir.z ~= 0 and dir.x == 0 then + left.x = -dir.z + right.x = dir.z + elseif dir.x ~= 0 and dir.z == 0 then + left.z = dir.x + right.z = -dir.x + end + + if ctrl then + if old_switch == 1 then + left_check = false + elseif old_switch == 2 then + right_check = false + end + if ctrl.left and left_check then + cur = carts:check_front_up_down(pos, left, false, railtype) + if cur then + return cur, 1 + end + left_check = false + end + if ctrl.right and right_check then + cur = carts:check_front_up_down(pos, right, false, railtype) + if cur then + return cur, 2 + end + right_check = true + end + end + + -- Normal + cur = carts:check_front_up_down(pos, dir, true, railtype) + if cur then + return cur + end + + -- Left, if not already checked + if left_check then + cur = carts:check_front_up_down(pos, left, false, railtype) + if cur then + return cur + end + end + + -- Right, if not already checked + if right_check then + cur = carts:check_front_up_down(pos, right, false, railtype) + if cur then + return cur + end + end + + -- Backwards + if not old_switch then + cur = carts:check_front_up_down(pos, { + x = -dir.x, + y = dir.y, + z = -dir.z + }, true, railtype) + if cur then + return cur + end + end + + return {x=0, y=0, z=0} +end + +function carts:pathfinder(pos_, expected_pos, old_dir, ctrl, pf_switch, railtype) + local pos = vector.round(pos_) + local pf_pos = vector.round(expected_pos) + local pf_dir = vector.new(old_dir) + + for i = 1, 3 do + if vector.equals(pf_pos, pos) then + -- Success! Cart moved on correctly + return true + end + + pf_dir, pf_switch = carts:get_rail_direction(pf_pos, pf_dir, ctrl, pf_switch, railtype) + if vector.equals(pf_dir, {x=0, y=0, z=0}) then + -- No way forwards + return false + end + + pf_pos = vector.add(pf_pos, pf_dir) + end + -- Cart not found + return false +end + +function carts:register_rail(name, def, railparams) + local def_default = { + drawtype = "raillike", + paramtype = "light", + sunlight_propagates = true, + is_ground_content = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2}, + }, + sounds = default.node_sound_metal_defaults() + } + for k, v in pairs(def_default) do + def[k] = v + end + if not def.inventory_image then + def.wield_image = def.tiles[1] + def.inventory_image = def.tiles[1] + end + + if railparams then + carts.railparams[name] = table.copy(railparams) + end + + minetest.register_node(name, def) +end + +function carts:get_rail_groups(additional_groups) + -- Get the default rail groups and add more when a table is given + local groups = {dig_immediate = 2, attached_node = 1, rail = 1, connect_to_raillike = 1} + if type(additional_groups) == "table" then + for k, v in pairs(additional_groups) do + groups[k] = v + end + end + return groups +end diff --git a/mods/carts/init.lua b/mods/carts/init.lua new file mode 100644 index 00000000..7cfee74f --- /dev/null +++ b/mods/carts/init.lua @@ -0,0 +1,403 @@ + +carts = {} +carts.modpath = minetest.get_modpath("carts") +carts.railparams = {} + +-- Maximal speed of the cart in m/s (min = -1) +carts.speed_max = 7 +-- Set to -1 to disable punching the cart from inside (min = -1) +carts.punch_speed_max = 5 + + +dofile(carts.modpath.."/functions.lua") +dofile(carts.modpath.."/rails.lua") + +-- Support for non-default games +if not default.player_attached then + default.player_attached = {} +end + +local cart_entity = { + physical = false, -- otherwise going uphill breaks + collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + visual = "mesh", + mesh = "carts_cart.b3d", + visual_size = {x=1, y=1}, + textures = {"carts_cart.png"}, + + driver = nil, + punched = false, -- used to re-send velocity and position + velocity = {x=0, y=0, z=0}, -- only used on punch + old_dir = {x=1, y=0, z=0}, -- random value to start the cart on punch + old_pos = nil, + old_switch = 0, + railtype = nil, + attached_items = {} +} + +function cart_entity:on_rightclick(clicker) + if not clicker or not clicker:is_player() then + return + end + local player_name = clicker:get_player_name() + if self.driver and player_name == self.driver then + self.driver = nil + carts:manage_attachment(clicker, nil) + elseif not self.driver then + self.driver = player_name + carts:manage_attachment(clicker, self.object) + end +end + +function cart_entity:on_activate(staticdata, dtime_s) + self.object:set_armor_groups({immortal=1}) + if string.sub(staticdata, 1, string.len("return")) ~= "return" then + return + end + local data = minetest.deserialize(staticdata) + if not data or type(data) ~= "table" then + return + end + self.railtype = data.railtype + if data.old_dir then + self.old_dir = data.old_dir + end + if data.old_vel then + self.old_vel = data.old_vel + end +end + +function cart_entity:get_staticdata() + return minetest.serialize({ + railtype = self.railtype, + old_dir = self.old_dir, + old_vel = self.old_vel + }) +end + +function cart_entity:on_punch(puncher, time_from_last_punch, tool_capabilities, direction) + local pos = self.object:getpos() + if not self.railtype then + local node = minetest.get_node(pos).name + self.railtype = minetest.get_item_group(node, "connect_to_raillike") + end + + if not puncher or not puncher:is_player() then + local cart_dir = carts:get_rail_direction(pos, self.old_dir, nil, nil, self.railtype) + if vector.equals(cart_dir, {x=0, y=0, z=0}) then + return + end + self.velocity = vector.multiply(cart_dir, 3) + self.punched = true + return + end + + if puncher:get_player_control().sneak then + if self.sound_handle then + minetest.sound_stop(self.sound_handle) + end + -- Pick up cart: Drop all attachments + if self.driver then + if self.old_pos then + self.object:setpos(self.old_pos) + end + local player = minetest.get_player_by_name(self.driver) + carts:manage_attachment(player, nil) + end + for _,obj_ in ipairs(self.attached_items) do + if obj_ then + obj_:set_detach() + end + end + + local leftover = puncher:get_inventory():add_item("main", "carts:cart") + if not leftover:is_empty() then + minetest.add_item(self.object:getpos(), leftover) + end + self.object:remove() + return + end + + local vel = self.object:getvelocity() + if puncher:get_player_name() == self.driver then + if math.abs(vel.x + vel.z) > carts.punch_speed_max then + return + end + end + + local punch_dir = carts:velocity_to_dir(puncher:get_look_dir()) + punch_dir.y = 0 + local cart_dir = carts:get_rail_direction(pos, punch_dir, nil, nil, self.railtype) + if vector.equals(cart_dir, {x=0, y=0, z=0}) then + return + end + + local punch_interval = 1 + if tool_capabilities and tool_capabilities.full_punch_interval then + punch_interval = tool_capabilities.full_punch_interval + end + time_from_last_punch = math.min(time_from_last_punch or punch_interval, punch_interval) + local f = 2 * (time_from_last_punch / punch_interval) + + self.velocity = vector.multiply(cart_dir, f) + self.old_dir = cart_dir + self.punched = true +end + +local function rail_on_step_event(handler, obj, dtime) + if handler then + handler(obj, dtime) + end +end + +-- sound refresh interval = 1.0sec +local function rail_sound(self, dtime) + if not self.sound_ttl then + self.sound_ttl = 1.0 + return + elseif self.sound_ttl > 0 then + self.sound_ttl = self.sound_ttl - dtime + return + end + self.sound_ttl = 1.0 + if self.sound_handle then + local handle = self.sound_handle + self.sound_handle = nil + minetest.after(0.2, minetest.sound_stop, handle) + end + local vel = self.object:getvelocity() + local speed = vector.length(vel) + if speed > 0 then + self.sound_handle = minetest.sound_play( + "carts_cart_moving", { + object = self.object, + gain = (speed / carts.speed_max) / 2, + loop = true, + }) + end +end + +local function rail_on_step(self, dtime) + local pos = self.object:getpos() + local node = minetest.get_node(pos) + local railparams = carts.railparams[node.name] or {} + + local vel = self.object:getvelocity() + local update = {} + if self.punched then + vel = vector.add(vel, self.velocity) + self.object:setvelocity(vel) + self.old_dir.y = 0 + elseif vector.equals(vel, {x=0, y=0, z=0}) then + return + end + + -- stop cart if velocity vector flips + if self.old_vel and (((self.old_vel.x * vel.x) < 0) or + ((self.old_vel.z * vel.z) < 0)) and + (self.old_vel.y == 0) then + self.old_dir = {x = 0, y = 0, z = 0} + self.old_vel = {x = 0, y = 0, z = 0} + self.velocity = {x = 0, y = 0, z = 0} + self.old_pos = pos + self.object:setvelocity(vector.new()) + self.object:setacceleration(vector.new()) + rail_on_step_event(railparams.on_step, self, dtime) + return + end + self.old_vel = vector.new(vel) + + if self.old_pos and not self.punched then + local flo_pos = vector.round(pos) + local flo_old = vector.round(self.old_pos) + if vector.equals(flo_pos, flo_old) then + -- Do not check one node multiple times + rail_on_step_event(railparams.on_step, self, dtime) + return + end + end + + local ctrl, player + + -- Get player controls + if self.driver then + player = minetest.get_player_by_name(self.driver) + if player then + ctrl = player:get_player_control() + end + end + + if self.old_pos then + -- Detection for "skipping" nodes + local expected_pos = vector.add(self.old_pos, self.old_dir) + local found_path = carts:pathfinder( + pos, expected_pos, self.old_dir, ctrl, self.old_switch, self.railtype + ) + + if not found_path then + -- No rail found: reset back to the expected position + pos = vector.new(self.old_pos) + update.pos = true + end + end + + local cart_dir = carts:velocity_to_dir(vel) + + -- dir: New moving direction of the cart + -- switch_keys: Currently pressed L/R key, used to ignore the key on the next rail node + local dir, switch_keys = carts:get_rail_direction( + pos, cart_dir, ctrl, self.old_switch, self.railtype + ) + + local new_acc = {x=0, y=0, z=0} + if vector.equals(dir, {x=0, y=0, z=0}) then + vel = {x=0, y=0, z=0} + pos = vector.round(pos) + update.pos = true + update.vel = true + else + -- If the direction changed + if dir.x ~= 0 and self.old_dir.z ~= 0 then + vel.x = dir.x * math.abs(vel.z) + vel.z = 0 + pos.z = math.floor(pos.z + 0.5) + update.pos = true + end + if dir.z ~= 0 and self.old_dir.x ~= 0 then + vel.z = dir.z * math.abs(vel.x) + vel.x = 0 + pos.x = math.floor(pos.x + 0.5) + update.pos = true + end + -- Up, down? + if dir.y ~= self.old_dir.y then + vel.y = dir.y * math.abs(vel.x + vel.z) + pos = vector.round(pos) + update.pos = true + end + + -- Slow down or speed up.. + local acc = dir.y * -4.0 + + -- no need to check for railparams == nil since we always make it exist. + local speed_mod = railparams.acceleration + if speed_mod and speed_mod ~= 0 then + -- Try to make it similar to the original carts mod + acc = acc + speed_mod + else + -- Handbrake + if ctrl and ctrl.down then + acc = acc - 1.6 + else + acc = acc - 0.4 + end + end + + new_acc = vector.multiply(dir, acc) + end + + -- Limits + local max_vel = carts.speed_max + for _,v in ipairs({"x","y","z"}) do + if math.abs(vel[v]) > max_vel then + vel[v] = carts:get_sign(vel[v]) * max_vel + new_acc[v] = 0 + update.vel = true + end + end + + self.object:setacceleration(new_acc) + self.old_pos = vector.new(pos) + if not vector.equals(dir, {x=0, y=0, z=0}) then + self.old_dir = vector.new(dir) + end + self.old_switch = switch_keys + + if self.punched then + -- Collect dropped items + for _,obj_ in ipairs(minetest.get_objects_inside_radius(pos, 1)) do + if not obj_:is_player() and + obj_:get_luaentity() and + not obj_:get_luaentity().physical_state and + obj_:get_luaentity().name == "__builtin:item" then + + obj_:set_attach(self.object, "", {x=0, y=0, z=0}, {x=0, y=0, z=0}) + self.attached_items[#self.attached_items + 1] = obj_ + end + end + self.punched = false + update.vel = true + end + + if not (update.vel or update.pos) then + rail_on_step_event(railparams.on_step, self, dtime) + return + end + + local yaw = 0 + if self.old_dir.x < 0 then + yaw = 0.5 + elseif self.old_dir.x > 0 then + yaw = 1.5 + elseif self.old_dir.z < 0 then + yaw = 1 + end + self.object:setyaw(yaw * math.pi) + + local anim = {x=0, y=0} + if dir.y == -1 then + anim = {x=1, y=1} + elseif dir.y == 1 then + anim = {x=2, y=2} + end + self.object:set_animation(anim, 1, 0) + + self.object:setvelocity(vel) + if update.pos then + self.object:setpos(pos) + end + + -- call event handler + rail_on_step_event(railparams.on_step, self, dtime) +end + +function cart_entity:on_step(dtime) + rail_on_step(self, dtime) + rail_sound(self, dtime) +end + +minetest.register_entity("carts:cart", cart_entity) + +minetest.register_craftitem("carts:cart", { + description = "Cart (Sneak+Click to pick up)", + inventory_image = minetest.inventorycube("carts_cart_top.png", "carts_cart_side.png", "carts_cart_side.png"), + wield_image = "carts_cart_side.png", + on_place = function(itemstack, placer, pointed_thing) + if not pointed_thing.type == "node" then + return + end + if carts:is_rail(pointed_thing.under) then + minetest.add_entity(pointed_thing.under, "carts:cart") + elseif carts:is_rail(pointed_thing.above) then + minetest.add_entity(pointed_thing.above, "carts:cart") + else + return + end + + minetest.sound_play({name = "default_place_node_metal", gain = 0.5}, + {pos = pointed_thing.above}) + + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end, +}) + +minetest.register_craft({ + output = "carts:cart", + recipe = { + {"default:steel_ingot", "", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + }, +}) diff --git a/mods/carts/license.txt b/mods/carts/license.txt new file mode 100644 index 00000000..6c5beb47 --- /dev/null +++ b/mods/carts/license.txt @@ -0,0 +1,54 @@ + +License of source code +---------------------- + +The MIT License (MIT) +Copyright (C) 2012-2016 PilzAdam +Copyright (C) 2014-2016 SmallJoker +Copyright (C) 2012-2016 Various Minetest developers and contributors + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT + + +Licenses of media +----------------- + +CC-0, see: https://creativecommons.org/share-your-work/public-domain/cc0/, except +if other license is mentioned. + + +Authors +--------- +Originally from PixelBOX (Gambit): + carts_cart_side.png + carts_cart_top.png + carts_cart_front.png* + carts_cart.png* + +sofar + stujones11: + carts_cart.b3d and carts_cart.blend + +hexafraction, modified by sofar + carts_rail_*.png + +http://www.freesound.org/people/YleArkisto/sounds/253159/ - YleArkisto - CC-BY-3.0 + carts_cart_moving.*.ogg diff --git a/mods/carts/models/carts_cart.b3d b/mods/carts/models/carts_cart.b3d new file mode 100644 index 0000000000000000000000000000000000000000..4e7eba363de4d01da5e924e7517eaa44879879be GIT binary patch literal 3008 zcmbW3OHUL*6om@}eBl$tw}MZ6A&Tf~rrVK8BnC(rG;v`}2rm;7jf#mYJ8?(iA8^C` z1rrypU=r8HpWhlv3+uu0V(H$iZ7#vXsp(SpR+p60 z?ZQTFwPH-U(qYQsz}KF24>e*UL0k@r*J`W8gIJt7jW}~+@pTuAf;Np4`=vU5t*xPW z}vLB_rO}>%3C20>U(3o>n-hk zT>X^&+5U8{Hb3Va%fGJDwtiCozP{!poj>&>?K4q78&BS!tsf+xkK12H|7rT#`t|iYVP{Pabfd9iq-KlVj_>csLl_Lm+vIlp$3 z^RfHO{r~>l`KH&e=Ck&ftdBeY^!}~B3Fk|H#&B-rXw}E{pSAz2`;n}#%b&i!nooH@ zBDJ6Le!2HAtA6tP>DDLz|FChBpD zA45Iuf;Y_;?=#*dbP64UKA+ad-XUxk^m#S#(Dc^~_za6~vP9P>W*N#TTWTsY-@?9)QO&?lS`@UhPe=Y+Gu1@B{D5-th@!e#Gc z^V8(2a7DQ0ee4?oKU0PT#Kp(HC5#9+h1=f8zB4g4&c1m#Ph*}J_!09_2VHnJ`^FA6 z|F{o=|L`@3^^q$~P82J3W#l_E3J{F>E_oCn3O-`N2nQn?j5si&!3YQ=9_*Tp0>r~d zNEi`e#DWnKMo<_rVMK!w6Gm7VQDMY`5fw&Y7;#}lgb^1;Xc&>p)?fVmhjmjb?Dd{p`* z3q8D?kxc)z=pVU2U1x(IDh~*1`hf>D#uN2^|FZVv-IBixjk%SCxq0Tg`|@vde*;IC B>mUFC literal 0 HcmV?d00001 diff --git a/mods/carts/models/carts_cart.blend b/mods/carts/models/carts_cart.blend new file mode 100644 index 0000000000000000000000000000000000000000..7d2515eb70379538759ecb2e9fcf6f7390dc840c GIT binary patch literal 544408 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