diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/Tags.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/Tags.kt index 2d46e61b2..d9e98c8db 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/Tags.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/Tags.kt @@ -180,6 +180,23 @@ fun addTags(tagsProvider: TagsProvider) { .add(MRegistry.TRITANIUM_STRIPED_WALL.flatItems) .add(MItems.TRITANIUM_STRIPED_WALL.values) + tagsProvider.items.Appender(MItemTags.NO_REPLICATION) + .add(Items.WRITTEN_BOOK) + .add(Tags.Items.ORES) + .add(Tags.Items.RAW_MATERIALS) + .add(MItems.PILL_ANDROID) + .add(MItems.PILL_HUMANE) + .add(MItems.PILL_OBLIVION) + .add(MItems.QUANTUM_BATTERY) + .add(MItems.QUANTUM_CAPACITOR) + .add(MItems.QUANTUM_BATTERY_CREATIVE) + .add(MItems.ZPM_BATTERY) + .add(MItems.PROCEDURAL_BATTERY) + .add(MItems.EXOPACK_PROBE) + .add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL) + .add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_WITHER) + .add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON) + tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_DOOR.values, Tiers.IRON) tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_TRAPDOOR.values, Tiers.IRON) tagsProvider.requiresPickaxe(MBlocks.PAINTER, Tiers.STONE) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterReplicatorBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterReplicatorBlockEntity.kt index 6e50499f5..69fd5f3e0 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterReplicatorBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterReplicatorBlockEntity.kt @@ -35,6 +35,7 @@ import ru.dbotthepony.mc.otm.graph.matter.MatterNode import ru.dbotthepony.mc.otm.matter.MatterManager import ru.dbotthepony.mc.otm.menu.matter.MatterReplicatorMenu import ru.dbotthepony.mc.otm.registry.MBlockEntities +import ru.dbotthepony.mc.otm.registry.MItemTags import ru.dbotthepony.mc.otm.registry.MItems import java.util.* @@ -168,10 +169,11 @@ class MatterReplicatorBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : } val allocation = matterNode.graph.allocateTask(simulate = false) ?: return JobContainer.observe() - val stack = allocation.task.stack(1) - val matter = MatterManager.get(stack) - // ???????? + val stack = allocation.task.stack(1) + if (stack.`is`(MItemTags.NO_REPLICATION)) return JobContainer.failure() + + val matter = MatterManager.get(stack) if (!matter.hasMatterValue) return JobContainer.failure() val ticks = matter.complexity diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt index e87161070..7e55749fa 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/MatterScannerBlockEntity.kt @@ -27,6 +27,7 @@ import ru.dbotthepony.mc.otm.menu.matter.MatterScannerMenu import ru.dbotthepony.mc.otm.registry.MBlockEntities import ru.dbotthepony.mc.otm.graph.matter.MatterNode import ru.dbotthepony.mc.otm.matter.MatterManager +import ru.dbotthepony.mc.otm.registry.MItemTags import java.util.* import kotlin.math.pow @@ -114,7 +115,7 @@ class MatterScannerBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : } val stack = container.getItem(0) - if (stack.isEmpty || !MatterManager.canDecompose(stack)) return JobContainer.noItem() + if (stack.isEmpty || !MatterManager.canDecompose(stack) || stack.`is`(MItemTags.NO_DECOMPOSING) || stack.`is`(MItemTags.NO_REPLICATION)) return JobContainer.noItem() var findState: PatternState? = null diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItemTags.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItemTags.kt index d3f941454..08afc394b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItemTags.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MItemTags.kt @@ -80,6 +80,12 @@ object MItemTags { val HARDENED_GLASS_WHITE: TagKey = ItemTags.create(ResourceLocation("c", "hardened_glass/white")) val HARDENED_GLASS_YELLOW: TagKey = ItemTags.create(ResourceLocation("c", "hardened_glass/yellow")) - val MACHINES: TagKey = ItemTags.create(ResourceLocation(OverdriveThatMatters.MOD_ID, "machines")) + val MACHINES: TagKey = ItemTags.create(modLoc("machines")) + + val NO_DECOMPOSING: TagKey = ItemTags.create(modLoc("matter/no_decomposing")) + val NO_REPLICATION: TagKey = ItemTags.create(modLoc("matter/no_replication")) + val NO_REPAIR: TagKey = ItemTags.create(modLoc("matter/no_repair")) + + fun modLoc(path: String) : ResourceLocation = ResourceLocation(OverdriveThatMatters.MOD_ID, path) }