mirror of
https://git.minetest.land/Mineclonia/Mineclonia.git
synced 2024-11-24 04:05:17 +00:00
Make cocoas drop when the jungle tree has been removed
This commit is contained in:
parent
02b6cc11f5
commit
66c9e5b502
3 changed files with 33 additions and 1 deletions
1
API.md
1
API.md
|
@ -85,6 +85,7 @@ These groups are used mostly for informational purposes
|
|||
* `food=3`: Drink (including soups)
|
||||
* `food=1`: Other/unsure
|
||||
* `eatable`: Item can be *directly* eaten by wielding + left click (`on_use=item_eat`). Rating is the satiation gain
|
||||
* `cocoa`: Node is a cocoa pod (rating is growth stage, ranging from 1 to 3)
|
||||
* `ammo=1`: Item is used as ammo for a weapon
|
||||
* `ammo_bow=1`: Item is used as ammo for bows
|
||||
* `container`: Node is a container which physically stores items within and has at least 1 inventory
|
||||
|
|
|
@ -67,6 +67,13 @@ end
|
|||
|
||||
-- Cocoa definition
|
||||
-- 1st stage
|
||||
|
||||
--[[ TODO (code quality): Turn the cocoa nodes into attached nodes and make use of wallmounted. This is much better
|
||||
than the current ugly hacky check after digging a jungle tree (in mcl_core).
|
||||
Problem: If we want to use wallmounted, we MUST use a mesh, since wallmounted does not support
|
||||
nodeboxes with multiple boxes. :-(
|
||||
Using meshes will also clean up the texture mess.
|
||||
]]
|
||||
local crop_def = {
|
||||
description = "Young Cocoa",
|
||||
drawtype = "nodebox",
|
||||
|
@ -101,7 +108,7 @@ local crop_def = {
|
|||
},
|
||||
},
|
||||
groups = {
|
||||
choppy=3, not_in_creative_inventory=1, dig_by_water = 1,
|
||||
cocoa = 1, choppy=3, not_in_creative_inventory=1, dig_by_water = 1,
|
||||
},
|
||||
sounds = mcl_sounds.node_sound_wood_defaults()
|
||||
}
|
||||
|
@ -110,6 +117,7 @@ local crop_def = {
|
|||
minetest.register_node("mcl_cocoas:cocoa_1", table.copy(crop_def))
|
||||
|
||||
crop_def.description = "Medium Cocoa"
|
||||
crop_def.groups.cocoa = 2
|
||||
crop_def.tiles = {
|
||||
"[combine:32x32:10,2=mcl_cocoas_cocoa_stage_1.png", "[combine:32x32:10,18=mcl_cocoas_cocoa_stage_1.png",
|
||||
"mcl_cocoas_cocoa_stage_1.png", "mcl_cocoas_cocoa_stage_1.png^[transformFX",
|
||||
|
@ -139,6 +147,7 @@ minetest.register_node("mcl_cocoas:cocoa_2", table.copy(crop_def))
|
|||
|
||||
-- Final stage
|
||||
crop_def.description = "Mature Cocoa"
|
||||
crop_def.groups.cocoa = 3
|
||||
crop_def.tiles = {
|
||||
-- The following 2 textures were derived from the original because the size of the top/bottom is slightly different :-(
|
||||
-- TODO: Find a way to *only* use the base texture
|
||||
|
|
|
@ -590,6 +590,28 @@ minetest.register_node("mcl_core:jungletree", {
|
|||
stack_max = 64,
|
||||
paramtype2 = "facedir",
|
||||
on_place = mcl_util.rotate_axis,
|
||||
-- This is a bad bad workaround which is only done because cocoas are not wallmounted (but should)
|
||||
-- As long cocoas only EVER stick to jungle trees, and nothing else, this is probably a lesser sin.
|
||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||
-- Drop attached cocoas
|
||||
local posses = {
|
||||
{ x = pos.x + 1, y = pos.y, z = pos.z },
|
||||
{ x = pos.x - 1, y = pos.y, z = pos.z },
|
||||
{ x = pos.x, y = pos.y, z = pos.z + 1 },
|
||||
{ x = pos.x, y = pos.y, z = pos.z - 1 },
|
||||
}
|
||||
for p=1, #posses do
|
||||
local node = minetest.get_node(posses[p])
|
||||
local g = minetest.get_item_group(node.name, "cocoa")
|
||||
if g and g >= 1 then
|
||||
minetest.remove_node(posses[p])
|
||||
local drops = minetest.get_node_drops(node.name, "")
|
||||
for d=1, #drops do
|
||||
minetest.add_item(posses[p], drops[d])
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,building_block=1},
|
||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue