diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java index b8ed8542bc..6611410f33 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltBlockEntity.java @@ -177,6 +177,7 @@ public class BeltBlockEntity extends KineticBlockEntity { if (inventory == null) return; itemHandler = new ItemHandlerBeltSegment(inventory, index); + invalidateCapabilities(); } @Override @@ -553,6 +554,7 @@ public class BeltBlockEntity extends KineticBlockEntity { public void invalidateItemHandler() { invalidateCapabilities(); + itemHandler = null; } public boolean shouldRenderNormally() { diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltSlicer.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltSlicer.java index dc96c0a30e..80e280d5b9 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltSlicer.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltSlicer.java @@ -356,6 +356,13 @@ public class BeltSlicer { player.getInventory().placeItemBackInInventory(AllItems.BELT_CONNECTOR.asStack()); } + for (BlockPos blockPos : BeltBlock.getBeltChain(world, controllerBE.getBlockPos())) { + BeltBlockEntity belt = BeltHelper.getSegmentBE(world, blockPos); + if (belt == null) + continue; + belt.invalidateItemHandler(); + } + // Transfer items to other controller BlockPos search = controllerBE.getBlockPos(); for (int i = 0; i < 10000; i++) { diff --git a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBehaviour.java b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBehaviour.java index 198ec6d96a..a7a3731521 100644 --- a/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBehaviour.java +++ b/src/main/java/com/simibubi/create/content/logistics/factoryBoard/FactoryPanelBehaviour.java @@ -752,11 +752,16 @@ public class FactoryPanelBehaviour extends FilteringBehaviour implements MenuPro CompoundTag panelTag = new CompoundTag(); panelTag.put("Filter", getFilter().saveOptional(registries)); + panelTag.putBoolean("UpTo", upTo); panelTag.putInt("FilterAmount", count); panelTag.putUUID("Freq", network); panelTag.putString("RecipeAddress", recipeAddress); panelTag.putInt("PromiseClearingInterval", -1); panelTag.putInt("RecipeOutput", 1); + + if (panelBE().restocker) + panelTag.put("Promises", restockerPromises.write()); + nbt.put(CreateLang.asId(slot.name()), panelTag); } diff --git a/src/main/java/com/simibubi/create/content/logistics/packagerLink/RequestPromiseQueue.java b/src/main/java/com/simibubi/create/content/logistics/packagerLink/RequestPromiseQueue.java index e9f0981122..2f141cdf2b 100644 --- a/src/main/java/com/simibubi/create/content/logistics/packagerLink/RequestPromiseQueue.java +++ b/src/main/java/com/simibubi/create/content/logistics/packagerLink/RequestPromiseQueue.java @@ -113,7 +113,7 @@ public class RequestPromiseQueue { public static RequestPromiseQueue read(CompoundTag tag, Runnable onChanged) { RequestPromiseQueue queue = new RequestPromiseQueue(onChanged); - List promises = CatnipCodecUtils.decode(Codec.list(RequestPromise.CODEC), tag.get("List")).orElseThrow(); + List promises = CatnipCodecUtils.decode(Codec.list(RequestPromise.CODEC), tag.get("List")).orElse(List.of()); for (RequestPromise promise : promises) { queue.add(promise); }