diff --git a/core/src/mindustry/input/Placement.java b/core/src/mindustry/input/Placement.java index 5274692aaa0..f50f33d9dba 100644 --- a/core/src/mindustry/input/Placement.java +++ b/core/src/mindustry/input/Placement.java @@ -129,10 +129,10 @@ public static boolean isSidePlace(Seq plans){ } public static void calculateBridges(Seq plans, ItemBridge bridge){ - calculateBridges(plans, bridge, t -> false); + calculateBridges(plans, bridge, false, t -> false); } - public static void calculateBridges(Seq plans, ItemBridge bridge, Boolf avoid){ + public static void calculateBridges(Seq plans, ItemBridge bridge, boolean hasJunction, Boolf avoid){ if(isSidePlace(plans) || plans.size == 0) return; //check for orthogonal placement + unlocked state @@ -170,7 +170,7 @@ public static void calculateBridges(Seq plans, ItemBridge bridge, Boo continue outer; }else if(placeable.get(other)){ - if(wereSame){ + if(wereSame && hasJunction){ //the gap is fake, it's just conveyors that can be replaced with junctions i ++; continue outer; diff --git a/core/src/mindustry/world/blocks/distribution/Conveyor.java b/core/src/mindustry/world/blocks/distribution/Conveyor.java index cf1ab208892..49f8c307a91 100644 --- a/core/src/mindustry/world/blocks/distribution/Conveyor.java +++ b/core/src/mindustry/world/blocks/distribution/Conveyor.java @@ -64,7 +64,7 @@ public void init(){ super.init(); if(junctionReplacement == null) junctionReplacement = Blocks.junction; - if(bridgeReplacement == null || !(bridgeReplacement instanceof ItemBridge)) bridgeReplacement = Blocks.itemBridge; + if(bridgeReplacement == null || !(bridgeReplacement instanceof ItemBridge || bridgeReplacement instanceof DuctBridge)) bridgeReplacement = Blocks.itemBridge; } @Override @@ -92,8 +92,9 @@ public boolean canReplace(Block other){ @Override public void handlePlacementLine(Seq plans){ if(bridgeReplacement == null) return; - - Placement.calculateBridges(plans, (ItemBridge)bridgeReplacement, b -> b instanceof Conveyor); + boolean hasJuntionReplacement = junctionReplacement != null; + if(bridgeReplacement instanceof DuctBridge bridge) Placement.calculateBridges(plans, bridge, hasJuntionReplacement, b -> b instanceof Duct || b instanceof Conveyor); + if(bridgeReplacement instanceof ItemBridge bridge) Placement.calculateBridges(plans, bridge, hasJuntionReplacement, b -> b instanceof Conveyor); } @Override diff --git a/core/src/mindustry/world/blocks/distribution/Duct.java b/core/src/mindustry/world/blocks/distribution/Duct.java index dacd3a8b8e1..14f29fd9de3 100644 --- a/core/src/mindustry/world/blocks/distribution/Duct.java +++ b/core/src/mindustry/world/blocks/distribution/Duct.java @@ -62,7 +62,7 @@ public void setStats(){ public void init(){ super.init(); - if(bridgeReplacement == null || !(bridgeReplacement instanceof DuctBridge)) bridgeReplacement = Blocks.ductBridge; + if(bridgeReplacement == null || !(bridgeReplacement instanceof DuctBridge || bridgeReplacement instanceof ItemBridge)) bridgeReplacement = Blocks.ductBridge; } @Override @@ -106,8 +106,8 @@ public TextureRegion[] icons(){ @Override public void handlePlacementLine(Seq plans){ if(bridgeReplacement == null) return; - - Placement.calculateBridges(plans, (DuctBridge)bridgeReplacement, false, b -> b instanceof Duct || b instanceof StackConveyor || b instanceof Conveyor); + if(bridgeReplacement instanceof ItemBridge bridge) Placement.calculateBridges(plans, bridge, false, b -> b instanceof Duct || b instanceof StackConveyor || b instanceof Conveyor); + if(bridgeReplacement instanceof DuctBridge bridge) Placement.calculateBridges(plans, bridge, false, b -> b instanceof Duct || b instanceof StackConveyor || b instanceof Conveyor); } public class DuctBuild extends Building{ diff --git a/core/src/mindustry/world/blocks/liquid/Conduit.java b/core/src/mindustry/world/blocks/liquid/Conduit.java index 64f1b02ac4e..39517544875 100644 --- a/core/src/mindustry/world/blocks/liquid/Conduit.java +++ b/core/src/mindustry/world/blocks/liquid/Conduit.java @@ -140,7 +140,7 @@ public void handlePlacementLine(Seq plans){ if(rotBridgeReplacement instanceof DirectionBridge duct){ Placement.calculateBridges(plans, duct, true, b -> b instanceof Conduit); }else{ - Placement.calculateBridges(plans, (ItemBridge)bridgeReplacement, b -> b instanceof Conduit); + Placement.calculateBridges(plans, (ItemBridge)bridgeReplacement, true, b -> b instanceof Conduit); } }