From 37e4dd55564d70c9a1d4b1089f9109410f90e118 Mon Sep 17 00:00:00 2001 From: ancientmarinerdev Date: Tue, 25 Oct 2022 20:24:37 +0100 Subject: [PATCH 01/17] Villagers will now path through doors. Villagers don't stand around whne not working. --- mods/ENTITIES/mcl_mobs/api.lua | 91 +++++++++++++++++++++++------- mods/ENTITIES/mobs_mc/villager.lua | 28 ++++++--- 2 files changed, 91 insertions(+), 28 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 45245622e..08e30e24e 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -2484,10 +2484,11 @@ local function check_doors(self) if n.name:find("_b_") then local def = minetest.registered_nodes[n.name] local closed = n.name:find("_b_1") - if t < 0.3 or t > 0.8 then - if not closed and def.on_rightclick then def.on_rightclick(d,n,self) end - else + if self.state == "gowp" then if closed and def.on_rightclick then def.on_rightclick(d,n,self) end + --if not closed and def.on_rightclick then def.on_rightclick(d,n,self) end + else + end end @@ -2498,7 +2499,7 @@ local gowp_etime = 0 local function check_gowp(self,dtime) gowp_etime = gowp_etime + dtime - if gowp_etime < 0.2 then return end + if gowp_etime < 0.1 then return end gowp_etime = 0 local p = self.object:get_pos() @@ -2509,7 +2510,7 @@ local function check_gowp(self,dtime) return end - -- arrived at location + -- arrived at location, finish gowp local distance_to_targ = vector.distance(p,self._target) mcl_log("Distance to targ: ".. tostring(distance_to_targ)) if distance_to_targ < 2 then @@ -2525,34 +2526,79 @@ local function check_gowp(self,dtime) return true end - if self.waypoints and ( not self.current_target or vector.distance(p,self.current_target) < 2 ) then + -- More pathing to be done + if self.waypoints and #self.waypoints > 0 and ( not self.current_target or vector.distance(p,self.current_target) < 2 ) then + -- We have waypoints, and no current target, or we're at it. We need a new current_target. + if not self.current_target then for i, j in pairs (self.waypoints) do - mcl_log("Way: ".. tostring(i)) mcl_log("Val: ".. tostring(j)) end - --mcl_log("nextwp:".. tostring(self.waypoints) ) end self.current_target = table.remove(self.waypoints, 1) - mcl_log("current target:".. tostring(self.current_target) ) + mcl_log("current target:".. minetest.pos_to_string(self.current_target) ) --mcl_log("type:".. type(self.current_target) ) go_to_pos(self,self.current_target) return elseif self.current_target then + -- No waypoints left, but have current target. Potentially last waypoint to go to. + + mcl_log("self.current_target: ".. minetest.pos_to_string(self.current_target)) + mcl_log("pos: ".. minetest.pos_to_string(p)) go_to_pos(self,self.current_target) + -- Do i just delete current_target, and return so we can find final path. + else + -- Not at target, no current waypoints or current_target. Through the door and should be able to path to target. + -- Is a little sensitive and could take 1 - 7 times. A 10 fail count might be a good exit condition. + + mcl_log("We don't have waypoints or a current target. Let's try to path to target") + local final_wp = minetest.find_path(p,self._target,150,1,4) + if final_wp then + mcl_log("We might be able to get to target here.") + self.waypoints = final_wp + --go_to_pos(self,self._target) + else + mcl_log("Cannot plot final route to target") + end end - if self.current_target and not minetest.line_of_sight(self.object:get_pos(),self.current_target) then - self.waypoints=minetest.find_path(p,self._target,150,1,4) - if not self.waypoints then self.state = "walk" end --give up - self.current_target = nil + --if self.current_target and not minetest.line_of_sight(self.object:get_pos(),self.current_target) then + if self.current_target and (self.waypoints and #self.waypoints == 0) then + local updated_p = self.object:get_pos() + local distance_to_cur_targ = vector.distance(updated_p,self.current_target) + + mcl_log("Distance to current target: ".. tostring(distance_to_cur_targ)) + mcl_log("Current p: ".. minetest.pos_to_string(updated_p)) + --if not minetest.line_of_sight(self.object:get_pos(),self._target) then + + -- 1.6 is good. is 1.9 better? It could fail less, but will it path to door when it isn't after door + if distance_to_cur_targ > 1.9 then + mcl_log("no LOS to target: ".. minetest.pos_to_string(self.current_target)) + go_to_pos(self,self._current_target) + else + mcl_log("Let's go to target: ".. minetest.pos_to_string(self.current_target)) + self.current_target = nil + --go_to_pos(self,self._target) + self.waypoints=minetest.find_path(updated_p,self._target,150,1,4) + --if not self.waypoints then + --mcl_log("Give up ") + --self.state = "walk" + --end --give up + end + + --self.waypoints=minetest.find_path(p,self._target,150,1,4) + --if not self.waypoints then + --mcl_log("Give up ") + --self.state = "walk" + --end --give up + --self.current_target = nil return end - if not self.current_target then - --mcl_log("no path") - self.state = "walk" - end + --if not self.current_target then + --mcl_log("no path. Give up") + --self.state = "walk" + --end end -- execute current state (stand, walk, run, attacks) @@ -2601,7 +2647,7 @@ local do_states = function(self, dtime) end -- npc's ordered to stand stay standing - if self.type == "npc" or (self.order == "stand" or self.order == "sleep" or self.order == "work") then + if self.order == "stand" or self.order == "sleep" or self.order == "work" then else if self.walk_chance ~= 0 @@ -3153,13 +3199,20 @@ function mcl_mobs:gopath(self,target,callback_arrived) local d = minetest.find_node_near(target,16,{"group:door"}) if d then --mcl_log("Found a door near") + local up_one = vector.new(0,1,0) for _,v in pairs(plane_adjacents) do local pos = vector.add(d,v) + local n = minetest.get_node(pos) if n.name == "air" then wp = minetest.find_path(p,pos,150,1,4) if wp then - --mcl_log("Found a path to next to door".. minetest.pos_to_string(pos)) + mcl_log("Found a path to next to door".. minetest.pos_to_string(pos)) + local other_side_of_door = vector.add(d,-v) + mcl_log("Opposite is: ".. minetest.pos_to_string(other_side_of_door)) + --other_side_of_door = vector.add(other_side_of_door, up_one) + --mcl_log("Opposite 2 is: ".. minetest.pos_to_string(other_side_of_door)) + table.insert(wp, other_side_of_door) break else diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index 7df4c6ea7..bd2d39002 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -577,9 +577,9 @@ function get_activity(tod) local lunch_start = 12000 - local lunch_end = 13500 - local work_start = 8500 - local work_end = 16300 + local lunch_end = 12500 + local work_start = 6500 + local work_end = 18000 local activity = nil @@ -817,7 +817,7 @@ local function look_for_job(self, requested_jobsites) local looking_for_type = jobsites if requested_jobsites then - mcl_log("Looking for jobs of my type: " .. tostring(requested_jobsites)) + --mcl_log("Looking for jobs of my type: " .. tostring(requested_jobsites)) looking_for_type = requested_jobsites else mcl_log("Looking for any job type") @@ -863,7 +863,7 @@ local function get_a_job(self) local requested_jobsites = jobsites if has_traded (self) then - --mcl_log("Has traded") + mcl_log("Has traded so look for job of my type") requested_jobsites = populate_jobsites(self._profession) -- Only pass in my jobsite to two functions here else @@ -1461,6 +1461,7 @@ local trade_inventory = { -- END OF SPECIAL HANDLING FOR COMPASS local trader = player_trading_with[name] local tradenum = player_tradenum[name] + local trades trader._traded = true if trader and trader._trades then @@ -1643,23 +1644,31 @@ mcl_mobs:register_mob("mobs_mc:villager", { return it end, on_rightclick = function(self, clicker) + if self.child or self._profession == "unemployed" or self._profession == "nitwit" then + self.order = nil + return + end + + if self.state == "gowp" then + self.state = "stand" + end + -- Can we remove now we possibly have fixed root cause if self.state == "attack" then - mcl_log("Somehow villager got into an invalid attack state. Removed.") + mcl_log("Somehow villager got into an invalid attack state. Removed attack state.") -- Need to stop villager getting in attack state. This is a workaround to allow players to fix broken villager. self.state = "stand" self.attack = nil end + -- Don't do at night. Go to bed? Maybe do_activity needs it's own method if validate_jobsite(self) then mcl_mobs:gopath(self,self._jobsite,function() --minetest.log("arrived at jobsite") end) else self.state = "stand" -- cancel gowp in case it has messed up + self.order = nil -- cancel work if working end - if self.child or self._profession == "unemployed" or self._profession == "nitwit" then - return - end -- Initiate trading init_trader_vars(self) local name = clicker:get_player_name() @@ -1733,6 +1742,7 @@ mcl_mobs:register_mob("mobs_mc:villager", { take_bed (self) end + -- Only check in day or during thunderstorm but wandered_too_far code won't work if check_bed (self) then --self.state ~= "go_home" local wandered_too_far = ( self.state ~= "gowp" ) and (vector.distance(self.object:get_pos(),self._bed) > 50 ) From eebea4a7a9fa92283eae7640556e08b6790cca4f Mon Sep 17 00:00:00 2001 From: ancientmarinerdev Date: Tue, 25 Oct 2022 23:53:55 +0100 Subject: [PATCH 02/17] Clean up and add pathfinding constant --- mods/ENTITIES/mcl_mobs/api.lua | 12 +++++++----- mods/ENTITIES/mobs_mc/villager.lua | 18 ++++++++++-------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 08e30e24e..422857de4 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -13,6 +13,8 @@ local FLOP_HOR_SPEED = 1.5 local ENTITY_CRAMMING_MAX = 24 local CRAMMING_DAMAGE = 3 +local PATHFINDING = "gowp" + -- Localize local S = minetest.get_translator("mcl_mobs") @@ -2484,7 +2486,7 @@ local function check_doors(self) if n.name:find("_b_") then local def = minetest.registered_nodes[n.name] local closed = n.name:find("_b_1") - if self.state == "gowp" then + if self.state == PATHFINDING then if closed and def.on_rightclick then def.on_rightclick(d,n,self) end --if not closed and def.on_rightclick then def.on_rightclick(d,n,self) end else @@ -2661,7 +2663,7 @@ local do_states = function(self, dtime) end end - elseif self.state == "gowp" then + elseif self.state == PATHFINDING then check_gowp(self,dtime) elseif self.state == "walk" then @@ -3178,7 +3180,7 @@ local plane_adjacents = { local gopath_last = os.time() function mcl_mobs:gopath(self,target,callback_arrived) - if self.state == "gowp" then mcl_log("Already set as gowp, don't set another path until done.") return end + if self.state == PATHFINDING then mcl_log("Already set as gowp, don't set another path until done.") return end if os.time() - gopath_last < 15 then mcl_log("Not ready to path yet") @@ -3232,7 +3234,7 @@ function mcl_mobs:gopath(self,target,callback_arrived) self.callback_arrived = callback_arrived table.remove(wp,1) self.waypoints = wp - self.state = "gowp" + self.state = PATHFINDING return true else self.state = "walk" @@ -4193,7 +4195,7 @@ local mob_step = function(self, dtime) -- attack timer self.timer = self.timer + dtime - if self.state ~= "attack" and self.state ~= "gowp" then + if self.state ~= "attack" and self.state ~= PATHFINDING then if self.timer < 1 then return end diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index bd2d39002..a6f21b83b 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -30,6 +30,8 @@ local DEFAULT_WALK_CHANCE = 33 -- chance to walk in percent, if no player nearby local PLAYER_SCAN_INTERVAL = 5 -- every X seconds, villager looks for players nearby local PLAYER_SCAN_RADIUS = 4 -- scan radius for looking for nearby players +local PATHFINDING = "gowp" + --[=======[ TRADING ]=======] -- LIST OF VILLAGER PROFESSIONS AND TRADES @@ -564,7 +566,7 @@ end local function set_textures(self) local badge_textures = get_badge_textures(self) - mcl_log("Setting textures: " .. tostring(badge_textures)) + --mcl_log("Setting textures: " .. tostring(badge_textures)) self.object:set_properties({textures=badge_textures}) end @@ -671,7 +673,7 @@ local function take_bed (entity) for _,n in pairs(nn) do local m=minetest.get_meta(n) --mcl_log("Bed owner: ".. m:get_string("villager")) - if m:get_string("villager") == "" and not (entity.state == "gowp") then + if m:get_string("villager") == "" and not (entity.state == PATHFINDING) then mcl_log("Can we path to bed: "..minetest.pos_to_string(n) ) local gp = mcl_mobs:gopath(entity,n,function(self) if self then @@ -884,7 +886,7 @@ local function get_a_job(self) if n and employ(self,n) then return true end - if self.state ~= "gowp" then + if self.state ~= PATHFINDING then mcl_log("Nothing near. Need to look for a job") look_for_job(self, requested_jobsites) end @@ -938,7 +940,7 @@ local function do_work (self) -- Don't try if looking_for_work, or gowp possibly if validate_jobsite(self) then - mcl_log("My jobsite is valid. Do i need to travel?") + --mcl_log("My jobsite is valid. Do i need to travel?") local jobsite2 = retrieve_my_jobsite (self) local jobsite = self._jobsite @@ -947,9 +949,9 @@ local function do_work (self) --mcl_log("Villager: ".. minetest.pos_to_string(self.object:get_pos()) .. ", jobsite: " .. minetest.pos_to_string(self._jobsite)) if vector.distance(self.object:get_pos(),self._jobsite) < 2 then - mcl_log("Made it to work ok!") + --mcl_log("Made it to work ok!") - if not (self.state == "gowp") then + if not (self.state == PATHFINDING) then --mcl_log("Setting order to work.") self.order = WORK else @@ -1649,7 +1651,7 @@ mcl_mobs:register_mob("mobs_mc:villager", { return end - if self.state == "gowp" then + if self.state == PATHFINDING then self.state = "stand" end -- Can we remove now we possibly have fixed root cause @@ -1745,7 +1747,7 @@ mcl_mobs:register_mob("mobs_mc:villager", { -- Only check in day or during thunderstorm but wandered_too_far code won't work if check_bed (self) then --self.state ~= "go_home" - local wandered_too_far = ( self.state ~= "gowp" ) and (vector.distance(self.object:get_pos(),self._bed) > 50 ) + local wandered_too_far = ( self.state ~= PATHFINDING ) and (vector.distance(self.object:get_pos(),self._bed) > 50 ) --if wandered_too_far then minetest.log("Wandered too far! Return home ") end if wandered_too_far then From f8ee473383afd1842fe486d1fd5d08c7181ec1ad Mon Sep 17 00:00:00 2001 From: ancientmarinerdev Date: Wed, 26 Oct 2022 00:17:29 +0100 Subject: [PATCH 03/17] Fix villager work times --- mods/ENTITIES/mcl_mobs/api.lua | 3 --- mods/ENTITIES/mobs_mc/villager.lua | 6 +++--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 422857de4..8d385d040 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -3201,7 +3201,6 @@ function mcl_mobs:gopath(self,target,callback_arrived) local d = minetest.find_node_near(target,16,{"group:door"}) if d then --mcl_log("Found a door near") - local up_one = vector.new(0,1,0) for _,v in pairs(plane_adjacents) do local pos = vector.add(d,v) @@ -3212,8 +3211,6 @@ function mcl_mobs:gopath(self,target,callback_arrived) mcl_log("Found a path to next to door".. minetest.pos_to_string(pos)) local other_side_of_door = vector.add(d,-v) mcl_log("Opposite is: ".. minetest.pos_to_string(other_side_of_door)) - --other_side_of_door = vector.add(other_side_of_door, up_one) - --mcl_log("Opposite 2 is: ".. minetest.pos_to_string(other_side_of_door)) table.insert(wp, other_side_of_door) break diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index a6f21b83b..336221a17 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -579,9 +579,9 @@ function get_activity(tod) local lunch_start = 12000 - local lunch_end = 12500 - local work_start = 6500 - local work_end = 18000 + local lunch_end = 13500 + local work_start = 8500 + local work_end = 16500 local activity = nil From eb313f94820a912ce7581a54403fa24b2be98a8b Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 21 Jun 2021 03:58:18 +0400 Subject: [PATCH 04/17] [mineclone5] Move sweet berries into farming as a quick fix --- mods/ITEMS/mcl_farming/init.lua | 3 + mods/ITEMS/mcl_farming/sweet_berry.lua | 56 ++++++++++++++++++ .../textures/mcl_farming_sweet_berry.png | Bin 0 -> 462 bytes .../mcl_farming_sweet_berry_bush_0.png | Bin 0 -> 318 bytes .../mcl_farming_sweet_berry_bush_1.png | Bin 0 -> 759 bytes .../mcl_farming_sweet_berry_bush_2.png | Bin 0 -> 800 bytes .../mcl_farming_sweet_berry_bush_3.png | Bin 0 -> 858 bytes 7 files changed, 59 insertions(+) create mode 100644 mods/ITEMS/mcl_farming/sweet_berry.lua create mode 100644 mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry.png create mode 100644 mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_0.png create mode 100644 mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_1.png create mode 100644 mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_2.png create mode 100644 mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_3.png diff --git a/mods/ITEMS/mcl_farming/init.lua b/mods/ITEMS/mcl_farming/init.lua index adce058ee..60b10105d 100644 --- a/mods/ITEMS/mcl_farming/init.lua +++ b/mods/ITEMS/mcl_farming/init.lua @@ -27,3 +27,6 @@ dofile(minetest.get_modpath("mcl_farming").."/potatoes.lua") -- ========= BEETROOT ========= dofile(minetest.get_modpath("mcl_farming").."/beetroot.lua") + +-- ========= SWEET BERRY ========= +dofile(minetest.get_modpath("mcl_farming").."/sweet_berry.lua") diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua new file mode 100644 index 000000000..2feba1126 --- /dev/null +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -0,0 +1,56 @@ +local S = minetest.get_translator(minetest.get_current_modname()) + +for i=0, 3 do + local texture = "mcl_farming_sweet_berry_bush_" .. i .. ".png" + local node_name = "mcl_farming:sweet_berry_bush_" .. i + minetest.register_node(node_name, { + drawtype = "plantlike", + tiles = {texture}, + description = S("Sweet Berry Bush (Stage @1)", i), + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "meshoptions", + place_param2 = 3, + walkable = false, + drop = "mcl_farming:sweet_berry", + selection_box = { + type = "fixed", + fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16}, + }, + inventory_image = texture, + wield_image = texture, + groups = {dig_immediate=3, not_in_creative_inventory=1,plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1}, + sounds = mcl_sounds.node_sound_leaves_defaults(), + _mcl_blast_resistance = 0, + }) + minetest.register_alias("mcl_sweet_berry:sweet_berry_bush_" .. i, node_name) +end + +minetest.register_craftitem("mcl_farming:sweet_berry", { + description = S("Sweet Berry"), + inventory_image = "mcl_farming_sweet_berry.png", + _mcl_saturation = 0.2, + stack_max = 64, + groups = { food = 2, eatable = 1 }, + on_secondary_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) + local new = mcl_farming:place_seed(itemstack, placer, pointed_thing, "mcl_sweet_berry:sweet_berry_bush_0") + if new then + return new + else + return minetest.do_item_eat(1, nil, itemstack, placer, pointed_thing) + end + end, +}) +minetest.register_alias("mcl_sweet_berry:sweet_berry", "mcl_farming:sweet_berry") + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:dirt_with_grass"}, + sidelen = 16, + noise_params = {offset=0, scale=.45, spread={x=100, y=100, z=100}, seed=354, octaves=3, persist=0.7}, + biomes = {"Taiga","Forest"}, + y_max = mcl_vars.mg_overworld_max, + y_min = mcl_vars.mg_overworld_min, + decoration = "mcl_sweet_berry:sweet_berry_bush_2" +}) diff --git a/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry.png b/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2349971a2e174a47503ff35b02042f9ac1fbc8 GIT binary patch literal 462 zcmV;<0WtoGP)^X9;Q12-i!Br-q88fN zh=q+H5>5-{un3n#ECji+$R06g3=s>b+MS*EF|z~wG1yNJO2}mZ698cNZfRgfCFJz! zs!6x|2c(1~C8Xc4p7+SD0KoIfS$Iz>A5>NC)?uGV;=@v;a=cDgX6#B6A&zUeck3p#sB~S07*qoM6N<$ Ef}ml$+yDRo literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_0.png b/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6f8c0d833dd5b5b8e805381bbaa837cc5714f15d GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;RN#5=* zK)Q}WWwyT57a)tXz$3Dlfq`2Xgc%uT&5-~Kp7V5Z46!)L&*h~4y1#r2U$xa{tevmgzW2+W{ST^)Bjvav#OJQNS;J+%TrBU=5hmjV2A)7(-UHdjYaV=d ziIiP+rN!!L&zTBE;V>*$%MP5lioGA7innIIzetvs*gm;JRn-)C$C`i#NT L)z4*}Q$iB}C5wK% literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_1.png b/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2ac3c205d8de804a93cce796b342b78adf868f02 GIT binary patch literal 759 zcmV;|K8)5Ms#YD~H@Zrr#~lqd7pb-I4FyHw&ywD^L@_wJ%J~!#km`9Z>3$k z7~>n8N1vM-{seVP>&e;D;0cEVWbvM@+7-vGIj!D=D^I+YDIUTT&X>m*|=* ztl^TKlglRZU!Z{yTUbY&>FbX6A(P7aj8rgh?_|cETFLlO)lha1ui_zk7(xy8w1v?S zvzW8G|FPMTNAlUSaz3Y*3?ic)4;TqUOrnBgI!*!C#p^ z>C_}K7FCT!=TuseQkW=&iAE=j002ovPDHLkV1iO?W`6(x literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_2.png b/mods/ITEMS/mcl_farming/textures/mcl_farming_sweet_berry_bush_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5e9a6dd1473581ec441c431004954550cc7968f9 GIT binary patch literal 800 zcmV+*1K<3KP)L$Ol^4@_fX_R{*>pgZ%cyX7N_l~$cCe_d4}tqt7;k zt}M4VDFc7)y`AxNNY`@8dI(&^<=l?61UW%1ys#k-puzSr5WUh^x4X1(bq)=}Y4AAHG?g$wXm%bR=F>uBJ59RBD0k z-K0$NhA8^kQ+@AY3%mbD`DE&>c=)1cANUF{W8}+1>FBGEWUg5$WiMUd89tdTl~tp> zRQz4f^nZ?eu&)E5A8(!0kr|Rr9Mhj$ZGL+f%N91eRO%}p&Y#C>^N~^TpCTpEjl*tk zoDl|TQKS6zQvLby=ko8EU4B!wR&spc?PjSO!T&TdkAA4npx eM#Fd23-C8XMgbTICgrjK0000Nc*%TVBmik8Wg6nNw*^^Q`ET9%#7iukB+^R` zCG~J!ueK`ErkqpTn(GA6fw_PSNN_w91I%f_EI{e|tK@R0Pw*oO3+tb1e*zFswL~`f zU*Vr|6KDVmz)TL5M1|Kuna9_%OBrfeU!)`8C6f;TjSs7jo{2^W zPuZu{097K82ZlpW)2$iZ6o^kWoP97FqVG#Z&zh62=-kI7QX+*Z>D0 zIRO#yuMC$R0UEk`M%P;-S&8|6<8{X_2f1(G61FUsRSa{|28;no(I$yNet$x(3?_5# zeNDkhKxo~pXQa{63XUDa`jkJ$ zbn#-Z<|xx(cMdE1|7a~0-iN>h;0EMr4br%r-BKRplqFtBj!R%=DRE`n!@)tN<3ei1 zjn4s5w?yCt&<_j%s_=vRWMC1`hocm^-QD58OU=F8JX@D}GTT4rq*bpB*QRB1AExv+u5cW5|MtiJq5G^Xqu@ajmU` z;ry0?70MNQhMc?|TZ&f-{sPTyVAu#%8y?7M0Lp}U<5D$OZX*7GEfRs z(VuEY6x^7WhJ`_u?>di@ZR8D=MrDs3D$DT`V9hMk4vR*yE5@)|ik453HAX4--Xi$N kb^0e}5Ff9ld!!fOE6@cdU4}wSs{jB107*qoM6N<$g3s%Fu>b%7 literal 0 HcmV?d00001 From a7c3878caeeb53e0a665d021b928aff904c3a9cc Mon Sep 17 00:00:00 2001 From: kay27 Date: Mon, 21 Jun 2021 04:51:05 +0400 Subject: [PATCH 05/17] [mineclone5] Tune sweet berries a bit --- mods/ITEMS/mcl_farming/sweet_berry.lua | 27 +++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua index 2feba1126..d74739aaa 100644 --- a/mods/ITEMS/mcl_farming/sweet_berry.lua +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -12,7 +12,7 @@ for i=0, 3 do paramtype2 = "meshoptions", place_param2 = 3, walkable = false, - drop = "mcl_farming:sweet_berry", + drop = (i>=2) and ("mcl_farming:sweet_berry" .. (i==3 and " 3" or "")) or "", selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16}, @@ -45,12 +45,21 @@ minetest.register_craftitem("mcl_farming:sweet_berry", { minetest.register_alias("mcl_sweet_berry:sweet_berry", "mcl_farming:sweet_berry") minetest.register_decoration({ - deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass"}, - sidelen = 16, - noise_params = {offset=0, scale=.45, spread={x=100, y=100, z=100}, seed=354, octaves=3, persist=0.7}, - biomes = {"Taiga","Forest"}, - y_max = mcl_vars.mg_overworld_max, - y_min = mcl_vars.mg_overworld_min, - decoration = "mcl_sweet_berry:sweet_berry_bush_2" + deco_type = "simple", + place_on = {"mcl_core:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.001, + spread = {x = 100, y = 100, z = 100}, + seed = 354, + octaves = 1, + persist = 0.5, + lacunarity = 1.0, + flags = "absvalue" + }, + biomes = {"Taiga","Forest"}, + y_max = mcl_vars.mg_overworld_max, + y_min = 2, + decoration = "mcl_sweet_berry:sweet_berry_bush_3" }) From 5f4d7774ae5a866907d556b5f998458cee1a23d7 Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 24 Oct 2022 01:00:41 +0200 Subject: [PATCH 06/17] Add sweet berry compostability --- mods/ITEMS/mcl_farming/sweet_berry.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua index d74739aaa..f215851e3 100644 --- a/mods/ITEMS/mcl_farming/sweet_berry.lua +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -31,7 +31,7 @@ minetest.register_craftitem("mcl_farming:sweet_berry", { inventory_image = "mcl_farming_sweet_berry.png", _mcl_saturation = 0.2, stack_max = 64, - groups = { food = 2, eatable = 1 }, + groups = { food = 2, eatable = 1, compostability=30 }, on_secondary_use = minetest.item_eat(1), on_place = function(itemstack, placer, pointed_thing) local new = mcl_farming:place_seed(itemstack, placer, pointed_thing, "mcl_sweet_berry:sweet_berry_bush_0") From 495378b85ec6047e3a6bc238f8862678ca864ef8 Mon Sep 17 00:00:00 2001 From: balazsszalab Date: Sat, 18 Jun 2022 15:41:22 +0000 Subject: [PATCH 07/17] Register sweet berry bush by add_plant function to enable plant growth Without calling the add_plant function, sweet berry bushes will not go through growth stages and it is impossible to farm them. Sweet berry bush and beetroot have the same number of growth stages, so I used beetroot's interval and chance values here. If somebody has a better approximation of these values, feel free to change them. --- mods/ITEMS/mcl_farming/sweet_berry.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua index f215851e3..cde2f8d97 100644 --- a/mods/ITEMS/mcl_farming/sweet_berry.lua +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -63,3 +63,6 @@ minetest.register_decoration({ y_min = 2, decoration = "mcl_sweet_berry:sweet_berry_bush_3" }) + +-- TODO: Find proper interval and chance values for sweet berry bushes. Current interval and chance values are copied from mcl_farming:beetroot which has similar growth stages. +mcl_farming:add_plant("plant_sweet_berry_bush", "mcl_farming:sweet_berry_bush_3", {"mcl_farming:sweet_berry_bush_0", "mcl_farming:sweet_berry_bush_1", "mcl_farming:sweet_berry_bush_2"}, 68, 3) \ No newline at end of file From 280bcddcb2c32c55a737be4441207061d29c6e45 Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 24 Oct 2022 01:13:44 +0200 Subject: [PATCH 08/17] Move sweet berry decoration to mcl_biomes --- mods/ITEMS/mcl_farming/sweet_berry.lua | 22 +--------------------- mods/MAPGEN/mcl_biomes/init.lua | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua index cde2f8d97..773cdf1d8 100644 --- a/mods/ITEMS/mcl_farming/sweet_berry.lua +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -44,25 +44,5 @@ minetest.register_craftitem("mcl_farming:sweet_berry", { }) minetest.register_alias("mcl_sweet_berry:sweet_berry", "mcl_farming:sweet_berry") -minetest.register_decoration({ - deco_type = "simple", - place_on = {"mcl_core:dirt_with_grass"}, - sidelen = 16, - noise_params = { - offset = 0, - scale = 0.001, - spread = {x = 100, y = 100, z = 100}, - seed = 354, - octaves = 1, - persist = 0.5, - lacunarity = 1.0, - flags = "absvalue" - }, - biomes = {"Taiga","Forest"}, - y_max = mcl_vars.mg_overworld_max, - y_min = 2, - decoration = "mcl_sweet_berry:sweet_berry_bush_3" -}) - -- TODO: Find proper interval and chance values for sweet berry bushes. Current interval and chance values are copied from mcl_farming:beetroot which has similar growth stages. -mcl_farming:add_plant("plant_sweet_berry_bush", "mcl_farming:sweet_berry_bush_3", {"mcl_farming:sweet_berry_bush_0", "mcl_farming:sweet_berry_bush_1", "mcl_farming:sweet_berry_bush_2"}, 68, 3) \ No newline at end of file +mcl_farming:add_plant("plant_sweet_berry_bush", "mcl_farming:sweet_berry_bush_3", {"mcl_farming:sweet_berry_bush_0", "mcl_farming:sweet_berry_bush_1", "mcl_farming:sweet_berry_bush_2"}, 68, 3) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 2d2378833..0e1cace1f 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -2851,6 +2851,25 @@ local function register_decorations() flags = "place_center_x,place_center_z, force_placement", }) + minetest.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:dirt_with_grass","mcl_core:podzol"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.012, + spread = {x = 100, y = 100, z = 100}, + seed = 354, + octaves = 1, + persist = 0.5, + lacunarity = 1.0, + flags = "absvalue" + }, + biomes = {"Taiga","Forest"}, + y_max = mcl_vars.mg_overworld_max, + y_min = 2, + decoration = "mcl_sweet_berry:sweet_berry_bush_3" + }) -- Large ice spike minetest.register_decoration({ From b00f2784fff1f0c3eb29ff503d10adf37a183b1f Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 24 Oct 2022 15:10:09 +0200 Subject: [PATCH 09/17] Sweet berry bushes are flammable --- mods/ITEMS/mcl_farming/sweet_berry.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua index 773cdf1d8..365c6a31b 100644 --- a/mods/ITEMS/mcl_farming/sweet_berry.lua +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -19,7 +19,7 @@ for i=0, 3 do }, inventory_image = texture, wield_image = texture, - groups = {dig_immediate=3, not_in_creative_inventory=1,plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1}, + groups = {dig_immediate=3, not_in_creative_inventory=1,plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1, flammable=3, fire_encouragement=60, fire_flammability=20}, sounds = mcl_sounds.node_sound_leaves_defaults(), _mcl_blast_resistance = 0, }) From 8d456d8ff9f5e7ec238baf2c3bc10a32dbf9df4b Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 24 Oct 2022 16:03:24 +0200 Subject: [PATCH 10/17] implement sweet berry damage 0.5 per second while moving inside it --- mods/CORE/mcl_damage/init.lua | 1 + mods/ITEMS/mcl_farming/sweet_berry.lua | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/mods/CORE/mcl_damage/init.lua b/mods/CORE/mcl_damage/init.lua index aa9445954..773e7a43e 100644 --- a/mods/CORE/mcl_damage/init.lua +++ b/mods/CORE/mcl_damage/init.lua @@ -12,6 +12,7 @@ mcl_damage = { drown = {bypasses_armor = true}, starve = {bypasses_armor = true, bypasses_magic = true}, cactus = {}, + sweet_berry = {}, fall = {bypasses_armor = true}, fly_into_wall = {bypasses_armor = true}, -- unused out_of_world = {bypasses_armor = true, bypasses_magic = true, bypasses_invulnerability = true, bypasses_totem = true}, diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua index 365c6a31b..e283149bc 100644 --- a/mods/ITEMS/mcl_farming/sweet_berry.lua +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -46,3 +46,28 @@ minetest.register_alias("mcl_sweet_berry:sweet_berry", "mcl_farming:sweet_berry" -- TODO: Find proper interval and chance values for sweet berry bushes. Current interval and chance values are copied from mcl_farming:beetroot which has similar growth stages. mcl_farming:add_plant("plant_sweet_berry_bush", "mcl_farming:sweet_berry_bush_3", {"mcl_farming:sweet_berry_bush_0", "mcl_farming:sweet_berry_bush_1", "mcl_farming:sweet_berry_bush_2"}, 68, 3) + +local function berry_damage_check(obj) + local p = obj:get_pos() + if not p then return end + if not minetest.find_node_near(p,0.4,{"group:sweet_berry"},true) then return end + local v = obj:get_velocity() + if v.x < 0.1 and v.y < 0.1 and v.z < 0.1 then return end + + mcl_util.deal_damage(obj, 0.5, {type = "sweet_berry"}) +end + +local etime = 0 +minetest.register_globalstep(function(dtime) + etime = dtime + etime + if etime < 0.5 then return end + etime = 0 + for _,pl in pairs(minetest.get_connected_players()) do + berry_damage_check(pl) + end + for _,ent in pairs(minetest.luaentities) do + if ent.is_mob then + berry_damage_check(ent.object) + end + end +end) From 2b08f9ac532d9fe679d1c8c0284877838632aa0e Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 24 Oct 2022 16:03:48 +0200 Subject: [PATCH 11/17] Slow down player movement while inside sweet berry --- mods/ITEMS/mcl_farming/sweet_berry.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua index e283149bc..3307dd271 100644 --- a/mods/ITEMS/mcl_farming/sweet_berry.lua +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -11,15 +11,21 @@ for i=0, 3 do sunlight_propagates = true, paramtype2 = "meshoptions", place_param2 = 3, + liquid_viscosity = 15, + liquidtype = "source", + liquid_alternative_flowing = node_name, + liquid_alternative_source = node_name, + liquid_renewable = false, + liquid_range = 0, walkable = false, drop = (i>=2) and ("mcl_farming:sweet_berry" .. (i==3 and " 3" or "")) or "", selection_box = { type = "fixed", - fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16}, + fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, (-0.30 + (i*0.25)), 6 / 16}, }, inventory_image = texture, wield_image = texture, - groups = {dig_immediate=3, not_in_creative_inventory=1,plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1, flammable=3, fire_encouragement=60, fire_flammability=20}, + groups = {sweet_berry=1, dig_immediate=3, not_in_creative_inventory=1,plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1, flammable=3, fire_encouragement=60, fire_flammability=20}, sounds = mcl_sounds.node_sound_leaves_defaults(), _mcl_blast_resistance = 0, }) From 2664fb871b7d9295b4d4b4f7ce63eb220daf2f09 Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 24 Oct 2022 16:23:14 +0200 Subject: [PATCH 12/17] sweet berries plantable not only on farming soil --- mods/ITEMS/mcl_campfires/init.lua | 16 ++++++++-------- mods/ITEMS/mcl_farming/sweet_berry.lua | 14 +++++++++----- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/mods/ITEMS/mcl_campfires/init.lua b/mods/ITEMS/mcl_campfires/init.lua index 195612533..083fbce57 100644 --- a/mods/ITEMS/mcl_campfires/init.lua +++ b/mods/ITEMS/mcl_campfires/init.lua @@ -59,18 +59,18 @@ for _, campfire in pairs(campfires) do drawtype = "mesh", mesh = "mcl_campfires_campfire_lit.obj", tiles = {{ - name="mcl_campfires_" .. campfire.techname .. "_fire.png", + name="mcl_campfires_" .. campfire.techname .. "_fire.png", animation={ - type="vertical_frames", - aspect_w=16, - aspect_h=16, + type="vertical_frames", + aspect_w=16, + aspect_h=16, length=2.0 }}, - {name="mcl_campfires_" .. campfire.techname .. "_log_lit.png", + {name="mcl_campfires_" .. campfire.techname .. "_log_lit.png", animation={ - type="vertical_frames", - aspect_w=16, - aspect_h=16, + type="vertical_frames", + aspect_w=16, + aspect_h=16, length=2.0 }} }, diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua index 3307dd271..de5db82bc 100644 --- a/mods/ITEMS/mcl_farming/sweet_berry.lua +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -1,5 +1,7 @@ local S = minetest.get_translator(minetest.get_current_modname()) +local planton = {"mcl_core:dirt_with_grass","mcl_core:dirt","mcl_core:podzol","mcl_core:coarse_dirt","mcl_farming:soil","mcl_moss:moss"} + for i=0, 3 do local texture = "mcl_farming_sweet_berry_bush_" .. i .. ".png" local node_name = "mcl_farming:sweet_berry_bush_" .. i @@ -40,12 +42,14 @@ minetest.register_craftitem("mcl_farming:sweet_berry", { groups = { food = 2, eatable = 1, compostability=30 }, on_secondary_use = minetest.item_eat(1), on_place = function(itemstack, placer, pointed_thing) - local new = mcl_farming:place_seed(itemstack, placer, pointed_thing, "mcl_sweet_berry:sweet_berry_bush_0") - if new then - return new - else - return minetest.do_item_eat(1, nil, itemstack, placer, pointed_thing) + if pointed_thing.type == "node" and table.indexof(planton,minetest.get_node(pointed_thing.under).name) ~= -1 and minetest.get_node(pointed_thing.above).name == "air" then + minetest.set_node(pointed_thing.above,{name="mcl_farming:sweet_berry_bush_0"}) + if not minetest.is_creative_enabled(placer:get_player_name()) then + itemstack:take_item() + end + return itemstack end + return minetest.do_item_eat(1, nil, itemstack, placer, pointed_thing) end, }) minetest.register_alias("mcl_sweet_berry:sweet_berry", "mcl_farming:sweet_berry") From d6c0561d5ababadbca04852c219929ce8b923400 Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 24 Oct 2022 16:32:40 +0200 Subject: [PATCH 13/17] Only do damage from stage 1 and up --- mods/ITEMS/mcl_farming/sweet_berry.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua index de5db82bc..524e380f3 100644 --- a/mods/ITEMS/mcl_farming/sweet_berry.lua +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -5,6 +5,10 @@ local planton = {"mcl_core:dirt_with_grass","mcl_core:dirt","mcl_core:podzol","m for i=0, 3 do local texture = "mcl_farming_sweet_berry_bush_" .. i .. ".png" local node_name = "mcl_farming:sweet_berry_bush_" .. i + local groups = {sweet_berry=1, dig_immediate=3, not_in_creative_inventory=1,plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1, flammable=3, fire_encouragement=60, fire_flammability=20, compostability=30} + if i > 0 then + groups.sweet_berry_thorny = 1 + end minetest.register_node(node_name, { drawtype = "plantlike", tiles = {texture}, @@ -27,9 +31,10 @@ for i=0, 3 do }, inventory_image = texture, wield_image = texture, - groups = {sweet_berry=1, dig_immediate=3, not_in_creative_inventory=1,plant=1,attached_node=1,dig_by_water=1,destroy_by_lava_flow=1,dig_by_piston=1, flammable=3, fire_encouragement=60, fire_flammability=20}, + groups = groups, sounds = mcl_sounds.node_sound_leaves_defaults(), _mcl_blast_resistance = 0, + _mcl_hardness = 0, }) minetest.register_alias("mcl_sweet_berry:sweet_berry_bush_" .. i, node_name) end @@ -60,7 +65,7 @@ mcl_farming:add_plant("plant_sweet_berry_bush", "mcl_farming:sweet_berry_bush_3" local function berry_damage_check(obj) local p = obj:get_pos() if not p then return end - if not minetest.find_node_near(p,0.4,{"group:sweet_berry"},true) then return end + if not minetest.find_node_near(p,0.4,{"group:sweet_berry_thorny"},true) then return end local v = obj:get_velocity() if v.x < 0.1 and v.y < 0.1 and v.z < 0.1 then return end From ae91640234c4d5271bb8ad4658da52bc6b5e9246 Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 24 Oct 2022 16:35:47 +0200 Subject: [PATCH 14/17] Add missing biomes, correct saturation --- mods/ITEMS/mcl_farming/sweet_berry.lua | 3 +-- mods/MAPGEN/mcl_biomes/init.lua | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua index 524e380f3..573e50a5c 100644 --- a/mods/ITEMS/mcl_farming/sweet_berry.lua +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -42,8 +42,7 @@ end minetest.register_craftitem("mcl_farming:sweet_berry", { description = S("Sweet Berry"), inventory_image = "mcl_farming_sweet_berry.png", - _mcl_saturation = 0.2, - stack_max = 64, + _mcl_saturation = 0.4, groups = { food = 2, eatable = 1, compostability=30 }, on_secondary_use = minetest.item_eat(1), on_place = function(itemstack, placer, pointed_thing) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 0e1cace1f..e5f9333be 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -2865,7 +2865,7 @@ local function register_decorations() lacunarity = 1.0, flags = "absvalue" }, - biomes = {"Taiga","Forest"}, + biomes = {"Taiga","ColdTaiga","MegaTaiga","MegaSpruceTaiga", "Forest"}, y_max = mcl_vars.mg_overworld_max, y_min = 2, decoration = "mcl_sweet_berry:sweet_berry_bush_3" From e8b983bcc5cb04f0614abc438c9f474f6ca3908c Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Tue, 25 Oct 2022 20:46:41 -0600 Subject: [PATCH 15/17] Place sweet berries on wet farmland and bonemeal the sweet berries to progress growth --- mods/ITEMS/mcl_dye/init.lua | 4 ++++ mods/ITEMS/mcl_farming/sweet_berry.lua | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 727a78460..55ba36acc 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -281,6 +281,10 @@ local function apply_bone_meal(pointed_thing) if math.random(1, 100) <= 75 then return mcl_farming:grow_plant("plant_beetroot", pos, n, 1, true) end + elseif string.find(n.name, "mcl_farming:sweet_berry_bush_") then + mcl_dye.add_bone_meal_particle(pos) + local stages = math.random(2, 3) + return mcl_farming:grow_plant("plant_sweet_berry_bush", pos, n, stages, true) elseif n.name == "mcl_cocoas:cocoa_1" or n.name == "mcl_cocoas:cocoa_2" then mcl_dye.add_bone_meal_particle(pos) -- Cocoa: Advance by 1 stage diff --git a/mods/ITEMS/mcl_farming/sweet_berry.lua b/mods/ITEMS/mcl_farming/sweet_berry.lua index 573e50a5c..f87220d90 100644 --- a/mods/ITEMS/mcl_farming/sweet_berry.lua +++ b/mods/ITEMS/mcl_farming/sweet_berry.lua @@ -1,6 +1,6 @@ local S = minetest.get_translator(minetest.get_current_modname()) -local planton = {"mcl_core:dirt_with_grass","mcl_core:dirt","mcl_core:podzol","mcl_core:coarse_dirt","mcl_farming:soil","mcl_moss:moss"} +local planton = {"mcl_core:dirt_with_grass", "mcl_core:dirt", "mcl_core:podzol", "mcl_core:coarse_dirt", "mcl_farming:soil", "mcl_farming:soil_wet", "mcl_moss:moss"} for i=0, 3 do local texture = "mcl_farming_sweet_berry_bush_" .. i .. ".png" From ba9d10055e3a686341503644cc510ee5c7ddaab9 Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 26 Oct 2022 23:40:06 +0200 Subject: [PATCH 16/17] always advance growth stage by 1 on bonemeal --- mods/ITEMS/mcl_dye/init.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 55ba36acc..3eebcecec 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -283,8 +283,7 @@ local function apply_bone_meal(pointed_thing) end elseif string.find(n.name, "mcl_farming:sweet_berry_bush_") then mcl_dye.add_bone_meal_particle(pos) - local stages = math.random(2, 3) - return mcl_farming:grow_plant("plant_sweet_berry_bush", pos, n, stages, true) + return mcl_farming:grow_plant("plant_sweet_berry_bush", pos, n, 1, true) elseif n.name == "mcl_cocoas:cocoa_1" or n.name == "mcl_cocoas:cocoa_2" then mcl_dye.add_bone_meal_particle(pos) -- Cocoa: Advance by 1 stage From 9e3163ec42f8f6624aff467072411d341dbca565 Mon Sep 17 00:00:00 2001 From: cora Date: Thu, 27 Oct 2022 00:19:38 +0200 Subject: [PATCH 17/17] Drop sweet berry item when bone mealing mature bush --- mods/ITEMS/mcl_dye/init.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_dye/init.lua b/mods/ITEMS/mcl_dye/init.lua index 3eebcecec..1d39a0598 100644 --- a/mods/ITEMS/mcl_dye/init.lua +++ b/mods/ITEMS/mcl_dye/init.lua @@ -283,7 +283,11 @@ local function apply_bone_meal(pointed_thing) end elseif string.find(n.name, "mcl_farming:sweet_berry_bush_") then mcl_dye.add_bone_meal_particle(pos) - return mcl_farming:grow_plant("plant_sweet_berry_bush", pos, n, 1, true) + if n.name == "mcl_farming:sweet_berry_bush_3" then + return minetest.add_item(vector.offset(pos,math.random()-0.5,math.random()-0.5,math.random()-0.5),"mcl_farming:sweet_berry") + else + return mcl_farming:grow_plant("plant_sweet_berry_bush", pos, n, 1, true) + end elseif n.name == "mcl_cocoas:cocoa_1" or n.name == "mcl_cocoas:cocoa_2" then mcl_dye.add_bone_meal_particle(pos) -- Cocoa: Advance by 1 stage