Restrict sugar cane placement

This commit is contained in:
Wuzzy 2017-06-09 21:07:00 +02:00
parent e2d36f4735
commit f26c193760

@ -1258,6 +1258,7 @@ minetest.register_node("mcl_core:cactus", {
minetest.register_node("mcl_core:reeds", { minetest.register_node("mcl_core:reeds", {
description = "Sugar Canes", description = "Sugar Canes",
_doc_items_longdesc = "Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.", _doc_items_longdesc = "Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.",
_doc_items_usagehelp = "Sugar canes can only be placed on blocks on which they would grow.",
drawtype = "plantlike", drawtype = "plantlike",
tiles = {"default_papyrus.png"}, tiles = {"default_papyrus.png"},
inventory_image = "mcl_core_reeds.png", inventory_image = "mcl_core_reeds.png",
@ -1285,6 +1286,37 @@ minetest.register_node("mcl_core:reeds", {
groups = {dig_immediate=3, craftitem=1, plant=1, non_mycelium_plant=1, dig_by_piston=1}, groups = {dig_immediate=3, craftitem=1, plant=1, non_mycelium_plant=1, dig_by_piston=1},
sounds = mcl_sounds.node_sound_leaves_defaults(), sounds = mcl_sounds.node_sound_leaves_defaults(),
node_placement_prediction = "", node_placement_prediction = "",
on_place = mcl_util.generate_on_place_plant_function(function(place_pos, place_node)
local soil_pos = {x=place_pos.x, y=place_pos.y-1, z=place_pos.z}
local soil_node = minetest.get_node_or_nil(soil_pos)
if not soil_node then return false end
local snn = soil_node.name -- soil node name
-- Placement rules:
-- * On group:soil_sugarcane
-- * Next to water or frosted ice
if minetest.get_item_group(snn, "soil_sugarcane") == 0 then
return false
end
local posses = {
{ x=0, y=0, z=1},
{ x=0, y=0, z=-1},
{ x=1, y=0, z=0},
{ x=-1, y=0, z=0},
}
for p=1, #posses do
local checknode = minetest.get_node(vector.add(soil_pos, posses[p]))
if minetest.get_item_group(checknode.name, "water") ~= 0 or minetest.get_item_group(checknode.name, "frosted_ice") ~= 0 then
-- Water found! Sugar canes are happy! :-)
return true
end
end
-- No water found! Sugar canes are not amuzed and refuses to be placed. :-(
return false
end),
_mcl_blast_resistance = 0, _mcl_blast_resistance = 0,
_mcl_hardness = 0, _mcl_hardness = 0,
}) })