From e8f198ccdfde0e7a84c4ab79ade75a2777473bfa Mon Sep 17 00:00:00 2001 From: 90 Date: Tue, 14 May 2024 23:13:22 +0100 Subject: [PATCH] Prevent the Transmutation Interface from accepting items into network storage when missing a channel --- .../appliede/me/misc/EMCInterfaceLogic.java | 31 +++++-------------- 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/src/main/java/gripe/_90/appliede/me/misc/EMCInterfaceLogic.java b/src/main/java/gripe/_90/appliede/me/misc/EMCInterfaceLogic.java index de4f158..f2796cb 100644 --- a/src/main/java/gripe/_90/appliede/me/misc/EMCInterfaceLogic.java +++ b/src/main/java/gripe/_90/appliede/me/misc/EMCInterfaceLogic.java @@ -76,7 +76,7 @@ public EMCInterfaceLogic(IManagedGridNode node, EMCInterfaceLogicHost host, Item config = ConfigInventory.configStacks(AEItemKey.filter(), slots, this::onConfigRowChanged, false); storage = ConfigInventory.storage(this::storageFilter, slots, this::onStorageChanged); - upgrades = UpgradeInventories.forMachine(is, 1, this::onUpgradesChanged); + upgrades = UpgradeInventories.forMachine(is, 1, host::saveChanges); localInvHandler = new DelegatingMEInventory(storage); plannedWork = new GenericStack[slots]; @@ -126,7 +126,7 @@ private boolean storageFilter(AEKey what) { var knowledge = grid.getService(KnowledgeService.class); return knowledge.knowsItem(item) - || (upgrades.isInstalled(AppliedE.LEARNING_CARD.get()) + || (isUpgradedWith(AppliedE.LEARNING_CARD.get()) && IEMCProxy.INSTANCE.hasValue(item.toStack()) && knowledge.getProviderFor(uuid) != null); } @@ -253,11 +253,7 @@ private boolean tryUsePlan(int slot, AEKey what, int amount) { var depositedItems = grid.getService(KnowledgeService.class) .getStorage() .insertItem( - item, - amount, - Actionable.MODULATE, - source, - upgrades.isInstalled(AppliedE.LEARNING_CARD.get())); + item, amount, Actionable.MODULATE, source, isUpgradedWith(AppliedE.LEARNING_CARD.get())); if (depositedItems > 0) { storage.extract(slot, what, depositedItems, Actionable.MODULATE); @@ -311,14 +307,6 @@ private void onStorageChanged() { updatePlan(); } - private void onUpgradesChanged() { - if (emcStorage != null) { - emcStorage.setMayLearn(upgrades.isInstalled(AppliedE.LEARNING_CARD.get())); - } - - host.saveChanges(); - } - public void notifyNeighbours() { mainNode.ifPresent((grid, node) -> { if (node.isActive()) { @@ -377,23 +365,18 @@ public void invalidateCaps() { localInvHolder.invalidate(); } - private static class WrappedEMCStorage implements MEStorage { + private class WrappedEMCStorage implements MEStorage { private final EMCStorage storage; - private boolean mayLearn; private WrappedEMCStorage(EMCStorage storage) { this.storage = storage; } - private void setMayLearn(boolean mayLearn) { - this.mayLearn = mayLearn; - } - @Override public long insert(AEKey what, long amount, Actionable mode, IActionSource source) { - return what instanceof AEItemKey item - ? storage.insertItem(item, amount, mode, source, mayLearn) - : storage.insert(what, amount, mode, source); + return what instanceof AEItemKey item && mainNode.isActive() + ? storage.insertItem(item, amount, mode, source, isUpgradedWith(AppliedE.LEARNING_CARD.get())) + : localInvHandler.insert(what, amount, mode, source); } @Override