implement ill functions #4
parent
ee10079bbf
commit
a6e9b2a75a
|
@ -9,7 +9,7 @@ local po_def={
|
|||
minlight = 13,
|
||||
maxlight = default.LIGHT_MAX,
|
||||
fertility = {"grassland"},
|
||||
groups = {food_wheat = 1, flammable = 4,no_harvest=1, on_soil = 1},
|
||||
groups = {food_wheat = 1, flammable = 4,no_harvest=1, on_soil = 1,snappy=1},
|
||||
place_param2 = 3,
|
||||
spawnon = { spawnon = farming.change_soil or {"default:dirt_with_grass"},
|
||||
spawn_min = 0,
|
||||
|
|
|
@ -17,7 +17,7 @@ local sdef={
|
|||
minlight = 13,
|
||||
maxlight = default.LIGHT_MAX,
|
||||
fertility = {"grassland"},
|
||||
groups = {food=1,grain = 1, flammable = 4,no_harvest=1 ,punchable = 1},
|
||||
groups = {food=1,grain = 1, flammable = 4,no_harvest=1 ,punchable = 1,snappy=1},
|
||||
place_param2 = 3,
|
||||
min_temp=10,
|
||||
max_temp=50,
|
||||
|
@ -31,8 +31,6 @@ local sdef={
|
|||
description = S("Strawberry"),
|
||||
inventory_image = "farming_strawberry.png",
|
||||
eat_hp=4,
|
||||
steps=4,
|
||||
max_harvest=2,
|
||||
}
|
||||
|
||||
--if(table.getn(possible_biomes)>0) then
|
||||
|
|
|
@ -11,7 +11,7 @@ local w1def={
|
|||
minlight = 13,
|
||||
maxlight = default.LIGHT_MAX,
|
||||
fertility = {"grassland"},
|
||||
groups = {food_wheat=1, grain = 1, flammable = 4, on_soil = 1},
|
||||
groups = {food_wheat=1, grain = 1, flammable = 4, on_soil = 1,snappy=1,food=1,infectable=1},
|
||||
place_param2 = 3,
|
||||
min_temp=10,
|
||||
max_temp=50,
|
||||
|
@ -44,7 +44,7 @@ local wdef={
|
|||
minlight = 11,
|
||||
maxlight = default.LIGHT_MAX,
|
||||
fertility = {"grassland"},
|
||||
groups = {food_wheat=1,no_spawn=1,grain = 1, flammable = 4, on_soil = 1},
|
||||
groups = {food_wheat=1,no_spawn=1,grain = 1, flammable = 4, on_soil = 1,infectable=1},
|
||||
place_param2 = 3,
|
||||
description = S("Culture Wheat Seed"),
|
||||
inventory_image = "farming_culturewheat_seed.png",
|
||||
|
@ -53,6 +53,7 @@ local wdef={
|
|||
eat_hp=1,
|
||||
mean_grow_time=20,
|
||||
range_grow_time=5,
|
||||
abm={change = 20}, -- change that randomly new wheat is created
|
||||
}
|
||||
farming.register_plant("farming:culturewheat", wdef)
|
||||
|
||||
|
|
14
init.lua
14
init.lua
|
@ -27,9 +27,19 @@ for i,crop in ipairs(farming.crops) do
|
|||
dofile(farming.path.."/crops/"..crop..".lua")
|
||||
end
|
||||
end
|
||||
print("dump registered plants")
|
||||
print(dump(farming.registered_plants))
|
||||
--print("dump registered plants")
|
||||
--print(dump(farming.registered_plants))
|
||||
|
||||
--[[
|
||||
minetest.register_abm({
|
||||
nodenames = {"default:aspen_tree"},
|
||||
interval = 30,
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
minetest.add_node(pos, {name="default:wood"})
|
||||
end,
|
||||
})
|
||||
]]
|
||||
|
||||
|
||||
minetest.log("action", "[MOD]"..minetest.get_current_modname().." -- loaded ")
|
||||
|
|
99
register.lua
99
register.lua
|
@ -112,17 +112,52 @@ end
|
|||
farming.register_infect=function(idef)
|
||||
local infect_def={
|
||||
description = S(idef.description:gsub("^%l", string.upper)),
|
||||
inventory_image = idef.mod_name.."_"..idef.plantname.."_ill.png",
|
||||
inventory_image = idef.mod_name.."_"..idef.plant_name.."_ill.png",
|
||||
groups = idef.groups or {flammable = 2,ill=2},
|
||||
tiles = {idef.mod_name.."_"..idef.plant_name.."_ill.png"},
|
||||
wield_image = {idef.mod_name.."_"..idef.plant_name.."_ill.png"},
|
||||
drawtype = "plantlike",
|
||||
waving = 1,
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
selection_box = {type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
}
|
||||
for _,coln in ipairs({"plant_name","seed_name","harvest_name"}) do
|
||||
for _,coln in ipairs({"plant_name","seed_name","harvest_name","place_param2","fertility","description","spawnon"}) do
|
||||
infect_def[coln] = idef[coln]
|
||||
end
|
||||
|
||||
if not infect_def.groups["ill"] then
|
||||
infect_def.groups["ill"] = 2
|
||||
end
|
||||
minetest.register_craftitem(":" .. idef.harvest_name.."_infected", infect_def)
|
||||
minetest.register_node(":" .. idef.harvest_name.."_infected", infect_def)
|
||||
print(dump(infect_def))
|
||||
local abm_def = {
|
||||
nodenames = {"group:"..idef.plant_name},
|
||||
intervall = math.random(10,20),
|
||||
change = 1,
|
||||
action = function(pos)
|
||||
if math.random(0,5)<1 then
|
||||
minetest.add_node(pos,{name=idef.harvest_name.."_infected"})
|
||||
end
|
||||
end,
|
||||
}
|
||||
minetest.register_abm(abm_def)
|
||||
local abm_def = {
|
||||
nodenames = {"group:"..idef.plant_name},
|
||||
neighbors = {"group:"..idef.plant_name},
|
||||
intervall = math.random(30,40),
|
||||
change = 1,
|
||||
action = function(pos)
|
||||
if math.random(0,50)<1 then
|
||||
minetest.add_node(pos,{name=idef.harvest_name.."_infected"})
|
||||
end
|
||||
end,
|
||||
}
|
||||
print(dump(abm_def))
|
||||
minetest.register_abm(abm_def)
|
||||
end
|
||||
|
||||
|
||||
|
@ -208,7 +243,10 @@ farming.register_steps = function(pname,sdef)
|
|||
"walkable","buildable_to","seed_name","plant_name","harvest_name"}) do
|
||||
ndef[colu]=node_def[colu]
|
||||
end
|
||||
ndef.groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1}
|
||||
ndef.groups = {snappy = 3, flammable = 2,flora=1, plant = 1, not_in_creative_inventory = 1, attached_node = 1}
|
||||
if sdef["snappy"] then
|
||||
ndef.groups["snappy"] = sdef["snappy"]
|
||||
end
|
||||
ndef.groups[pname] = i
|
||||
ndef.tiles={sdef.mod_name.."_"..sdef.plant_name.."_"..i..".png"}
|
||||
if i < sdef.steps then
|
||||
|
@ -246,6 +284,7 @@ farming.register_steps = function(pname,sdef)
|
|||
ndef.pre_step = sdef.harvest_name .. "_" .. (i - 1)
|
||||
ndef.on_punch = farming.step_on_punch
|
||||
end
|
||||
-- print(dump(ndef))
|
||||
minetest.register_node(":" .. sdef.harvest_name .. "_" .. i, ndef)
|
||||
end
|
||||
farming.register_lbm(lbm_nodes,sdef)
|
||||
|
@ -262,6 +301,32 @@ farming.register_lbm = function(lbm_nodes,def)
|
|||
})
|
||||
end
|
||||
|
||||
farming.register_abm = function(mdef)
|
||||
local rand_change = 50
|
||||
if mdef.abm then
|
||||
if mdef.abm.change then
|
||||
rand_change = mdef.abm.change
|
||||
end
|
||||
end
|
||||
minetest.register_abm({
|
||||
nodenames = mdef.spawnon.spawnon,
|
||||
interval = math.random(10,16),
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
local ptabove={x=pos.x,y=pos.y+1,z=pos.z}
|
||||
local above = minetest.get_node(ptabove)
|
||||
if above.name ~= "air" then
|
||||
return
|
||||
end
|
||||
if (ptabove.y < mdef.spawnon.spawn_min or ptabove.y > mdef.spawnon.spawn_max ) then
|
||||
return
|
||||
end
|
||||
if math.random(0,rand_change) < 1 then
|
||||
minetest.add_node(ptabove, {name=mdef.harvest_name.."_"..mdef.steps})
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
farming.register_mapgen = function(mdef)
|
||||
-- register mapgen
|
||||
if mdef.groups.no_spawn == nil then
|
||||
|
@ -346,6 +411,7 @@ farming.register_plant = function(name, def)
|
|||
|
||||
if (def.spawnon) then
|
||||
farming.register_mapgen(def)
|
||||
farming.register_abm(def)
|
||||
end
|
||||
|
||||
if is_infectable then
|
||||
|
@ -384,6 +450,7 @@ farming.register_scythe = function(name,def)
|
|||
end
|
||||
farming.register_tool(name,def)
|
||||
end
|
||||
|
||||
-- Register new Scythes
|
||||
farming.register_tool = function(name, def)
|
||||
-- recipe has to be provided
|
||||
|
@ -431,21 +498,18 @@ farming.step_on_punch = function(pos, node, puncher, pointed_thing)
|
|||
end
|
||||
minetest.swap_node(pos, placenode)
|
||||
puncher:get_inventory():add_item('main',def.seed_name)
|
||||
print(dump(puncher))
|
||||
-- getting one more when using billhook
|
||||
local tool_def = puncher:get_wielded_item():get_definition()
|
||||
print(dump(puncher:get_wielded_item():get_wear()))
|
||||
-- print(tool_def.max_uses)
|
||||
if tool_def.groups["billhook"] then
|
||||
puncher:get_inventory():add_item('main',def.seed_name)
|
||||
puncher:get_wielded_item():add_wear(65535/(tool_def.max_uses-1))
|
||||
print(dump(puncher:get_wielded_item():get_wear()))
|
||||
print(tool_def.max_uses)
|
||||
end
|
||||
-- new timer needed?
|
||||
local pre_def=minetest.registered_nodes[pre_node]
|
||||
if pre_def.next_step then
|
||||
minetest.get_node_timer(pos):start(math.random(pre_def.min_grow_time or 100, pre_def.max_grow_time or 200))
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
farming.harvest_on_dig = function(pos, node, digger)
|
||||
|
@ -455,12 +519,9 @@ farming.harvest_on_dig = function(pos, node, digger)
|
|||
local tool_def = digger:get_wielded_item():get_definition()
|
||||
if (def.next_plant == nil) and (tool_def.groups["scythe"]) then
|
||||
local plant_def=farming.registered_plants[def.plant_name]
|
||||
local droptable={plant_def.harvest_name.." "..(plant_def.max_harvest+1)}
|
||||
core.handle_node_drops(pos,droptable,digger)
|
||||
minetest.remove_node(pos)
|
||||
else
|
||||
minetest.node_dig(pos,node,digger)
|
||||
digger:get_inventory():add_item('main',plant_def.harvest_name)
|
||||
end
|
||||
minetest.node_dig(pos,node,digger)
|
||||
end
|
||||
|
||||
farming.step_on_timer = function(pos, elapsed)
|
||||
|
@ -625,12 +686,8 @@ farming.tool_on_dig = function(itemstack, user, pointed_thing, uses)
|
|||
local pt = pointed_thing
|
||||
-- check if pointing at a node
|
||||
if not pt then
|
||||
print("1")
|
||||
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}
|
||||
|
@ -638,19 +695,14 @@ farming.tool_on_dig = function(itemstack, user, pointed_thing, uses)
|
|||
|
||||
-- return if any of the nodes is not registered
|
||||
if not minetest.registered_nodes[under.name] then
|
||||
print("2")
|
||||
return
|
||||
end
|
||||
if not minetest.registered_nodes[above.name] then
|
||||
print("3")
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
-- check if the node above the pointed thing is air
|
||||
if above.name ~= "air" then
|
||||
print("4")
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -662,7 +714,6 @@ farming.tool_on_dig = function(itemstack, user, pointed_thing, uses)
|
|||
minetest.record_protection_violation(pt.above, user:get_player_name())
|
||||
return
|
||||
end
|
||||
print("Hello Wordld")
|
||||
if not (creative and creative.is_enabled_for
|
||||
and creative.is_enabled_for(user:get_player_name())) then
|
||||
-- wear tool
|
||||
|
|
30
tools.lua
30
tools.lua
|
@ -23,16 +23,32 @@ farming.register_hoe(":farming:hoe_steel", {
|
|||
farming.register_scythe(":farming:scythe_wood", {
|
||||
description = "Wooden Scythe",
|
||||
inventory_image = "farming_tool_scythe_wood.png",
|
||||
max_uses = 30,
|
||||
-- max_uses = 30,
|
||||
material = "group:wood",
|
||||
groups = {flammable = 2},
|
||||
tool_capabilities = {
|
||||
full_punch_interval = 1.0,
|
||||
max_drop_level=1,
|
||||
groupcaps={
|
||||
snappy = {times={[1]=4.00, [2]=1.60, [3]=0.80}, uses=10, maxlevel=1},
|
||||
},
|
||||
damage_groups = {fleshy=4},
|
||||
},
|
||||
})
|
||||
farming.register_scythe(":farming:scythe_stone", {
|
||||
description = "Stone Scythe",
|
||||
inventory_image = "farming_tool_scythe_stone.png",
|
||||
max_uses = 60,
|
||||
-- max_uses = 60,
|
||||
material = "group:stone",
|
||||
groups = {flammable = 2},
|
||||
tool_capabilities = {
|
||||
full_punch_interval = 1.0,
|
||||
max_drop_level=1,
|
||||
groupcaps={
|
||||
snappy = {times={[1]=3.00, [2]=1.40, [3]=0.70}, uses=20, maxlevel=1},
|
||||
},
|
||||
damage_groups = {fleshy=4},
|
||||
},
|
||||
})
|
||||
farming.register_scythe(":farming:scythe_steel", {
|
||||
description = "Steel Scythe",
|
||||
|
@ -44,9 +60,17 @@ farming.register_scythe(":farming:scythe_steel", {
|
|||
farming.register_billhook(":farming:billhook_wood", {
|
||||
description = "Wooden Billhook",
|
||||
inventory_image = "farming_tool_billhook_wood.png",
|
||||
max_uses = 30,
|
||||
-- max_uses = 30,
|
||||
material = "group:wood",
|
||||
groups = {flammable = 2},
|
||||
tool_capabilities = {
|
||||
full_punch_interval = 1.0,
|
||||
max_drop_level=1,
|
||||
groupcaps={
|
||||
snappy = {times={[1]=5.00, [2]=2.00, [3]=1.40}, uses=10, maxlevel=1},
|
||||
},
|
||||
damage_groups = {fleshy=4},
|
||||
},
|
||||
})
|
||||
farming.register_billhook(":farming:billhook_stone", {
|
||||
description = "Stone Billhook",
|
||||
|
|
Loading…
Reference in New Issue