Modern-Industrialization icon indicating copy to clipboard operation
Modern-Industrialization copied to clipboard

Things that ought to be blacklisted from UU replication by default

Open MuteTiefling opened this issue 1 year ago • 13 comments

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

MuteTiefling avatar Sep 11 '24 23:09 MuteTiefling

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"

MuteTiefling avatar Sep 12 '24 00:09 MuteTiefling

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.

Swedz avatar Sep 12 '24 01:09 Swedz

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.

Swedz avatar Sep 12 '24 03:09 Swedz

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

MuteTiefling avatar Sep 12 '24 11:09 MuteTiefling

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.

Swedz avatar Sep 12 '24 13:09 Swedz

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.

MuteTiefling avatar Sep 12 '24 13:09 MuteTiefling

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

Technici4n avatar Sep 12 '24 13:09 Technici4n

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

MuteTiefling avatar Sep 12 '24 13:09 MuteTiefling

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.

MuteTiefling avatar Sep 12 '24 13:09 MuteTiefling

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.

Swedz avatar Sep 12 '24 13:09 Swedz

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.

Technici4n avatar Apr 03 '25 22:04 Technici4n

#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.

gjmhmm8 avatar Apr 04 '25 07:04 gjmhmm8

For the vast majority of items, strip NBT during replication instead of blocking replication entirely.

gjmhmm8 avatar Apr 04 '25 07:04 gjmhmm8