
Advanced Item Filter not filtering as it should
Flow86 opened this issue ยท 9 comments
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
it still inserts damaged items:
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:
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
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...
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?
@Flow86 it's the same reason why items with empty NBT do not stack with items which don't have NBT.
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...
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
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.