public void tickForward(DuctUnitItem homeTile) { progress += step; if (myPath == null) { bounceItem(homeTile); } else if (progress >= homeTile.getDuctLength()) { progress %= homeTile.getDuctLength(); advanceTile(homeTile); } else if (progress >= homeTile.getPipeHalfLength() && progress - step < homeTile.getPipeHalfLength()) { if (reRoute || homeTile.getRenderConnectionType(direction) == BlockDuct.ConnectionType.NONE) { bounceItem(homeTile); } } }