Botania

Botania

133M Downloads

Open Crate delays pickup even when not receiving redstone signal [1.12.1]

dannydjdk opened this issue ยท 6 comments

commented

Edited issue summary:
Open Crate always behaves as if it is getting a redstone signal whether or not it actually is. Flowers will not pick up items dropped by an Open Crate for about 13 seconds after the last item is dropped.

Original description of problem:
Once one endoflame picks up fuel, there is a long delay (about 13 seconds) before any endoflame picks up another fuel item. If several items are dropped at once, the flowers will pick them up as expected, but if they are dropped one at a time in the same spot, the delay occurs. The result is that when items are dropped one at a time through an open crate, the maximum number of endoflames burning fuel at one time will be 3.

This problem is only in Botania for MC 1.12.1 (version details below). The exact same setup for Botania r.19-345 for MC 1.11.2 works as expected: fuel is picked up immediately when dropped if any flower is not currently burning fuel.

I probably don't have to explain how to set this up, but just in case...
To reproduce:
-Set up 10 endoflames near a pressure plate (near a mana spreader and pool of course)
-Place an open crate above the pressure plate.
-Place a redstone torch against the block the pressure plate is on
-Place a block above the restone torch and placed a dropper facing the open crate on that block.
-Put some coal in the dropper and throw one piece on the pressure plate.
The first piece of coal will be picked up by an endoflame immediately. The next one will sit on the pressure plate for 13 seconds before being picked up by a different endoflame, and so it will continue. And thus, a maximum of 3 endoflames will consecutively burn fuel at any given time.

If this is an intended change in behavior, this issue can be closed (and then I'm going to cry a little bit before redesigning my automation). However, I would recommend updating the Lexica Botania to reflect this as it is not behavior a player would expect.

Botania version: r1.10-347
MC: 1.12.1
Forge: 14.22.1.2480 (also existed in earlier versions for 1.12.1)

Let me know if additional details, logs or a short demonstration video would help define the problem.

commented

The problem may be a little different than I thought. There is a 13 second delay before the endoflame will pick up any fuel dropped by the open crate, but not by the player. Further, the 13 seconds will reset if another item is dropped within the same block space. For instance, if I use the floating hourglass to have it drop 1 coal every 4 seconds (to keep 10 endoflames busy), it will never pick up the coal. Once I stop the hourglass, it will pick up the coal 13 seconds later.

commented

Is the open crate powered by redstone? When crates are powered by redstone the items they drop can't be picked up for an extra 10 seconds or so

commented

@quat1024, it is directly above the pressure plate which gets powered after the coal is dropped. However, even if I move the open crate up a block and make sure the dropper gets a pulse through the block opposite the open crate, this behavior persists. Plus, this exact setup works without delay in previous versions.
That might be a good place to start with troubleshooting though, because it does seem to behave as it would if it were getting a redstone signal. But it's definitely not.

commented

I just tested this with a hopper hock and it is indeed acting the same way. I simply had an open crate fed by a hopper. No redstone in sight. The hopper hock waits about 13 seconds before picking up any item dropped from the open crate without a redstone signal, but picks up anything I drop within a couple seconds.
Just to see if the behavior was somehow reversed, I gave the open crate a redstone signal. The delay still existed. So, the issue seems to be that the open crate always behaves as if it is getting a redstone signal whether it is or not.

commented

I noticed the same thing and tracked down the issue.
TileOpenCrate::eject function does not check the redstone parameter and always sets the age of the ejected item to -200 (10 seconds @ 20 tps).
I hope this helps.
https://github.com/Vazkii/Botania/blob/938aab69e5c46d782af3fdb9d647ccd754651853/src/main/java/vazkii/botania/common/block/tile/TileOpenCrate.java#L74

commented

my bad, accidentally nuked the if statement during a cleanup :P