diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java index f421cf960d..0214ec8cab 100644 --- a/src/main/java/com/simibubi/create/AllTags.java +++ b/src/main/java/com/simibubi/create/AllTags.java @@ -199,6 +199,7 @@ public enum AllItemTags { CHAIN_RIDEABLE, TRACKS, UPRIGHT_ON_BELT, + NOT_UPRIGHT_ON_BELT, VALVE_HANDLES, VANILLA_STRIPPED_LOGS, VANILLA_STRIPPED_WOOD, diff --git a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltHelper.java b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltHelper.java index 40edc1c8f0..45c74ebbb0 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/belt/BeltHelper.java +++ b/src/main/java/com/simibubi/create/content/kinetics/belt/BeltHelper.java @@ -25,9 +25,16 @@ public class BeltHelper { public static final ResourceManagerReloadListener LISTENER = resourceManager -> uprightCache.clear(); public static boolean isItemUpright(ItemStack stack) { - return uprightCache.computeIfAbsent(stack.getItem(), - item -> stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM) - .isPresent() || AllItemTags.UPRIGHT_ON_BELT.matches(stack)); + return uprightCache.computeIfAbsent( + stack.getItem(), + item -> { + boolean isFluidHandler = stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM).isPresent(); + boolean useUpright = AllItemTags.UPRIGHT_ON_BELT.matches(stack); + boolean forceDisableUpright = !AllItemTags.NOT_UPRIGHT_ON_BELT.matches(stack); + + return (isFluidHandler || useUpright) && forceDisableUpright; + } + ); } public static BeltBlockEntity getSegmentBE(LevelAccessor world, BlockPos pos) {