RFTools

RFTools

74M Downloads

'Builder' doesn't retrieve Chorus Flowers

tofof opened this issue ยท 6 comments

commented

Description

Builder doesn't retrieve chorus flowers from a quarried area, even when a Shape Card (Silk Quarry) is used alongside a Storage Filter Module set to only Chorus Flower.

Note that it does retrieve chorus fruit (from the stems) as expected.

Expected Behavior

Chorus Flowers drop even when mined with a bare hand, so the Builder breaking them (and only them, if using a filter) should result in them dropping for the builder.

Note that the vanilla behavior is that if the stem (Chorus Plant) is broken first, the flower will not drop. However, using a filter for just Chorus Flower ensures that doesn't happen. The Builder successfully breaks only the flowers; the stems remain intact.

Steps to Reproduce

Place chorus flower.
Place Builder, add power and lever, and chest on top.
Use a quarry card (any, all 6 variants tested and behave identically regarding the flower) bounding the area the flower is in.
Optionally use a filter (no filter, flower only, flower+plant tested with no change).
Activate lever.
Observe only chorus fruit*, no flowers, in chest. (*Or nothing, if filtered to only break flowers).

Technical Details

Minecraft 1.10.2
Forge 12.18.3.2316
RFTools 1.1x-6.01

commented

I don't get how to reproduce this? I have never messed with chorus fruit but the plant fails to work for me. I see no fruit growing?

commented

This is not an easy problem to fix: this is what getItemDropped() for the flower returns:

public Item getItemDropped(IBlockState state, Random rand, int fortune)
{
    return Items.AIR;
}

I could make a special case for this but then I'm wondering if perhaps this is intentional as it is now

commented

I'm not familiar enough with the codebase. What's the significance of that snippet, or the difference between it and a 'normal' block?

If it's special-cased, perhaps that's to handle the behavior of not dropping when e.g. broken by water, pushed by piston, or when the stem below breaks?

commented

Well that code is what you're supposed to call to get the drops when a block is harvested. In this case it is coded in minecraft to return nothing

commented

You place a chorus flower on end stone to grow chorus trees.
When the chorus plant stem blocks are broken they drop chorus fruit.
When the chorus flower blocks are broken, they drop themselves --- except not when quarried with the Builder, which is what I'm hoping to see changed.

commented

Note that when chorus plant blocks are broken, they normally cause the entirity of the tree above them to break in sequence. When that happens, chorus flowers drop nothing.
Hence my discussion about filtering to only the flowers. Filters shouldn't be strictly necessary, as the builder seems to work its way down from the top (and so it should hit chorus flower blocks at the tiptops of the trees first, and successfully harvest them). When a filter is used specifying flowers only, the flowers and not the stems get broken (as expected), but no flower drops get placed in an attached chest.