update plantlife, digistuff, farming-redo, roads,
unified inventory, and fixed a few obsolete "overrides" in the misc-overrides package.master
|
@ -17,7 +17,7 @@ minetest.register_craftitem(":bushes:sugar", {
|
|||
description = S("Sugar"),
|
||||
inventory_image = "bushes_sugar.png",
|
||||
on_use = minetest.item_eat(1),
|
||||
groups = {food_sugar=1}
|
||||
groups = {food_sugar=1, flammable = 2}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
|
@ -27,8 +27,33 @@ minetest.register_craft({
|
|||
},
|
||||
})
|
||||
|
||||
-- override farming_plus strawberry and add food_ group
|
||||
if minetest.get_modpath("farming_plus") then
|
||||
|
||||
minetest.override_item("farming_plus:strawberry_item", {
|
||||
groups = {food_strawberry = 1, food_berry = 1, flammable = 2},
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
for i, berry in ipairs(bushes_classic.bushes) do
|
||||
|
||||
local groups = {food_berry = 1, flammable = 2}
|
||||
|
||||
if berry ~= "mixed_berry" then
|
||||
|
||||
groups["food_" .. berry] = 1
|
||||
|
||||
-- Berry
|
||||
minetest.register_craftitem(":bushes:"..berry, {
|
||||
description = bushes_classic.bushes_descriptions[i][1],
|
||||
inventory_image = "bushes_"..berry..".png",
|
||||
groups = groups,
|
||||
on_use = minetest.item_eat(1),
|
||||
})
|
||||
end
|
||||
|
||||
-- Raw pie
|
||||
minetest.register_craftitem(":bushes:"..berry.."_pie_raw", {
|
||||
description = bushes_classic.bushes_descriptions[i][2],
|
||||
inventory_image = "bushes_"..berry.."_pie_raw.png",
|
||||
|
@ -37,58 +62,25 @@ for i, berry in ipairs(bushes_classic.bushes) do
|
|||
|
||||
if berry ~= "mixed_berry" then
|
||||
|
||||
-- Special case for strawberries, blueberries and raspberries
|
||||
-- when farming_plus or farming redo is in use. Use items
|
||||
-- from these mods, but redefine there so they has the right
|
||||
-- groups and does't look so ugly!
|
||||
|
||||
if berry == "strawberry" and minetest.registered_nodes["farming_plus:strawberry"] then
|
||||
minetest.register_craftitem(":farming_plus:strawberry_item", {
|
||||
description = bushes_classic.bushes_descriptions[i][1],
|
||||
inventory_image = "bushes_"..berry..".png",
|
||||
on_use = minetest.item_eat(2),
|
||||
groups = {berry=1, strawberry=1}
|
||||
})
|
||||
minetest.register_alias("bushes:strawberry", "farming_plus:strawberry_item")
|
||||
|
||||
elseif berry == "blueberry" and minetest.registered_items["farming:blueberries"] then
|
||||
minetest.register_craftitem(":farming:blueberries", {
|
||||
description = bushes_classic.bushes_descriptions[i][1],
|
||||
inventory_image = "bushes_"..berry..".png",
|
||||
on_use = minetest.item_eat(1),
|
||||
groups = {berry=1, blueberry=1}
|
||||
})
|
||||
minetest.register_alias("bushes:blueberry", "farming:blueberries")
|
||||
|
||||
elseif berry == "raspberry" and minetest.registered_items["farming:raspberries"] then
|
||||
minetest.register_craftitem(":farming:raspberries", {
|
||||
description = bushes_classic.bushes_descriptions[i][1],
|
||||
inventory_image = "bushes_"..berry..".png",
|
||||
on_use = minetest.item_eat(1),
|
||||
groups = {berry=1, raspberry=1}
|
||||
})
|
||||
minetest.register_alias("bushes:raspberry", "farming:raspberries")
|
||||
|
||||
else
|
||||
minetest.register_craftitem(":bushes:"..berry, {
|
||||
description = bushes_classic.bushes_descriptions[i][1],
|
||||
inventory_image = "bushes_"..berry..".png",
|
||||
groups = {berry = 1, [berry] = 1},
|
||||
on_use = minetest.item_eat(1),
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = "bushes:"..berry.."_pie_raw 1",
|
||||
recipe = {
|
||||
{ "group:food_sugar", "farming:flour", "group:food_sugar" },
|
||||
{ "group:"..berry, "group:"..berry, "group:"..berry },
|
||||
{ "group:food_"..berry, "group:food_"..berry, "group:food_"..berry },
|
||||
},
|
||||
})
|
||||
else
|
||||
minetest.register_craft({
|
||||
output = "bushes:mixed_berry_pie_raw 2",
|
||||
recipe = {
|
||||
{ "group:food_sugar", "farming:flour", "group:food_sugar" },
|
||||
{ "group:food_berry", "group:food_berry", "group:food_berry" },
|
||||
{ "group:food_berry", "group:food_berry", "group:food_berry" },
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
-- Cooked pie
|
||||
|
||||
minetest.register_craftitem(":bushes:"..berry.."_pie_cooked", {
|
||||
description = bushes_classic.bushes_descriptions[i][3],
|
||||
inventory_image = "bushes_"..berry.."_pie_cooked.png",
|
||||
|
@ -102,8 +94,7 @@ for i, berry in ipairs(bushes_classic.bushes) do
|
|||
cooktime = 30,
|
||||
})
|
||||
|
||||
-- slice of pie
|
||||
|
||||
-- Slice of pie
|
||||
minetest.register_craftitem(":bushes:"..berry.."_pie_slice", {
|
||||
description = bushes_classic.bushes_descriptions[i][4],
|
||||
inventory_image = "bushes_"..berry.."_pie_slice.png",
|
||||
|
@ -118,7 +109,6 @@ for i, berry in ipairs(bushes_classic.bushes) do
|
|||
})
|
||||
|
||||
-- Basket with pies
|
||||
|
||||
minetest.register_craft({
|
||||
output = "bushes:basket_"..berry.." 1",
|
||||
recipe = {
|
||||
|
@ -127,12 +117,3 @@ for i, berry in ipairs(bushes_classic.bushes) do
|
|||
},
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
output = "bushes:mixed_berry_pie_raw 2",
|
||||
recipe = {
|
||||
{ "group:food_sugar", "farming:flour", "group:food_sugar" },
|
||||
{ "group:berry", "group:berry", "group:berry" },
|
||||
{ "group:berry", "group:berry", "group:berry" },
|
||||
},
|
||||
})
|
||||
|
|
|
@ -930,6 +930,7 @@ minetest.register_craft({
|
|||
})
|
||||
|
||||
if minetest.get_modpath("mesecons_noteblock") then
|
||||
local validnbsounds = dofile(minetest.get_modpath("digistuff")..DIR_DELIM.."nbsounds.lua")
|
||||
minetest.register_node("digistuff:noteblock", {
|
||||
description = "Digilines Noteblock",
|
||||
groups = {cracky=3},
|
||||
|
@ -961,48 +962,22 @@ if minetest.get_modpath("mesecons_noteblock") then
|
|||
receptor = {},
|
||||
effector = {
|
||||
action = function(pos,node,channel,msg)
|
||||
if msg == "get_sounds" then
|
||||
local soundnames = {}
|
||||
for i in pairs(validnbsounds) do
|
||||
table.insert(soundnames,i)
|
||||
end
|
||||
digiline:receptor_send(pos, digiline.rules.default, channel, soundnames)
|
||||
end
|
||||
local meta = minetest.get_meta(pos)
|
||||
local setchan = meta:get_string("channel")
|
||||
if channel ~= setchan then return end
|
||||
local valid_sounds = {
|
||||
csharp = "mesecons_noteblock_csharp",
|
||||
d = "mesecons_noteblock_d",
|
||||
dsharp = "mesecons_noteblock_dsharp",
|
||||
e = "mesecons_noteblock_e",
|
||||
f = "mesecons_noteblock_f",
|
||||
fsharp = "mesecons_noteblock_fsharp",
|
||||
g = "mesecons_noteblock_g",
|
||||
gsharp = "mesecons_noteblock_gsharp",
|
||||
a = "mesecons_noteblock_a",
|
||||
asharp = "mesecons_noteblock_asharp",
|
||||
b = "mesecons_noteblock_b",
|
||||
c = "mesecons_noteblock_c",
|
||||
csharp2 = "mesecons_noteblock_csharp2",
|
||||
d2 = "mesecons_noteblock_d2",
|
||||
dsharp2 = "mesecons_noteblock_dsharp2",
|
||||
e2 = "mesecons_noteblock_e2",
|
||||
f2 = "mesecons_noteblock_f2",
|
||||
fsharp2 = "mesecons_noteblock_fsharp2",
|
||||
g2 = "mesecons_noteblock_g2",
|
||||
gsharp2 = "mesecons_noteblock_gsharp2",
|
||||
a2 = "mesecons_noteblock_a2",
|
||||
asharp2 = "mesecons_noteblock_asharp2",
|
||||
b2 = "mesecons_noteblock_b2",
|
||||
c2 = "mesecons_noteblock_c2",
|
||||
hihat = "mesecons_noteblock_hihat",
|
||||
kick = "mesecons_noteblock_kick",
|
||||
snare = "mesecons_noteblock_snare",
|
||||
crash = "mesecons_noteblock_crash",
|
||||
litecrash = "mesecons_noteblock_litecrash",
|
||||
fire = "fire_large",
|
||||
explosion = "tnt_explode"
|
||||
}
|
||||
if type(msg) == "string" then
|
||||
local sound = valid_sounds[msg]
|
||||
local sound = validnbsounds[msg]
|
||||
if sound then minetest.sound_play(sound,{pos=pos}) end
|
||||
elseif type(msg) == "table" then
|
||||
if type(msg.sound) ~= "string" then return end
|
||||
local sound = valid_sounds[msg.sound]
|
||||
local sound = validnbsounds[msg.sound]
|
||||
local volume = 1
|
||||
if type(msg.volume) == "number" then
|
||||
volume = math.max(0,math.min(1,msg.volume))
|
||||
|
|
|
@ -0,0 +1,166 @@
|
|||
local valid_sounds = {
|
||||
csharp = "mesecons_noteblock_csharp",
|
||||
d = "mesecons_noteblock_d",
|
||||
dsharp = "mesecons_noteblock_dsharp",
|
||||
e = "mesecons_noteblock_e",
|
||||
f = "mesecons_noteblock_f",
|
||||
fsharp = "mesecons_noteblock_fsharp",
|
||||
g = "mesecons_noteblock_g",
|
||||
gsharp = "mesecons_noteblock_gsharp",
|
||||
a = "mesecons_noteblock_a",
|
||||
asharp = "mesecons_noteblock_asharp",
|
||||
b = "mesecons_noteblock_b",
|
||||
c = "mesecons_noteblock_c",
|
||||
csharp2 = "mesecons_noteblock_csharp2",
|
||||
d2 = "mesecons_noteblock_d2",
|
||||
dsharp2 = "mesecons_noteblock_dsharp2",
|
||||
e2 = "mesecons_noteblock_e2",
|
||||
f2 = "mesecons_noteblock_f2",
|
||||
fsharp2 = "mesecons_noteblock_fsharp2",
|
||||
g2 = "mesecons_noteblock_g2",
|
||||
gsharp2 = "mesecons_noteblock_gsharp2",
|
||||
a2 = "mesecons_noteblock_a2",
|
||||
asharp2 = "mesecons_noteblock_asharp2",
|
||||
b2 = "mesecons_noteblock_b2",
|
||||
c2 = "mesecons_noteblock_c2",
|
||||
hihat = "mesecons_noteblock_hihat",
|
||||
kick = "mesecons_noteblock_kick",
|
||||
snare = "mesecons_noteblock_snare",
|
||||
crash = "mesecons_noteblock_crash",
|
||||
litecrash = "mesecons_noteblock_litecrash",
|
||||
fire = "fire_large",
|
||||
explosion = "tnt_explode",
|
||||
digistuff_piezo_short = "digistuff_piezo_short_single",
|
||||
digistuff_piezo_long = "digistuff_piezo_long_single"
|
||||
}
|
||||
|
||||
local mod_sounds = {
|
||||
pbj_pup = {
|
||||
pbj_pup_barks = "pbj_pup_barks",
|
||||
pbj_pup_howl = "pbj_pup_howl"
|
||||
},
|
||||
anvil = {
|
||||
anvil_clang = "anvil_clang"
|
||||
},
|
||||
bees = {
|
||||
bees = "bees"
|
||||
},
|
||||
bobblocks = {
|
||||
bobblocks_glass_block = "bobblocks_glassblock",
|
||||
bobblocks_health = "bobblocks_health",
|
||||
bobblocks_trap = "bobblocks_trap_fall",
|
||||
bobblocks_trap_large = "bobblocks_trap_fall_major"
|
||||
},
|
||||
fake_fire = {
|
||||
fake_fire_extinguish = "fire_extinguish"
|
||||
},
|
||||
homedecor = {
|
||||
homedecor_book_close = "homedecor_book_close",
|
||||
homedecor_doorbell = "homedecor_doorbell",
|
||||
homedecor_door_close = "homedecor_door_close",
|
||||
homedecor_door_open = "homedecor_door_open",
|
||||
homedecor_faucet = "homedecor_faucet",
|
||||
homedecor_gate = "homedecor_gate_open_close",
|
||||
homedecor_shower = "homedecor_shower",
|
||||
homedecor_telephone = "homedecor_telephone_ringing",
|
||||
homedecor_toilet = "homedecor_toilet_flush",
|
||||
homedecor_trash = "homedecor_trash_all",
|
||||
homedecor_insert_coin = "insert_coin",
|
||||
homedecor_toaster = "toaster"
|
||||
},
|
||||
infrastructure = {
|
||||
infrastructure_emergency_phone = "infrastructure_emergency_phone"
|
||||
},
|
||||
item_tweaks = {
|
||||
item_drop = "item_drop",
|
||||
item_pickup = "item_drop_pickup"
|
||||
},
|
||||
mesecons_button = {
|
||||
mesecons_button_push = "mesecons_button_push",
|
||||
mesecons_button_pop = "mesecons_button_pop",
|
||||
},
|
||||
mesecons_pistons = {
|
||||
mesecons_piston_extend = "piston_extend",
|
||||
mesecons_piston_retract = "piston_retract"
|
||||
},
|
||||
mesecons_walllever = {
|
||||
mesecons_lever = "mesecons_lever"
|
||||
},
|
||||
technic = {
|
||||
technic_chainsaw = "chainsaw",
|
||||
technic_mining_drill = "mining_drill",
|
||||
technic_laser_mk1 = "technic_laser_mk1",
|
||||
technic_laser_mk2 = "technic_laser_mk2",
|
||||
technic_laser_mk3 = "technic_laser_mk3",
|
||||
technic_prospector_hit = "technic_prospector_hit",
|
||||
technic_prospector_miss = "technic_prospector_miss"
|
||||
},
|
||||
teleport_request = {
|
||||
teleport_request_accept = "whoosh"
|
||||
},
|
||||
unified_inventory = {
|
||||
unified_inventory_day = "birds",
|
||||
unified_inventory_click = "click",
|
||||
unified_inventory_sethome = "dingdong",
|
||||
unified_inventory_refill = "electricity",
|
||||
unified_inventory_night = "owl",
|
||||
unified_inventory_turn_page_1 = "paperflip1",
|
||||
unified_inventory_turn_page_2 = "paperflip2",
|
||||
unified_inventory_home = "teleport",
|
||||
unified_inventory_trash = "trash",
|
||||
unified_inventory_clear = "trash_all"
|
||||
},
|
||||
carts = {
|
||||
carts_cart_moving = "carts_cart_moving"
|
||||
},
|
||||
default = {
|
||||
default_break_glass = "default_break_glass",
|
||||
default_chest_close = "default_chest_close",
|
||||
default_chest_open = "default_chest_open",
|
||||
default_cool_lava = "default_cool_lava",
|
||||
default_dig_choppy = "default_dig_choppy",
|
||||
default_dig_cracky = "default_dig_cracky",
|
||||
default_dig_crumbly = "default_dig_crumbly",
|
||||
default_dig_dig_immediate = "default_dig_dig_immediate",
|
||||
default_dig_metal = "default_dig_metal",
|
||||
default_dig_oddly_breakable_by_hand = "default_dig_oddly_breakable_by_hand",
|
||||
default_dig_snappy = "default_dig_snappy",
|
||||
default_dirt_footstep = "default_dirt_footstep",
|
||||
default_dug_metal = "default_dug_metal",
|
||||
default_dug_node = "default_dug_node",
|
||||
default_glass_footstep = "default_glass_footstep",
|
||||
default_grass_footstep = "default_grass_footstep",
|
||||
default_gravel_footstep = "default_gravel_footstep",
|
||||
default_hard_footstep = "default_hard_footstep",
|
||||
default_item_smoke = "default_item_smoke",
|
||||
default_metal_footstep = "default_metal_footstep",
|
||||
default_place_node = "default_place_node",
|
||||
default_place_node_hard = "default_place_node_hard",
|
||||
default_place_node_metal = "default_place_node_metal",
|
||||
default_sand_footstep = "default_sand_footstep",
|
||||
default_snow_footstep = "default_snow_footstep",
|
||||
default_tool_breaks = "default_tool_breaks",
|
||||
default_water_footstep = "default_water_footstep",
|
||||
default_wood_footstep = "default_wood_footstep"
|
||||
},
|
||||
doors = {
|
||||
doors_door_open = "doors_door_open",
|
||||
doors_door_close = "doors_door_close",
|
||||
doors_gate_open = "doors_fencegate_open",
|
||||
doors_gate_close = "doors_fencegate_close",
|
||||
doors_glass_door_open = "doors_glass_door_open",
|
||||
doors_glass_door_close = "doors_glass_door_close",
|
||||
doors_steel_door_open = "doors_steel_door_open",
|
||||
doors_steel_door_close = "doors_steel_door_close",
|
||||
}
|
||||
}
|
||||
|
||||
for mod,sounds in pairs(mod_sounds) do
|
||||
if minetest.get_modpath(mod) then
|
||||
for name,file in pairs(sounds) do
|
||||
valid_sounds[name] = file
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return valid_sounds
|
|
@ -0,0 +1,61 @@
|
|||
# Farming Redo Mod
|
||||
### by TenPlus1
|
||||
|
||||
https://forum.minetest.net/viewtopic.php?id=9019
|
||||
|
||||
Farming Redo is a simplified version of the built-in farming mod in minetest and comes with wheat, cotton, carrot, cucumber, potato and tomato to start out with which spawn throughout the map... new foods need only be planted on tilled soil so no seeds are required, original wheat and cotton will require seeds which are found inside normal and jungle grass...
|
||||
|
||||
This mod works by adding your new plant to the {growing=1} group and numbering the stages from _1 to as many stages as you like, but the underscore MUST be used only once in the node name to separate plant from stage number e.g.
|
||||
|
||||
"farming:cotton_1" through to "farming:cotton_8"
|
||||
"farming:wheat_1" through to "farming:wheat_8"
|
||||
"farming:cucumber_4" through to "farming:cucumber_4"
|
||||
|
||||
### Changelog:
|
||||
|
||||
- 1.37 - Added custom 'growth_check(pos, nodename) function for crop nodes to use (check cocoa.lua for example)
|
||||
- 1.36 - Added Beetroot, Beetroot Soup (6x beetroot, 1x bowl), fix register_plant() issue, add new recipes
|
||||
- 1.35 - Deprecated bronze/mese/diamond hoe's, added hoe bomb and deprecated hoe's as lucky block prizes
|
||||
- 1.34 - Added scarecrow Base (5x sticks in a cross shape)
|
||||
- 1.33 - Added cooking utensils (wooden bowl, saucepan, cooking pot, baking tray, skillet, cutting board, mortar & pestle, juicer, glass mixing bowl) for easier food crafts.
|
||||
- 1.32 - Added Pea plant (textures by Andrey01) - also added Wooden Bowl and Pea Soup crafts
|
||||
- 1.31 - Added Pineapple which can be found growing in savannah areas (place pineapple in crafting to obtain 5x rings to eat and a top for re-planting), also Salt which is made from cooking a bucket of water, added food groups so it's more compatible with Ruben's food mods.
|
||||
- 1.30 - Added Garlic, Pepper and Onions thanks to Grizzly Adam for sharing textures
|
||||
- 1.29 - Updating functions so requires Minetest 0.4.16 and above to run
|
||||
- 1.28 - Added chili peppers and bowl of chili, optimized code and fixed a few bugs, added porridge
|
||||
- 1.27 - Added meshoptions to api and wheat plants, added farming.rarity setting to spawn more/less crops on map, have separate cotton/string items (4x cotton = 1x wool, 2x cotton = 2x string)
|
||||
- 1.26 - Added support for [toolranks] mod when using hoe's
|
||||
- 1.25 - Added check for farming.conf setting file to disable specific crops globally (inside mod folder) or world specific (inside world folder)
|
||||
- 1.24 - Added Hemp which can be crafted into fibre, paper, string, rope and oil.
|
||||
- 1.23 - Huge code tweak and tidy done and added barley seeds to be found in dry grass, barley can make flour for bread also.
|
||||
- 1.22 - Added grape bushes at high climates which can be cultivated into grape vines using trellis (9 sticks).
|
||||
- 1.21 - Added auto-refill code for planting crops (thanks crabman77), also fixed a few bugs
|
||||
- 1.20b - Tidied code, made api compatible with new 0.4.13 changes and changed to soil texture overlays
|
||||
- 1.20 - NEW growing routine added that allows crops to grow while player is away doing other things (thanks prestidigitator)
|
||||
- 1.14 - Added Green Beans from Crops mod (thanks sofar), little bushels in the wild but need to be grown using beanpoles crafted with 4 sticks (2 either side)
|
||||
- 1.13 - Fixed seed double-placement glitch. Mapgen now uses 0.4.12+ for plant generation
|
||||
- 1.12 - Player cannot place seeds in protected area, also growing speeds changed to match defaults
|
||||
- 1.11 - Added Straw Bale, streamlined growing abm a little, fixed melon rotation bug with screwdriver
|
||||
- 1.10 - Added Blueberry Bush and Blueberry Muffins, also Pumpkin/Melon easier to pick up, added check for unloaded map
|
||||
- 1.09 - Corn now uses single nodes instead of 1 ontop of the other, Ethanol recipe is more expensive (requires 5 corn) and some code cleanup.
|
||||
- 1.08 - Added Farming Plus compatibility, plus can be removed and no more missing nodes
|
||||
- 1.07 - Added Rhubarb and Rhubarb Pie
|
||||
- 1.06 - register_hoe and register_plant added for compatibility with default farming mod, although any plants registered will use farming redo to grow
|
||||
- 1.05 - Added Raspberry Bushels and Raspberry Smoothie
|
||||
- 1.04 - Added Donuts... normal, chocolate and apple... and a few code cleanups and now compatible with jungletree's from MoreTrees mod
|
||||
- 1.03 - Bug fixes and more compatibility as drop-in replacement for built-in farming mod
|
||||
- 1.02 - Added farming.mod string to help other mods identify which farming mod is running, if it returns "redo" then you're using this one, "" empty is built-in mod
|
||||
- 1.01 - Crafting coffee or ethanol returns empty bucket/bottle, also Cocoa spawns a little rarer
|
||||
- 1.0 - Added Cocoa which randomly grows on jungle tree's, pods give cocoa beans which can be used to farm more pods on a jungle trunk or make Cookies which have been added (or other treats)
|
||||
- 0.9 - Added Pumpkin, Jack 'O Lantern, Pumpkin Slice and Sugar (a huge thanks to painterly.net for allowing me to use their textures)
|
||||
- 0.8 - Added Watermelon and Melon Slice
|
||||
- 0.7 - Added Coffee, Coffee Beans, Drinking Cup, Cold and Hot Cup of Coffee
|
||||
- 0.6 - Added Corn, Corn on the Cob... Also reworked Abm
|
||||
- 0.5 - Added Carrot, Cucumber, Potato (and Baked Potato), Tomato
|
||||
- 0.4 - Checks for Protection, also performance changes
|
||||
- 0.3 - Added Diamond and Mese hoe
|
||||
- 0.2 - Fixed check for wet soil
|
||||
- 0.1 - Fixed growing bug
|
||||
- 0.0 - Initial release
|
||||
|
||||
### Lucky Blocks: 30
|
|
@ -1,170 +0,0 @@
|
|||
Farming Redo Mod
|
||||
by TenPlus1
|
||||
|
||||
https://forum.minetest.net/viewtopic.php?id=9019
|
||||
|
||||
Farming Redo is a simplified version of the built-in farming mod in minetest and comes with wheat, cotton, carrot, cucumber, potato and tomato to start out with which spawn throughout the map... new foods need only be planted on tilled soil so no seeds are required, original wheat and cotton will require seeds which are found inside normal and jungle grass...
|
||||
|
||||
This mod works by adding your new plant to the {growing=1} group and numbering the stages from _1 to as many stages as you like, but the underscore MUST be used only once in the node name to separate plant from stage number e.g.
|
||||
|
||||
"farming:cotton_1" through to "farming:cotton_8"
|
||||
"farming:wheat_1" through to "farming:wheat_8"
|
||||
"farming:cucumber_4" through to "farming:cucumber_4"
|
||||
|
||||
Changelog:
|
||||
|
||||
1.36 - Added Beetroot, Beetroot Soup (6x beetroot, 1x bowl)
|
||||
1.35 - Deprecated bronze/mese/diamond hoe's, added hoe bomb and deprecated hoe's as lucky block prizes
|
||||
1.34 - Added scarecrow Base (5x sticks in a cross shape)
|
||||
1.33 - Added cooking utensils (wooden bowl, saucepan, cooking pot, baking tray, skillet, cutting board, mortar & pestle, juicer, glass mixing bowl) for easier food crafts.
|
||||
1.32 - Added Pea plant (textures by Andrey01) - also added Wooden Bowl and Pea Soup crafts
|
||||
1.31 - Added Pineapple which can be found growing in savannah areas (place pineapple in crafting to obtain 5x rings to eat and a top for re-planting), also Salt which is made from cooking a bucket of water, added food groups so it's more compatible with Ruben's food mods.
|
||||
1.30 - Added Garlic, Pepper and Onions thanks to Grizzly Adam for sharing textures
|
||||
1.29 - Updating functions so requires Minetest 0.4.16 and above to run
|
||||
1.28 - Added chili peppers and bowl of chili, optimized code and fixed a few bugs, added porridge
|
||||
1.27 - Added meshoptions to api and wheat plants, added farming.rarity setting to spawn more/less crops on map, have separate cotton/string items (4x cotton = 1x wool, 2x cotton = 2x string)
|
||||
1.26 - Added support for [toolranks] mod when using hoe's
|
||||
1.25 - Added check for farming.conf setting file to disable specific crops globally (inside mod folder) or world specific (inside world folder)
|
||||
1.24 - Added Hemp which can be crafted into fibre, paper, string, rope and oil.
|
||||
1.23 - Huge code tweak and tidy done and added barley seeds to be found in dry grass, barley can make flour for bread also.
|
||||
1.22 - Added grape bushes at high climates which can be cultivated into grape vines using trellis (9 sticks).
|
||||
1.21 - Added auto-refill code for planting crops (thanks crabman77), also fixed a few bugs
|
||||
1.20b- Tidied code, made api compatible with new 0.4.13 changes and changed to soil texture overlays
|
||||
1.20 - NEW growing routine added that allows crops to grow while player is away doing other things (thanks prestidigitator)
|
||||
1.14 - Added Green Beans from Crops mod (thanks sofar), little bushels in the wild but need to be grown using beanpoles crafted with 4 sticks (2 either side)
|
||||
1.13 - Fixed seed double-placement glitch. Mapgen now uses 0.4.12+ for plant generation
|
||||
1.12 - Player cannot place seeds in protected area, also growing speeds changed to match defaults
|
||||
1.11 - Added Straw Bale, streamlined growing abm a little, fixed melon rotation bug with screwdriver
|
||||
1.10 - Added Blueberry Bush and Blueberry Muffins, also Pumpkin/Melon easier to pick up, added check for unloaded map
|
||||
1.09 - Corn now uses single nodes instead of 1 ontop of the other, Ethanol recipe is more expensive (requires 5 corn) and some code cleanup.
|
||||
1.08 - Added Farming Plus compatibility, plus can be removed and no more missing nodes
|
||||
1.07 - Added Rhubarb and Rhubarb Pie
|
||||
1.06 - register_hoe and register_plant added for compatibility with default farming mod, although any plants registered will use farming redo to grow
|
||||
1.05 - Added Raspberry Bushels and Raspberry Smoothie
|
||||
1.04 - Added Donuts... normal, chocolate and apple... and a few code cleanups and now compatible with jungletree's from MoreTrees mod
|
||||
1.03 - Bug fixes and more compatibility as drop-in replacement for built-in farming mod
|
||||
1.02 - Added farming.mod string to help other mods identify which farming mod is running, if it returns "redo" then you're using this one, "" empty is built-in mod
|
||||
1.01 - Crafting coffee or ethanol returns empty bucket/bottle, also Cocoa spawns a little rarer
|
||||
1.0 - Added Cocoa which randomly grows on jungle tree's, pods give cocoa beans which can be used to farm more pods on a jungle trunk or make Cookies which have been added (or other treats)
|
||||
0.9 - Added Pumpkin, Jack 'O Lantern, Pumpkin Slice and Sugar
|
||||
(a huge thanks to painterly.net for allowing me to use their textures)
|
||||
0.8 - Added Watermelon and Melon Slice
|
||||
0.7 - Added Coffee, Coffee Beans, Drinking Cup, Cold and Hot Cup of Coffee
|
||||
0.6 - Added Corn, Corn on the Cob... Also reworked Abm
|
||||
0.5 - Added Carrot, Cucumber, Potato (and Baked Potato), Tomato
|
||||
0.4 - Checks for Protection, also performance changes
|
||||
0.3 - Added Diamond and Mese hoe
|
||||
0.2 - Fixed check for wet soil
|
||||
0.1 - Fixed growing bug
|
||||
0.0 - Initial release
|
||||
|
||||
Lucky Blocks: 28
|
||||
|
||||
|
||||
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 Napiophelios (CC BY-SA 3.0):
|
||||
farming_cotton.png
|
||||
|
||||
Created by Calinou (License: CC BY-SA):
|
||||
farming_tool_bronzehoe.png
|
||||
farming_tool_steelhoe.png
|
||||
farming_tool_stonehoe.png
|
||||
farming_tool_woodhoe.png
|
||||
farming_tool_mesehoe.png
|
||||
farming_tool_diamondhoe.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
|
||||
|
||||
Created by Doc (License: WTFPL):
|
||||
farming_cucumber.png
|
||||
farming_cucumber_1.png
|
||||
farming_cucumber_2.png
|
||||
farming_cucumber_3.png
|
||||
farming_cucumber_4.png
|
||||
farming_potato.png
|
||||
farming_potato_1.png
|
||||
farming_potato_2.png
|
||||
farming_potato_3.png
|
||||
farming_potato_4.png
|
||||
farming_raspberries.png
|
||||
farming_raspberry_1.png
|
||||
farming_raspberry_2.png
|
||||
farming_raspberry_3.png
|
||||
farming_raspberry_4.png
|
||||
|
||||
Created by Gambit:
|
||||
default_junglegrass.png
|
||||
farming_carrot.png
|
||||
farming_carrot_1.png
|
||||
farming_carrot_2.png
|
||||
farming_carrot_3.png
|
||||
farming_carrot_4.png
|
||||
farming_carrot_5.png
|
||||
farming_carrot_6.png
|
||||
farming_carrot_7.png
|
||||
farming_carrot_8.png
|
||||
|
||||
Created by JoseTheCrafter and edited by TenPlus1:
|
||||
farming_tomato.png
|
||||
farming_tomato_1.png
|
||||
farming_tomato_2.png
|
||||
farming_tomato_3.png
|
||||
farming_tomato_4.png
|
||||
farming_tomato_5.png
|
||||
farming_tomato_6.png
|
||||
farming_tomato_7.png
|
||||
farming_tomato_8.png
|
||||
|
||||
Created by GeMinecraft and edited by TenPlus1:
|
||||
farming_corn.png
|
||||
farming_corn_cob.png
|
||||
farming_corn_1.png
|
||||
farming_corn_2.png
|
||||
farming_corn_3.png
|
||||
farming_corn_4.png
|
||||
farming_corn_5.png
|
||||
farming_corn_6.png
|
||||
farming_corn_7.png
|
||||
farming_corn_8.png
|
||||
|
||||
Created by TenPlus1
|
||||
farming_cocoa_1.png
|
||||
farming_cocoa_2.png
|
||||
farming_cocoa_3.png
|
||||
farming_cocoa_beans.png
|
||||
farming_cookie.png
|
||||
farming_raspberry_smoothie.png
|
||||
farming_rhubarb_1.png
|
||||
farming_rhubarb_2.png
|
||||
farming_rhubarb_3.png
|
||||
farming_rhubarb.png
|
||||
farming_rhubarb_pie.png
|
||||
farming_hemp*.png
|
|
@ -0,0 +1,53 @@
|
|||
Farming API
|
||||
-----------
|
||||
|
||||
The farming API allows you to easily register plants and hoes.
|
||||
|
||||
`farming.register_hoe(name, hoe definition)`
|
||||
* Register a new hoe, see [#hoe definition]
|
||||
|
||||
`farming.register_plant(name, Plant definition)`
|
||||
* Register a new growing plant, see [#Plant definition]
|
||||
|
||||
`farming.registered_plants[name] = definition`
|
||||
* Table of registered plants, indexed by plant name
|
||||
|
||||
### Hoe Definition
|
||||
|
||||
|
||||
{
|
||||
description = "", -- Description for tooltip
|
||||
inventory_image = "unknown_item.png", -- Image to be used as wield- and inventory image
|
||||
max_uses = 30, -- Uses until destroyed
|
||||
material = "", -- Material for recipes
|
||||
recipe = { -- Craft recipe, if material isn't used
|
||||
{"air", "air", "air"},
|
||||
{"", "group:stick"},
|
||||
{"", "group:stick"},
|
||||
}
|
||||
}
|
||||
|
||||
### Plant definition
|
||||
|
||||
{
|
||||
description = "", -- Description of seed item
|
||||
inventory_image = "unknown_item.png", -- Image to be used as seed's wield- and inventory image
|
||||
steps = 8, -- How many steps the plant has to grow, until it can be harvested
|
||||
-- ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber)
|
||||
minlight = 13, -- Minimum light to grow
|
||||
maxlight = default.LIGHT_MAX -- Maximum light to grow
|
||||
}
|
||||
|
||||
Note: Any crops registered with the above function will use the new growing routines, also if crops are manually added with the {growing=1} group they will also grow.
|
||||
|
||||
### Crop functions
|
||||
|
||||
If a mod registers nodes to be used as crops using the {growing=1} group then an additional function can be used for custom growth checks instead of the standard 'are we above wet soil'.
|
||||
|
||||
growth_check = function(pos, node_name)
|
||||
-- check surrounding for jungle tree
|
||||
if minetest.find_node_near(pos, 1, {"default:jungletree"}) then
|
||||
return false -- place next growth stage
|
||||
end
|
||||
return true -- condition not met, skip next growth stage until next check
|
||||
end,
|
|
@ -1,3 +1,7 @@
|
|||
|
||||
-- wait until mods are finished loading
|
||||
minetest.after(0, function()
|
||||
|
||||
-- add food group to default apple and brown mushroom
|
||||
minetest.override_item("default:apple", {
|
||||
groups = {food_apple = 1, fleshy = 3, dig_immediate = 3, flammable = 2,
|
||||
|
@ -12,7 +16,7 @@ minetest.override_item("flowers:mushroom_brown", {
|
|||
end
|
||||
|
||||
-- is Ethereal mod installed?
|
||||
local eth = minetest.get_modpath("ethereal") or nil
|
||||
local eth = minetest.get_modpath("ethereal")
|
||||
|
||||
-- Banana
|
||||
if eth then
|
||||
|
@ -140,9 +144,11 @@ else
|
|||
minetest.register_alias("farming_plus:strawberry_2", "farming:raspberry_2")
|
||||
minetest.register_alias("farming_plus:strawberry_3", "farming:raspberry_3")
|
||||
minetest.register_alias("farming_plus:strawberry", "farming:raspberry_4")
|
||||
|
||||
end
|
||||
|
||||
minetest.register_alias("bushes:strawberry", "ethereal:strawberry")
|
||||
|
||||
|
||||
-- Tomato
|
||||
minetest.register_alias("farming_plus:tomato_seed", "farming:tomato")
|
||||
minetest.register_alias("farming_plus:tomato_item", "farming:tomato")
|
||||
|
@ -154,7 +160,7 @@ minetest.register_alias("farming_plus:tomato", "farming:tomato_8")
|
|||
-- Weed
|
||||
minetest.register_alias("farming:weed", "default:grass_2")
|
||||
|
||||
-- Classic Bushes compatibility
|
||||
--[[ Classic Bushes compatibility
|
||||
if minetest.get_modpath("bushes_classic") then
|
||||
|
||||
if eth then
|
||||
|
@ -165,5 +171,6 @@ if minetest.get_modpath("bushes_classic") then
|
|||
|
||||
minetest.register_alias("bushes:blueberry", "farming:blueberries")
|
||||
minetest.register_alias("bushes:raspberry", "farming:raspberries")
|
||||
end]]
|
||||
|
||||
end
|
||||
end)
|
||||
|
|
|
@ -34,7 +34,7 @@ minetest.register_craft({
|
|||
"farming:barley", "farming:barley", "farming:barley",
|
||||
"farming:barley", "farming:mortar_pestle"
|
||||
},
|
||||
replacements = {{"farming:mortar_pestle", "farming:mortar_pestle"}},
|
||||
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}},
|
||||
})
|
||||
|
||||
-- barley definition
|
|
@ -27,10 +27,18 @@ local function place_beans(itemstack, placer, pointed_thing, plantname)
|
|||
-- am I right-clicking on something that has a custom on_place set?
|
||||
-- thanks to Krock for helping with this issue :)
|
||||
local def = minetest.registered_nodes[under.name]
|
||||
if def and def.on_rightclick then
|
||||
if placer and def and def.on_rightclick then
|
||||
return def.on_rightclick(pt.under, under, placer, itemstack)
|
||||
end
|
||||
|
||||
-- is player planting crop?
|
||||
local name = placer and placer:get_player_name() or ""
|
||||
|
||||
-- check for protection
|
||||
if minetest.is_protected(pt.under, name) then
|
||||
return
|
||||
end
|
||||
|
||||
-- check if pointing at bean pole
|
||||
if under.name ~= "farming:beanpole" then
|
||||
return
|
||||
|
@ -41,7 +49,7 @@ local function place_beans(itemstack, placer, pointed_thing, plantname)
|
|||
|
||||
minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0})
|
||||
|
||||
if not farming.is_creative(placer:get_player_name()) then
|
||||
if placer or not farming.is_creative(placer:get_player_name()) then
|
||||
|
||||
itemstack:take_item()
|
||||
|
||||
|
@ -119,7 +127,7 @@ minetest.register_node("farming:beanpole", {
|
|||
return def.on_rightclick(pt.under, under, placer, itemstack)
|
||||
end
|
||||
|
||||
if minetest.is_protected(pt.under, placer:get_player_name()) then
|
||||
if minetest.is_protected(pt.above, placer:get_player_name()) then
|
||||
return
|
||||
end
|
||||
|
|
@ -50,7 +50,7 @@ local crop_def = {
|
|||
drop = "",
|
||||
selection_box = farming.select,
|
||||
groups = {
|
||||
snappy = 3, flammable = 2, flora = 1, attached_node = 1,
|
||||
snappy = 3, flammable = 2, plant = 1, attached_node = 1,
|
||||
not_in_creative_inventory = 1, growing = 1
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults()
|
|
@ -5,7 +5,7 @@ local S = farming.intllib
|
|||
minetest.register_craftitem("farming:blueberries", {
|
||||
description = S("Blueberries"),
|
||||
inventory_image = "farming_blueberries.png",
|
||||
groups = {food_blueberries = 1, flammable = 2},
|
||||
groups = {food_blueberries = 1, food_blueberry = 1, food_berry = 1, flammable = 2},
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
return farming.place_seed(itemstack, placer, pointed_thing, "farming:blueberry_1")
|
||||
end,
|
||||
|
@ -27,6 +27,23 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
-- Blueberry Pie
|
||||
|
||||
minetest.register_craftitem("farming:blueberry_pie", {
|
||||
description = S("Blueberry Pie"),
|
||||
inventory_image = "farming_blueberry_pie.png",
|
||||
on_use = minetest.item_eat(6),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:blueberry_pie",
|
||||
type = "shapeless",
|
||||
recipe = {
|
||||
"group:food_flour", "group:food_sugar",
|
||||
"group:food_blueberries", "group:food_baking_tray"
|
||||
},
|
||||
})
|
||||
|
||||
-- blueberry definition
|
||||
local crop_def = {
|
||||
drawtype = "plantlike",
|
|
@ -21,7 +21,7 @@ local function place_cocoa(itemstack, placer, pointed_thing, plantname)
|
|||
-- am I right-clicking on something that has a custom on_place set?
|
||||
-- thanks to Krock for helping with this issue :)
|
||||
local def = minetest.registered_nodes[under.name]
|
||||
if def and def.on_rightclick then
|
||||
if placer and def and def.on_rightclick then
|
||||
return def.on_rightclick(pt.under, under, placer, itemstack)
|
||||
end
|
||||
|
||||
|
@ -31,12 +31,20 @@ local function place_cocoa(itemstack, placer, pointed_thing, plantname)
|
|||
return
|
||||
end
|
||||
|
||||
-- is player planting crop?
|
||||
local name = placer and placer:get_player_name() or ""
|
||||
|
||||
-- check for protection
|
||||
if minetest.is_protected(pt.above, name) then
|
||||
return
|
||||
end
|
||||
|
||||
-- add the node and remove 1 item from the itemstack
|
||||
minetest.set_node(pt.above, {name = plantname})
|
||||
|
||||
minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0})
|
||||
|
||||
if not farming.is_creative(placer:get_player_name()) then
|
||||
if placer and not farming.is_creative(placer:get_player_name()) then
|
||||
|
||||
itemstack:take_item()
|
||||
|
||||
|
@ -119,7 +127,13 @@ local crop_def = {
|
|||
snappy = 3, flammable = 2, plant = 1, growing = 1,
|
||||
not_in_creative_inventory=1, leafdecay = 1, leafdecay_drop = 1
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults()
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
growth_check = function(pos, node_name)
|
||||
if minetest.find_node_near(pos, 1, {"default:jungletree"}) then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end,
|
||||
}
|
||||
|
||||
-- stage 1
|
||||
|
@ -141,6 +155,7 @@ minetest.register_node("farming:cocoa_3", table.copy(crop_def))
|
|||
-- stage 4 (final)
|
||||
crop_def.tiles = {"farming_cocoa_4.png"}
|
||||
crop_def.groups.growing = 0
|
||||
crop_def.growth_check = nil
|
||||
crop_def.drop = {
|
||||
items = {
|
||||
{items = {'farming:cocoa_beans 2'}, rarity = 1},
|
|
@ -11,36 +11,10 @@ minetest.register_craftitem("farming:coffee_beans", {
|
|||
end,
|
||||
})
|
||||
|
||||
|
||||
-- drinking cup
|
||||
minetest.register_node("farming:drinking_cup", {
|
||||
description = S("Drinking Cup (empty)"),
|
||||
drawtype = "plantlike",
|
||||
tiles = {"vessels_drinking_cup.png"},
|
||||
inventory_image = "vessels_drinking_cup.png",
|
||||
wield_image = "vessels_drinking_cup.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25}
|
||||
},
|
||||
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "farming:drinking_cup 5",
|
||||
recipe = {
|
||||
{ "default:glass", "", "default:glass" },
|
||||
{"", "default:glass",""},
|
||||
}
|
||||
})
|
||||
|
||||
-- cold cup of coffee
|
||||
minetest.register_node("farming:coffee_cup", {
|
||||
description = S("Cold Cup of Coffee"),
|
||||
drawtype = "plantlike",
|
||||
description = S("Cup of Coffee"),
|
||||
drawtype = "torchlike", --"plantlike",
|
||||
tiles = {"farming_coffee_cup.png"},
|
||||
inventory_image = "farming_coffee_cup.png",
|
||||
wield_image = "farming_coffee_cup.png",
|
||||
|
@ -51,41 +25,22 @@ minetest.register_node("farming:coffee_cup", {
|
|||
fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25}
|
||||
},
|
||||
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
|
||||
on_use = minetest.item_eat(2, "farming:drinking_cup"),
|
||||
on_use = minetest.item_eat(2, "vessels:drinking_glass"),
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_alias("farming:coffee_cup_hot", "farming:coffee_cup")
|
||||
minetest.register_alias("farming:drinking_cup", "vessels:drinking_glass")
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "farming:coffee_cup",
|
||||
recipe = {
|
||||
{"farming:drinking_cup", "group:food_coffee","bucket:bucket_water"},
|
||||
},
|
||||
replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
cooktime = 5,
|
||||
output = "farming:coffee_cup_hot",
|
||||
recipe = "farming:coffee_cup"
|
||||
})
|
||||
|
||||
-- hot cup of coffee
|
||||
minetest.register_node("farming:coffee_cup_hot", {
|
||||
description = S("Hot Cup of Coffee"),
|
||||
drawtype = "plantlike",
|
||||
tiles = {"farming_coffee_cup_hot.png"},
|
||||
inventory_image = "farming_coffee_cup_hot.png",
|
||||
wield_image = "farming_coffee_cup_hot.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25}
|
||||
},
|
||||
groups = {vessel = 1, dig_immediate = 3, attached_node = 1},
|
||||
on_use = minetest.item_eat(3, "farming:drinking_cup"),
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
type = "shapeless",
|
||||
recipe = {"vessels:drinking_glass", "group:food_coffee",
|
||||
"bucket:bucket_water", "group:food_saucepan"},
|
||||
replacements = {
|
||||
{"bucket:bucket_water", "bucket:bucket_empty"},
|
||||
{"group:food_saucepan", "farming:saucepan"},
|
||||
}
|
||||
})
|
||||
|
||||
-- coffee definition
|
|
@ -21,6 +21,7 @@ minetest.register_craftitem("farming:corn", {
|
|||
minetest.register_craftitem("farming:corn_cob", {
|
||||
description = S("Corn on the Cob"),
|
||||
inventory_image = "farming_corn_cob.png",
|
||||
groups = {food_corn_cooked = 1, flammable = 2},
|
||||
on_use = minetest.item_eat(5),
|
||||
})
|
||||
|
||||
|
@ -31,6 +32,25 @@ minetest.register_craft({
|
|||
recipe = "group:food_corn"
|
||||
})
|
||||
|
||||
-- cornstarch
|
||||
minetest.register_craftitem("farming:cornstarch", {
|
||||
description = S("Cornstarch"),
|
||||
inventory_image = "farming_cornstarch.png",
|
||||
groups = {food_cornstarch = 1, flammable = 2},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:cornstarch",
|
||||
recipe = {
|
||||
{"group:food_mortar_pestle", "group:food_corn_cooked", "group:food_baking_tray"},
|
||||
{"", "group:food_bowl", ""},
|
||||
},
|
||||
replacements = {
|
||||
{"group:food_mortar_pestle", "farming:mortar_pestle"},
|
||||
{"group:food_baking_tray", "farming:baking_tray"},
|
||||
}
|
||||
})
|
||||
|
||||
-- ethanol (thanks to JKMurray for this idea)
|
||||
minetest.register_node("farming:bottle_ethanol", {
|
||||
description = S("Bottle of Ethanol"),
|
|
@ -58,8 +58,7 @@ minetest.register_node("farming:garlic_braid", {
|
|||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.13, -0.45, 0.5, 0.13, 0.45, 0.24,
|
||||
},
|
||||
{-0.13, -0.45, 0.5, 0.13, 0.45, 0.24},
|
||||
},
|
||||
}
|
||||
})
|
||||
|
@ -93,7 +92,7 @@ local crop_def = {
|
|||
drop = "",
|
||||
selection_box = farming.select,
|
||||
groups = {
|
||||
snappy = 3, flammable = 3, flora = 1, attached_node = 1,
|
||||
snappy = 3, flammable = 3, plant = 1, attached_node = 1,
|
||||
not_in_creative_inventory = 1, growing = 1
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults()
|
|
@ -22,10 +22,18 @@ local function place_grapes(itemstack, placer, pointed_thing, plantname)
|
|||
-- am I right-clicking on something that has a custom on_place set?
|
||||
-- thanks to Krock for helping with this issue :)
|
||||
local def = minetest.registered_nodes[under.name]
|
||||
if def and def.on_rightclick then
|
||||
if placer and def and def.on_rightclick then
|
||||
return def.on_rightclick(pt.under, under, placer, itemstack)
|
||||
end
|
||||
|
||||
-- is player planting seed?
|
||||
local name = placer and placer:get_player_name() or ""
|
||||
|
||||
-- check for protection
|
||||
if minetest.is_protected(pt.under, name) then
|
||||
return
|
||||
end
|
||||
|
||||
-- check if pointing at trellis
|
||||
if under.name ~= "farming:trellis" then
|
||||
return
|
||||
|
@ -36,7 +44,7 @@ local function place_grapes(itemstack, placer, pointed_thing, plantname)
|
|||
|
||||
minetest.sound_play("default_place_node", {pos = pt.under, gain = 1.0})
|
||||
|
||||
if not farming.is_creative(placer:get_player_name()) then
|
||||
if placer and not farming.is_creative(placer:get_player_name()) then
|
||||
|
||||
itemstack:take_item()
|
||||
|
||||
|
@ -114,7 +122,7 @@ minetest.register_node("farming:trellis", {
|
|||
return def.on_rightclick(pt.under, under, placer, itemstack)
|
||||
end
|
||||
|
||||
if minetest.is_protected(pt.under, placer:get_player_name()) then
|
||||
if minetest.is_protected(pt.above, placer:get_player_name()) then
|
||||
return
|
||||
end
|
||||
|
|
@ -111,6 +111,27 @@ minetest.register_craft( {
|
|||
},
|
||||
})
|
||||
|
||||
-- check and register stairs
|
||||
if minetest.global_exists("stairs") then
|
||||
|
||||
if stairs.mod and stairs.mod == "redo" then
|
||||
|
||||
stairs.register_all("hemp_block", "farming:hemp_block",
|
||||
{snappy = 1, flammable = 2},
|
||||
{"farming_hemp_block.png"},
|
||||
"Hemp Block",
|
||||
default.node_sound_leaves_defaults())
|
||||
else
|
||||
|
||||
stairs.register_stair_and_slab("hemp_block", "farming:hemp_block",
|
||||
{snappy = 1, flammable = 2},
|
||||
{"farming_hemp_block.png"},
|
||||
"Hemp Block Stair",
|
||||
"Hemp Block Slab",
|
||||
default.node_sound_leaves_defaults())
|
||||
end
|
||||
end
|
||||
|
||||
-- paper
|
||||
minetest.register_craft( {
|
||||
output = "default:paper",
|
|
@ -32,7 +32,7 @@ local crop_def = {
|
|||
drop = "",
|
||||
selection_box = farming.select,
|
||||
groups = {
|
||||
snappy = 3, flammable = 3, flora = 1, attached_node = 1,
|
||||
snappy = 3, flammable = 3, plant = 1, attached_node = 1,
|
||||
not_in_creative_inventory = 1, growing = 1
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults()
|
|
@ -53,7 +53,7 @@ local crop_def = {
|
|||
drop = "",
|
||||
selection_box = farming.select,
|
||||
groups = {
|
||||
snappy = 3, flammable = 2, flora = 1, attached_node = 1,
|
||||
snappy = 3, flammable = 2, plant = 1, attached_node = 1,
|
||||
not_in_creative_inventory = 1, growing = 1
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults()
|
|
@ -37,13 +37,14 @@ minetest.register_node("farming:pepper_ground", {
|
|||
inventory_image = "crops_pepper_ground.png",
|
||||
wield_image = "crops_pepper_ground.png",
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 0.8,
|
||||
paramtype = "light",
|
||||
tiles = {"crops_pepper_ground.png"},
|
||||
groups = {
|
||||
vessel = 1, food_pepper_ground = 1,
|
||||
dig_immediate = 3, attached_node = 1
|
||||
},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
sounds = default.node_sound_defaults(),
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
|
||||
|
@ -54,7 +55,7 @@ minetest.register_craft( {
|
|||
output = "farming:pepper_ground",
|
||||
type = "shapeless",
|
||||
recipe = {"group:food_peppercorn", "vessels:glass_bottle", "farming:mortar_pestle"},
|
||||
replacements = {{"farming:mortar_pestle", "farming:mortar_pestle"}},
|
||||
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}},
|
||||
})
|
||||
|
||||
-- crop definition
|
||||
|
@ -71,7 +72,7 @@ local crop_def = {
|
|||
drop = "",
|
||||
selection_box = farming.select,
|
||||
groups = {
|
||||
snappy = 3, flammable = 3, flora = 1, attached_node = 1,
|
||||
snappy = 3, flammable = 3, plant = 1, attached_node = 1,
|
||||
not_in_creative_inventory = 1, growing = 1
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults()
|
|
@ -56,16 +56,19 @@ minetest.register_craft({
|
|||
"group:food_pineapple_ring", "group:food_pineapple_ring",
|
||||
"farming:juicer"},
|
||||
replacements = {
|
||||
{"farming:juicer", "farming:juicer"},
|
||||
{"group:food_juicer", "farming:juicer"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:pineapple_juice 2",
|
||||
type = "shapeless",
|
||||
recipe = {"vessels:drinking_glass", "group:food_pineapple", "farming:juicer"},
|
||||
recipe = {
|
||||
"vessels:drinking_glass", "vessels:drinking_glass",
|
||||
"group:food_pineapple", "farming:juicer"
|
||||
},
|
||||
replacements = {
|
||||
{"farming:juicer", "farming:juicer"},
|
||||
{"group:food_juicer", "farming:juicer"},
|
||||
},
|
||||
})
|
||||
|
|
@ -31,6 +31,22 @@ minetest.register_craft({
|
|||
recipe = "group:food_potato"
|
||||
})
|
||||
|
||||
-- Potato and cucumber Salad
|
||||
minetest.register_craftitem("farming:potato_salad", {
|
||||
description = S("Cucumber and Potato Salad"),
|
||||
inventory_image = "farming_potato_salad.png",
|
||||
on_use = minetest.item_eat(10, "farming:bowl"),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:potato_salad",
|
||||
recipe = {
|
||||
{"group:food_cucumber"},
|
||||
{"farming:baked_potato"},
|
||||
{"group:food_bowl"},
|
||||
}
|
||||
})
|
||||
|
||||
-- potato definition
|
||||
local crop_def = {
|
||||
drawtype = "plantlike",
|
|
@ -5,7 +5,7 @@ local S = farming.intllib
|
|||
minetest.register_craftitem("farming:raspberries", {
|
||||
description = S("Raspberries"),
|
||||
inventory_image = "farming_raspberries.png",
|
||||
groups = {food_raspberries = 1, flammable = 2},
|
||||
groups = {food_raspberries = 1, food_raspberry = 1, food_berry = 1, flammable = 2},
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
return farming.place_seed(itemstack, placer, pointed_thing, "farming:raspberry_1")
|
||||
end,
|
|
@ -26,7 +26,7 @@ minetest.register_craft({
|
|||
{"group:food_rhubarb", "group:food_rhubarb", "group:food_rhubarb"},
|
||||
{"group:food_wheat", "group:food_wheat", "group:food_wheat"},
|
||||
},
|
||||
replacements = {{"farming:baking_tray", "farming:baking_tray"}}
|
||||
replacements = {{"group:food_baking_tray", "farming:baking_tray"}}
|
||||
})
|
||||
|
||||
-- rhubarb definition
|
|
@ -51,6 +51,27 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
-- check and register stairs
|
||||
if minetest.global_exists("stairs") then
|
||||
|
||||
if stairs.mod and stairs.mod == "redo" then
|
||||
|
||||
stairs.register_all("straw", "farming:straw",
|
||||
{snappy = 3, flammable = 4},
|
||||
{"farming_straw.png"},
|
||||
"Straw",
|
||||
default.node_sound_leaves_defaults())
|
||||
else
|
||||
|
||||
stairs.register_stair_and_slab("straw", "farming:straw",
|
||||
{snappy = 3, flammable = 4},
|
||||
{"farming_straw.png"},
|
||||
"Straw Stair",
|
||||
"Straw Slab",
|
||||
default.node_sound_leaves_defaults())
|
||||
end
|
||||
end
|
||||
|
||||
-- flour
|
||||
minetest.register_craftitem("farming:flour", {
|
||||
description = S("Flour"),
|
||||
|
@ -65,7 +86,7 @@ minetest.register_craft({
|
|||
"farming:wheat", "farming:wheat", "farming:wheat",
|
||||
"farming:wheat", "farming:mortar_pestle"
|
||||
},
|
||||
replacements = {{"farming:mortar_pestle", "farming:mortar_pestle"}},
|
||||
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}},
|
||||
})
|
||||
|
||||
-- bread
|
||||
|
@ -95,7 +116,7 @@ minetest.register_craft({
|
|||
type = "shapeless",
|
||||
output = "farming:bread_slice 5",
|
||||
recipe = {"farming:bread", "group:food_cutting_board"},
|
||||
replacements = {{"farming:cutting_board", "farming:cutting_board"}},
|
||||
replacements = {{"group:food_cutting_board", "farming:cutting_board"}},
|
||||
})
|
||||
|
||||
-- toast
|
|
@ -1,4 +1,5 @@
|
|||
default
|
||||
stairs?
|
||||
intllib?
|
||||
lucky_block?
|
||||
toolranks?
|
||||
|
|
|
@ -1,76 +0,0 @@
|
|||
|
||||
local S = farming.intllib
|
||||
|
||||
-- Donut (thanks to Bockwurst for making the donut images)
|
||||
minetest.register_craftitem("farming:donut", {
|
||||
description = S("Donut"),
|
||||
inventory_image = "farming_donut.png",
|
||||
on_use = minetest.item_eat(4),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:donut 3",
|
||||
recipe = {
|
||||
{"", "group:food_wheat", ""},
|
||||
{"group:food_wheat", "group:food_sugar", "group:food_wheat"},
|
||||
{"", "group:food_wheat", ""},
|
||||
}
|
||||
})
|
||||
|
||||
-- Chocolate Donut
|
||||
minetest.register_craftitem("farming:donut_chocolate", {
|
||||
description = S("Chocolate Donut"),
|
||||
inventory_image = "farming_donut_chocolate.png",
|
||||
on_use = minetest.item_eat(6),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:donut_chocolate",
|
||||
recipe = {
|
||||
{'group:food_cocoa'},
|
||||
{'farming:donut'},
|
||||
}
|
||||
})
|
||||
|
||||
-- Apple Donut
|
||||
minetest.register_craftitem("farming:donut_apple", {
|
||||
description = S("Apple Donut"),
|
||||
inventory_image = "farming_donut_apple.png",
|
||||
on_use = minetest.item_eat(6),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:donut_apple",
|
||||
recipe = {
|
||||
{'default:apple'},
|
||||
{'farming:donut'},
|
||||
}
|
||||
})
|
||||
|
||||
-- Porridge Oats
|
||||
minetest.register_craftitem("farming:porridge", {
|
||||
description = S("Porridge"),
|
||||
inventory_image = "farming_porridge.png",
|
||||
on_use = minetest.item_eat(6, "farming:bowl"),
|
||||
})
|
||||
|
||||
minetest.after(0, function()
|
||||
|
||||
local fluid = "bucket:bucket_water"
|
||||
local fluid_return = "bucket:bucket_water"
|
||||
|
||||
if minetest.get_modpath("mobs") and mobs and mobs.mod == "redo" then
|
||||
fluid = "group:food_milk"
|
||||
fluid_return = "mobs:bucket_milk"
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "farming:porridge",
|
||||
recipe = {
|
||||
"group:food_barley", "group:food_barley", "group:food_wheat",
|
||||
"group:food_wheat", "group:food_bowl", fluid
|
||||
},
|
||||
replacements = {{fluid_return, "bucket:bucket_empty"}}
|
||||
})
|
||||
end)
|
|
@ -13,7 +13,6 @@ farming.cucumber = true
|
|||
farming.corn = true
|
||||
farming.coffee = true
|
||||
farming.melon = true
|
||||
farming.sugar = true
|
||||
farming.pumpkin = true
|
||||
farming.cocoa = true
|
||||
farming.raspberry = true
|
||||
|
@ -30,7 +29,6 @@ farming.pepper = true
|
|||
farming.pineapple = true
|
||||
farming.peas = true
|
||||
farming.beetroot = true
|
||||
farming.donuts = true
|
||||
|
||||
-- rarety of crops on map, default is 0.001 (higher number = more crops)
|
||||
farming.rarety = 0.002
|
||||
|
|
|
@ -0,0 +1,188 @@
|
|||
|
||||
local S = farming.intllib
|
||||
|
||||
--= Sugar
|
||||
|
||||
minetest.register_craftitem("farming:sugar", {
|
||||
description = S("Sugar"),
|
||||
inventory_image = "farming_sugar.png",
|
||||
groups = {food_sugar = 1, flammable = 3},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
cooktime = 3,
|
||||
output = "farming:sugar 2",
|
||||
recipe = "default:papyrus",
|
||||
})
|
||||
|
||||
|
||||
--= Salt
|
||||
|
||||
minetest.register_node("farming:salt", {
|
||||
description = ("Salt"),
|
||||
inventory_image = "farming_salt.png",
|
||||
wield_image = "farming_salt.png",
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 0.8,
|
||||
paramtype = "light",
|
||||
tiles = {"farming_salt.png"},
|
||||
groups = {food_salt = 1, vessel = 1, dig_immediate = 3,
|
||||
attached_node = 1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
cooktime = 15,
|
||||
output = "farming:salt",
|
||||
recipe = "bucket:bucket_water",
|
||||
replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}}
|
||||
})
|
||||
|
||||
--= Rose Water
|
||||
|
||||
minetest.register_node("farming:rose_water", {
|
||||
description = ("Rose Water"),
|
||||
inventory_image = "farming_rose_water.png",
|
||||
wield_image = "farming_rose_water.png",
|
||||
drawtype = "plantlike",
|
||||
visual_scale = 0.8,
|
||||
paramtype = "light",
|
||||
tiles = {"farming_rose_water.png"},
|
||||
groups = {food_rose_water = 1, vessel = 1, dig_immediate = 3,
|
||||
attached_node = 1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:rose_water",
|
||||
recipe = {
|
||||
{"flowers:rose", "flowers:rose", "flowers:rose"},
|
||||
{"flowers:rose", "flowers:rose", "flowers:rose"},
|
||||
{"bucket:bucket_water", "group:food_pot", "vessels:glass_bottle"},
|
||||
},
|
||||
replacements = {
|
||||
{"bucket:bucket_water", "bucket:bucket_empty"},
|
||||
{"group:food_pot", "farming:pot"},
|
||||
}
|
||||
})
|
||||
|
||||
--= Turkish Delight
|
||||
|
||||
minetest.register_craftitem("farming:turkish_delight", {
|
||||
description = S("Turkish Delight"),
|
||||
inventory_image = "farming_turkish_delight.png",
|
||||
groups = {flammable = 3},
|
||||
on_use = minetest.item_eat(2),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:turkish_delight 4",
|
||||
recipe = {
|
||||
{"group:food_gelatin", "group:food_sugar", "group:food_gelatin"},
|
||||
{"group:food_sugar", "group:food_rose_water", "group:food_sugar"},
|
||||
{"group:food_cornstarch", "group:food_sugar", "dye:pink"},
|
||||
},
|
||||
replacements = {
|
||||
{"group:food_cornstarch", "farming:bowl"},
|
||||
{"group:food_rose_water", "vessels:glass_bottle"},
|
||||
},
|
||||
})
|
||||
|
||||
--= Garlic Bread
|
||||
|
||||
minetest.register_craftitem("farming:garlic_bread", {
|
||||
description = S("Garlic Bread"),
|
||||
inventory_image = "farming_garlic_bread.png",
|
||||
groups = {flammable = 3},
|
||||
on_use = minetest.item_eat(2),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "farming:garlic_bread",
|
||||
recipe = {"group:food_toast", "group:food_garlic_clove", "group:food_garlic_clove"},
|
||||
})
|
||||
|
||||
--= Donuts (thanks to Bockwurst for making the donut images)
|
||||
|
||||
minetest.register_craftitem("farming:donut", {
|
||||
description = S("Donut"),
|
||||
inventory_image = "farming_donut.png",
|
||||
on_use = minetest.item_eat(4),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:donut 3",
|
||||
recipe = {
|
||||
{"", "group:food_wheat", ""},
|
||||
{"group:food_wheat", "group:food_sugar", "group:food_wheat"},
|
||||
{"", "group:food_wheat", ""},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craftitem("farming:donut_chocolate", {
|
||||
description = S("Chocolate Donut"),
|
||||
inventory_image = "farming_donut_chocolate.png",
|
||||
on_use = minetest.item_eat(6),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:donut_chocolate",
|
||||
recipe = {
|
||||
{'group:food_cocoa'},
|
||||
{'farming:donut'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craftitem("farming:donut_apple", {
|
||||
description = S("Apple Donut"),
|
||||
inventory_image = "farming_donut_apple.png",
|
||||
on_use = minetest.item_eat(6),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "farming:donut_apple",
|
||||
recipe = {
|
||||
{'default:apple'},
|
||||
{'farming:donut'},
|
||||
}
|
||||
})
|
||||
|
||||
--= Porridge Oats
|
||||
|
||||
minetest.register_craftitem("farming:porridge", {
|
||||
description = S("Porridge"),
|
||||
inventory_image = "farming_porridge.png",
|
||||
on_use = minetest.item_eat(6, "farming:bowl"),
|
||||
})
|
||||
|
||||
minetest.after(0, function()
|
||||
|
||||
local fluid = "bucket:bucket_water"
|
||||
local fluid_return = "bucket:bucket_water"
|
||||
|
||||
if minetest.get_modpath("mobs") and mobs and mobs.mod == "redo" then
|
||||
fluid = "group:food_milk"
|
||||
fluid_return = "mobs:bucket_milk"
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "farming:porridge",
|
||||
recipe = {
|
||||
"group:food_barley", "group:food_barley", "group:food_wheat",
|
||||
"group:food_wheat", "group:food_bowl", fluid
|
||||
},
|
||||
replacements = {{fluid_return, "bucket:bucket_empty"}}
|
||||
})
|
||||
end)
|
|
@ -1,149 +0,0 @@
|
|||
|
||||
-- load support for intllib.
|
||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||
local S, NS = dofile(MP.."/intllib.lua")
|
||||
|
||||
|
||||
-- creative check
|
||||
local creative_mode_cache = minetest.settings:get_bool("creative_mode")
|
||||
function is_creative(name)
|
||||
return creative_mode_cache or minetest.check_player_privs(name, {creative = true})
|
||||
end
|
||||
|
||||
|
||||
-- hoe bomb function
|
||||
local function hoe_area(pos, player)
|
||||
|
||||
-- check for protection
|
||||
if minetest.is_protected(pos, player:get_player_name()) then
|
||||
minetest.record_protection_violation(pos, player:get_player_name())
|
||||
return
|
||||
end
|
||||
|
||||
local r = 5 -- radius
|
||||
|
||||
-- remove flora (grass, flowers etc.)
|
||||
local res = minetest.find_nodes_in_area(
|
||||
{x = pos.x - r, y = pos.y - 1, z = pos.z - r},
|
||||
{x = pos.x + r, y = pos.y + 2, z = pos.z + r},
|
||||
{"group:flora"})
|
||||
|
||||
for n = 1, #res do
|
||||
minetest.swap_node(res[n], {name = "air"})
|
||||
end
|
||||
|
||||
-- replace dirt with tilled soil
|
||||
res = nil
|
||||
res = minetest.find_nodes_in_area_under_air(
|
||||
{x = pos.x - r, y = pos.y - 1, z = pos.z - r},
|
||||
{x = pos.x + r, y = pos.y + 2, z = pos.z + r},
|
||||
{"group:soil"})
|
||||
|
||||
for n = 1, #res do
|
||||
minetest.swap_node(res[n], {name = "farming:soil"})
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- throwable hoe bomb
|
||||
minetest.register_entity("farming:hoebomb_entity", {
|
||||
physical = true,
|
||||
visual = "sprite",
|
||||
visual_size = {x = 1.0, y = 1.0},
|
||||
textures = {"farming_hoe_bomb.png"},
|
||||
collisionbox = {0,0,0,0,0,0},
|
||||
lastpos = {},
|
||||
player = "",
|
||||
|
||||
on_step = function(self, dtime)
|
||||
|
||||
if not self.player then
|
||||
|
||||
self.object:remove()
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
local pos = self.object:get_pos()
|
||||
|
||||
if self.lastpos.x ~= nil then
|
||||
|
||||
local vel = self.object:getvelocity()
|
||||
|
||||
-- only when potion hits something physical
|
||||
if vel.x == 0
|
||||
or vel.y == 0
|
||||
or vel.z == 0 then
|
||||
|
||||
if self.player ~= "" then
|
||||
|
||||
-- round up coords to fix glitching through doors
|
||||
self.lastpos = vector.round(self.lastpos)
|
||||
|
||||
hoe_area(self.lastpos, self.player)
|
||||
end
|
||||
|
||||
self.object:remove()
|
||||
|
||||
return
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
self.lastpos = pos
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
-- actual throwing function
|
||||
local function throw_potion(itemstack, player)
|
||||
|
||||
local playerpos = player:get_pos()
|
||||
|
||||
local obj = minetest.add_entity({
|
||||
x = playerpos.x,
|
||||
y = playerpos.y + 1.5,
|
||||
z = playerpos.z
|
||||
}, "farming:hoebomb_entity")
|
||||
|
||||
local dir = player:get_look_dir()
|
||||
local velocity = 20
|
||||
|
||||
obj:setvelocity({
|
||||
x = dir.x * velocity,
|
||||
y = dir.y * velocity,
|
||||
z = dir.z * velocity
|
||||
})
|
||||
|
||||
obj:setacceleration({
|
||||
x = dir.x * -3,
|
||||
y = -9.5,
|
||||
z = dir.z * -3
|
||||
})
|
||||
|
||||
obj:setyaw(player:get_look_yaw() + math.pi)
|
||||
obj:get_luaentity().player = player
|
||||
end
|
||||
|
||||
|
||||
-- hoe bomb item
|
||||
minetest.register_craftitem("farming:hoe_bomb", {
|
||||
description = S("Hoe Bomb (use or throw on grassy areas to hoe land"),
|
||||
inventory_image = "farming_hoe_bomb.png",
|
||||
groups = {flammable = 2, not_in_creative_inventory = 1},
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
|
||||
if pointed_thing.type == "node" then
|
||||
hoe_area(pointed_thing.above, user)
|
||||
else
|
||||
throw_potion(itemstack, user)
|
||||
|
||||
if not is_creative(user:get_player_name()) then
|
||||
|
||||
itemstack:take_item()
|
||||
|
||||
return itemstack
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
138
farming/hoes.lua
|
@ -192,3 +192,141 @@ minetest.override_item("farming:hoe_diamond", {
|
|||
original_description = "Diamond Hoe",
|
||||
description = toolranks.create_description("Diamond Hoe")})
|
||||
end
|
||||
|
||||
|
||||
-- hoe bomb function
|
||||
local function hoe_area(pos, player)
|
||||
|
||||
-- check for protection
|
||||
if minetest.is_protected(pos, player:get_player_name()) then
|
||||
minetest.record_protection_violation(pos, player:get_player_name())
|
||||
return
|
||||
end
|
||||
|
||||
local r = 5 -- radius
|
||||
|
||||
-- remove flora (grass, flowers etc.)
|
||||
local res = minetest.find_nodes_in_area(
|
||||
{x = pos.x - r, y = pos.y - 1, z = pos.z - r},
|
||||
{x = pos.x + r, y = pos.y + 2, z = pos.z + r},
|
||||
{"group:flora"})
|
||||
|
||||
for n = 1, #res do
|
||||
minetest.swap_node(res[n], {name = "air"})
|
||||
end
|
||||
|
||||
-- replace dirt with tilled soil
|
||||
res = nil
|
||||
res = minetest.find_nodes_in_area_under_air(
|
||||
{x = pos.x - r, y = pos.y - 1, z = pos.z - r},
|
||||
{x = pos.x + r, y = pos.y + 2, z = pos.z + r},
|
||||
{"group:soil"})
|
||||
|
||||
for n = 1, #res do
|
||||
minetest.swap_node(res[n], {name = "farming:soil"})
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- throwable hoe bomb
|
||||
minetest.register_entity("farming:hoebomb_entity", {
|
||||
physical = true,
|
||||
visual = "sprite",
|
||||
visual_size = {x = 1.0, y = 1.0},
|
||||
textures = {"farming_hoe_bomb.png"},
|
||||
collisionbox = {0,0,0,0,0,0},
|
||||
lastpos = {},
|
||||
player = "",
|
||||
|
||||
on_step = function(self, dtime)
|
||||
|
||||
if not self.player then
|
||||
|
||||
self.object:remove()
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
local pos = self.object:get_pos()
|
||||
|
||||
if self.lastpos.x ~= nil then
|
||||
|
||||
local vel = self.object:getvelocity()
|
||||
|
||||
-- only when potion hits something physical
|
||||
if vel.x == 0
|
||||
or vel.y == 0
|
||||
or vel.z == 0 then
|
||||
|
||||
if self.player ~= "" then
|
||||
|
||||
-- round up coords to fix glitching through doors
|
||||
self.lastpos = vector.round(self.lastpos)
|
||||
|
||||
hoe_area(self.lastpos, self.player)
|
||||
end
|
||||
|
||||
self.object:remove()
|
||||
|
||||
return
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
self.lastpos = pos
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
-- actual throwing function
|
||||
local function throw_potion(itemstack, player)
|
||||
|
||||
local playerpos = player:get_pos()
|
||||
|
||||
local obj = minetest.add_entity({
|
||||
x = playerpos.x,
|
||||
y = playerpos.y + 1.5,
|
||||
z = playerpos.z
|
||||
}, "farming:hoebomb_entity")
|
||||
|
||||
local dir = player:get_look_dir()
|
||||
local velocity = 20
|
||||
|
||||
obj:setvelocity({
|
||||
x = dir.x * velocity,
|
||||
y = dir.y * velocity,
|
||||
z = dir.z * velocity
|
||||
})
|
||||
|
||||
obj:setacceleration({
|
||||
x = dir.x * -3,
|
||||
y = -9.5,
|
||||
z = dir.z * -3
|
||||
})
|
||||
|
||||
obj:setyaw(player:get_look_yaw() + math.pi)
|
||||
obj:get_luaentity().player = player
|
||||
end
|
||||
|
||||
|
||||
-- hoe bomb item
|
||||
minetest.register_craftitem("farming:hoe_bomb", {
|
||||
description = S("Hoe Bomb (use or throw on grassy areas to hoe land"),
|
||||
inventory_image = "farming_hoe_bomb.png",
|
||||
groups = {flammable = 2, not_in_creative_inventory = 1},
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
|
||||
if pointed_thing.type == "node" then
|
||||
hoe_area(pointed_thing.above, user)
|
||||
else
|
||||
throw_potion(itemstack, user)
|
||||
|
||||
if not farming.is_creative(user:get_player_name()) then
|
||||
|
||||
itemstack:take_item()
|
||||
|
||||
return itemstack
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
|
107
farming/init.lua
|
@ -7,7 +7,7 @@
|
|||
|
||||
farming = {}
|
||||
farming.mod = "redo"
|
||||
farming.version = "1.33"
|
||||
farming.version = "20180617"
|
||||
farming.path = minetest.get_modpath("farming")
|
||||
farming.select = {
|
||||
type = "fixed",
|
||||
|
@ -22,16 +22,16 @@ function farming.is_creative(name)
|
|||
end
|
||||
|
||||
|
||||
local statistics = dofile(farming.path.."/statistics.lua")
|
||||
local statistics = dofile(farming.path .. "/statistics.lua")
|
||||
|
||||
-- Intllib
|
||||
local S = dofile(farming.path.."/intllib.lua")
|
||||
local S = dofile(farming.path .. "/intllib.lua")
|
||||
farming.intllib = S
|
||||
|
||||
|
||||
-- Utility Function
|
||||
local time_speed = tonumber(minetest.settings:get("time_speed")) or 72
|
||||
local SECS_PER_CYCLE = (time_speed > 0 and 24 * 60 * 60 / time_speed) or 0
|
||||
local SECS_PER_CYCLE = (time_speed > 0 and (24 * 60 * 60) / time_speed) or 0
|
||||
local function clamp(x, min, max)
|
||||
return (x < min and min) or (x > max and max) or x
|
||||
end
|
||||
|
@ -273,15 +273,16 @@ minetest.after(0, function()
|
|||
end)
|
||||
|
||||
|
||||
local abm_func = farming.handle_growth
|
||||
|
||||
-- Just in case a growing type or added node is missed (also catches existing
|
||||
-- nodes added to map before timers were incorporated).
|
||||
minetest.register_abm({
|
||||
nodenames = { "group:growing" },
|
||||
interval = 300,
|
||||
chance = 1,
|
||||
action = abm_func
|
||||
catch_up = false,
|
||||
action = function(pos, node)
|
||||
farming.handle_growth(pos, node)
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
|
@ -300,11 +301,16 @@ function farming.plant_growth_timer(pos, elapsed, node_name)
|
|||
return false
|
||||
end
|
||||
|
||||
if stages.plant_name == "farming:cocoa" then
|
||||
-- custom growth check
|
||||
local chk = minetest.registered_nodes[node_name].growth_check
|
||||
|
||||
if not minetest.find_node_near(pos, 1, {"default:jungletree"}) then
|
||||
if chk then
|
||||
|
||||
if chk(pos, node_name) then
|
||||
return true
|
||||
end
|
||||
|
||||
-- otherwise check for wet soil beneath crop
|
||||
else
|
||||
local under = minetest.get_node({ x = pos.x, y = pos.y - 1, z = pos.z })
|
||||
|
||||
|
@ -413,7 +419,7 @@ function farming.place_seed(itemstack, placer, pointed_thing, plantname)
|
|||
-- am I right-clicking on something that has a custom on_place set?
|
||||
-- thanks to Krock for helping with this issue :)
|
||||
local def = minetest.registered_nodes[under.name]
|
||||
if def and def.on_rightclick then
|
||||
if placer and def and def.on_rightclick then
|
||||
return def.on_rightclick(pt.under, under, placer, itemstack)
|
||||
end
|
||||
|
||||
|
@ -438,16 +444,21 @@ function farming.place_seed(itemstack, placer, pointed_thing, plantname)
|
|||
return
|
||||
end
|
||||
|
||||
-- is player planting seed?
|
||||
local name = placer and placer:get_player_name() or ""
|
||||
|
||||
-- if not protected then add node and remove 1 item from the itemstack
|
||||
if not minetest.is_protected(pt.above, placer:get_player_name()) then
|
||||
if not minetest.is_protected(pt.above, name) then
|
||||
|
||||
local p2 = minetest.registered_nodes[plantname].place_param2 or 1
|
||||
|
||||
minetest.set_node(pt.above, {name = plantname, param2 = p2})
|
||||
|
||||
--minetest.get_node_timer(pt.above):start(1)
|
||||
|
||||
minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0})
|
||||
|
||||
if not placer or not farming.is_creative(placer:get_player_name()) then
|
||||
if placer and not farming.is_creative(placer:get_player_name()) then
|
||||
|
||||
local name = itemstack:get_name()
|
||||
|
||||
|
@ -494,7 +505,7 @@ farming.register_plant = function(name, def)
|
|||
inventory_image = def.inventory_image,
|
||||
wield_image = def.inventory_image,
|
||||
drawtype = "signlike",
|
||||
groups = {seed = 1, snappy = 3, attached_node = 1},
|
||||
groups = {seed = 1, snappy = 3, attached_node = 1, flammable = 2},
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
walkable = false,
|
||||
|
@ -559,6 +570,7 @@ farming.register_plant = function(name, def)
|
|||
place_param2 = def.place_param2,
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
sunlight_propagates = true,
|
||||
drop = drop,
|
||||
selection_box = farming.select,
|
||||
groups = g,
|
||||
|
@ -567,8 +579,6 @@ farming.register_plant = function(name, def)
|
|||
maxlight = def.maxlight,
|
||||
next_plant = next_plant,
|
||||
})
|
||||
|
||||
register_plant_node(node_name)
|
||||
end
|
||||
|
||||
-- Return info
|
||||
|
@ -584,7 +594,6 @@ farming.cucumber = true
|
|||
farming.corn = true
|
||||
farming.coffee = true
|
||||
farming.melon = true
|
||||
farming.sugar = true
|
||||
farming.pumpkin = true
|
||||
farming.cocoa = true
|
||||
farming.raspberry = true
|
||||
|
@ -601,7 +610,6 @@ farming.pepper = true
|
|||
farming.pineapple = true
|
||||
farming.peas = true
|
||||
farming.beetroot = true
|
||||
farming.donuts = true
|
||||
farming.rarety = 0.002 -- 0.006
|
||||
|
||||
|
||||
|
@ -630,37 +638,44 @@ dofile(farming.path.."/grass.lua")
|
|||
dofile(farming.path.."/utensils.lua")
|
||||
|
||||
-- default crops
|
||||
dofile(farming.path.."/wheat.lua")
|
||||
dofile(farming.path.."/cotton.lua")
|
||||
dofile(farming.path.."/crops/wheat.lua")
|
||||
dofile(farming.path.."/crops/cotton.lua")
|
||||
|
||||
-- additional crops and food (if enabled)
|
||||
if farming.carrot then dofile(farming.path.."/carrot.lua") end
|
||||
if farming.potato then dofile(farming.path.."/potato.lua") end
|
||||
if farming.tomato then dofile(farming.path.."/tomato.lua") end
|
||||
if farming.cucumber then dofile(farming.path.."/cucumber.lua") end
|
||||
if farming.corn then dofile(farming.path.."/corn.lua") end
|
||||
if farming.coffee then dofile(farming.path.."/coffee.lua") end
|
||||
if farming.melon then dofile(farming.path.."/melon.lua") end
|
||||
if farming.sugar then dofile(farming.path.."/sugar.lua") end
|
||||
if farming.pumpkin then dofile(farming.path.."/pumpkin.lua") end
|
||||
if farming.cocoa then dofile(farming.path.."/cocoa.lua") end
|
||||
if farming.raspberry then dofile(farming.path.."/raspberry.lua") end
|
||||
if farming.blueberry then dofile(farming.path.."/blueberry.lua") end
|
||||
if farming.rhubarb then dofile(farming.path.."/rhubarb.lua") end
|
||||
if farming.beans then dofile(farming.path.."/beanpole.lua") end
|
||||
if farming.grapes then dofile(farming.path.."/grapes.lua") end
|
||||
if farming.barley then dofile(farming.path.."/barley.lua") end
|
||||
if farming.hemp then dofile(farming.path.."/hemp.lua") end
|
||||
if farming.garlic then dofile(farming.path.."/garlic.lua") end
|
||||
if farming.onion then dofile(farming.path.."/onion.lua") end
|
||||
if farming.pepper then dofile(farming.path.."/pepper.lua") end
|
||||
if farming.pineapple then dofile(farming.path.."/pineapple.lua") end
|
||||
if farming.peas then dofile(farming.path.."/pea.lua") end
|
||||
if farming.beetroot then dofile(farming.path.."/beetroot.lua") end
|
||||
if farming.chili then dofile(farming.path.."/chili.lua") end
|
||||
if farming.donuts then dofile(farming.path.."/donut.lua") end
|
||||
|
||||
-- helper function
|
||||
local function ddoo(file, check)
|
||||
|
||||
if check then
|
||||
dofile(farming.path .. "/crops/" .. file)
|
||||
end
|
||||
end
|
||||
|
||||
-- add additional crops and food (if enabled)
|
||||
ddoo("carrot.lua", farming.carrot)
|
||||
ddoo("potato.lua", farming.potato)
|
||||
ddoo("tomato.lua", farming.tomato)
|
||||
ddoo("cucumber.lua", farming.cucumber)
|
||||
ddoo("corn.lua", farming.corn)
|
||||
ddoo("coffee.lua", farming.coffee)
|
||||
ddoo("melon.lua", farming.melon)
|
||||
ddoo("pumpkin.lua", farming.pumpkin)
|
||||
ddoo("cocoa.lua", farming.cocoa)
|
||||
ddoo("raspberry.lua", farming.raspberry)
|
||||
ddoo("blueberry.lua", farming.blueberry)
|
||||
ddoo("rhubarb.lua", farming.rhubarb)
|
||||
ddoo("beans.lua", farming.beans)
|
||||
ddoo("grapes.lua", farming.grapes)
|
||||
ddoo("barley.lua", farming.barley)
|
||||
ddoo("hemp.lua", farming.hemp)
|
||||
ddoo("garlic.lua", farming.garlic)
|
||||
ddoo("onion.lua", farming.onion)
|
||||
ddoo("pepper.lua", farming.pepper)
|
||||
ddoo("pineapple.lua", farming.pineapple)
|
||||
ddoo("peas.lua", farming.peas)
|
||||
ddoo("beetroot.lua", farming.beetroot)
|
||||
ddoo("chili.lua", farming.chili)
|
||||
|
||||
dofile(farming.path.."/food.lua")
|
||||
dofile(farming.path.."/mapgen.lua")
|
||||
dofile(farming.path.."/compatibility.lua") -- Farming Plus compatibility
|
||||
dofile(farming.path.."/hoebomb.lua")
|
||||
dofile(farming.path.."/lucky_block.lua")
|
||||
|
|
|
@ -19,3 +19,112 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
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 Napiophelios (CC BY-SA 3.0):
|
||||
farming_cotton.png
|
||||
|
||||
Created by Calinou (License: CC BY-SA):
|
||||
farming_tool_bronzehoe.png
|
||||
farming_tool_steelhoe.png
|
||||
farming_tool_stonehoe.png
|
||||
farming_tool_woodhoe.png
|
||||
farming_tool_mesehoe.png
|
||||
farming_tool_diamondhoe.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
|
||||
|
||||
Created by Doc (License: WTFPL):
|
||||
farming_cucumber.png
|
||||
farming_cucumber_1.png
|
||||
farming_cucumber_2.png
|
||||
farming_cucumber_3.png
|
||||
farming_cucumber_4.png
|
||||
farming_potato.png
|
||||
farming_potato_1.png
|
||||
farming_potato_2.png
|
||||
farming_potato_3.png
|
||||
farming_potato_4.png
|
||||
farming_raspberries.png
|
||||
farming_raspberry_1.png
|
||||
farming_raspberry_2.png
|
||||
farming_raspberry_3.png
|
||||
farming_raspberry_4.png
|
||||
|
||||
Created by Gambit:
|
||||
default_junglegrass.png
|
||||
farming_carrot.png
|
||||
farming_carrot_1.png
|
||||
farming_carrot_2.png
|
||||
farming_carrot_3.png
|
||||
farming_carrot_4.png
|
||||
farming_carrot_5.png
|
||||
farming_carrot_6.png
|
||||
farming_carrot_7.png
|
||||
farming_carrot_8.png
|
||||
|
||||
Created by JoseTheCrafter and edited by TenPlus1:
|
||||
farming_tomato.png
|
||||
farming_tomato_1.png
|
||||
farming_tomato_2.png
|
||||
farming_tomato_3.png
|
||||
farming_tomato_4.png
|
||||
farming_tomato_5.png
|
||||
farming_tomato_6.png
|
||||
farming_tomato_7.png
|
||||
farming_tomato_8.png
|
||||
|
||||
Created by GeMinecraft and edited by TenPlus1:
|
||||
farming_corn.png
|
||||
farming_corn_cob.png
|
||||
farming_corn_1.png
|
||||
farming_corn_2.png
|
||||
farming_corn_3.png
|
||||
farming_corn_4.png
|
||||
farming_corn_5.png
|
||||
farming_corn_6.png
|
||||
farming_corn_7.png
|
||||
farming_corn_8.png
|
||||
|
||||
Created by TenPlus1
|
||||
farming_cocoa_1.png
|
||||
farming_cocoa_2.png
|
||||
farming_cocoa_3.png
|
||||
farming_cocoa_beans.png
|
||||
farming_cookie.png
|
||||
farming_raspberry_smoothie.png
|
||||
farming_rhubarb_1.png
|
||||
farming_rhubarb_2.png
|
||||
farming_rhubarb_3.png
|
||||
farming_rhubarb.png
|
||||
farming_rhubarb_pie.png
|
||||
farming_hemp*.png
|
||||
|
|
|
@ -32,5 +32,7 @@ if minetest.get_modpath("lucky_block") then
|
|||
{"dro", {"farming:hoe_mese"}, 1},
|
||||
{"dro", {"farming:hoe_diamond"}, 1},
|
||||
{"dro", {"farming:hoe_bomb"}, 10},
|
||||
{"dro", {"farming:turkish_delight"}, 5},
|
||||
{"lig"},
|
||||
})
|
||||
end
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
|
||||
local S = farming.intllib
|
||||
|
||||
--= Sugar
|
||||
|
||||
minetest.register_craftitem("farming:sugar", {
|
||||
description = S("Sugar"),
|
||||
inventory_image = "farming_sugar.png",
|
||||
groups = {food_sugar = 1, flammable = 3},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
cooktime = 3,
|
||||
output = "farming:sugar 2",
|
||||
recipe = "default:papyrus",
|
||||
})
|
||||
|
||||
|
||||
--= Salt
|
||||
|
||||
minetest.register_node("farming:salt", {
|
||||
description = ("Salt"),
|
||||
inventory_image = "farming_salt.png",
|
||||
wield_image = "farming_salt.png",
|
||||
drawtype = "plantlike",
|
||||
paramtype = "light",
|
||||
tiles = {"farming_salt.png"},
|
||||
groups = {food_salt = 1, vessel = 1, dig_immediate = 3,
|
||||
attached_node = 1},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
cooktime = 15,
|
||||
output = "farming:salt",
|
||||
recipe = "bucket:bucket_water",
|
||||
replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}}
|
||||
})
|
After Width: | Height: | Size: 195 B |
Before Width: | Height: | Size: 183 B |
After Width: | Height: | Size: 176 B |
After Width: | Height: | Size: 188 B |
After Width: | Height: | Size: 325 B |
After Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 254 B After Width: | Height: | Size: 248 B |
After Width: | Height: | Size: 156 B |
|
@ -17,6 +17,12 @@ minetest.register_craft({
|
|||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "farming:bowl",
|
||||
burntime = 10,
|
||||
})
|
||||
|
||||
-- saucepan
|
||||
|
||||
minetest.register_craftitem("farming:saucepan", {
|
||||
|
@ -71,7 +77,7 @@ minetest.register_craft({
|
|||
minetest.register_craftitem("farming:skillet", {
|
||||
description = S("Skillet"),
|
||||
inventory_image = "farming_skillet.png",
|
||||
groups = {food_baking_tray = 1, flammable = 2},
|
||||
groups = {food_skillet = 1, flammable = 2},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
|
@ -147,3 +153,11 @@ minetest.register_craft({
|
|||
{"", "default:glass", ""},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "vessels:glass_fragments",
|
||||
recipe = {
|
||||
"farming:mixing_bowl",
|
||||
},
|
||||
})
|
||||
|
|
|
@ -18,8 +18,6 @@ for i = 1, 8 do
|
|||
minetest.override_item("farming:cotton_"..i, { waving = 1 })
|
||||
end
|
||||
|
||||
minetest.override_item("farming:weed", { waving = 1 })
|
||||
|
||||
-- Undergrowth modpack
|
||||
|
||||
minetest.override_item("youngtrees:youngtree_top", { waving = 1 })
|
||||
|
@ -40,8 +38,3 @@ minetest.override_item("dryplants:reedmace_height_3_spikes", { waving = 1 })
|
|||
minetest.override_item("dryplants:juncus", { waving = 1 })
|
||||
minetest.override_item("dryplants:juncus_02", { waving = 1 })
|
||||
|
||||
-- Farming plus
|
||||
|
||||
minetest.override_item("farming_plus:banana_leaves", { waving = 1 })
|
||||
minetest.override_item("farming_plus:cocoa_leaves", { waving = 1 })
|
||||
|
||||
|
|
|
@ -135,6 +135,7 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
|
|||
end
|
||||
-- Tl states
|
||||
local name = minetest.get_node(pos).name
|
||||
local althalfhz = minetest.get_node(pos).param2 % 2 == 1
|
||||
if msg == "OFF" then
|
||||
if name:find("pedlight") then
|
||||
if name == "streets:pedlight_top_flashingdontwalk" then
|
||||
|
@ -181,6 +182,29 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
|
|||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_green")
|
||||
end
|
||||
elseif msg == "FLASHGREEN" then
|
||||
if name:find("pedlight") then
|
||||
if name == "streets:pedlight_top_flashingdontwalk" then
|
||||
ped_on_flash_end(pos,false)
|
||||
end
|
||||
streets.tlSwitch(pos,"streets:pedlight_top_flashingwalk")
|
||||
elseif name:find("extender_left") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_extender_left_flashgreen")
|
||||
elseif name:find("extender_right") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_extender_right_flashgreen")
|
||||
elseif name:find("left") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_left_flashgreen")
|
||||
elseif name:find("right") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_right_flashgreen")
|
||||
elseif name:find("beacon_hybrid") then
|
||||
--Not Supported
|
||||
elseif name:find("beacon") then
|
||||
--Not Supported
|
||||
elseif name:find("rrfb") then
|
||||
--Not Supported
|
||||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_flashgreen")
|
||||
end
|
||||
elseif msg == "RED" then
|
||||
if name:find("pedlight") then
|
||||
if name == "streets:pedlight_top_flashingdontwalk" then
|
||||
|
@ -204,20 +228,36 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
|
|||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_red")
|
||||
end
|
||||
elseif msg == "WARN" then
|
||||
elseif msg == "WARN" or msg == "FLASHYELLOW" then
|
||||
if name:find("pedlight") then
|
||||
if name ~= "streets:pedlight_top_flashingdontwalk" then
|
||||
ped_on_flash_start(pos)
|
||||
end
|
||||
streets.tlSwitch(pos,"streets:pedlight_top_flashingdontwalk")
|
||||
elseif name:find("extender_left") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_extender_left_off")
|
||||
if althalfhz then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_extender_left_flashyellow_alt")
|
||||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_extender_left_flashyellow")
|
||||
end
|
||||
elseif name:find("extender_right") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_extender_right_off")
|
||||
if althalfhz then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_extender_right_flashyellow_alt")
|
||||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_extender_right_flashyellow")
|
||||
end
|
||||
elseif name:find("left") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_left_warn")
|
||||
if althalfhz then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_left_warn_alt")
|
||||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_left_warn")
|
||||
end
|
||||
elseif name:find("right") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_right_warn")
|
||||
if althalfhz then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_right_warn_alt")
|
||||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_right_warn")
|
||||
end
|
||||
elseif name:find("beacon_hybrid") then
|
||||
streets.tlSwitch(pos,"streets:beacon_hybrid_flashyellow")
|
||||
elseif name:find("beacon") then
|
||||
|
@ -225,30 +265,11 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
|
|||
elseif name:find("rrfb") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_rrfb_on")
|
||||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_warn")
|
||||
end
|
||||
elseif msg == "FLASHYELLOW" then
|
||||
if name:find("pedlight") then
|
||||
if name ~= "streets:pedlight_top_flashingdontwalk" then
|
||||
ped_on_flash_start(pos)
|
||||
if althalfhz then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_warn_alt")
|
||||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_warn")
|
||||
end
|
||||
streets.tlSwitch(pos,"streets:pedlight_top_flashingdontwalk")
|
||||
elseif name:find("extender_left") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_extender_left_flashyellow")
|
||||
elseif name:find("extender_right") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_extender_right_flashyellow")
|
||||
elseif name:find("left") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_left_warn")
|
||||
elseif name:find("right") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_right_warn")
|
||||
elseif name:find("beacon_hybrid") then
|
||||
streets.tlSwitch(pos,"streets:beacon_hybrid_flashyellow")
|
||||
elseif name:find("beacon") then
|
||||
streets.tlSwitch(pos,"streets:beacon_flashyellow")
|
||||
elseif name:find("rrfb") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_rrfb_on")
|
||||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_warn")
|
||||
end
|
||||
elseif msg == "YELLOW" then
|
||||
if name:find("pedlight") then
|
||||
|
@ -273,6 +294,26 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
|
|||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_yellow")
|
||||
end
|
||||
elseif msg == "REDYELLOW" then
|
||||
if name:find("pedlight") then
|
||||
--Not Supported
|
||||
elseif name:find("extender_left") then
|
||||
--Not Supported
|
||||
elseif name:find("extender_right") then
|
||||
--Not Supported
|
||||
elseif name:find("left") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_left_redyellow")
|
||||
elseif name:find("right") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_right_redyellow")
|
||||
elseif name:find("beacon_hybrid") then
|
||||
--Not Supported
|
||||
elseif name:find("beacon") then
|
||||
--Not Supported
|
||||
elseif name:find("rrfb") then
|
||||
--Not Supported
|
||||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_redyellow")
|
||||
end
|
||||
elseif msg == "FLASHRED" then
|
||||
if name:find("pedlight") then
|
||||
if name ~= "streets:pedlight_top_flashingdontwalk" then
|
||||
|
@ -284,9 +325,17 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
|
|||
elseif name:find("extender_right") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_extender_right_off")
|
||||
elseif name:find("left") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_left_flashred")
|
||||
if althalfhz then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_left_flashred_alt")
|
||||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_left_flashred")
|
||||
end
|
||||
elseif name:find("right") then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_right_flashred")
|
||||
if althalfhz then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_right_flashred_alt")
|
||||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_right_flashred")
|
||||
end
|
||||
elseif name:find("beacon_hybrid") then
|
||||
streets.tlSwitch(pos,"streets:beacon_hybrid_flashred")
|
||||
elseif name:find("beacon") then
|
||||
|
@ -294,7 +343,11 @@ streets.on_digiline_receive = function(pos, node, channel, msg)
|
|||
elseif name:find("rrfb") then
|
||||
--Not Supported
|
||||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_flashred")
|
||||
if althalfhz then
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_flashred_alt")
|
||||
else
|
||||
streets.tlSwitch(pos,"streets:trafficlight_top_flashred")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -787,6 +840,82 @@ minetest.register_node(":streets:trafficlight_top_extender_left_flashyellow",{
|
|||
end,
|
||||
})
|
||||
|
||||
minetest.register_node(":streets:trafficlight_top_extender_left_flashyellow_alt",{
|
||||
drop = "streets:trafficlight_top_extender_left_off",
|
||||
description = streets.S("Traffic Light Left-Turn Module"),
|
||||
drawtype="nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky = 1, level = 2, not_in_creative_inventory = 1},
|
||||
light_source = 11,
|
||||
sunlight_propagates = true,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_tl_left_warn_alt.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
}},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
wire = {rules=streets.tlDigilineRules},
|
||||
effector = {
|
||||
action = function(pos, node, channel, msg)
|
||||
streets.on_digiline_receive(pos, node, channel, msg)
|
||||
end
|
||||
}
|
||||
},
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", "field[channel;Channel;${channel}]")
|
||||
end,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
if (fields.channel) then
|
||||
minetest.get_meta(pos):set_string("channel", fields.channel)
|
||||
minetest.get_meta(pos):set_string("state", "Off")
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node(":streets:trafficlight_top_extender_left_flashgreen",{
|
||||
drop = "streets:trafficlight_top_extender_left_off",
|
||||
description = streets.S("Traffic Light Left-Turn Module"),
|
||||
drawtype="nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky = 1, level = 2, not_in_creative_inventory = 1},
|
||||
light_source = 11,
|
||||
sunlight_propagates = true,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_tle_left_flashgreen.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
}},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
wire = {rules=streets.tlDigilineRules},
|
||||
effector = {
|
||||
action = function(pos, node, channel, msg)
|
||||
streets.on_digiline_receive(pos, node, channel, msg)
|
||||
end
|
||||
}
|
||||
},
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", "field[channel;Channel;${channel}]")
|
||||
end,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
if (fields.channel) then
|
||||
minetest.get_meta(pos):set_string("channel", fields.channel)
|
||||
minetest.get_meta(pos):set_string("state", "Off")
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node(":streets:trafficlight_top_extender_left_green",{
|
||||
drop = "streets:trafficlight_top_extender_left_off",
|
||||
description = streets.S("Traffic Light Left-Turn Module"),
|
||||
|
@ -930,6 +1059,82 @@ minetest.register_node(":streets:trafficlight_top_extender_right_flashyellow",{
|
|||
end,
|
||||
})
|
||||
|
||||
minetest.register_node(":streets:trafficlight_top_extender_right_flashyellow_alt",{
|
||||
drop = "streets:trafficlight_top_extender_right_off",
|
||||
description = streets.S("Traffic Light Right-Turn Module"),
|
||||
drawtype="nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky = 1, level = 2, not_in_creative_inventory = 1},
|
||||
light_source = 11,
|
||||
sunlight_propagates = true,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_tl_right_warn_alt.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
}},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
wire = {rules=streets.tlDigilineRules},
|
||||
effector = {
|
||||
action = function(pos, node, channel, msg)
|
||||
streets.on_digiline_receive(pos, node, channel, msg)
|
||||
end
|
||||
}
|
||||
},
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", "field[channel;Channel;${channel}]")
|
||||
end,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
if (fields.channel) then
|
||||
minetest.get_meta(pos):set_string("channel", fields.channel)
|
||||
minetest.get_meta(pos):set_string("state", "Off")
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node(":streets:trafficlight_top_extender_right_flashgreen",{
|
||||
drop = "streets:trafficlight_top_extender_right_off",
|
||||
description = streets.S("Traffic Light Right-Turn Module"),
|
||||
drawtype="nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky = 1, level = 2, not_in_creative_inventory = 1},
|
||||
light_source = 11,
|
||||
sunlight_propagates = true,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = streets.tleBox
|
||||
},
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_tle_right_flashgreen.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
}},
|
||||
digiline = {
|
||||
receptor = {},
|
||||
wire = {rules=streets.tlDigilineRules},
|
||||
effector = {
|
||||
action = function(pos, node, channel, msg)
|
||||
streets.on_digiline_receive(pos, node, channel, msg)
|
||||
end
|
||||
}
|
||||
},
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", "field[channel;Channel;${channel}]")
|
||||
end,
|
||||
on_receive_fields = function(pos, formname, fields, sender)
|
||||
if (fields.channel) then
|
||||
minetest.get_meta(pos):set_string("channel", fields.channel)
|
||||
minetest.get_meta(pos):set_string("state", "Off")
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node(":streets:trafficlight_top_extender_right_green",{
|
||||
drop = "streets:trafficlight_top_extender_left_off",
|
||||
description = streets.S("Traffic Light Right-Turn Module"),
|
||||
|
@ -1077,6 +1282,33 @@ minetest.register_node(":streets:pedlight_top_flashingdontwalk",{
|
|||
},
|
||||
})
|
||||
|
||||
minetest.register_node(":streets:pedlight_top_flashingwalk",{
|
||||
drop = "streets:pedlight_top_off",
|
||||
groups = {cracky = 1, not_in_creative_inventory = 1},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
sunlight_propagates = true,
|
||||
drawtype = "nodebox",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_pl_flashingwalk.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
}},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = streets.plBox
|
||||
},
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
wire = {rules=streets.tlDigilineRules},
|
||||
effector = {
|
||||
action = function(pos, node, channel, msg)
|
||||
streets.on_digiline_receive(pos, node, channel, msg)
|
||||
end
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_entity(":streets:pedcountdown",{
|
||||
physical = false,
|
||||
collisionbox = {0,0,0,0,0,0},
|
||||
|
@ -1209,7 +1441,29 @@ for _,i in pairs({"","_left","_right"}) do
|
|||
},
|
||||
})
|
||||
|
||||
minetest.register_alias("streets:trafficlight_top"..i.."_redyellow","streets:trafficlight_top"..i.."_green")
|
||||
minetest.register_node(":streets:trafficlight_top"..i.."_redyellow",{
|
||||
drop = "streets:trafficlight_top"..i.."_off",
|
||||
groups = {cracky = 1, not_in_creative_inventory = 1},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
sunlight_propagates = true,
|
||||
drawtype = "nodebox",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl"..i.."_redyellow.png"},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = streets.tlBox
|
||||
},
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
wire = {rules=streets.tlDigilineRules},
|
||||
effector = {
|
||||
action = function(pos, node, channel, msg)
|
||||
streets.on_digiline_receive(pos, node, channel, msg)
|
||||
end
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node(":streets:trafficlight_top"..i.."_green",{
|
||||
drop = "streets:trafficlight_top"..i.."_off",
|
||||
|
@ -1288,6 +1542,87 @@ for _,i in pairs({"","_left","_right"}) do
|
|||
}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node(":streets:trafficlight_top"..i.."_warn_alt",{
|
||||
drop = "streets:trafficlight_top"..i.."_off",
|
||||
groups = {cracky = 1, not_in_creative_inventory = 1},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
sunlight_propagates = true,
|
||||
drawtype = "nodebox",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_tl"..i.."_warn_alt.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
}},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = streets.tlBox
|
||||
},
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
wire = {rules=streets.tlDigilineRules},
|
||||
effector = {
|
||||
action = function(pos, node, channel, msg)
|
||||
streets.on_digiline_receive(pos, node, channel, msg)
|
||||
end
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node(":streets:trafficlight_top"..i.."_flashred_alt",{
|
||||
drop = "streets:trafficlight_top"..i.."_off",
|
||||
groups = {cracky = 1, not_in_creative_inventory = 1},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
sunlight_propagates = true,
|
||||
drawtype = "nodebox",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_tl"..i.."_flashred_alt.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
}},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = streets.tlBox
|
||||
},
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
wire = {rules=streets.tlDigilineRules},
|
||||
effector = {
|
||||
action = function(pos, node, channel, msg)
|
||||
streets.on_digiline_receive(pos, node, channel, msg)
|
||||
end
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node(":streets:trafficlight_top"..i.."_flashgreen",{
|
||||
drop = "streets:trafficlight_top"..i.."_off",
|
||||
groups = {cracky = 1, not_in_creative_inventory = 1},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
sunlight_propagates = true,
|
||||
drawtype = "nodebox",
|
||||
tiles = {"streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png","streets_tl_bg.png",{
|
||||
name="streets_tl"..i.."_flashgreen.png",
|
||||
animation={type="vertical_frames", aspect_w=64, aspect_h=64, length=1.2},
|
||||
}},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = streets.tlBox
|
||||
},
|
||||
light_source = 6,
|
||||
digiline = {
|
||||
receptor = {},
|
||||
wire = {rules=streets.tlDigilineRules},
|
||||
effector = {
|
||||
action = function(pos, node, channel, msg)
|
||||
streets.on_digiline_receive(pos, node, channel, msg)
|
||||
end
|
||||
}
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_node(":streets:trafficlight_rrfb_off",{
|
||||
|
|
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
|
@ -200,6 +200,8 @@ minetest.register_on_joinplayer(function(player)
|
|||
end
|
||||
return 1
|
||||
end
|
||||
-- New bag is smaller: Disallow inserting
|
||||
return 0
|
||||
end,
|
||||
allow_take = function(inv, listname, index, stack, player)
|
||||
if player:get_inventory():is_empty(listname.."contents") then
|
||||
|
|