Things that ought to be blacklisted from UU replication by default
ae2 storage cells and likewise from ae2 addons like appmek
'pneumaticcraft:smart_chest' and 'pneumaticcraft:reinforced_chest' which both retain inventory when picked up like a shulker box
Sophisticated Storage chests/barrels/shulkers/backpacks
Functional Storage drawers which retain inventory and can be used to dupe UU matter
Will add more as I find them
Here's a dump of everything I've found. This is the entire tag as I've set it for e10, so it includes your defaults already.
"#c:shulker_boxes", "#modern_industrialization:barrels", "#modern_industrialization:tanks", "ae2:creative_storage_cell", "ae2:fluid_storage_cell_16k", "ae2:fluid_storage_cell_1k", "ae2:fluid_storage_cell_256k", "ae2:fluid_storage_cell_4k", "ae2:fluid_storage_cell_64k", "ae2:item_storage_cell_16k", "ae2:item_storage_cell_1k", "ae2:item_storage_cell_256k", "ae2:item_storage_cell_4k", "ae2:item_storage_cell_64k", "ae2:portable_fluid_cell_16k", "ae2:portable_fluid_cell_1k", "ae2:portable_fluid_cell_256k", "ae2:portable_fluid_cell_4k", "ae2:portable_fluid_cell_64k", "ae2:portable_item_cell_16k", "ae2:portable_item_cell_1k", "ae2:portable_item_cell_256k", "ae2:portable_item_cell_4k", "ae2:portable_item_cell_64k", "ae2:spatial_storage_cell_128", "ae2:spatial_storage_cell_16", "ae2:spatial_storage_cell_2", "ae2:view_cell", "appmek:chemical_storage_cell_16k", "appmek:chemical_storage_cell_1k", "appmek:chemical_storage_cell_256k", "appmek:chemical_storage_cell_4k", "appmek:chemical_storage_cell_64k", "appmek:portable_chemical_cell_16k", "appmek:portable_chemical_cell_1k", "appmek:portable_chemical_cell_256k", "appmek:portable_chemical_cell_4k", "appmek:portable_chemical_cell_64k", "ars_additions:handy_haversack", "ars_elemental:caster_bag", "ars_elemental:curio_bag", "ars_nouveau:mob_jar", "evilcraft:dark_tank", "functionalstorage:acacia_1", "functionalstorage:acacia_2", "functionalstorage:acacia_4", "functionalstorage:armory_cabinet", "functionalstorage:birch_1", "functionalstorage:birch_2", "functionalstorage:birch_4", "functionalstorage:cherry_1", "functionalstorage:cherry_2", "functionalstorage:cherry_4", "functionalstorage:compacting_drawer", "functionalstorage:compacting_framed_drawer", "functionalstorage:crimson_1", "functionalstorage:crimson_2", "functionalstorage:crimson_4", "functionalstorage:dark_oak_1", "functionalstorage:dark_oak_2", "functionalstorage:dark_oak_4", "functionalstorage:ender_drawer", "functionalstorage:fluid_1", "functionalstorage:fluid_2", "functionalstorage:fluid_4", "functionalstorage:framed_1", "functionalstorage:framed_2", "functionalstorage:framed_4", "functionalstorage:framed_simple_compacting_drawer", "functionalstorage:jungle_1", "functionalstorage:jungle_2", "functionalstorage:jungle_4", "functionalstorage:mangrove_1", "functionalstorage:mangrove_2", "functionalstorage:mangrove_4", "functionalstorage:oak_1", "functionalstorage:oak_2", "functionalstorage:oak_4", "functionalstorage:simple_compacting_drawer", "functionalstorage:spruce_1", "functionalstorage:spruce_2", "functionalstorage:spruce_4", "functionalstorage:warped_1", "functionalstorage:warped_2", "functionalstorage:warped_4", "mekanism:advanced_bin", "mekanism:advanced_chemical_tank", "mekanism:advanced_fluid_tank", "mekanism:basic_bin", "mekanism:basic_chemical_tank", "mekanism:basic_fluid_tank", "mekanism:cardboard_box", "mekanism:creative_bin", "mekanism:creative_chemical_tank", "mekanism:creative_fluid_tank", "mekanism:elite_bin", "mekanism:elite_chemical_tank", "mekanism:elite_fluid_tank", "mekanism:personal_barrel", "mekanism:personal_chest", "mekanism:qio_drive_array", "mekanism:qio_drive_base", "mekanism:qio_drive_hyper_dense", "mekanism:qio_drive_supermassive", "mekanism:qio_drive_time_dilating", "mekanism:ultimate_bin", "mekanism:ultimate_chemical_tank", "mekanism:ultimate_fluid_tank", "minecraft:bundle", "modern_industrialization:portable_storage_unit", "occultism:satchel", "occultism:soul_gem", "occultism:soul_shard", "occultism:storage_controller", "pneumaticcraft:collector_drone", "pneumaticcraft:drone", "pneumaticcraft:drone_interface", "pneumaticcraft:etching_tank", "pneumaticcraft:guard_drone", "pneumaticcraft:harvesting_drone", "pneumaticcraft:huge_tank", "pneumaticcraft:large_tank", "pneumaticcraft:logistics_drone", "pneumaticcraft:medium_tank", "pneumaticcraft:reinforced_chest", "pneumaticcraft:small_tank", "pneumaticcraft:smart_chest", "shrink:shrink_bottle", "sophisticatedbackpacks:backpack", "sophisticatedbackpacks:copper_backpack", "sophisticatedbackpacks:diamond_backpack", "sophisticatedbackpacks:gold_backpack", "sophisticatedbackpacks:iron_backpack", "sophisticatedbackpacks:netherite_backpack", "sophisticatedstorage:barrel", "sophisticatedstorage:chest", "sophisticatedstorage:copper_barrel", "sophisticatedstorage:copper_chest", "sophisticatedstorage:copper_shulker_box", "sophisticatedstorage:diamond_barrel", "sophisticatedstorage:diamond_chest", "sophisticatedstorage:diamond_shulker_box", "sophisticatedstorage:gold_barrel", "sophisticatedstorage:gold_chest", "sophisticatedstorage:gold_shulker_box", "sophisticatedstorage:iron_barrel", "sophisticatedstorage:iron_chest", "sophisticatedstorage:iron_shulker_box", "sophisticatedstorage:limited_barrel_1", "sophisticatedstorage:limited_barrel_2", "sophisticatedstorage:limited_barrel_3", "sophisticatedstorage:limited_barrel_4", "sophisticatedstorage:limited_copper_barrel_1", "sophisticatedstorage:limited_copper_barrel_2", "sophisticatedstorage:limited_copper_barrel_3", "sophisticatedstorage:limited_copper_barrel_4", "sophisticatedstorage:limited_diamond_barrel_1", "sophisticatedstorage:limited_diamond_barrel_2", "sophisticatedstorage:limited_diamond_barrel_3", "sophisticatedstorage:limited_diamond_barrel_4", "sophisticatedstorage:limited_gold_barrel_1", "sophisticatedstorage:limited_gold_barrel_2", "sophisticatedstorage:limited_gold_barrel_3", "sophisticatedstorage:limited_gold_barrel_4", "sophisticatedstorage:limited_iron_barrel_1", "sophisticatedstorage:limited_iron_barrel_2", "sophisticatedstorage:limited_iron_barrel_3", "sophisticatedstorage:limited_iron_barrel_4", "sophisticatedstorage:limited_netherite_barrel_1", "sophisticatedstorage:limited_netherite_barrel_2", "sophisticatedstorage:limited_netherite_barrel_3", "sophisticatedstorage:limited_netherite_barrel_4", "sophisticatedstorage:netherite_barrel", "sophisticatedstorage:netherite_chest", "sophisticatedstorage:netherite_shulker_box", "sophisticatedstorage:shulker_box", "the_bumblezone:bee_cannon", "the_bumblezone:buzzing_briefcase", "the_bumblezone:honey_cocoon"
Make sure required is set to false for each tag added, or else the tag will fail to load if one of these tags do not exist.
Something else that may be worth mentioning, is it is better to use tag references instead of a massive list of items like this. Functional storage for example really should have a tag for all of its drawers.
Yeah, would be better for sure but I don't think they do. Will double check though.
Would it be feasible to detect anything with fluid/item capabilities and auto add it? Might be easier than this too
Should be possible but not with tags alone. It'd likely need to add to the tag at runtime via code which I'm not sure is very easy/good to do.
Yeah, that's what I mean, detect everything at runtime and just add it to the tag.
Alternatively, since the issue is NBT (or components, whatever), what if the default was to not copy nbt/components, and whitelist things that are allowed. I can think of only a very few things where you'd want to copy that information. For example, Industrial Foregoing's upgrades all use nbt/component data to determine custom tiers.
Would be a shorter list, by far.
You mean whitelist which components get copied? That is a good solution I think. I hope that no mod crashes when an item is produced with default components. (AE2 Facades?)
The original idea behind the replicator was that you'd be able to dupe resources infinitely in most packs. But maybe packdevs don't like that? :D
You mean whitelist which components get copied?
Was thinking more along the lines of whitelisting items where you are allowed to copy all components.
So you could add facades to the whitelist and get the data, but chests and things with inventories would just give the item without component data
The original idea behind the replicator was that you'd be able to dupe resources infinitely in most packs. But maybe packdevs don't like that? :D
This isn't the issue so much as the fact that I was spending 100mb UU last night to dupe chests with 36k B of UU in tanks. It's one thing having an energy cost to dupe. It's another to make that energy free for more free duping.
There's another issue with checking directly against capabilities too, since capabilities are not necessarily tied to an Item, and can be conditionally applied to items based on data or whatever. So it's not guaranteed an item will always have that capability so it makes no sense to tag them like that. Just my two cents.
Allow-listing items to permit NBT copying would be a good solution.
https://github.com/AztechMC/Modern-Industrialization/pull/1065 should help already. As for adding more whitelists/blacklists why not, but the replicator should be able to replicate something like an OP Apotheosis weapon with affixes, sockets, etc... out of the box. I don't think that this is possible with a whitelist.
#1065 should help already. As for adding more whitelists/blacklists why not, but the replicator should be able to replicate something like an OP Apotheosis weapon with affixes, sockets, etc... out of the box. I don't think that this is possible with a whitelist.
I suggest that the whitelist should not be the default configuration option. The default configuration should instead implement a blacklist targeting specific components (e.g., excluding non-critical or problematic NBT tags). However, retaining the whitelist as an optional configuration would still be valuable for certain modpacks requiring stricter control over replicated NBT data.
For the vast majority of items, strip NBT during replication instead of blocking replication entirely.