Ender IO Zoo

Ender IO Zoo

962k Downloads

Advanced Item Filter not filtering as it should

Flow86 opened this issue ยท 9 comments

commented

Issue Description:

Advanced Item Filter's not working as it should. There are 2 issues in here

  • damage filter on blacklists allows damaged items
  • empty nbt versus null nbt

damage filter "any" on blacklist allowing damaged items

filter

it still inserts damaged items:

filter2

I think the setting "blacklist" should block anything not in the list even if any damage is allowed, shouldnt it?

whitelist "match NBT" does not work on stock items:

filter3

thats the 3rd chest in my setup here which should receive all non enchanted items. But it can only insert something as soon as I disable "match NBT". (then it inserts unenchanted + enchanted items here). it seems those items seem to have two different nbts: kind of "empty" nbt, and "null"?

Steps to reproduce:

  • build 3 chests
  • wire them up with item conduits
  • add above filters to the 2 output chests
  • put random items in there (damage, enchantments ...)

Affected Versions (Do not use "latest"):

  • EnderIO: EnderIO-1.10.2-3.1.161
  • EnderCore: EnderCore-1.10.2-0.4.1.64-beta
  • Minecraft: 1.10.2
  • Forge: forge-1.10.2-12.18.3.2202-universal
commented

I now found out: the 2nd issue is also the reason for the first one

commented

let's see. You first filter says:

Don't use stickiness processing, don't do oreDict lookups, and do not insert:

  • Chain Chestplates that are undamaged and have no NBT data and are not undamaged
  • Iron Chestplates that are undamaged and have no NBT data and are not undamaged
  • Iron Helmets that are undamaged and have no NBT data and are not undamaged
  • Iron Shovels that are undamaged and have no NBT data and are not undamaged

Your second filter says:

Don't use stickiness processing, don't do oreDict lookups, and do insert:

  • Chain Chestplates that are have no NBT data and are not undamaged
    ...

And yes, for Minecraft "no NBT" and "empty NBT" are two different things.

Also, you seem to have a fundamental misunderstanding here. "I think the setting "blacklist" should block anything not in the list"---that is the definition of a whitelist...

commented

oh there was a "not" too much in my sentence.
Then there's still strange why "empty nbt" and "no nbt" is not the same?

commented

@Flow86 it's the same reason why items with empty NBT do not stack with items which don't have NBT.

commented

or the same reason why hitting your head on an empty cupboard hurts more than if that cupboard isn't there.

But to be honest, there's no reason why we cannot have special code that treats those two cases the same. I'm on it, but I want to redo the fuzzy filter at the same time. No player understands how that one works---it took me half an hour reading the code to understand it...

commented

Related: Ore dictionary filter stopped working in 1.10.2-3.1.169

commented

Expansion on this issue:

When on white list mode, ignoring Metadata, ignoring nbt, ignoring damage, oredict on: it seems to pull the exact items used to create the filter but nothing else that should be pulled

But you keep all the sethings and switch it to blacklist and it seems to work as it should

commented

Another update: It looks like the behavior of Ore Dictionary mode changed. It still works, but you now have to ignore metadata for it to work correctly. This ends up causing problems when combined with mods like Thermal Expansion and Advanced Rocketry, which use the same item ID for multiple dusts or ingots. Before the change, Ore Dictionary mode used to ignore metadata for ore dictionary matches.