tsunamayo / Starship-EVO

Welcome to Starship EVO bug tracking repo !
118 stars 17 forks source link

[Bug] Filters and one-way tubes incorrectly allow non-matching items through #6012

Closed asanagisae closed 1 month ago

asanagisae commented 1 month ago

Short Description of the issue:

The newly added filter tubes and one-way tubes appear to let items through that they should not.

I'm using a simple test bed: image

There are four containers: gold, silver, copper, and iron. Each has a one-way output tube, and a filter input tube. The filter is configured to accept ores and ingots of the corresponding type. For example, the iron container is supposed to fill with iron ores, then eventually have them replaced with iron ingots: image

I have the furnace configured as follows, although it was already pulling the ores in for processing before I activated the option to "pull automatically from connected inventories": image

Silicon rods and copper ingots are pushed to the iron container through the iron filter: (this is the main issue) image

To summarize the issue: The intended ores and ingots do not go into their designated cargo containers, and unintended items end up in the wrong container.

Steps to reproduce the issue:

  1. Spawn the attached blueprint in, or recreate a similar build.
  2. Take control of the ship, find a patch of copper on a planet, mine a small sample of ores, then quickly jump out of the ship so you can start observing the flow of items
  3. Due to another bug, you may have to fly your character near the ores (so they feel your pull) then quickly fly away (to avoid collecting ores in your backpack/hotbar) before the ship's collector will take ores in
  4. Once the collector has taken in the ores, observe the flow of items

The items move something like this, you should verify this yourself while it happens:

  1. The collector takes them in
  2. The stones and copper ores move through the iron filter and into the iron container
  3. The arc furnace pulls the stones and copper ores from the iron container and smelts both
  4. The arc furnace then pushes the refined silicon rods and copper ingots to the iron container through the iron filter

Either the filters are not working, or the one-way tubes are allowing items to pass both ways.

Environment

Additional information:

The ship used: Filter Test.zip

asanagisae commented 1 month ago

As recommended by Peach, I removed the blue line connecting the arc furnace. As a result, the ores and rocks stay in the collector and do not move.

This suggests that the presence of a one-way tube causes items to "teleport" through the entire conveyor system?

image

When I manually add the one-way tube in again, the arc furnace immediately takes the ores and rocks from the collector and smelts them.

The rocks really shouldn't be able to pass the tube filters as the filters are all set to whitelist and rocks aren't on the lists.

However, the copper ore definitely should be pushed to the copper container through the copper ore/ingot filter instead of staying in the collector.

asanagisae commented 1 month ago

If I remove the filter to the gold box, the ores end up in the gold box. The collector is "pushing" items correctly.

However, from the gold box, the arc furnace no longer pulls the ores for processing....

image

asanagisae commented 1 month ago

The one-way tubes are definitely bugged. After removing the red line exit, the arc furnace still pushes smelted copper into the iron container:

image

asanagisae commented 1 month ago

Also, the "Create a new filter" button should be at the bottom of the modal window and below any newly added rows, not at the top.

In your current implementation, when you click the button at the top, it adds a new row at the bottom of the window, which is far away from where you clicked and not where you'd expect it to be. The change in the UI is not near the user's cursor. This leaves the user confused at first, it's a bad impression.

image

tsunamayo commented 1 month ago

@asanagisae Hi, thanks, both one-way and conveyor are fixed. For one-way it was not working in the case of push (like with the collector), and filter was not working in the case of ore/ingot set at something else than any. Thanks for booking the issue!