forked from VoxeLibre/VoxeLibre
Logix fix and some simple optimizations.
* Fix silly and mostly inconsequential logic bug that had gone unnoticed up till now. * Condense a single use variable away by using a slightly more elaborate assignment statement. * Add a few more local aliases for global minetest.* functions.
This commit is contained in:
parent
cd12e1d78c
commit
541a805a48
|
@ -39,6 +39,11 @@ minetest.register_craft({
|
||||||
})
|
})
|
||||||
|
|
||||||
local get_item_group = minetest.get_item_group
|
local get_item_group = minetest.get_item_group
|
||||||
|
local is_creative_enabled = minetest.is_creative_enabled
|
||||||
|
local registered_nodes = minetest.registered_nodes
|
||||||
|
local swap_node = minetest.swap_node
|
||||||
|
local get_node_timer = minetest.get_node_timer
|
||||||
|
local add_item = minetest.add_item
|
||||||
|
|
||||||
local function composter_add_item(pos, node, player, itemstack, pointed_thing)
|
local function composter_add_item(pos, node, player, itemstack, pointed_thing)
|
||||||
--
|
--
|
||||||
|
@ -49,21 +54,20 @@ local function composter_add_item(pos, node, player, itemstack, pointed_thing)
|
||||||
if not player or (player:get_player_control() and player:get_player_control().sneak) then
|
if not player or (player:get_player_control() and player:get_player_control().sneak) then
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
if not itemstack and itemstack:is_empty() then
|
if not itemstack or itemstack:is_empty() then
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
local itemname = itemstack:get_name()
|
local itemname = itemstack:get_name()
|
||||||
local chance = get_item_group(itemname, "compostability")
|
local chance = get_item_group(itemname, "compostability")
|
||||||
if chance > 0 then
|
if chance > 0 then
|
||||||
if not minetest.is_creative_enabled(player:get_player_name()) then
|
if not is_creative_enabled(player:get_player_name()) then
|
||||||
itemstack:take_item()
|
itemstack:take_item()
|
||||||
end
|
end
|
||||||
-- calculate leveling up chance
|
-- calculate leveling up chance
|
||||||
local rand = math.random(0,100)
|
local rand = math.random(0,100)
|
||||||
if chance >= rand then
|
if chance >= rand then
|
||||||
-- get current compost level
|
-- get current compost level
|
||||||
local node_defs = minetest.registered_nodes[node.name]
|
local level = registered_nodes[node.name]["_mcl_compost_level"]
|
||||||
local level = node_defs["_mcl_compost_level"]
|
|
||||||
-- spawn green particles above new layer
|
-- spawn green particles above new layer
|
||||||
mcl_dye.add_bone_meal_particle(vector.add(pos, vector.new(0, level/8, 0)))
|
mcl_dye.add_bone_meal_particle(vector.add(pos, vector.new(0, level/8, 0)))
|
||||||
-- TODO: play some sounds
|
-- TODO: play some sounds
|
||||||
|
@ -73,11 +77,11 @@ local function composter_add_item(pos, node, player, itemstack, pointed_thing)
|
||||||
else
|
else
|
||||||
level = "ready"
|
level = "ready"
|
||||||
end
|
end
|
||||||
minetest.swap_node(pos, {name = "mcl_composters:composter_" .. level})
|
swap_node(pos, {name = "mcl_composters:composter_" .. level})
|
||||||
-- a full composter becomes ready for harvest after one second
|
-- a full composter becomes ready for harvest after one second
|
||||||
-- the block will get updated by the node timer callback set in node reg def
|
-- the block will get updated by the node timer callback set in node reg def
|
||||||
if level == 7 then
|
if level == 7 then
|
||||||
local timer = minetest.get_node_timer(pos)
|
local timer = get_node_timer(pos)
|
||||||
timer:start(1)
|
timer:start(1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -93,7 +97,7 @@ local function composter_ready(pos)
|
||||||
--
|
--
|
||||||
-- returns false in order to cancel further activity of the timer
|
-- returns false in order to cancel further activity of the timer
|
||||||
--
|
--
|
||||||
minetest.swap_node(pos, {name = "mcl_composters:composter_ready"})
|
swap_node(pos, {name = "mcl_composters:composter_ready"})
|
||||||
-- maybe spawn particles again?
|
-- maybe spawn particles again?
|
||||||
-- TODO: play some sounds
|
-- TODO: play some sounds
|
||||||
return false
|
return false
|
||||||
|
@ -107,9 +111,9 @@ local function composter_harvest(pos, node, player, itemstack, pointed_thing)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
-- reset ready type composter to empty type
|
-- reset ready type composter to empty type
|
||||||
minetest.swap_node(pos, {name="mcl_composters:composter"})
|
swap_node(pos, {name="mcl_composters:composter"})
|
||||||
-- spawn bone meal item (wtf dye?! is this how they make white cocoa)
|
-- spawn bone meal item (wtf dye?! is this how they make white cocoa)
|
||||||
minetest.add_item(pos, "mcl_dye:white")
|
add_item(pos, "mcl_dye:white")
|
||||||
-- TODO play some sounds
|
-- TODO play some sounds
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue