Merge farming and farming_plus, slow farming way down, environment reclaim weeded plots

pull/37/head
Brandon 2016-06-18 17:18:33 -05:00
parent d8e87a8775
commit 02374bb670
81 changed files with 971 additions and 1067 deletions

View File

@ -42,4 +42,16 @@ function adventuretest.teleport(player,pos)
local name = player:get_player_name();
pd.set(name,"lastpos",pos)
player:moveto(pos)
end
end
function hunger_join_player(player)
local name = player:get_player_name()
local lvl = pd.get_number(name,"hunger_lvl")
if lvl > 20 then
lvl = 20
end
minetest.after(0.8, function()
hud.change_item(player, "hunger", {offset = "item", item_name = "hunger"})
hud.change_item(player, "hunger", {number = lvl, max = 20})
end)
end

View File

@ -55,7 +55,7 @@ cottages.texture_chest = {"default_chest_top.png", "default_chest_top.png", "def
"default_chest_side.png", "default_chest_side.png", "default_chest_front.png"};
-- the treshing floor produces wheat seeds
cottages.craftitem_seed_wheat = "farming:seed_wheat";
cottages.craftitem_seed_wheat = "farming_plus:seed_wheat";
cottages.texture_wheat_seed = "farming_wheat_seed.png";
cottages.texture_stick = "default_stick.png";
@ -84,7 +84,7 @@ if( not( minetest.registered_nodes["default:tree"])) then
"spruce_chest_side.png", "spruce_chest_side.png", "spruce_chest_front.png"};
-- wheat is called spelt in RealTest
cottages.craftitem_seed_wheat = 'farming:seed_spelt';
cottages.craftitem_seed_wheat = 'farming_plus:seed_spelt';
cottages.texture_wheat_seed = 'farming_spelt_seed.png';
cottages.texture_stick = 'trees_maple_stick.png';
else

View File

@ -1,5 +1,5 @@
default?
farming
farming_plus
stairs?
homedecor?
intllib?

View File

@ -39,7 +39,7 @@ dofile(minetest.get_modpath("cottages").."/adaptions.lua");
-- add to this table what you want the handmill to convert;
-- add a stack size if you want a higher yield
cottages.handmill_product = {};
cottages.handmill_product[ cottages.craftitem_seed_wheat ] = 'farming:flour 1';
cottages.handmill_product[ cottages.craftitem_seed_wheat ] = 'farming_plus:flour 1';
--[[ some examples:
cottages.handmill_product[ 'default:cobble' ] = 'default:gravel';
cottages.handmill_product[ 'default:gravel' ] = 'default:sand';

View File

@ -270,7 +270,7 @@ minetest.register_craft({
minetest.register_craft({
output = "cottages:wood_flat 16",
recipe = {
{cottages.craftitem_stick, "farming:string",cottages.craftitem_stick },
{cottages.craftitem_stick, "farming_plus:string",cottages.craftitem_stick },
{cottages.craftitem_stick, "", cottages.craftitem_stick },
}
})
@ -278,7 +278,7 @@ minetest.register_craft({
minetest.register_craft({
output = "cottages:wool_tent 2",
recipe = {
{"farming:string", "farming:string"},
{"farming_plus:string", "farming_plus:string"},
{"",cottages.craftitem_stick}
}
})

View File

@ -175,7 +175,7 @@ minetest.register_node("cottages:threshing_floor", {
-- only accept input the threshing floor can use/process
if( listname=='straw'
or listname=='seeds'
or (listname=='harvest' and stack and stack:get_name() ~= 'farming:wheat' )) then
or (listname=='harvest' and stack and stack:get_name() ~= 'farming_plus:wheat' )) then
return 0;
end
@ -218,8 +218,8 @@ minetest.register_node("cottages:threshing_floor", {
local stack2 = inv:get_stack( 'harvest', 2);
if( ( stack1:is_empty() and stack2:is_empty())
or( not( stack1:is_empty()) and stack1:get_name() ~= 'farming:wheat')
or( not( stack2:is_empty()) and stack2:get_name() ~= 'farming:wheat')) then
or( not( stack1:is_empty()) and stack1:get_name() ~= 'farming_plus:wheat')
or( not( stack2:is_empty()) and stack2:get_name() ~= 'farming_plus:wheat')) then
-- minetest.chat_send_player( name, 'One of the input slots contains something else than wheat, or there is no wheat at all.');
-- update the formspec
@ -254,7 +254,7 @@ minetest.register_node("cottages:threshing_floor", {
inv:add_item("straw",'cottages:straw_mat '..tostring( anz_straw ));
inv:add_item("seeds",cottages.craftitem_seed_wheat..' '..tostring( anz_seeds ));
-- consume the wheat
inv:remove_item("harvest", 'farming:wheat '..tostring( anz_wheat ));
inv:remove_item("harvest", 'farming_plus:wheat '..tostring( anz_wheat ));
local anz_left = found_wheat - anz_wheat;
if( anz_left > 0 ) then
@ -520,7 +520,7 @@ minetest.register_craft({
output = "cottages:straw_mat 6",
recipe = {
{cottages.craftitem_stone,'',''},
{"farming:wheat", "farming:wheat", "farming:wheat", },
{"farming_plus:wheat", "farming_plus:wheat", "farming_plus:wheat", },
},
replacements = {{ cottages.craftitem_stone, cottages.craftitem_seed_wheat.." 3" }},
})

View File

@ -185,6 +185,22 @@ minetest.register_abm({
end,
})
-- freeze things
minetest.register_abm({
nodenames = {"group:freezes"},
neighbors = {"group:frozen"},
interval = 10,
chance = 2,
action = function(pos, node)
local new_node = minetest.registered_nodes[node.name].freezemelt
if new_node ~= nil then
minetest.set_node(pos,{name=new_node})
else
minetest.log("error","Freezing node without freezemelt set: "..node.name)
end
end
})
--
-- Papyrus and cactus growing
--

View File

@ -842,7 +842,7 @@ minetest.register_abm({
action = function(pos, node, active_object_count, active_object_count_wider)
if abm_limiter() then return end
local item_count = math.random(0,5)
local items_available = { [0] = "default:apple", [1] = "mobs:meat_raw", [2]="farming:bread",[3]="bushes:berry_pie_cooked",[4]="bushes:basket_empty",[5]="farming:wheat",[6]="throwing:arrow",[7]="default:torch",[8]="farming:string"}
local items_available = { [0] = "default:apple", [1] = "mobs:meat_raw", [2]="farming_plus:bread",[3]="bushes:berry_pie_cooked",[4]="bushes:basket_empty",[5]="farming_plus:wheat",[6]="throwing:arrow",[7]="default:torch",[8]="farming_plus:string"}
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
for i = 0, item_count do
@ -1579,7 +1579,7 @@ minetest.register_node("default:ice", {
is_ground_content = true,
paramtype = "light",
freezemelt = "default:water_source",
groups = {choppy=3,cracky=3, melts=1},
groups = {choppy=3,cracky=3, melts=1, frozen=1},
sounds = default.node_sound_glass_defaults(),
})
@ -1591,6 +1591,7 @@ minetest.register_node("default:snow", {
is_ground_content = true,
paramtype = "light",
buildable_to = true,
floodable = true,
leveled = 7,
drawtype = "nodebox",
freezemelt = "default:water_flowing",
@ -1601,7 +1602,7 @@ minetest.register_node("default:snow", {
{-0.5, -0.5, -0.5, 0.5, -0.5+2/16, 0.5},
},
},
groups = {crumbly=3,falling_node=1, melts=1, float=1,puts_out_fire=1},
groups = {crumbly=3,falling_node=1, melts=1, float=1,puts_out_fire=1, frozen=1},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_snow_footstep", gain=0.25},
dug = {name="default_snow_footstep", gain=0.75},
@ -1614,7 +1615,7 @@ minetest.register_node("default:snowblock", {
tiles = {"default_snow.png"},
is_ground_content = true,
freezemelt = "default:water_source",
groups = {crumbly=3, melts=1, puts_out_fire=1},
groups = {crumbly=3, melts=1, puts_out_fire=1,frozen=1},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_snow_footstep", gain=0.25},
dug = {name="default_snow_footstep", gain=0.75},

View File

@ -1,57 +0,0 @@
Minetest 0.4 mod: farming
=========================
License of source code:
-----------------------
Copyright (C) 2012-2013 PilzAdam
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
License of media (textures):
----------------------------
Created by PilzAdam (License: WTFPL):
farming_bread.png
farming_soil.png
farming_soil_wet.png
farming_soil_wet_side.png
farming_string.png
Created by Calinou (License: CC BY-SA):
farming_tool_bronzehoe.png
farming_tool_steelhoe.png
farming_tool_stonehoe.png
farming_tool_woodhoe.png
Created by VanessaE (License: WTFPL):
farming_cotton_seed.png
farming_wheat_seed.png
farming_flour.png
farming_wheat.png
farming_wheat_1.png
farming_wheat_2.png
farming_wheat_3.png
farming_wheat_4.png
farming_wheat_5.png
farming_wheat_5.png
farming_wheat_7.png
farming_wheat_8.png
farming_cotton_1.png
farming_cotton_2.png
farming_cotton_3.png
farming_cotton_4.png
farming_cotton_5.png
farming_cotton_6.png
farming_cotton_7.png
farming_cotton_8.png

View File

@ -1,2 +0,0 @@
default
wool

View File

@ -1,506 +0,0 @@
-- Minetest 0.4 mod: farming
-- See README.txt for licensing and other information.
farming = {}
--
-- Soil
--
minetest.register_node("farming:soil", {
description = "Soil",
tiles = {"farming_soil.png", "default_dirt.png"},
drop = "default:dirt",
is_ground_content = true,
groups = {crumbly=3, not_in_creative_inventory=1, soil=2},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("farming:soil_wet", {
description = "Wet Soil",
tiles = {"farming_soil_wet.png", "farming_soil_wet_side.png"},
drop = "default:dirt",
is_ground_content = true,
groups = {crumbly=3, not_in_creative_inventory=1, soil=3},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_abm({
nodenames = {"farming:soil", "farming:soil_wet"},
interval = 15,
chance = 4,
action = function(pos, node)
if abm_limiter() then return end
pos.y = pos.y+1
local nn = minetest.get_node(pos).name
pos.y = pos.y-1
if minetest.registered_nodes[nn] and
minetest.registered_nodes[nn].walkable and
minetest.get_item_group(nn, "plant") == 0
then
minetest.set_node(pos, {name="default:dirt"})
end
-- check if there is water nearby
if minetest.find_node_near(pos, 3, {"group:water"}) then
-- if it is dry soil turn it into wet soil
if node.name == "farming:soil" then
minetest.set_node(pos, {name="farming:soil_wet"})
end
else
-- turn it back into dirt if it is already dry
if node.name == "farming:soil" then
-- only turn it back if there is no plant on top of it
if minetest.get_item_group(nn, "plant") == 0 then
minetest.set_node(pos, {name="default:dirt"})
end
-- if its wet turn it back into dry soil
elseif node.name == "farming:soil_wet" then
minetest.set_node(pos, {name="farming:soil"})
end
end
end,
})
--
-- Hoes
--
-- turns nodes with group soil=1 into soil
function farming.hoe_on_use(itemstack, user, pointed_thing, uses)
local pt = pointed_thing
-- check if pointing at a node
if not pt then
return
end
if pt.type ~= "node" then
return
end
local under = minetest.get_node(pt.under)
local p = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
local above = minetest.get_node(p)
-- return if any of the nodes is not registered
if not minetest.registered_nodes[under.name] then
return
end
if not minetest.registered_nodes[above.name] then
return
end
-- check if the node above the pointed thing is air
if above.name ~= "air" then
return
end
-- check if pointing at dirt
if minetest.get_item_group(under.name, "soil") ~= 1 then
return
end
-- turn the node into soil, wear out item and play sound
minetest.set_node(pt.under, {name="farming:soil"})
minetest.sound_play("default_dig_crumbly", {
pos = pt.under,
gain = 0.5,
})
itemstack:add_wear(65535/(uses-1))
return itemstack
end
minetest.register_tool("farming:hoe_wood", {
description = "Wooden Hoe",
inventory_image = "farming_tool_woodhoe.png",
on_use = function(itemstack, user, pointed_thing)
return farming.hoe_on_use(itemstack, user, pointed_thing, 30)
end,
})
minetest.register_tool("farming:hoe_stone", {
description = "Stone Hoe",
inventory_image = "farming_tool_stonehoe.png",
on_use = function(itemstack, user, pointed_thing)
return farming.hoe_on_use(itemstack, user, pointed_thing, 90)
end,
})
minetest.register_tool("farming:hoe_steel", {
description = "Steel Hoe",
inventory_image = "farming_tool_steelhoe.png",
on_use = function(itemstack, user, pointed_thing)
return farming.hoe_on_use(itemstack, user, pointed_thing, 200)
end,
})
minetest.register_tool("farming:hoe_bronze", {
description = "Bronze Hoe",
inventory_image = "farming_tool_bronzehoe.png",
on_use = function(itemstack, user, pointed_thing)
return farming.hoe_on_use(itemstack, user, pointed_thing, 220)
end,
})
minetest.register_craft({
output = "farming:hoe_wood",
recipe = {
{"group:wood", "group:wood"},
{"", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "farming:hoe_stone",
recipe = {
{"group:stone", "group:stone"},
{"", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "farming:hoe_steel",
recipe = {
{"default:steel_ingot", "default:steel_ingot"},
{"", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "farming:hoe_bronze",
recipe = {
{"default:bronze_ingot", "default:bronze_ingot"},
{"", "group:stick"},
{"", "group:stick"},
}
})
--
-- Override grass for drops
--
minetest.register_node(":default:grass_1", {
description = "Grass",
drawtype = "plantlike",
tiles = {"default_grass_1.png"},
-- use a bigger inventory image
inventory_image = "default_grass_3.png",
wield_image = "default_grass_3.png",
paramtype = "light",
waving = 1,
walkable = false,
buildable_to = true,
drop = {
max_items = 1,
items = {
{items = {'farming:seed_wheat'},rarity = 5},
{items = {'default:grass_1'}},
}
},
groups = {snappy=3,flammable=3,flora=1,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("default:grass_"..math.random(1,5))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("default:grass_1 "..itemstack:get_count()-(1-ret:get_count()))
end,
})
for i=2,5 do
minetest.register_node(":default:grass_"..i, {
description = "Grass",
drawtype = "plantlike",
tiles = {"default_grass_"..i..".png"},
inventory_image = "default_grass_"..i..".png",
wield_image = "default_grass_"..i..".png",
paramtype = "light",
waving = 1,
walkable = false,
buildable_to = true,
is_ground_content = true,
drop = {
max_items = 1,
items = {
{items = {'farming:seed_wheat'},rarity = 5},
{items = {'default:grass_1'}},
}
},
groups = {snappy=3,flammable=3,flora=1,attached_node=1,not_in_creative_inventory=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})
end
minetest.register_node(":default:junglegrass", {
description = "Jungle Grass",
drawtype = "plantlike",
visual_scale = 1.3,
tiles = {"default_junglegrass.png"},
inventory_image = "default_junglegrass.png",
wield_image = "default_junglegrass.png",
paramtype = "light",
waving = 1,
walkable = false,
buildable_to = true,
is_ground_content = true,
drop = {
max_items = 1,
items = {
{items = {'farming:seed_cotton'},rarity = 8},
{items = {'default:junglegrass'}},
}
},
groups = {snappy=3,flammable=2,flora=1,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})
--
-- Place seeds
--
local function place_seed(itemstack, placer, pointed_thing, plantname)
local pt = pointed_thing
-- check if pointing at a node
if not pt then
return
end
if pt.type ~= "node" then
return
end
local under = minetest.get_node(pt.under)
local above = minetest.get_node(pt.above)
-- return if any of the nodes is not registered
if not minetest.registered_nodes[under.name] then
return
end
if not minetest.registered_nodes[above.name] then
return
end
-- check if pointing at the top of the node
if pt.above.y ~= pt.under.y+1 then
return
end
-- check if you can replace the node above the pointed node
if not minetest.registered_nodes[above.name].buildable_to then
return
end
-- check if pointing at soil
if minetest.get_item_group(under.name, "soil") <= 1 then
return
end
-- add the node and remove 1 item from the itemstack
minetest.add_node(pt.above, {name=plantname})
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
end
return itemstack
end
--
-- Wheat
--
minetest.register_craftitem("farming:seed_wheat", {
description = "Wheat Seed",
inventory_image = "farming_wheat_seed.png",
on_place = function(itemstack, placer, pointed_thing)
return place_seed(itemstack, placer, pointed_thing, "farming:wheat_1")
end,
ground = "farming:flour",
})
minetest.register_craftitem("farming:wheat", {
description = "Wheat",
inventory_image = "farming_wheat.png",
})
minetest.register_craftitem("farming:flour", {
description = "Flour",
inventory_image = "farming_flour.png",
})
minetest.register_craftitem("farming:bread", {
description = "Bread",
inventory_image = "farming_bread.png",
on_use = minetest.item_eat(4),
})
minetest.register_craft({
type = "shapeless",
output = "farming:flour",
recipe = {"farming:wheat", "farming:wheat", "farming:wheat", "farming:wheat"}
})
minetest.register_craft({
type = "cooking",
cooktime = 15,
output = "farming:bread",
recipe = "farming:flour"
})
for i=1,8 do
local drop = {
items = {
{items = {'farming:wheat'},rarity=9-i},
{items = {'farming:wheat'},rarity=18-i*2},
{items = {'farming:seed_wheat'},rarity=9-i},
{items = {'farming:seed_wheat'},rarity=18-i*2},
}
}
minetest.register_node("farming:wheat_"..i, {
drawtype = "plantlike",
tiles = {"farming_wheat_"..i..".png"},
paramtype = "light",
waving = 1,
walkable = false,
buildable_to = true,
is_ground_content = true,
drop = drop,
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
groups = {snappy=3,flammable=2,plant=1,wheat=i,not_in_creative_inventory=1,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
})
end
minetest.register_abm({
nodenames = {"group:wheat"},
neighbors = {"group:soil"},
interval = 90,
chance = 2,
action = function(pos, node)
if abm_limiter() then return end
-- return if already full grown
if minetest.get_item_group(node.name, "wheat") == 8 then
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
if not minetest.get_node_light(pos) then
return
end
if minetest.get_node_light(pos) < 13 then
return
end
-- grow
local height = minetest.get_item_group(node.name, "wheat") + 1
minetest.set_node(pos, {name="farming:wheat_"..height})
end
})
--
-- Cotton
--
minetest.register_craftitem("farming:seed_cotton", {
description = "Cotton Seed",
inventory_image = "farming_cotton_seed.png",
on_place = function(itemstack, placer, pointed_thing)
return place_seed(itemstack, placer, pointed_thing, "farming:cotton_1")
end,
})
minetest.register_craftitem("farming:string", {
description = "String",
inventory_image = "farming_string.png",
})
minetest.register_craft({
output = "wool:white",
recipe = {
{"farming:string", "farming:string"},
{"farming:string", "farming:string"},
}
})
for i=1,8 do
local drop = {
items = {
{items = {'farming:string'},rarity=9-i},
{items = {'farming:string'},rarity=18-i*2},
{items = {'farming:string'},rarity=27-i*3},
{items = {'farming:seed_cotton'},rarity=9-i},
{items = {'farming:seed_cotton'},rarity=18-i*2},
{items = {'farming:seed_cotton'},rarity=27-i*3},
}
}
minetest.register_node("farming:cotton_"..i, {
drawtype = "plantlike",
tiles = {"farming_cotton_"..i..".png"},
paramtype = "light",
waving = 1,
walkable = false,
buildable_to = true,
is_ground_content = true,
drop = drop,
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
groups = {snappy=3,flammable=2,plant=1,cotton=i,not_in_creative_inventory=1,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
})
end
minetest.register_abm({
nodenames = {"group:cotton"},
neighbors = {"group:soil"},
interval = 80,
chance = 2,
action = function(pos, node)
if abm_limiter() then return end
-- return if already full grown
if minetest.get_item_group(node.name, "cotton") == 8 then
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
if not minetest.get_node_light(pos) then
return
end
if minetest.get_node_light(pos) < 13 then
return
end
-- grow
local height = minetest.get_item_group(node.name, "cotton") + 1
minetest.set_node(pos, {name="farming:cotton_"..height})
end
})

View File

@ -1,14 +1,11 @@
===FARMING_PLUS MOD for MINETEST===
by PilzAdam
Minetest 0.4 mod: farming
=========================
License:
Sourcecode: WTFPL (see below)
Graphics: WTFPL (see below)
License of source code:
-----------------------
Copyright (C) 2012-2013 PilzAdam
See also:
http://minetest.net/
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
@ -21,3 +18,40 @@ http://minetest.net/
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
License of media (textures):
----------------------------
Created by PilzAdam (License: WTFPL):
farming_bread.png
farming_soil.png
farming_soil_wet.png
farming_soil_wet_side.png
farming_string.png
Created by Calinou (License: CC BY-SA):
farming_tool_bronzehoe.png
farming_tool_steelhoe.png
farming_tool_stonehoe.png
farming_tool_woodhoe.png
Created by VanessaE (License: WTFPL):
farming_cotton_seed.png
farming_wheat_seed.png
farming_flour.png
farming_wheat.png
farming_wheat_1.png
farming_wheat_2.png
farming_wheat_3.png
farming_wheat_4.png
farming_wheat_5.png
farming_wheat_5.png
farming_wheat_7.png
farming_wheat_8.png
farming_cotton_1.png
farming_cotton_2.png
farming_cotton_3.png
farming_cotton_4.png
farming_cotton_5.png
farming_cotton_6.png
farming_cotton_7.png
farming_cotton_8.png

View File

@ -0,0 +1,19 @@
minetest.register_alias("farming:wheat","farming_plus:wheat")
minetest.register_alias("farming:string","farming_plus:string")
minetest.register_alias("farming:bread","farming_plus:bread")
minetest.register_alias("farming:flour","farming_plus:flour")
minetest.register_alias("farming:seed_wheat","farming_plus:seed_wheat")
minetest.register_alias("farming:seed_cotton","farming_plus:seed_cotton")
minetest.register_alias("farming:soil","farming_plus:soil")
minetest.register_alias("farming:soil_wet","farming_plus:soil_wet")
minetest.register_alias("farming:hoe_steel","farming_plus:hoe_steel")
minetest.register_alias("farming:hoe_stone","farming_plus:hoe_stone")
minetest.register_alias("farming:hoe_bronze","farming_plus:hoe_bronze")
for i=1,8 do
minetest.register_alias("farming:wheat_"..i,"farming_plus:wheat_"..i)
minetest.register_alias("farming:cotton_"..i,"farming_plus:cotton_"..i)
end

View File

@ -13,6 +13,8 @@ minetest.register_craftitem("farming_plus:carrot_seed", {
minetest.register_node("farming_plus:carrot_1", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
drop = "",
tiles = {"farming_carrot_1.png"},
@ -31,6 +33,8 @@ minetest.register_node("farming_plus:carrot_2", {
walkable = false,
drawtype = "plantlike",
drop = "",
buildable_to = true,
floodable = true,
tiles = {"farming_carrot_2.png"},
selection_box = {
type = "fixed",
@ -45,6 +49,8 @@ minetest.register_node("farming_plus:carrot_2", {
minetest.register_node("farming_plus:carrot_3", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
drop = "",
tiles = {"farming_carrot_3.png"},
@ -61,6 +67,8 @@ minetest.register_node("farming_plus:carrot_3", {
minetest.register_node("farming_plus:carrot", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
tiles = {"farming_carrot_4.png"},
drop = {
@ -84,4 +92,4 @@ minetest.register_craftitem("farming_plus:carrot_item", {
on_use = minetest.item_eat(3),
})
farming:add_plant("farming_plus:carrot", {"farming_plus:carrot_1", "farming_plus:carrot_2", "farming_plus:carrot_3"}, 50, 20)
farming:add_plant("farming_plus:carrot", {"farming_plus:carrot_1", "farming_plus:carrot_2", "farming_plus:carrot_3"}, 900, 1)

View File

@ -0,0 +1,57 @@
--
-- Cotton
--
minetest.register_craftitem("farming_plus:seed_cotton", {
description = "Cotton Seed",
inventory_image = "farming_cotton_seed.png",
on_place = function(itemstack, placer, pointed_thing)
return farming:place_seed(itemstack, placer, pointed_thing, "farming_plus:cotton_1")
end,
})
minetest.register_craftitem("farming_plus:string", {
description = "String",
inventory_image = "farming_string.png",
})
minetest.register_craft({
output = "wool:white",
recipe = {
{"farming_plus:string", "farming_plus:string"},
{"farming_plus:string", "farming_plus:string"},
}
})
local nodes = {}
for i=1,8 do
local drop = {
items = {
{items = {'farming_plus:string'},rarity=9-i},
{items = {'farming_plus:string'},rarity=18-i*2},
{items = {'farming_plus:string'},rarity=27-i*3},
{items = {'farming_plus:seed_cotton'},rarity=9-i},
{items = {'farming_plus:seed_cotton'},rarity=18-i*2},
{items = {'farming_plus:seed_cotton'},rarity=27-i*3},
}
}
minetest.register_node("farming_plus:cotton_"..i, {
drawtype = "plantlike",
tiles = {"farming_cotton_"..i..".png"},
paramtype = "light",
waving = 1,
walkable = false,
buildable_to = true,
floodable = true,
is_ground_content = true,
drop = drop,
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
groups = {snappy=3,flammable=2,plant=1,cotton=i,not_in_creative_inventory=1,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
})
table.insert(nodes,"farming_plus:cotton_"..i)
end
farming:add_plant("farming_plus:cotton_8",nodes,1100,1)

View File

@ -1,3 +1,2 @@
default
farming
intllib?
wool

View File

@ -0,0 +1,199 @@
function farming:place_seed(itemstack, placer, pointed_thing, plantname)
-- Call on_rightclick if the pointed node defines it
if pointed_thing.type == "node" and placer and
not placer:get_player_control().sneak then
local n = minetest.get_node(pointed_thing.under)
local nn = n.name
if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then
return minetest.registered_nodes[nn].on_rightclick(pointed_thing.under, n,
placer, itemstack, pointed_thing) or itemstack, false
end
end
local pt = pointed_thing
-- check if pointing at a node
if not pt then
return
end
if pt.type ~= "node" then
return
end
local under = minetest.get_node(pt.under)
local above = minetest.get_node(pt.above)
-- return if any of the nodes is not registered
if not minetest.registered_nodes[under.name] then
return
end
if not minetest.registered_nodes[above.name] then
return
end
-- check if pointing at the top of the node
if pt.above.y ~= pt.under.y+1 then
return
end
-- check if you can replace the node above the pointed node
if not minetest.registered_nodes[above.name].buildable_to then
return
end
-- check if pointing at soil
if minetest.get_item_group(under.name, "soil") <= 1 then
return
end
-- add the node and remove 1 item from the itemstack
minetest.add_node(pt.above, {name=plantname})
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
end
return itemstack
end
function farming:add_plant(full_grown, names, interval, chance)
minetest.register_abm({
nodenames = names,
neighbors = {"group:soil"},
interval = interval,
chance = chance,
action = function(pos, node)
if not minetest.get_node_light(pos,0.5) then
return
end
if minetest.get_node_light(pos,0.5) < 8 then
return
end
local step = nil
for i,name in pairs(names) do
if name == node.name then
step = i
break
end
end
if step == nil then
return
end
pos.y = pos.y-1
local n = minetest.get_node(pos)
if minetest.get_item_group(n.name, "soil") < 3 then
if step > 1 and randomChance(30) then
step = step - 2
else
return
end
end
pos.y = pos.y + 1
local new_node = {name=names[step+1]}
if new_node.name == nil then
new_node.name = full_grown
end
minetest.set_node(pos, new_node)
end
})
table.insert(farming.registered_plants, {
full_grown = full_grown,
names = names,
interval = interval,
chance = chance,
})
end
function farming:generate_tree(pos, trunk, leaves, underground, replacements)
pos.y = pos.y-1
local nodename = minetest.get_node(pos).name
local ret = true
for _,name in pairs(underground) do
if nodename == name then
ret = false
break
end
end
pos.y = pos.y+1
if not minetest.get_node_light(pos,0.5) then
return
end
if ret or minetest.get_node_light(pos,0.5) < 8 then
return
end
node = {name = ""}
for dy=1,4 do
pos.y = pos.y+dy
if minetest.get_node(pos).name ~= "air" then
return
end
pos.y = pos.y-dy
end
node.name = trunk
for dy=0,4 do
pos.y = pos.y+dy
minetest.set_node(pos, node)
pos.y = pos.y-dy
end
if not replacements then
replacements = {}
end
node.name = leaves
pos.y = pos.y+3
for dx=-2,2 do
for dz=-2,2 do
for dy=0,3 do
pos.x = pos.x+dx
pos.y = pos.y+dy
pos.z = pos.z+dz
if dx == 0 and dz == 0 and dy==3 then
if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then
minetest.set_node(pos, node)
for name,rarity in pairs(replacements) do
if math.random(1, rarity) == 1 then
minetest.set_node(pos, {name=name})
end
end
end
elseif dx == 0 and dz == 0 and dy==4 then
if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then
minetest.set_node(pos, node)
for name,rarity in pairs(replacements) do
if math.random(1, rarity) == 1 then
minetest.set_node(pos, {name=name})
end
end
end
elseif math.abs(dx) ~= 2 and math.abs(dz) ~= 2 then
if minetest.get_node(pos).name == "air" then
minetest.set_node(pos, node)
for name,rarity in pairs(replacements) do
if math.random(1, rarity) == 1 then
minetest.set_node(pos, {name=name})
end
end
end
else
if math.abs(dx) ~= 2 or math.abs(dz) ~= 2 then
if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then
minetest.set_node(pos, node)
for name,rarity in pairs(replacements) do
if math.random(1, rarity) == 1 then
minetest.set_node(pos, {name=name})
end
end
end
end
end
pos.x = pos.x-dx
pos.y = pos.y-dy
pos.z = pos.z-dz
end
end
end
end

View File

@ -0,0 +1,89 @@
minetest.register_node(":default:grass_1", {
description = "Grass",
drawtype = "plantlike",
tiles = {"default_grass_1.png"},
-- use a bigger inventory image
inventory_image = "default_grass_3.png",
wield_image = "default_grass_3.png",
paramtype = "light",
waving = 1,
walkable = false,
buildable_to = true,
floodable = true,
drop = {
max_items = 1,
items = {
{items = {'farming_plus:seed_wheat'},rarity = 5},
{items = {'default:grass_1'}},
}
},
groups = {snappy=3,flammable=3,flora=1,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("default:grass_"..math.random(1,5))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("default:grass_1 "..itemstack:get_count()-(1-ret:get_count()))
end,
})
for i=2,5 do
minetest.register_node(":default:grass_"..i, {
description = "Grass",
drawtype = "plantlike",
tiles = {"default_grass_"..i..".png"},
inventory_image = "default_grass_"..i..".png",
wield_image = "default_grass_"..i..".png",
paramtype = "light",
waving = 1,
walkable = false,
buildable_to = true,
floodable = true,
is_ground_content = true,
drop = {
max_items = 1,
items = {
{items = {'farming_plus:seed_wheat'},rarity = 5},
{items = {'default:grass_1'}},
}
},
groups = {snappy=3,flammable=3,flora=1,attached_node=1,not_in_creative_inventory=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})
end
minetest.register_node(":default:junglegrass", {
description = "Jungle Grass",
drawtype = "plantlike",
visual_scale = 1.3,
tiles = {"default_junglegrass.png"},
inventory_image = "default_junglegrass.png",
wield_image = "default_junglegrass.png",
paramtype = "light",
waving = 1,
walkable = false,
buildable_to = true,
floodable = true,
is_ground_content = true,
drop = {
max_items = 1,
items = {
{items = {'farming_plus:seed_cotton'},rarity = 8},
{items = {'default:junglegrass'}},
}
},
groups = {snappy=3,flammable=2,flora=1,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})

View File

@ -1,3 +1,8 @@
-- Minetest 0.4 mod: farming
-- See README.txt for licensing and other information.
farming = {}
farming.registered_plants = {}
-- Boilerplate to support localized strings if intllib mod is installed.
@ -8,146 +13,8 @@ else
farming.S = function ( s ) return s end
end
function farming:add_plant(full_grown, names, interval, chance)
minetest.register_abm({
nodenames = names,
interval = interval,
chance = chance,
action = function(pos, node)
if abm_limiter() then return end
pos.y = pos.y-1
if minetest.get_node(pos).name ~= "farming:soil_wet" then
return
end
pos.y = pos.y+1
if not minetest.get_node_light(pos) then
return
end
if minetest.get_node_light(pos) < 8 then
return
end
local step = nil
for i,name in pairs(names) do
if name == node.name then
step = i
break
end
end
if step == nil then
return
end
local new_node = {name=names[step+1]}
if new_node.name == nil then
new_node.name = full_grown
end
minetest.set_node(pos, new_node)
end
})
table.insert(farming.registered_plants, {
full_grown = full_grown,
names = names,
interval = interval,
chance = chance,
})
end
function farming:generate_tree(pos, trunk, leaves, underground, replacements)
pos.y = pos.y-1
local nodename = minetest.get_node(pos).name
local ret = true
for _,name in pairs(underground) do
if nodename == name then
ret = false
break
end
end
pos.y = pos.y+1
if not minetest.get_node_light(pos) then
return
end
if ret or minetest.get_node_light(pos) < 8 then
return
end
node = {name = ""}
for dy=1,4 do
pos.y = pos.y+dy
if minetest.get_node(pos).name ~= "air" then
return
end
pos.y = pos.y-dy
end
node.name = trunk
for dy=0,4 do
pos.y = pos.y+dy
minetest.set_node(pos, node)
pos.y = pos.y-dy
end
if not replacements then
replacements = {}
end
node.name = leaves
pos.y = pos.y+3
for dx=-2,2 do
for dz=-2,2 do
for dy=0,3 do
pos.x = pos.x+dx
pos.y = pos.y+dy
pos.z = pos.z+dz
if dx == 0 and dz == 0 and dy==3 then
if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then
minetest.set_node(pos, node)
for name,rarity in pairs(replacements) do
if math.random(1, rarity) == 1 then
minetest.set_node(pos, {name=name})
end
end
end
elseif dx == 0 and dz == 0 and dy==4 then
if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then
minetest.set_node(pos, node)
for name,rarity in pairs(replacements) do
if math.random(1, rarity) == 1 then
minetest.set_node(pos, {name=name})
end
end
end
elseif math.abs(dx) ~= 2 and math.abs(dz) ~= 2 then
if minetest.get_node(pos).name == "air" then
minetest.set_node(pos, node)
for name,rarity in pairs(replacements) do
if math.random(1, rarity) == 1 then
minetest.set_node(pos, {name=name})
end
end
end
else
if math.abs(dx) ~= 2 or math.abs(dz) ~= 2 then
if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then
minetest.set_node(pos, node)
for name,rarity in pairs(replacements) do
if math.random(1, rarity) == 1 then
minetest.set_node(pos, {name=name})
end
end
end
end
end
pos.x = pos.x-dx
pos.y = pos.y-dy
pos.z = pos.z-dz
end
end
end
end
farming.seeds = {
["farming:pumpkin_seed"]=60,
["farming_plus:pumpkin_seed"]=60,
["farming_plus:strawberry_seed"]=30,
["farming_plus:rhubarb_seed"]=30,
["farming_plus:potatoe_seed"]=30,
@ -156,144 +23,27 @@ farming.seeds = {
["farming_plus:carrot_seed"]=30,
}
dofile(minetest.get_modpath("farming_plus").."/functions.lua")
--
-- Soil
--
dofile(minetest.get_modpath("farming_plus").."/soil.lua")
-- ========= GENERATE PLANTS IN THE MAP =========
--[[minetest.register_on_generated(function(minp, maxp, seed)
if maxp.y >= 2 and minp.y <= 0 then
-- Generate plants (code from flowers)
local perlin1 = minetest.get_perlin(974, 3, 0.6, 100)
-- Assume X and Z lengths are equal
local divlen = 16
local divs = (maxp.x-minp.x)/divlen+1;
for divx=0,divs-1 do
for divz=0,divs-1 do
local x0 = minp.x + math.floor((divx+0)*divlen)
local z0 = minp.z + math.floor((divz+0)*divlen)
local x1 = minp.x + math.floor((divx+1)*divlen)
local z1 = minp.z + math.floor((divz+1)*divlen)
-- Determine flowers amount from perlin noise
local grass_amount = math.floor(perlin1:get2d({x=x0, y=z0}) ^ 3 * 9)
-- Find random positions for flowers based on this random
local pr = PseudoRandom(seed+456)
for i=0,grass_amount do
local x = pr:next(x0, x1)
local z = pr:next(z0, z1)
-- Find ground level (0...15)
local ground_y = nil
for y=30,0,-1 do
if minetest.get_node({x=x,y=y,z=z}).name ~= "air" then
ground_y = y
break
end
end
if ground_y then
local p = {x=x,y=ground_y+1,z=z}
local nn = minetest.get_node(p).name
-- Check if the node can be replaced
if minetest.registered_nodes[nn] and
minetest.registered_nodes[nn].buildable_to then
nn = minetest.get_node({x=x,y=ground_y,z=z}).name
if nn == "default:dirt_with_grass" then
--local plant_choice = pr:next(1, #farming.registered_plants)
local plant_choice = math.floor(perlin1:get2d({x=x,y=z})*(#farming.registered_plants))
local plant = farming.registered_plants[plant_choice]
if plant then
minetest.set_node(p, {name=plant.full_grown})
end
end
end
end
end
end
end
end
end)]]
--
-- Hoes
--
dofile(minetest.get_modpath("farming_plus").."/tools.lua")
function farming:place_seed(itemstack, placer, pointed_thing, plantname)
--
-- Override grass for drops
--
dofile(minetest.get_modpath("farming_plus").."/grass.lua")
-- Call on_rightclick if the pointed node defines it
if pointed_thing.type == "node" and placer and
not placer:get_player_control().sneak then
local n = minetest.get_node(pointed_thing.under)
local nn = n.name
if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then
return minetest.registered_nodes[nn].on_rightclick(pointed_thing.under, n,
placer, itemstack, pointed_thing) or itemstack, false
end
end
-- ========= WHEAT =========
dofile(minetest.get_modpath("farming_plus").."/wheat.lua")
local pt = pointed_thing
-- check if pointing at a node
if not pt then
return
end
if pt.type ~= "node" then
return
end
local under = minetest.get_node(pt.under)
local above = minetest.get_node(pt.above)
-- return if any of the nodes is not registered
if not minetest.registered_nodes[under.name] then
return
end
if not minetest.registered_nodes[above.name] then
return
end
-- check if pointing at the top of the node
if pt.above.y ~= pt.under.y+1 then
return
end
-- check if you can replace the node above the pointed node
if not minetest.registered_nodes[above.name].buildable_to then
return
end
-- check if pointing at soil
if minetest.get_item_group(under.name, "soil") <= 1 then
return
end
-- add the node and remove 1 item from the itemstack
minetest.add_node(pt.above, {name=plantname})
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
end
return itemstack
end
-- ========= ALIASES FOR FARMING MOD BY SAPIER =========
-- potatoe -> potatoe
minetest.register_alias("farming:potatoe_node", "farming_plus:potatoe")
--minetest.register_alias("farming:potatoe", "farming:potatoe_item") cant do this
minetest.register_alias("farming:potatoe_straw", "farming_plus:potatoe")
minetest.register_alias("farming:seed_potatoe", "farming_plus:potatoe_seed")
for lvl = 1, 6, 1 do
minetest.register_entity(":farming:potatoe_lvl"..lvl, {
on_activate = function(self, staticdata)
minetest.set_node(self.object:getpos(), {name="farming_plus:potatoe_1"})
end
})
end
minetest.register_alias("farming:cotton", "farming:cotton_3")
minetest.register_alias("farming:wheat_harvested", "farming:wheat")
minetest.register_alias("farming:dough", "farming:flour")
minetest.register_abm({
nodenames = {"farming:wheat"},
interval = 1,
chance = 1,
action = function(pos)
if abm_limiter() then return end
minetest.set_node(pos, {name="farming:wheat_8"})
end,
})
-- ========= COTTON =========
dofile(minetest.get_modpath("farming_plus").."/cotton.lua")
-- ========= STRAWBERRIES =========
dofile(minetest.get_modpath("farming_plus").."/strawberries.lua")
@ -324,3 +74,8 @@ dofile(minetest.get_modpath("farming_plus").."/pumpkin.lua")
-- ========= WEED =========
dofile(minetest.get_modpath("farming_plus").."/weed.lua")
dofile(minetest.get_modpath("farming_plus").."/aliases.lua")

View File

@ -13,6 +13,8 @@ minetest.register_craftitem("farming_plus:potato_seed", {
minetest.register_node("farming_plus:potato_1", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
drop = "",
tiles = {"farming_potato_1.png"},
@ -29,6 +31,8 @@ minetest.register_node("farming_plus:potato_1", {
minetest.register_node("farming_plus:potato_2", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
drop = "",
tiles = {"farming_potato_2.png"},
@ -45,6 +49,8 @@ minetest.register_node("farming_plus:potato_2", {
minetest.register_node("farming_plus:potato", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
tiles = {"farming_potato_3.png"},
drop = {
@ -67,7 +73,7 @@ minetest.register_craftitem("farming_plus:potato_item", {
inventory_image = "farming_potato.png",
})
farming:add_plant("farming_plus:potato", {"farming_plus:potato_1", "farming_plus:potato_2"}, 50, 20)
farming:add_plant("farming_plus:potato", {"farming_plus:potato_1", "farming_plus:potato_2"}, 475, 1)
minetest.register_alias("farming_plus:potatoe_item", "farming_plus:potato_item")
minetest.register_alias("farming_plus:potatoe_seed", "farming_plus:potato_seed")

View File

@ -2,18 +2,19 @@
local S
S = farming.S
minetest.register_craftitem(":farming:pumpkin_seed", {
minetest.register_craftitem(":farming_plus:pumpkin_seed", {
description = S("Pumpkin Seed"),
inventory_image = "farming_pumpkin_seed.png",
on_place = function(itemstack, placer, pointed_thing)
return farming:place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1")
return farming:place_seed(itemstack, placer, pointed_thing, "farming_plus:pumpkin_1")
end
})
minetest.register_node(":farming:pumpkin_1", {
minetest.register_node(":farming_plus:pumpkin_1", {
paramtype = "light",
sunlight_propagates = true,
drawtype = "nodebox",
floodable = true,
drop = "",
tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png"},
node_box = {
@ -32,9 +33,10 @@ minetest.register_node(":farming:pumpkin_1", {
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node(":farming:pumpkin_2", {
minetest.register_node(":farming_plus:pumpkin_2", {
paramtype = "light",
sunlight_propagates = true,
floodable = true,
drawtype = "nodebox",
drop = "",
tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png"},
@ -54,9 +56,10 @@ minetest.register_node(":farming:pumpkin_2", {
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node(":farming:pumpkin", {
minetest.register_node(":farming_plus:pumpkin", {
description = S("Pumpkin"),
paramtype2 = "facedir",
floodable = true,
tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png"},
groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, plant=1},
sounds = default.node_sound_wood_defaults(),
@ -64,19 +67,19 @@ minetest.register_node(":farming:pumpkin", {
on_punch = function(pos, node, puncher)
local tool = puncher:get_wielded_item():get_name()
if tool and string.match(tool, "sword") then
node.name = "farming:pumpkin_face"
node.name = "farming_plus:pumpkin_face"
minetest.set_node(pos, node)
puncher:get_inventory():add_item("main", ItemStack("farming:pumpkin_seed"))
puncher:get_inventory():add_item("main", ItemStack("farming_plus:pumpkin_seed"))
if math.random(1, 5) == 1 then
puncher:get_inventory():add_item("main", ItemStack("farming:pumpkin_seed"))
puncher:get_inventory():add_item("main", ItemStack("farming_plus:pumpkin_seed"))
end
end
end
})
farming:add_plant("farming:pumpkin", {"farming:pumpkin_1", "farming:pumpkin_2"}, 80, 20)
farming:add_plant("farming_plus:pumpkin", {"farming_plus:pumpkin_1", "farming_plus:pumpkin_2"}, 375, 1)
minetest.register_node(":farming:pumpkin_face", {
minetest.register_node(":farming_plus:pumpkin_face", {
description = S("Pumpkin Face"),
paramtype2 = "facedir",
tiles = {"farming_pumpkin_top.png", "farming_pumpkin_top.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_side.png", "farming_pumpkin_face.png"},
@ -84,7 +87,7 @@ minetest.register_node(":farming:pumpkin_face", {
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node(":farming:pumpkin_face_light", {
minetest.register_node(":farming_plus:pumpkin_face_light", {
description = S("Pumpkin Face With Light"),
paramtype2 = "facedir",
light_source = LIGHT_MAX-2,
@ -95,12 +98,12 @@ minetest.register_node(":farming:pumpkin_face_light", {
minetest.register_craft({
type = "shapeless",
output = "farming:pumpkin_face_light",
recipe = {"farming:pumpkin_face", "default:torch"}
output = "farming_plus:pumpkin_face_light",
recipe = {"farming_plus:pumpkin_face", "default:torch"}
})
-- ========= BIG PUMPKIN =========
minetest.register_node(":farming:big_pumpkin", {
minetest.register_node(":farming_plus:big_pumpkin", {
description = S("Big Pumpkin"),
paramtype2 = "facedir",
tiles = {"farming_pumpkin_big_side.png"},
@ -129,7 +132,7 @@ minetest.register_node(":farming:big_pumpkin", {
minetest.after(0.1, function(placer)
local inv = placer:get_inventory()
local index = placer:get_wield_index()
inv:set_stack("main", index, ItemStack("farming:big_pumpkin"))
inv:set_stack("main", index, ItemStack("farming_plus:big_pumpkin"))
end, placer)
return
end
@ -143,29 +146,29 @@ minetest.register_node(":farming:big_pumpkin", {
for dy=0,1 do
pos.y = pos.y+dy
pos.z = pos.z+1
minetest.set_node(pos, {name="farming:big_pumpkin_side", param2=2})
minetest.set_node(pos, {name="farming_plus:big_pumpkin_side", param2=2})
pos.x = pos.x-1
minetest.set_node(pos, {name="farming:big_pumpkin_corner", param2=2})
minetest.set_node(pos, {name="farming_plus:big_pumpkin_corner", param2=2})
pos.x = pos.x+1
pos.z = pos.z-2
minetest.set_node(pos, {name="farming:big_pumpkin_side", param2=4})
minetest.set_node(pos, {name="farming_plus:big_pumpkin_side", param2=4})
pos.x = pos.x+1
minetest.set_node(pos, {name="farming:big_pumpkin_corner", param2=4})
minetest.set_node(pos, {name="farming_plus:big_pumpkin_corner", param2=4})
pos.z = pos.z+1
minetest.set_node(pos, {name="farming:big_pumpkin_side", param2=3})
minetest.set_node(pos, {name="farming_plus:big_pumpkin_side", param2=3})
pos.z = pos.z+1
minetest.set_node(pos, {name="farming:big_pumpkin_corner", param2=3})
minetest.set_node(pos, {name="farming_plus:big_pumpkin_corner", param2=3})
pos.z = pos.z-1
pos.x = pos.x-2
minetest.set_node(pos, {name="farming:big_pumpkin_side", param2=1})
minetest.set_node(pos, {name="farming_plus:big_pumpkin_side", param2=1})
pos.z = pos.z-1
minetest.set_node(pos, {name="farming:big_pumpkin_corner", param2=1})
minetest.set_node(pos, {name="farming_plus:big_pumpkin_corner", param2=1})
pos.z = pos.z+1
pos.x = pos.x+1
pos.y = pos.y-dy
end
pos.y = pos.y+1
minetest.set_node(pos, {name="farming:big_pumpkin_top"})
minetest.set_node(pos, {name="farming_plus:big_pumpkin_top"})
end,
after_destruct = function(pos, oldnode)
@ -176,7 +179,7 @@ minetest.register_node(":farming:big_pumpkin", {
pos.y = pos.y+dy
pos.z = pos.z+dz
local name = minetest.get_node(pos).name
if string.find(name, "farming:big_pumpkin") then
if string.find(name, "farming_plus:big_pumpkin") then
minetest.remove_node(pos)
end
pos.x = pos.x-dx
@ -188,7 +191,7 @@ minetest.register_node(":farming:big_pumpkin", {
end
})
minetest.register_node(":farming:big_pumpkin_side", {
minetest.register_node(":farming_plus:big_pumpkin_side", {
paramtype = "light",
sunlight_propagates = true,
paramtype2 = "facedir",
@ -208,7 +211,7 @@ minetest.register_node(":farming:big_pumpkin_side", {
},
groups = {not_in_creative_inventory=1},
})
minetest.register_node(":farming:big_pumpkin_corner", {
minetest.register_node(":farming_plus:big_pumpkin_corner", {
paramtype = "light",
sunlight_propagates = true,
paramtype2 = "facedir",
@ -229,7 +232,7 @@ minetest.register_node(":farming:big_pumpkin_corner", {
groups = {not_in_creative_inventory=1},
})
minetest.register_node(":farming:big_pumpkin_top", {
minetest.register_node(":farming_plus:big_pumpkin_top", {
paramtype = "light",
sunlight_propagates = true,
tiles = {"farming_pumpkin_big_top.png"},
@ -244,8 +247,8 @@ minetest.register_node(":farming:big_pumpkin_top", {
minetest.register_craft({
type = "shapeless",
output = "farming:big_pumpkin",
recipe = {"bucket:bucket_water", "farming:pumpkin"},
output = "farming_plus:big_pumpkin",
recipe = {"bucket:bucket_water", "farming_plus:pumpkin"},
replacements = {
{"bucket:bucket_water", "bucket:bucket_empty"}
}
@ -276,7 +279,7 @@ for j,list in pairs(box2) do
box2[j] = list
end
minetest.register_node(":farming:scarecrow", {
minetest.register_node(":farming_plus:scarecrow", {
description = S("Scarecrow"),
paramtype = "light",
sunlight_propagates = true,
@ -305,25 +308,25 @@ minetest.register_node(":farming:scarecrow", {
minetest.after(0.1, function(placer)
local inv = placer:get_inventory()
local index = placer:get_wield_index()
inv:set_stack("main", index, ItemStack("farming:scarecrow"))
inv:set_stack("main", index, ItemStack("farming_plus:scarecrow"))
end, placer)
return
end
minetest.set_node(pos, node)
pos.y = pos.y-1
node.name = "farming:scarecrow_bottom"
node.name = "farming_plus:scarecrow_bottom"
minetest.set_node(pos, node)
end,
after_destruct = function(pos, oldnode)
pos.y = pos.y-1
if minetest.get_node(pos).name == "farming:scarecrow_bottom" then
if minetest.get_node(pos).name == "farming_plus:scarecrow_bottom" then
minetest.remove_node(pos)
end
end
})
minetest.register_node(":farming:scarecrow_bottom", {
minetest.register_node(":farming_plus:scarecrow_bottom", {
paramtype = "light",
sunlight_propagates = true,
paramtype2 = "facedir",
@ -343,15 +346,15 @@ minetest.register_node(":farming:scarecrow_bottom", {
})
minetest.register_craft({
output = "farming:scarecrow",
output = "farming_plus:scarecrow",
recipe = {
{"", "farming:pumpkin_face", "",},
{"", "farming_plus:pumpkin_face", "",},
{"default:stick", "default:stick", "default:stick",},
{"", "default:stick", "",}
}
})
minetest.register_node(":farming:scarecrow_light", {
minetest.register_node(":farming_plus:scarecrow_light", {
description = S("Scarecrow With light"),
paramtype = "light",
sunlight_propagates = true,
@ -381,57 +384,57 @@ minetest.register_node(":farming:scarecrow_light", {
minetest.after(0.1, function(placer)
local inv = placer:get_inventory()
local index = placer:get_wield_index()
inv:set_stack("main", index, ItemStack("farming:scarecrow_light"))
inv:set_stack("main", index, ItemStack("farming_plus:scarecrow_light"))
end, placer)
return
end
minetest.set_node(pos, node)
pos.y = pos.y-1
node.name = "farming:scarecrow_bottom"
node.name = "farming_plus:scarecrow_bottom"
minetest.set_node(pos, node)
end,
after_destruct = function(pos, oldnode)
pos.y = pos.y-1
if minetest.get_node(pos).name == "farming:scarecrow_bottom" then
if minetest.get_node(pos).name == "farming_plus:scarecrow_bottom" then
minetest.remove_node(pos)
end
end
})
minetest.register_craft({
output = "farming:scarecrow_light",
output = "farming_plus:scarecrow_light",
recipe = {
{"", "farming:pumpkin_face_light", "",},
{"", "farming_plus:pumpkin_face_light", "",},
{"default:stick", "default:stick", "default:stick",},
{"", "default:stick", "",}
}
})
--===============
minetest.register_craftitem(":farming:pumpkin_bread", {
minetest.register_craftitem(":farming_plus:pumpkin_bread", {
description = S("Pumpkin Bread"),
inventory_image = "farming_bread_pumpkin.png",
stack_max = 99,
on_use = minetest.item_eat(8)
})
minetest.register_craftitem(":farming:pumpkin_flour", {
minetest.register_craftitem(":farming_plus:pumpkin_flour", {
description = "Pumpkin Flour",
inventory_image = "farming_cake_mix_pumpkin.png",
})
minetest.register_alias("farming:pumpkin_cake_mix", "farming:pumpkin_flour")
minetest.register_alias("farming_plus:pumpkin_cake_mix", "farming_plus:pumpkin_flour")
minetest.register_craft({
output = "farming:pumpkin_flour",
output = "farming_plus:pumpkin_flour",
type = "shapeless",
recipe = {"farming:flour", "farming:pumpkin"}
recipe = {"farming_plus:flour", "farming_plus:pumpkin"}
})
minetest.register_craft({
type = "cooking",
output = "farming:pumpkin_bread",
recipe = "farming:pumpkin_flour",
output = "farming_plus:pumpkin_bread",
recipe = "farming_plus:pumpkin_flour",
cooktime = 10
})
@ -439,42 +442,42 @@ minetest.register_craft({
-- ========= FUEL =========
minetest.register_craft({
type = "fuel",
recipe = "farming:pumpkin_seed",
recipe = "farming_plus:pumpkin_seed",
burntime = 1
})
minetest.register_craft({
type = "fuel",
recipe = "farming:pumpkin",
recipe = "farming_plus:pumpkin",
burntime = 5
})
minetest.register_craft({
type = "fuel",
recipe = "farming:pumpkin_face",
recipe = "farming_plus:pumpkin_face",
burntime = 5
})
minetest.register_craft({
type = "fuel",
recipe = "farming:pumpkin_face_light",
recipe = "farming_plus:pumpkin_face_light",
burntime = 7
})
minetest.register_craft({
type = "fuel",
recipe = "farming:big_pumpkin",
recipe = "farming_plus:big_pumpkin",
burntime = 10
})
minetest.register_craft({
type = "fuel",
recipe = "farming:scarecrow",
recipe = "farming_plus:scarecrow",
burntime = 5
})
minetest.register_craft({
type = "fuel",
recipe = "farming:scarecrow_light",
recipe = "farming_plus:scarecrow_light",
burntime = 5
})

View File

@ -13,6 +13,8 @@ minetest.register_craftitem("farming_plus:rhubarb_seed", {
minetest.register_node("farming_plus:rhubarb_1", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
drop = "",
tiles = {"farming_rhubarb_1.png"},
@ -29,6 +31,8 @@ minetest.register_node("farming_plus:rhubarb_1", {
minetest.register_node("farming_plus:rhubarb_2", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
drop = "",
tiles = {"farming_rhubarb_2.png"},
@ -45,6 +49,8 @@ minetest.register_node("farming_plus:rhubarb_2", {
minetest.register_node("farming_plus:rhubarb", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
tiles = {"farming_rhubarb_3.png"},
drop = {
@ -67,4 +73,4 @@ minetest.register_craftitem("farming_plus:rhubarb_item", {
inventory_image = "farming_rhubarb.png",
})
farming:add_plant("farming_plus:rhubarb", {"farming_plus:rhubarb_1", "farming_plus:rhubarb_2"}, 50, 20)
farming:add_plant("farming_plus:rhubarb", {"farming_plus:rhubarb_1", "farming_plus:rhubarb_2"}, 300, 1)

View File

@ -0,0 +1,49 @@
minetest.register_node("farming_plus:soil", {
description = "Soil",
tiles = {"farming_soil.png", "default_dirt.png"},
drop = "default:dirt",
is_ground_content = true,
groups = {crumbly=3, not_in_creative_inventory=1, soil=2},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("farming_plus:soil_wet", {
description = "Wet Soil",
tiles = {"farming_soil_wet.png", "farming_soil_wet_side.png"},
drop = "default:dirt",
is_ground_content = true,
groups = {crumbly=3, not_in_creative_inventory=1, soil=3},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_abm({
nodenames = {"farming_plus:soil", "farming_plus:soil_wet"},
interval = 15,
chance = 4,
action = function(pos, node)
if abm_limiter() then return end
pos.y = pos.y+1
local nn = minetest.get_node(pos).name
pos.y = pos.y-1
-- check if there is water nearby
if minetest.find_node_near(pos, 3, {"group:water"}) then
-- if it is dry soil turn it into wet soil
if node.name == "farming_plus:soil" then
minetest.set_node(pos, {name="farming_plus:soil_wet"})
end
else
-- turn it back into dirt if it is already dry
if node.name == "farming_plus:soil" then
-- only turn it back if there is no plant on top of it
if minetest.get_item_group(nn, "plant") == 0 then
minetest.set_node(pos, {name="default:dirt"})
end
-- if its wet turn it back into dry soil
elseif node.name == "farming_plus:soil_wet" then
minetest.set_node(pos, {name="farming_plus:soil"})
end
end
end,
})

View File

@ -13,6 +13,8 @@ minetest.register_craftitem("farming_plus:strawberry_seed", {
minetest.register_node("farming_plus:strawberry_1", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
drop = "",
tiles = {"farming_strawberry_1.png"},
@ -29,6 +31,8 @@ minetest.register_node("farming_plus:strawberry_1", {
minetest.register_node("farming_plus:strawberry_2", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
drop = "",
tiles = {"farming_strawberry_2.png"},
@ -45,6 +49,8 @@ minetest.register_node("farming_plus:strawberry_2", {
minetest.register_node("farming_plus:strawberry_3", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
drop = "",
tiles = {"farming_strawberry_3.png"},
@ -61,6 +67,8 @@ minetest.register_node("farming_plus:strawberry_3", {
minetest.register_node("farming_plus:strawberry", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
tiles = {"farming_strawberry_4.png"},
drop = {
@ -84,4 +92,4 @@ minetest.register_craftitem("farming_plus:strawberry_item", {
on_use = minetest.item_eat(2),
})
farming:add_plant("farming_plus:strawberry", {"farming_plus:strawberry_1", "farming_plus:strawberry_2", "farming_plus:strawberry_3"}, 50, 20)
farming:add_plant("farming_plus:strawberry", {"farming_plus:strawberry_1", "farming_plus:strawberry_2", "farming_plus:strawberry_3"}, 200, 1)

View File

Before

Width:  |  Height:  |  Size: 552 B

After

Width:  |  Height:  |  Size: 552 B

View File

Before

Width:  |  Height:  |  Size: 136 B

After

Width:  |  Height:  |  Size: 136 B

View File

Before

Width:  |  Height:  |  Size: 161 B

After

Width:  |  Height:  |  Size: 161 B

View File

Before

Width:  |  Height:  |  Size: 189 B

After

Width:  |  Height:  |  Size: 189 B

View File

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 220 B

View File

Before

Width:  |  Height:  |  Size: 263 B

After

Width:  |  Height:  |  Size: 263 B

View File

Before

Width:  |  Height:  |  Size: 342 B

After

Width:  |  Height:  |  Size: 342 B

View File

Before

Width:  |  Height:  |  Size: 359 B

After

Width:  |  Height:  |  Size: 359 B

View File

Before

Width:  |  Height:  |  Size: 339 B

After

Width:  |  Height:  |  Size: 339 B

View File

Before

Width:  |  Height:  |  Size: 348 B

After

Width:  |  Height:  |  Size: 348 B

View File

Before

Width:  |  Height:  |  Size: 378 B

After

Width:  |  Height:  |  Size: 378 B

View File

Before

Width:  |  Height:  |  Size: 812 B

After

Width:  |  Height:  |  Size: 812 B

View File

Before

Width:  |  Height:  |  Size: 759 B

After

Width:  |  Height:  |  Size: 759 B

View File

Before

Width:  |  Height:  |  Size: 818 B

After

Width:  |  Height:  |  Size: 818 B

View File

Before

Width:  |  Height:  |  Size: 341 B

After

Width:  |  Height:  |  Size: 341 B

View File

Before

Width:  |  Height:  |  Size: 242 B

After

Width:  |  Height:  |  Size: 242 B

View File

Before

Width:  |  Height:  |  Size: 248 B

After

Width:  |  Height:  |  Size: 248 B

View File

Before

Width:  |  Height:  |  Size: 257 B

After

Width:  |  Height:  |  Size: 257 B

View File

Before

Width:  |  Height:  |  Size: 217 B

After

Width:  |  Height:  |  Size: 217 B

View File

Before

Width:  |  Height:  |  Size: 566 B

After

Width:  |  Height:  |  Size: 566 B

View File

Before

Width:  |  Height:  |  Size: 146 B

After

Width:  |  Height:  |  Size: 146 B

View File

Before

Width:  |  Height:  |  Size: 185 B

After

Width:  |  Height:  |  Size: 185 B

View File

Before

Width:  |  Height:  |  Size: 228 B

After

Width:  |  Height:  |  Size: 228 B

View File

Before

Width:  |  Height:  |  Size: 270 B

After

Width:  |  Height:  |  Size: 270 B

View File

Before

Width:  |  Height:  |  Size: 354 B

After

Width:  |  Height:  |  Size: 354 B

View File

Before

Width:  |  Height:  |  Size: 456 B

After

Width:  |  Height:  |  Size: 456 B

View File

Before

Width:  |  Height:  |  Size: 523 B

After

Width:  |  Height:  |  Size: 523 B

View File

Before

Width:  |  Height:  |  Size: 635 B

After

Width:  |  Height:  |  Size: 635 B

View File

Before

Width:  |  Height:  |  Size: 372 B

After

Width:  |  Height:  |  Size: 372 B

View File

@ -13,6 +13,8 @@ minetest.register_craftitem("farming_plus:tomato_seed", {
minetest.register_node("farming_plus:tomato_1", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
drop = "",
tiles = {"farming_tomato_1.png"},
@ -29,6 +31,8 @@ minetest.register_node("farming_plus:tomato_1", {
minetest.register_node("farming_plus:tomato_2", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
drop = "",
tiles = {"farming_tomato_2.png"},
@ -45,6 +49,8 @@ minetest.register_node("farming_plus:tomato_2", {
minetest.register_node("farming_plus:tomato_3", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
drop = "",
tiles = {"farming_tomato_3.png"},
@ -61,6 +67,8 @@ minetest.register_node("farming_plus:tomato_3", {
minetest.register_node("farming_plus:tomato", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
tiles = {"farming_tomato_4.png"},
drop = {
@ -84,4 +92,4 @@ minetest.register_craftitem("farming_plus:tomato_item", {
on_use = minetest.item_eat(4),
})
farming:add_plant("farming_plus:tomato", {"farming_plus:tomato_1", "farming_plus:tomato_2", "farming_plus:tomato_3"}, 50, 20)
farming:add_plant("farming_plus:tomato", {"farming_plus:tomato_1", "farming_plus:tomato_2", "farming_plus:tomato_3"}, 175, 1)

113
mods/farming_plus/tools.lua Normal file
View File

@ -0,0 +1,113 @@
function farming.hoe_on_use(itemstack, user, pointed_thing, uses)
local pt = pointed_thing
-- check if pointing at a node
if not pt then
return
end
if pt.type ~= "node" then
return
end
local under = minetest.get_node(pt.under)
local p = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
local above = minetest.get_node(p)
-- return if any of the nodes is not registered
if not minetest.registered_nodes[under.name] then
return
end
if not minetest.registered_nodes[above.name] then
return
end
-- check if the node above the pointed thing is air
if above.name ~= "air" then
return
end
-- check if pointing at dirt
if minetest.get_item_group(under.name, "soil") ~= 1 then
return
end
-- turn the node into soil, wear out item and play sound
minetest.set_node(pt.under, {name="farming_plus:soil"})
minetest.sound_play("default_dig_crumbly", {
pos = pt.under,
gain = 0.5,
})
itemstack:add_wear(65535/(uses-1))
return itemstack
end
minetest.register_tool("farming_plus:hoe_wood", {
description = "Wooden Hoe",
inventory_image = "farming_tool_woodhoe.png",
on_use = function(itemstack, user, pointed_thing)
return farming.hoe_on_use(itemstack, user, pointed_thing, 30)
end,
})
minetest.register_tool("farming_plus:hoe_stone", {
description = "Stone Hoe",
inventory_image = "farming_tool_stonehoe.png",
on_use = function(itemstack, user, pointed_thing)
return farming.hoe_on_use(itemstack, user, pointed_thing, 90)
end,
})
minetest.register_tool("farming_plus:hoe_steel", {
description = "Steel Hoe",
inventory_image = "farming_tool_steelhoe.png",
on_use = function(itemstack, user, pointed_thing)
return farming.hoe_on_use(itemstack, user, pointed_thing, 200)
end,
})
minetest.register_tool("farming_plus:hoe_bronze", {
description = "Bronze Hoe",
inventory_image = "farming_tool_bronzehoe.png",
on_use = function(itemstack, user, pointed_thing)
return farming.hoe_on_use(itemstack, user, pointed_thing, 220)
end,
})
minetest.register_craft({
output = "farming_plus:hoe_wood",
recipe = {
{"group:wood", "group:wood"},
{"", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "farming_plus:hoe_stone",
recipe = {
{"group:stone", "group:stone"},
{"", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "farming_plus:hoe_steel",
recipe = {
{"default:steel_ingot", "default:steel_ingot"},
{"", "group:stick"},
{"", "group:stick"},
}
})
minetest.register_craft({
output = "farming_plus:hoe_bronze",
recipe = {
{"default:bronze_ingot", "default:bronze_ingot"},
{"", "group:stick"},
{"", "group:stick"},
}
})

View File

@ -2,11 +2,13 @@
local S
S = farming.S
minetest.register_node(":farming:weed", {
minetest.register_node(":farming_plus:weed", {
description = S("Weed"),
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
floodable = true,
drawtype = "plantlike",
tiles = {"farming_weed.png"},
inventory_image = "farming_weed.png",
@ -21,25 +23,47 @@ minetest.register_node(":farming:weed", {
})
minetest.register_abm({
nodenames = {"farming:soil_wet", "farming:soil"},
interval = 50,
chance = 10,
nodenames = {"farming_plus:soil_wet", "farming_plus:soil"},
interval = 150,
chance = 4,
action = function(pos, node)
if abm_limiter() then return end
if minetest.find_node_near(pos, 4, {"farming:scarecrow", "farming:scarecrow_light"}) ~= nil then
if minetest.find_node_near(pos, 4, {"farming_plus:scarecrow", "farming_plus:scarecrow_light"}) ~= nil then
return
end
pos.y = pos.y+1
if not minetest.get_node_light(pos,0.5) then
return
end
if minetest.get_node_light(pos,0.5) < 8 then
return
end
if minetest.get_node(pos).name == "air" then
node.name = "farming:weed"
node.name = "farming_plus:weed"
minetest.set_node(pos, node)
end
end
})
-- if something is overrun with weeds too long turn it back to regular dirt
minetest.register_abm({
nodenames = {"farming_plus:weed"},
interval = 700,
chance = 3,
action = function (pos, node)
-- default:grass_# # = 1-5
math.randomseed(os.time())
local grass = math.random(1,5)
local node = "default:grass_" .. grass
minetest.set_node(pos,{name=node})
pos.y = pos.y - 1
minetest.set_node(pos,{name="default:dirt_with_grass"})
end
})
-- ========= FUEL =========
minetest.register_craft({
type = "fuel",
recipe = "farming:weed",
recipe = "farming_plus:weed",
burntime = 1
})

View File

@ -0,0 +1,71 @@
--
-- Wheat
--
minetest.register_craftitem("farming_plus:seed_wheat", {
description = "Wheat Seed",
inventory_image = "farming_wheat_seed.png",
on_place = function(itemstack, placer, pointed_thing)
return farming:place_seed(itemstack, placer, pointed_thing, "farming_plus:wheat_1")
end,
ground = "farming_plus:flour",
})
minetest.register_craftitem("farming_plus:wheat", {
description = "Wheat",
inventory_image = "farming_wheat.png",
})
minetest.register_craftitem("farming_plus:flour", {
description = "Flour",
inventory_image = "farming_flour.png",
})
minetest.register_craftitem("farming_plus:bread", {
description = "Bread",
inventory_image = "farming_bread.png",
on_use = minetest.item_eat(4),
})
minetest.register_craft({
type = "shapeless",
output = "farming_plus:flour",
recipe = {"farming_plus:wheat", "farming_plus:wheat", "farming_plus:wheat", "farming_plus:wheat"}
})
minetest.register_craft({
type = "cooking",
cooktime = 15,
output = "farming_plus:bread",
recipe = "farming_plus:flour"
})
local nodes = {}
for i=1,8 do
local drop = {
items = {
{items = {'farming_plus:wheat'},rarity=9-i},
{items = {'farming_plus:wheat'},rarity=18-i*2},
{items = {'farming_plus:seed_wheat'},rarity=9-i},
{items = {'farming_plus:seed_wheat'},rarity=18-i*2},
}
}
minetest.register_node("farming_plus:wheat_"..i, {
drawtype = "plantlike",
tiles = {"farming_wheat_"..i..".png"},
paramtype = "light",
waving = 1,
walkable = false,
buildable_to = true,
is_ground_content = true,
drop = drop,
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
groups = {snappy=3,flammable=2,plant=1,wheat=i,not_in_creative_inventory=1,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
})
table.insert(nodes,"farming_plus:wheat_"..i)
end
farming:add_plant("farming_plus:wheat_8",nodes,1600,1)

View File

@ -22,6 +22,7 @@ minetest.register_node("flowers:dandelion_white", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
groups = {snappy=3,flammable=2,flower=1,flora=1,attached_node=1,color_white=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
@ -41,6 +42,7 @@ minetest.register_node("flowers:magic", {
light_source = 12,
walkable = false,
buildable_to = true,
floodable = true,
groups = {snappy=3,flammable=2,flower=1,flora=1,attached_node=1,color_white=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
@ -59,6 +61,7 @@ minetest.register_node("flowers:dandelion_yellow", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
groups = {snappy=3,flammable=2,flower=1,flora=1,attached_node=1,color_yellow=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
@ -77,6 +80,7 @@ minetest.register_node("flowers:geranium", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
groups = {snappy=3,flammable=2,flower=1,flora=1,attached_node=1,color_blue=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
@ -95,6 +99,7 @@ minetest.register_node("flowers:rose", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
groups = {snappy=3,flammable=2,flower=1,flora=1,attached_node=1,color_red=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
@ -113,6 +118,7 @@ minetest.register_node("flowers:tulip", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
groups = {snappy=3,flammable=2,flower=1,flora=1,attached_node=1,color_orange=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
@ -131,6 +137,7 @@ minetest.register_node("flowers:viola", {
paramtype = "light",
walkable = false,
buildable_to = true,
floodable = true,
groups = {snappy=3,flammable=2,flower=1,flora=1,attached_node=1,color_violet=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
@ -163,7 +170,7 @@ minetest.register_abm({
minetest.register_abm({
nodenames = {"group:flora"},
neighbors = {"default:dirt_with_grass", "default:desert_sand"},
neighbors = {"default:dirt_with_grass", "default:desert_sand","mg:dirt_with_dry_grass"},
interval = 50,
chance = 25,
action = function(pos, node)
@ -171,7 +178,7 @@ minetest.register_abm({
pos.y = pos.y - 1
local under = minetest.get_node(pos)
pos.y = pos.y + 1
if under.name == "default:desert_sand" then
if under.name == "default:desert_sand" or under.name == "mg:dirt_with_dry_grass" then
minetest.set_node(pos, {name="default:dry_shrub"})
elseif under.name ~= "default:dirt_with_grass" then
return

View File

@ -144,17 +144,17 @@ local function _meat(type,mod,item)
food.support(type,mod,item)
food.support("meat",mod,item)
end
food.support("wheat","farming","farming:wheat")
food.support("flour","farming","farming:flour")
food.support("potato","docfarming","docfarming:potato")
food.support("wheat","farming","farming_plus:wheat")
food.support("flour","farming","farming_plus:flour")
food.support("potato","docfarming","docfarming_plus:potato")
food.support("potato","veggies","veggies:potato")
food.support("potato","farming_plus","farming_plus:potato_item")
food.support("tomato","farming_plus","farming_plus:tomato_item")
food.support("tomato","plantlib","plantlib:tomato")
food.support("carrot","farming_plus","farming_plus:carrot_item")
food.support("carrot","docfarming","docfarming:carrot")
food.support("carrot","docfarming","docfarming_plus:carrot")
food.support("carrot","plantlib","plantlib:carrot")
food.support("carrot","jkfarming","jkfarming:carrot")
food.support("carrot","jkfarming","jkfarming_plus:carrot")
food.support("cocoa","farming_plus","farming_plus:cocoa_bean")
food.support("milk","animalmaterials","animalmaterials:milk")
food.support("milk","my_mobs","my_mobs:milk_glass_cup")
@ -171,7 +171,7 @@ _meat("chicken","mobfcooking","mobfcooking:cooked_chicken")
_meat("lamb","mobfcooking","mobfcooking:cooked_lamb")
_meat("venison","mobfcooking","mobfcooking:cooked_venison")
food.support("cup","vessels","vessels:drinking_glass")
food.support("sugar","jkfarming","jkfarming:sugar")
food.support("sugar","jkfarming","jkfarming_plus:sugar")
food.support("sugar","bushes_classic","bushes:sugar")
-- Default inbuilt ingredients

View File

@ -105,10 +105,10 @@ replacements_group['farming'].add_material = function( fruit, fruit_item, prefix
{ fruit_item.." 1", "default:coal_lump 3", "default:wood 8"},
{ fruit_item.." 10", "default:steel_ingot 2", "default:chest_locked 1"}};
if( fruit_item ~= data[1] ) then
table.insert( goods, { data[1].." 1", "farming:scarecrow", "farming:scarecrow_light 1"});
table.insert( goods, { data[1].." 1", "farming_plus:scarecrow", "farming_plus:scarecrow_light 1"});
table.insert( goods, { data[1].." 2", "default:dirt 20", "default:bucket_water", "default:steel_ingot 4", "default:leaves 99" });
end
table.insert( goods, {"farming:hoe_wood 1","default:wood 10", "default:cobble 10"});
table.insert( goods, {"farming_plus:hoe_wood 1","default:wood 10", "default:cobble 10"});
mobf_trader.add_trader( mobf_trader.npc_trader_prototype,
"farmer growing "..fruit.."s", -- not always the right grammatical form
@ -129,14 +129,14 @@ end
replacements_group['farming'].construct_farming_type_list = function()
-- farming from minetest_game
replacements_group['farming'].add_material( 'wheat', 'farming:wheat', 'farming:', '_', '' );
replacements_group['farming'].add_material( 'cotton', 'farming:cotton', 'farming:', '_', '' );
replacements_group['farming'].add_material( 'pumpkin','farming:pumpkin', 'farming:', '_', '' );
replacements_group['farming'].add_material( 'wheat', 'farming_plus:wheat', 'farming_plus:', '_', '' );
replacements_group['farming'].add_material( 'cotton', 'farming_plus:cotton', 'farming_plus:', '_', '' );
replacements_group['farming'].add_material( 'pumpkin','farming_plus:pumpkin', 'farming_plus:', '_', '' );
-- RealTest
replacements_group['farming'].add_material( 'flax', 'farming:string', 'farming:', '_', '' );
replacements_group['farming'].add_material( 'spelt', 'farming:wheat', 'farming:', '_', '' );
replacements_group['farming'].add_material( 'soy', 'farming:soy', 'farming:', '_', '' );
replacements_group['farming'].add_material( 'flax', 'farming_plus:string', 'farming_plus:', '_', '' );
replacements_group['farming'].add_material( 'spelt', 'farming_plus:wheat', 'farming_plus:', '_', '' );
replacements_group['farming'].add_material( 'soy', 'farming_plus:soy', 'farming_plus:', '_', '' );
-- diffrent versions of farming_plus:
@ -160,10 +160,10 @@ replacements_group['farming'].construct_farming_type_list = function()
-- coffee beans from farming_plus/farming_plusplus
replacements_group['farming'].add_material( 'coffee', 'farming_plus:coffee_beans', 'farming_plus:', '_', '' );
-- Docfarming: https://forum.minetest.net/viewtopic.php?t=3948
-- Docfarming_plus: https://forum.minetest.net/viewtopic.php?t=3948
fruits = {'carrot','corn','potato','raspberry'};
for i,fruit in pairs( fruits ) do
replacements_group['farming'].add_material( fruit, 'docfarming:'..fruit, 'docfarming:', '', '' );
replacements_group['farming'].add_material( fruit, 'docfarming_plus:'..fruit, 'docfarming_plus:', '', '' );
end
end

View File

@ -48,9 +48,9 @@ replacements_group['realtest'].replace = function( replacements )
table.insert( repl, {'default:furnace', 'oven:oven'});
table.insert( repl, {'default:clay', 'grounds:clay'});
-- Realtest does not know about these nodes yet
table.insert( repl, {'farming:soil_wet', 'farming:soil'});
table.insert( repl, {'farming:desert_sand_soil', 'farming:soil'});
table.insert( repl, {'farming:desert_sand_soil_wet','farming:soil'});
table.insert( repl, {'farming_plus:soil_wet', 'farming_plus:soil'});
table.insert( repl, {'farming_plus:desert_sand_soil', 'farming_plus:soil'});
table.insert( repl, {'farming_plus:desert_sand_soil_wet','farming_plus:soil'});
for i=1,5 do
table.insert( repl, {'default:grass_'..i,'air' });
end
@ -59,7 +59,7 @@ replacements_group['realtest'].replace = function( replacements )
else
table.insert( repl, {'oven:oven', 'default:furnace'});
table.insert( repl, {'grounds:clay', 'default:clay'});
table.insert( repl, {'farming:soil', 'farming:soil_wet'});
table.insert( repl, {'farming_plus:soil', 'farming_plus:soil_wet'});
end

View File

@ -165,8 +165,8 @@ local conversionTable = {
[56] = {P2_IGNORE, "default:stone_with_diamond"},
[57] = {P2_IGNORE, "default:diamondblock"},
[58] = {P2_CONVERT,"minecraft:crafting_table"},
[59] = {P2_IGNORE, "farming:wheat_8"},
[60] = {P2_IGNORE, "farming:soil_wet"},
[59] = {P2_IGNORE, "farming_plus:wheat_8"},
[60] = {P2_IGNORE, "farming_plus:soil_wet"},
[61] = {P2_IGNORE, "default:furnace"},
[62] = {P2_IGNORE, "default:furnace_active"},
[63] = {P2_IGNORE, "default:sign_wall"},
@ -184,8 +184,8 @@ local conversionTable = {
[83] = {P2_IGNORE, "default:papyrus"},
[84] = {P2_CONVERT,"minecraft:jukebox"},
[85] = {P2_IGNORE, "default:fence_wood"},
[86] = {P2_CONVERT,"farming:pumpkin"},
[91] = {P2_CONVERT,"farming:pumpkin_face_light"},
[86] = {P2_CONVERT,"farming_plus:pumpkin"},
[91] = {P2_CONVERT,"farming_plus:pumpkin_face_light"},
[92] = {P2_CONVERT,"minecraft:cake"},
[95] = {P2_IGNORE, "minecraft:stained_glass"}, -- TODO
[96] = {P2_CONVERT,"doors:trapdoor"},
@ -256,7 +256,7 @@ local conversionTable = {
[15]="stained_glass:black__"}}, -- TODO
[101]= {P2_CONVERT,"xpanes:bar"},
[102]= {P2_CONVERT,"xpanes:pane"},
[103]= {P2_IGNORE, "farming:melon"},
[103]= {P2_IGNORE, "farming_plus:melon"},
[104]= {P2_IGNORE, "minecraft:pumpkin_stem"},
[105]= {P2_IGNORE, "minecraft:melon_stem"},
[106]= {P2_CONVERT,"vines:vine"},

View File

@ -9,7 +9,6 @@ creatures?
docfarming?
dwarves?
ethereal?
farming?
farming_plus?
ferns?
fishing?

View File

@ -2,8 +2,8 @@ local register_food = hunger.register_food
register_food("default:apple", 2)
if minetest.get_modpath("farming") ~= nil then
register_food("farming:bread", 4)
if minetest.get_modpath("farming_plus") ~= nil then
register_food("farming_plus:bread", 4)
end
if minetest.get_modpath("mobs") ~= nil then
@ -113,19 +113,19 @@ if minetest.get_modpath("mushroom") ~= nil then
end
if minetest.get_modpath("docfarming") ~= nil then
register_food("docfarming:carrot", 3)
register_food("docfarming:cucumber", 2)
register_food("docfarming:corn", 3)
register_food("docfarming:potato", 4)
register_food("docfarming:bakedpotato", 5)
register_food("docfarming:raspberry", 3)
register_food("docfarming_plus:carrot", 3)
register_food("docfarming_plus:cucumber", 2)
register_food("docfarming_plus:corn", 3)
register_food("docfarming_plus:potato", 4)
register_food("docfarming_plus:bakedpotato", 5)
register_food("docfarming_plus:raspberry", 3)
end
if minetest.get_modpath("farming_plus") ~= nil then
register_food("farming_plus:carrot_item", 3)
register_food("farming_plus:banana", 2)
register_food("farming_plus:orange_item", 2)
register_food("farming:pumpkin_bread", 4)
register_food("farming_plus:pumpkin_bread", 4)
register_food("farming_plus:strawberry_item", 2)
register_food("farming_plus:tomato_item", 2)
register_food("farming_plus:potato_item", 4)
@ -226,33 +226,33 @@ if minetest.get_modpath("ethereal") then
end
if minetest.get_modpath("farming") and farming.mod == "redo" then
register_food("farming:bread", 6)
register_food("farming:potato", 1)
register_food("farming:baked_potato", 6)
register_food("farming:cucumber", 4)
register_food("farming:tomato", 4)
register_food("farming:carrot", 3)
register_food("farming:carrot_gold", 6, "", nil, 8)
register_food("farming:corn", 3)
register_food("farming:corn_cob", 5)
register_food("farming:melon_slice", 2)
register_food("farming:pumpkin_slice", 1)
register_food("farming:pumpkin_bread", 9)
register_food("farming:coffee_cup", 2, "farming:drinking_cup")
register_food("farming:coffee_cup_hot", 3, "farming:drinking_cup", nil, 2)
register_food("farming:cookie", 2)
register_food("farming:chocolate_dark", 3)
register_food("farming:donut", 4)
register_food("farming:donut_chocolate", 6)
register_food("farming:donut_apple", 6)
register_food("farming:raspberries", 1)
register_food("farming:blueberries", 1)
register_food("farming:muffin_blueberry", 4)
register_food("farming_plus:bread", 6)
register_food("farming_plus:potato", 1)
register_food("farming_plus:baked_potato", 6)
register_food("farming_plus:cucumber", 4)
register_food("farming_plus:tomato", 4)
register_food("farming_plus:carrot", 3)
register_food("farming_plus:carrot_gold", 6, "", nil, 8)
register_food("farming_plus:corn", 3)
register_food("farming_plus:corn_cob", 5)
register_food("farming_plus:melon_slice", 2)
register_food("farming_plus:pumpkin_slice", 1)
register_food("farming_plus:pumpkin_bread", 9)
register_food("farming_plus:coffee_cup", 2, "farming_plus:drinking_cup")
register_food("farming_plus:coffee_cup_hot", 3, "farming_plus:drinking_cup", nil, 2)
register_food("farming_plus:cookie", 2)
register_food("farming_plus:chocolate_dark", 3)
register_food("farming_plus:donut", 4)
register_food("farming_plus:donut_chocolate", 6)
register_food("farming_plus:donut_apple", 6)
register_food("farming_plus:raspberries", 1)
register_food("farming_plus:blueberries", 1)
register_food("farming_plus:muffin_blueberry", 4)
if minetest.get_modpath("vessels") then
register_food("farming:smoothie_raspberry", 2, "vessels:drinking_glass")
register_food("farming_plus:smoothie_raspberry", 2, "vessels:drinking_glass")
end
register_food("farming:rhubarb", 1)
register_food("farming:rhubarb_pie", 6)
register_food("farming_plus:rhubarb", 1)
register_food("farming_plus:rhubarb_pie", 6)
end
if minetest.get_modpath("kpgmobs") ~= nil then
@ -266,10 +266,10 @@ if minetest.get_modpath("kpgmobs") ~= nil then
end
if minetest.get_modpath("jkfarming") ~= nil then
register_food("jkfarming:carrot", 3)
register_food("jkfarming:corn", 3)
register_food("jkfarming:melon_part", 2)
register_food("jkfarming:cake", 3)
register_food("jkfarming_plus:carrot", 3)
register_food("jkfarming_plus:corn", 3)
register_food("jkfarming_plus:melon_part", 2)
register_food("jkfarming_plus:cake", 3)
end
if minetest.get_modpath("jkanimals") ~= nil then

View File

@ -24,19 +24,5 @@ dofile(modpath .. "/food.lua")
dofile(modpath .. "/legacy.lua")
-- Callbacks
function hunger_join_player(player)
local name = player:get_player_name()
local lvl = pd.get_number(name,"hunger_lvl")
if lvl > 20 then
lvl = 20
end
minetest.after(0.8, function()
hud.change_item(player, "hunger", {offset = "item", item_name = "hunger"})
hud.change_item(player, "hunger", {number = lvl, max = 20})
end)
end
minetest.register_on_item_eat(hunger.eat)

View File

@ -1,4 +1,4 @@
default
experience?
farming?
farming_plus?
bushes?

View File

@ -13,7 +13,7 @@ table.insert(dungeon_chest, { "potions:fly3", 50, 1})
table.insert(dungeon_chest, { "potions:bones", 70, 5})
table.insert(dungeon_chest, { "potions:magid_replenish3", 60, 10})
table.insert(dungeon_chest, { "potions:antidote", 80, 10})
table.insert(dungeon_chest, { "farming:bread", 80, 15})
table.insert(dungeon_chest, { "farming_plus:bread", 80, 15})
table.insert(dungeon_chest, { "mobs:meat", 80, 5})
table.insert(dungeon_chest, { "bushes:berry_pie_cooked", 90, 5})
table.insert(dungeon_chest, { "3d_armor:helmet_bronze", 70, 1})

View File

@ -5,11 +5,11 @@ ADD_RCC2 = function( data )
end
minetest.after(5,function()
ADD_RCC2({"farming:bread", 85, 3, 2, chest_storage=1, church=1, library=1, chest_private=1, shelf=1, shed=1, lumberjack=1, hut=1})
ADD_RCC2({"farming_plus:bread", 85, 3, 2, chest_storage=1, church=1, library=1, chest_private=1, shelf=1, shed=1, lumberjack=1, hut=1})
ADD_RCC2({"mobs:meat_raw", 70, 2, 2, chest_storage=1, church=1, library=1, chest_private=1, shelf=1, shed=1, lumberjack=1, hut=1})
ADD_RCC2({"bushes:berry_pie_cooked", 80, 4, 3, chest_storage=1, church=1, library=1, chest_private=1, shelf=1, shed=1, lumberjack=1, hut=1})
ADD_RCC2({"throwing:arrow", 30, 1, 3, chest_storage=1, church=1, library=1, chest_private=1, shelf=1, shed=1, lumberjack=1, hut=1})
ADD_RCC2({"farming:pumpkin_bread", 60, 3, 2, chest_storage=1, church=1, library=1, chest_private=1, shelf=1, shed=1, lumberjack=1, hut=1})
ADD_RCC2({"farming_plus:pumpkin_bread", 60, 3, 2, chest_storage=1, church=1, library=1, chest_private=1, shelf=1, shed=1, lumberjack=1, hut=1})
ADD_RCC2({"farming_plus:potato_item", 66, 2, 2, chest_storage=1, church=1, library=1, chest_private=1, shelf=1, shed=1, lumberjack=1, hut=1})
ADD_RCC2({"experience:1_exp", 90, 6, 1, chest_storage=1, chest_private=1, shelf=1})

View File

@ -1,7 +1,7 @@
default
handle_schematics
doors
farming
farming_plus
wool
mg?
stairs?

View File

@ -69,7 +69,7 @@ ADD_RCC({"fishing:pole", 60, 1, 1 });
if( minetest.get_modpath("ropes") ~= nil ) then
ADD_RCC({"ropes:rope", 60, 5, 2, chest_work=1, shelf=1, chest_storage=1 });
elseif( minetest.get_modpath("farming") ~= nil ) then
ADD_RCC({"farming:string", 60, 5, 2, church=1, library=1, chest_work=1, shelf=1, chest_storage=1 });
ADD_RCC({"farming_plus:string", 60, 5, 2, church=1, library=1, chest_work=1, shelf=1, chest_storage=1 });
elseif( minetest.get_modpath("moreblocks") ~= nil ) then
ADD_RCC({"moreblocks:rope", 60, 5, 2, chest_work=1, shelf=1, chest_storage=1 });
end
@ -110,7 +110,7 @@ ADD_RCC({'cottages:anvil', 80, 1, 2, forge=1 });
ADD_RCC({'currency:minegeld', 80, 10, 2, chest_private=1, chest_work=1 }); -- TODO: could be in any chest with a certain chance
ADD_RCC({'farming:hoe_stone', 80, 1, 2, farm_tiny=2, farm_full=2, chest_work=2 });
ADD_RCC({'farming_plus:hoe_stone', 80, 1, 2, farm_tiny=2, farm_full=2, chest_work=2 });
ADD_RCC({'homedecor:beer_mug', 50, 1, 2, tavern=5, inn=3});
ADD_RCC({'homedecor:book_blue', 50, 1, 2, church=1, library=1, chest_private=1});

View File

@ -760,12 +760,12 @@ mg_villages.village_area_fill_with_plants = function( village_area, villages, mi
cid.c_savannasapling = minetest.get_content_id( 'mg:savannasapling');
cid.c_pinesapling = minetest.get_content_id( 'mg:pinesapling');
-- add farmland
cid.c_wheat = minetest.get_content_id( 'farming:wheat_8' );
cid.c_cotton = minetest.get_content_id( 'farming:cotton_8' );
cid.c_wheat = minetest.get_content_id( 'farming_plus:wheat_8' );
cid.c_cotton = minetest.get_content_id( 'farming_plus:cotton_8' );
cid.c_shrub = minetest.get_content_id( 'default:dry_shrub');
-- these extra nodes are used in order to avoid abms on the huge fields around the villages
cid.c_soil_wet = minetest.get_content_id( 'mg_villages:soil' ); --'farming:soil_wet' );
cid.c_soil_sand = minetest.get_content_id( 'mg_villages:desert_sand_soil'); --'farming:desert_sand_soil_wet' );
cid.c_soil_wet = minetest.get_content_id( 'mg_villages:soil' ); --'farming_plus:soil_wet' );
cid.c_soil_sand = minetest.get_content_id( 'mg_villages:desert_sand_soil'); --'farming_plus:desert_sand_soil_wet' );
-- desert sand soil is only available in minetest_next
if( not( cid.c_soil_sand )) then
cid.c_soil_sand = cid.c_soil_wet;
@ -776,10 +776,10 @@ mg_villages.village_area_fill_with_plants = function( village_area, villages, mi
end
if( mg_villages.realtest_trees ) then
cid.c_soil_wet = minetest.get_content_id( 'farming:soil' ); -- TODO: the one from mg_villages would be better...but that one lacks textures
cid.c_soil_sand = minetest.get_content_id( 'farming:soil' ); -- TODO: the one from mg_villages would be better...but that one lacks textures
cid.c_wheat = minetest.get_content_id( 'farming:spelt_4' );
cid.c_cotton = minetest.get_content_id( 'farming:flax_4' );
cid.c_soil_wet = minetest.get_content_id( 'farming_plus:soil' ); -- TODO: the one from mg_villages would be better...but that one lacks textures
cid.c_soil_sand = minetest.get_content_id( 'farming_plus:soil' ); -- TODO: the one from mg_villages would be better...but that one lacks textures
cid.c_wheat = minetest.get_content_id( 'farming_plus:spelt_4' );
cid.c_cotton = minetest.get_content_id( 'farming_plus:flax_4' );
-- cid.c_shrub = minetest.get_content_id( 'default:dry_shrub');
end

View File

@ -240,15 +240,15 @@ mg_villages.replace_tree_trunk = function( replacements, wood_type )
-- not really wood-realted, but needs to be replaced as well
table.insert( replacements, {'default:furnace', 'oven:oven'});
-- farming is also handled diffrently
table.insert( replacements, {'farming:soil_wet', 'farming:soil'});
table.insert( replacements, {'farming:cotton_1', 'farming:flax_1'});
table.insert( replacements, {'farming:cotton_2', 'farming:flax_1'});
table.insert( replacements, {'farming:cotton_3', 'farming:flax_2'});
table.insert( replacements, {'farming:cotton_4', 'farming:flax_2'});
table.insert( replacements, {'farming:cotton_5', 'farming:flax_3'});
table.insert( replacements, {'farming:cotton_6', 'farming:flax_3'});
table.insert( replacements, {'farming:cotton_7', 'farming:flax_4'});
table.insert( replacements, {'farming:cotton_8', 'farming:flax_4'});
table.insert( replacements, {'farming_plus:soil_wet', 'farming_plus:soil'});
table.insert( replacements, {'farming_plus:cotton_1', 'farming_plus:flax_1'});
table.insert( replacements, {'farming_plus:cotton_2', 'farming_plus:flax_1'});
table.insert( replacements, {'farming_plus:cotton_3', 'farming_plus:flax_2'});
table.insert( replacements, {'farming_plus:cotton_4', 'farming_plus:flax_2'});
table.insert( replacements, {'farming_plus:cotton_5', 'farming_plus:flax_3'});
table.insert( replacements, {'farming_plus:cotton_6', 'farming_plus:flax_3'});
table.insert( replacements, {'farming_plus:cotton_7', 'farming_plus:flax_4'});
table.insert( replacements, {'farming_plus:cotton_8', 'farming_plus:flax_4'});
-- stairs and slabs made out of default wood
table.insert( replacements, {'stairs:stair_wood', 'trees:'..v..'_planks_stair'});
table.insert( replacements, {'stairs:slab_wood', 'trees:'..v..'_planks_slab'});
@ -340,8 +340,8 @@ mg_villages.get_replacement_list = function( housetype, pr )
-- realtest lacks quite a lot from default
if( mg_villages.realtest_trees ) then
for i=1,8 do
table.insert( replacements, {'farming:wheat_'..i, 'farming:spelt_'..tostring( (i+(i%2))/2) });
table.insert( replacements, {'farming:cotton_'..i, 'farming:flax_' ..tostring( (i+(i%2))/2) });
table.insert( replacements, {'farming_plus:wheat_'..i, 'farming_plus:spelt_'..tostring( (i+(i%2))/2) });
table.insert( replacements, {'farming_plus:cotton_'..i, 'farming_plus:flax_' ..tostring( (i+(i%2))/2) });
end
for i=1,5 do
table.insert( replacements, {'default:grass_'..i, 'air' });
@ -936,22 +936,22 @@ mg_villages.get_fruit_replacements = function( replacements, fruit)
local new_name = '';
-- farming_plus plants sometimes come in 3 or 4 variants, but not in 8 as cotton does
if( minetest.registered_nodes[ 'farming_plus:'..fruit..'_'..i ]) then
old_name = "farming:cotton_"..i;
old_name = "farming_plus:cotton_"..i;
new_name = 'farming_plus:'..fruit..'_'..i;
-- "surplus" cotton variants will be replaced with the full grown fruit
elseif( minetest.registered_nodes[ 'farming_plus:'..fruit ]) then
old_name = "farming:cotton_"..i;
old_name = "farming_plus:cotton_"..i;
new_name = 'farming_plus:'..fruit;
-- and plants from farming: are supported as well
elseif( minetest.registered_nodes[ 'farming:'..fruit..'_'..i ]) then
old_name = "farming:cotton_"..i;
new_name = 'farming:'..fruit..'_'..i;
-- and plants from farming_plus: are supported as well
elseif( minetest.registered_nodes[ 'farming_plus:'..fruit..'_'..i ]) then
old_name = "farming_plus:cotton_"..i;
new_name = 'farming_plus:'..fruit..'_'..i;
elseif( minetest.registered_nodes[ 'farming:'..fruit ]) then
old_name = "farming:cotton_"..i;
new_name = 'farming:'..fruit;
elseif( minetest.registered_nodes[ 'farming_plus:'..fruit ]) then
old_name = "farming_plus:cotton_"..i;
new_name = 'farming_plus:'..fruit;
end
if( old_name ~= '' and new_name ~= '' ) then

View File

@ -15,17 +15,17 @@
-- of villages, the village name will consist of name_prefix..village_name..name_postfix
-- sapling_divisor = 1 Villages are sourrounded by a flat area that may contain trees. Increasing this
-- value decreses the mount of trees placed.
-- plant_type = 'farming:wheat_8' Type of plant that is placed around villages.
-- plant_type = 'farming_plus:wheat_8' Type of plant that is placed around villages.
-- plant_frequency = 1 The higher this value is, the less plants are placed.
local village_type_data_list = {
nore = { min = 20, max = 40, space_between_buildings=1, mods={}, texture = 'default_stone_brick.png',
replacement_function = mg_villages.replacements_nore },
taoki = { min = 30, max = 70, space_between_buildings=1, mods={}, texture = 'default_brick.png' ,
sapling_divisor = 5, plant_type = 'farming:cotton_8', plant_frequency = 1,
sapling_divisor = 5, plant_type = 'farming_plus:cotton_8', plant_frequency = 1,
replacement_function = mg_villages.replacements_taoki },
medieval = { min = 25, max = 60, space_between_buildings=2, mods={'cottages'}, texture = 'cottages_darkage_straw.png', -- they often have straw roofs
sapling_divisor = 10, plant_type = 'farming:wheat_8', plant_frequency = 1,
sapling_divisor = 10, plant_type = 'farming_plus:wheat_8', plant_frequency = 1,
replacement_function = mg_villages.replacements_medieval,
roadsize_list = {2,3,4,5,6},
-- road_materials = {'default:cobble','default:gravel','default:stonebrick','default:coalblock'},

View File

@ -29,12 +29,12 @@ mobs:register_mob("mobs:sheep", {
walk_start = 81,
walk_end = 100,
},
follow = "farming:wheat",
follow = "farming_plus:wheat",
view_range = 5,
on_rightclick = function(self, clicker)
local item = clicker:get_wielded_item()
if item:get_name() == "farming:wheat" then
if item:get_name() == "farming_plus:wheat" then
if not self.tamed then
if not minetest.setting_getbool("creative_mode") then
item:take_item()

View File

@ -16,7 +16,7 @@ mobs:register_mob("mobs:jungle_spider",{
armor = 200,
damage = 1,
drops = {
{name = "farming:string",
{name = "farming_plus:string",
chance = 40,
min = 3,
max = 6,},

View File

@ -16,7 +16,7 @@ mobs:register_mob("mobs:spider",{
armor = 200,
damage = 3,
drops = {
{name = "farming:string",
{name = "farming_plus:string",
chance = 40,
min = 3,
max = 6,},

View File

@ -171,7 +171,7 @@ type = "npc",
blood_amount = 35,
blood_offset = 0.25,
rewards = {
{chance=100, item="farming:bread 6"},
{chance=100, item="farming_plus:bread 6"},
{chance=70, item="food:cheese 6"},
{chance=80, item="experience:6_exp 2"},
{chance=40, item="potions:magic_replenish1"},

View File

@ -192,7 +192,7 @@ minetest.register_craft({
minetest.register_craft({
type="shapeless",
output="potions:gravity1_raw",
recipe = {"dye:green","farming:wheat","potions:ground_bones","default:mese_crystal_fragment","vessels:glass_bottle","bucket:bucket_water","potions:ground_magic"},
recipe = {"dye:green","farming_plus:wheat","potions:ground_bones","default:mese_crystal_fragment","vessels:glass_bottle","bucket:bucket_water","potions:ground_magic"},
replacements = { { "bucket:bucket_water","bucket:bucket_empty" } }
})

View File

@ -3,8 +3,8 @@ quests.chest = {}
quests.chest.go = function(npc,player)
local inv = player:get_inventory()
local pos = npc.object:getpos()
if inv:contains_item("main","farming:flour") and inv:contains_item("main","food:bowl") then
inv:remove_item("main","farming:flour")
if inv:contains_item("main","farming_plus:flour") and inv:contains_item("main","food:bowl") then
inv:remove_item("main","farming_plus:flour")
inv:remove_item("main","food:bowl")
chat.local_chat(pos,"'Thank you very much, take this as a token of my appreciation!'",6)
local lp = player:getpos()

View File

@ -1,4 +1,4 @@
default
bucket
fire
farming
farming_plus

View File

@ -65,9 +65,9 @@ minetest.register_tool("throwing:bow_wood", {
minetest.register_craft({
output = 'throwing:bow_wood',
recipe = {
{'farming:string', 'default:wood', ''},
{'farming:string', '', 'default:wood'},
{'farming:string', 'default:wood', ''},
{'farming_plus:string', 'default:wood', ''},
{'farming_plus:string', '', 'default:wood'},
{'farming_plus:string', 'default:wood', ''},
}
})
@ -94,9 +94,9 @@ minetest.register_tool("throwing:bow_steel", {
minetest.register_craft({
output = 'throwing:bow_steel',
recipe = {
{'farming:string', 'default:steel_ingot', ''},
{'farming:string', '', 'default:steel_ingot'},
{'farming:string', 'default:steel_ingot', ''},
{'farming_plus:string', 'default:steel_ingot', ''},
{'farming_plus:string', '', 'default:steel_ingot'},
{'farming_plus:string', 'default:steel_ingot', ''},
}
})