diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java index 154517f77..3fd38184c 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java @@ -344,7 +344,7 @@ public class MechanicalPressTileEntity extends BasinOperatingTileEntity { } private static final List RECIPE_DENY_LIST = - ImmutableList.of(new ResourceLocation("occultism", "spirit_trade")); + ImmutableList.of(new ResourceLocation("occultism", "spirit_trade"), new ResourceLocation("occultism", "ritual")); public static boolean canCompress(IRecipe recipe) { NonNullList ingredients = recipe.getIngredients(); diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java index ad2defafd..99dd28fbe 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java +++ b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java @@ -209,6 +209,8 @@ public class FluidNetwork { if (transfer.isEmpty()) return; + if (simulate) + flowSpeed = transfer.getAmount(); List>> availableOutputs = new ArrayList<>(targets); while (!availableOutputs.isEmpty() && transfer.getAmount() > 0) { diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java index a7e684e09..cef782c11 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java @@ -115,11 +115,12 @@ public class BeltInventory { } // Don't move if other items are waiting in front + boolean noMovement = false; float currentPos = currentItem.beltPosition; if (stackInFront != null) { float diff = stackInFront.beltPosition - currentPos; if (Math.abs(diff) <= spacing) - continue; + noMovement = true; movement = beltMovementPositive ? Math.min(movement, diff - spacing) : Math.max(movement, diff + spacing); } @@ -138,7 +139,7 @@ public class BeltInventory { // Belt item processing if (!onClient && horizontal) { ItemStack item = currentItem.stack; - if (handleBeltProcessingAndCheckIfRemoved(currentItem, nextOffset)) { + if (handleBeltProcessingAndCheckIfRemoved(currentItem, nextOffset, noMovement)) { iterator.remove(); belt.sendData(); continue; @@ -148,6 +149,9 @@ public class BeltInventory { if (currentItem.locked) continue; } + + if (noMovement) + continue; // Belt Tunnels if (BeltTunnelInteractionHandler.flapTunnelsAndCheckIfStuck(this, currentItem, nextOffset)) @@ -212,7 +216,7 @@ public class BeltInventory { } } - protected boolean handleBeltProcessingAndCheckIfRemoved(TransportedItemStack currentItem, float nextOffset) { + protected boolean handleBeltProcessingAndCheckIfRemoved(TransportedItemStack currentItem, float nextOffset, boolean noMovement) { int currentSegment = (int) currentItem.beltPosition; // Continue processing if held @@ -239,6 +243,9 @@ public class BeltInventory { belt.sendData(); return false; } + + if (noMovement) + return false; // See if any new belt processing catches the item if (currentItem.beltPosition > .5f || beltMovementPositive) {