Modern Industrialization

Modern Industrialization

4M Downloads

Repeatedly switching between recipes can leave some output slots in an invisible locked state

James103 opened this issue ยท 6 comments

commented

Version info

Modern Industrialization 2.2.25
Minecraft 1.21.1
NeoForge 21.1.77
Modpack: Craftoria 1.8.0

Expected result

When a machine repeatedly switches between recipes with different outputs, such as a single block of macerators which all ores go through (instead of separate macerators for each ore), output slots should never be left in an invisibly-locked state as described below.

Actual result

When a machine repeatedly switches between recipes with different outputs, there is a chance some output slots of that machine can get into a state where, according to the block's NBT, the slot is filled with a specific item type, but the amount is 0. This causes that slot not to accept anything else other than that item type.

The following is the /data get block output for such a block (specifically an Advanced Output Hatch connected to one of Extended Industrialization's Large Electric Macerators) -- the placer UUID is redacted but all MI machines in that world were placed by the same player.

{
	silenced: 0b,
	facingDirection: 2,
	placer: "",
	extractFluids: 0b,
	outputDirection: 2,
	x: -1075, y: 71, z: 203,
	id: "modern_industrialization:advanced_item_output_hatch",
	extractItems: 0b,
	items: [
		{
			amount: 0L, machineLocked: 0b, playerLocked: 0b, adjCap: 64,
			playerExtract: 1b, pipesExtract: 1b, playerInsert: 0b, pipesInsert: 0b,
			key: {id: "modern_industrialization:raw_tin"}, playerLockable: 1b
		}, {
			amount: 64L, machineLocked: 0b, playerLocked: 0b, adjCap: 64,
			playerExtract: 1b, pipesExtract: 1b, playerInsert: 0b, pipesInsert: 0b,
			key: {id: "minecraft:raw_copper"}, playerLockable: 1b
		},
		{
			amount: 0L, machineLocked: 0b, playerLocked: 0b, adjCap: 64,
			playerExtract: 1b, pipesExtract: 1b, playerInsert: 0b, pipesInsert: 0b,
			key: {id: "modern_industrialization:raw_nickel"}, playerLockable: 1b
		},
		{
			amount: 64L, machineLocked: 0b, playerLocked: 0b, adjCap: 64,
			playerExtract: 1b, pipesExtract: 1b, playerInsert: 0b, pipesInsert: 0b,
			key: {id: "minecraft:raw_copper"}, playerLockable: 1b
		}
	],
	fluids: []
}

Steps to reproduce

  1. Install the modpack "Craftoria" version 1.8.0, or at least the mods mentioned in "Version info."
  2. Build a machine and have it repeatedly switch between recipes with different outputs.
  3. Wait. Run /tick sprint if needed.
    (Depending on the setup, invisible locking may happen immediately, take several minutes, or never occur.)
commented

Can you reproduce this with an MI multiblock? If not, this is likely an issue with Extended Industrialization.

commented

I was able to reproduce with a singleblock MI macerator.

/data get block output (placer UUID redacted):

{silenced: 0b, facingDirection: 2, recipeMaxEu: 8L, outputDirection: 3, storedEu: 3200L, efficiencyTicks: 0, extractItems: 0b, casing: {}, upgradesItemStack: {}, placer: "", usedEnergy: 0L, recipeEnergy: 100L, overdriveModuleStack: {}, extractFluids: 0b, x: -1077, redstoneModuleStack: {}, y: 72, maxEfficiencyTicks: 64, z: 220, id: "modern_industrialization:electric_macerator", items: [{amount: 63L, machineLocked: 0b, playerLocked: 0b, adjCap: 64, playerExtract: 1b, pipesExtract: 0b, playerInsert: 1b, pipesInsert: 1b, key: {id: "minecraft:raw_copper"}, playerLockable: 1b}, {amount: 0L, machineLocked: 0b, playerLocked: 0b, adjCap: 64, playerExtract: 1b, pipesExtract: 1b, playerInsert: 0b, pipesInsert: 0b, key: {id: "modern_industrialization:tin_dust"}, playerLockable: 1b}, {amount: 64L, machineLocked: 0b, playerLocked: 0b, adjCap: 40, playerExtract: 1b, pipesExtract: 1b, playerInsert: 0b, pipesInsert: 0b, key: {id: "modern_industrialization:copper_dust"}, playerLockable: 1b}, {amount: 20L, machineLocked: 0b, playerLocked: 0b, adjCap: 20, playerExtract: 1b, pipesExtract: 1b, playerInsert: 0b, pipesInsert: 0b, key: {id: "modern_industrialization:copper_dust"}, playerLockable: 1b}, {amount: 8L, machineLocked: 0b, playerLocked: 0b, adjCap: 8, playerExtract: 1b, pipesExtract: 1b, playerInsert: 0b, pipesInsert: 0b, key: {id: "modern_industrialization:copper_dust"}, playerLockable: 1b}], fluids: []}
commented

Interesting. Just to be sure, are you playing with MI Tweaks installed and what is the configuration of that? It's possible one of the features in that could cause this too.

commented

MI Tweaks is part of the modpack and the instance; here is its config file:
mi_tweaks-startup.zip

commented

Okay thank you, this might be an issue in MI itself then.

commented

I found a workaround: clicking the output slots clears the invisibly-locked state (works best while holding an item in your cursor), allowing the slot to accept a different item type.